From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751969AbdKZGbF (ORCPT ); Sun, 26 Nov 2017 01:31:05 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:36144 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751141AbdKZGbD (ORCPT ); Sun, 26 Nov 2017 01:31:03 -0500 Subject: Re: perf test LLVM & clang 6 failing To: Arnaldo Carvalho de Melo , Daniel Borkmann CC: Wang Nan , Alexei Starovoitov , Adrian Hunter , David Ahern , Jiri Olsa , Ingo Molnar , Namhyung Kim , Linux Kernel Mailing List References: <20171124144717.GO8789@kernel.org> <7cd16670-37c9-21f5-21c8-d50385ebc951@iogearbox.net> <20171124190923.GR8789@kernel.org> From: Yonghong Song Message-ID: <7f9640eb-7da7-b3ca-02bd-dece9cbf91af@fb.com> Date: Sat, 25 Nov 2017 22:29:51 -0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171124190923.GR8789@kernel.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [2620:10d:c090:180::1:a8bf] X-ClientProxiedBy: CY4PR18CA0044.namprd18.prod.outlook.com (10.173.177.30) To DM5PR15MB1836.namprd15.prod.outlook.com (10.174.247.13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f45d67da-7f34-4b63-8504-08d534971d2e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603199);SRVR:DM5PR15MB1836; X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1836;3:6MuLtVtFsId12fnJdZXoiHkTu8zh9NrjcY+iHHxjZbW2Jidcn3k46owDRH99n6iQrDcfvd/HnBY5q+aoAna077T80fzpOM6vEjPi7hV0CX+zJlCmscBHjL9Xr8CkR2WADqL8cIpN2Ub8OSUbmA9r3P9FZeBZxv41brVA15YEoOFueYgv2i2eO029Y1yuB5Wxr5+3Ts4H3ULWITmrA65cEYUB4Ko8QYfHt9rcjBlQZfDNlf0Cs/C4s3BEGw2s0oI/;25:SMX1a7YN4DsKppY7ljEH19QDkb0jmgZM2IuKX4eqLuvV2+eAiKRnqUb6BpK0DRAugl7qzQ1vUBuMfbd+tOzjXizyhVr/iJexJpUIgW4j/mAX3v1NbiDPS7giIBIrjV9FF7xNfwupN6B5b6pHCpo/nC5U3KSiBn7MBSk5vnr7I3HTNaNMpvclb2Wa4UGuc4Q+lN16W/97JPkgwlRzQdHAAAsCp4JEZ3Psk7TtK2IiRFa10wnuyLzqUIAF3BTeQNqKVUR2qBi8iX3wuzXiwD5jMMEOm21F9AMr+FSbCSEZDlnk4fd76HwZ3d5W62s/XCLOxt7UU3/D/petPOcwXEP2Cw==;31:d4YJUWKO7n8zC5Sr0IKUBPmDFO9R8OejIOhvwhuPVvO3Z9e7qDACfshEqB4Ps7u6TBoxL2o15fNJhvhLr0+v04H9LIV7K5sQBtloOUkj9D8DOxYNxIr9cfakd2LE5aFcs55va6s9lP2yfSwhQjCDkFBmLF1gvg1OEP+ZUXAxW9F1wF4GOraB2431IXqcfS9SfoS3PWq89LGFjsgUbaI9qiPgIRBUjksuXdDhT9myPt8= X-MS-TrafficTypeDiagnostic: DM5PR15MB1836: X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1836;20:GqHoi5/JVT+Djq0/PRpdpqVpMMENUW47QvA6NcSzT+HSZh5cxaTc58a0WP+B6mEljBMgLtVIO0oVYtc1p1Uybh4ru5prl4OM/1BdWhx4e5VFuda3zfGW8r2sqjRlM06dmaIOJsgfR3QC+EProT8PvTSKyfqcnF0lUHTsfgeZTyo8c2vXY4DP75pxGpQDFYn3n/YFkQDyTWLBSlggFEtPxlM+W6liTi+I6GEumPc2FbL2GdmsW2m9l7WrB6+3KTO9jC7iFVlfU9PvUP7/5lwPyB+GOzRSJZ40Z5FAHZ+DfedgLXmhjsKIsvgNcswRXXscarxlFO+lmf6bll0DtL+qTFriq94YvCX8zWADyu0ncmneRz+Hie4DNUqGy2Ghpe3AW2TZ3GrP+C1uizDNPKChKmh/qzgDyFQrl9WBdG0g5vCkr2NkuBdGlxyugGAYLVITghmjrtrRGFHa1N3d5ExCNKsO4oS+v5JDGbmRHZ2wZcsQ2+K293CQiTzauvtgcNXq;4:bgRx+gekxM6X5zs5a29pFw0/9EhiUdmy2PYp6NYllgw2ZIyD0rHBJZLB9xdectkRVdxmSrLgeX27JzQpcGFYx27Fu/hCaVIdgCj2oklyCvEw3gAlVHXs1GMLqTF4Mg5Ic/8Fq8uSNVDZWEZj+0ua1szTzUXUAYo1Vkx0RYBM1CQ6TcfSdp8/WTXgnuBfsjgUbaqI5LC1OHKzDYhDe7WFYe/1irtq303rp62JZP8tJXF0EiMkzI4UKeNJv6MXC2r2qThWILBNLmL7pdM3ZdbtXsn86VX9jfDS0rKumB8eCqhdD32rJ1I7j905kddIWt+oqgdQZNuSHjTzjonT2ziA6eZSaE93jR5BhGkYbHUTcEI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(10436049006162)(151381331826461); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231022)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(6072148)(201708071742011);SRVR:DM5PR15MB1836;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DM5PR15MB1836; X-Forefront-PRVS: 0503FF9A3E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(366004)(346002)(199003)(69234005)(24454002)(189002)(47776003)(6246003)(81156014)(39060400002)(53936002)(33646002)(6116002)(2950100002)(575784001)(65826007)(5660300001)(86362001)(7416002)(68736007)(53546010)(25786009)(83506002)(65956001)(8676002)(65806001)(52116002)(23676004)(230700001)(2906002)(52396003)(97736004)(6306002)(2486003)(189998001)(54906003)(52146003)(6512007)(50986999)(64126003)(36756003)(54356999)(6506006)(76176999)(6486002)(316002)(6666003)(58126008)(50466002)(101416001)(7736002)(229853002)(31686004)(4326008)(106356001)(105586002)(8936002)(67846002)(81166006)(478600001)(110136005)(31696002)(305945005)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR15MB1836;H:dhcp-172-26-119-44.DHCP.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjE1TUIxODM2OzIzOjNuOFJMVENPZnI0U2hJb1lBdkk0N1dxQ3Jl?= =?utf-8?B?TStLUTE1dlNkMmVwSjNlbnNNbHRMdS9GbDJ6RkUzUFErRHRFbFhnZG4vVnIv?= =?utf-8?B?bkwrbE14SFNib1cxdE9PQVB6SmMvSEJhelhPb3BrdUNkTHlRcncxMXExaTZV?= =?utf-8?B?NXloSkhDT09VdHM0dkROajZwa2VVZ2tpTEdSUmVtU3lHRWhLUy9yUWhwK25Y?= =?utf-8?B?cWoyc0tNQWFYendYN2NkVGt5SXpvWWtveVpPRSs0dnZoUy9mNTI5QzlTVkxx?= =?utf-8?B?YzhpZTN2ZSs5dkdXYnNtOGdDeUdvQjJVN2VJdmd3dCtGa2xQWkg0eWFPbm45?= =?utf-8?B?aEY4UXJwQ0FLbmY0VUlQTEU4M1JDQmFHaEV6WmcyRmNJSWZ4eGFLUUQzSUVl?= =?utf-8?B?aVdTeER6aTY4RzRpN0U4ZVkwcXJCMXo3bkhZL3JJaUl6MmphYmJTN0dNNklV?= =?utf-8?B?V0VOZ1U3R1FJT2tXczluOEEybWlhQ1lFQkJodXNRWTJBczUwOXhyTFpFeHhI?= =?utf-8?B?aWRXWDZYcDluQ1YvandBbWpGN0kxODFMYkZYUFJ3cXNuK2tNS0FRZnlucy96?= =?utf-8?B?dm12bXpBSXZlKzJ3aDZuRGxiWFNVdGhXeXBnaVUybnFzWW81YlpacGgvVmkx?= =?utf-8?B?dEppOVNuUEdXb3E1TTNRYWZCQUZKd05PVVZqQWhnTkVGaENZMC83MXMzSGxU?= =?utf-8?B?SXI4WG41L3U3akZPaU9TMmxCVEdzaUF2Q29abVNqSXhTNStCaGRDbGNhMWph?= =?utf-8?B?ZzBrNmNvMURpVWNNZ3NqL25LS3Z4WFZPRDNMTUJ2eGlYdVRqb1RWQ2FoTCtR?= =?utf-8?B?V1ZVWVN6MUVINnFxdTUzL1B4MUwrUEZScm9mQ0syUHRNSVBFalJybXFuaFlJ?= =?utf-8?B?eFZaNkF4UDcwdDJQMEkxMVZqNHk2bEg1aWg5V29SVGdKVmY5ODRtWWFNWjZu?= =?utf-8?B?MFE1TWdKeSsxSEZsZWJNVlBFdytyWmVZUGxMWmVud3BRcVhKSk45TGEwdzlG?= =?utf-8?B?Y0NtekVUa3hjMmpzUnJWaVR5TzZuWVJsMzFEQUZoSmdZL0JIQlNyOCtKcytu?= =?utf-8?B?SnZFUFdhMy9PY0RNY0o4dmpkbFIwdUNNWWk1dWd2Sm5MOW84SGFocFdPZkZM?= =?utf-8?B?cFkydkxWUjNyZllzRGNJR0RkRmlvOG9RZ0JHK3ZCZndIcHFEM0pXMVM4RnZT?= =?utf-8?B?UzBBOWFWZUVDbUIyUEVWTDZYNlQvRlRvTk9zNHFTdGxPR1ZPSDN1S0I1anN2?= =?utf-8?B?Q3huemVwZFp5NFNjME54bWQwYzRBUklDWFVmaUovYXp3bkxjRWFLWWMwbVR2?= =?utf-8?B?VVJsRXhnc3VlNVVnMmxaOUx0SU1nb1A5RnRMczlIcTEvSGZHUXRGU0hncGpH?= =?utf-8?B?TlVMNkNBbDJLZmRTK0c4TWFwVGtmSGpnYVEvaWtuSURuM0RQZ3VXbVczNGRT?= =?utf-8?B?dzVQM1U1N21ieURaQUdUc25tZkVreGdiTDBQKzFyMXovWGZiZnBFdzlHTUx4?= =?utf-8?B?MG4xSlczc1dWYjRRMUpPNWZJaDU5YVRjeEMzUHR4dTdnTGV1akVUQW1MdHZ6?= =?utf-8?B?eDdwVGdteEEwMXp4ZTBnb2J4bGQvaXBybVpKVzJpRmFTbWcxR3lWOXlSMllt?= =?utf-8?B?NW52b2tJM0d6L2V5bzluWHpNcXJyQlVwelNXTFVEcUw4d1BBdGZzVmpncGtZ?= =?utf-8?B?SUU1MEhUNU1OUTZzMjV5c3VCdnVEajhQSG1BbUU2cFdSbGVkRDk5MStodmk5?= =?utf-8?B?dXZZZzNzZWVYNVdsRGMyN21WY1EvTE9oVmdBZHVNWDNQZ2JQWUR6eHgyVTJP?= =?utf-8?B?b3FtbERCYUZyZzh6UkYvVWZpODEyQWJIRUdEVGlMdzVYbUNkWnpvR2Zld0Nk?= =?utf-8?B?QXFkVGVrbHFDd3FLRmVKdVhHYjgwYW1IZW51Z2dFUnRrYnMzTFMzYkF4K2tP?= =?utf-8?B?TTJzMFhnOU5CR2VvQW1RVElUYjlxRkJGSjdHOUM1Mk1tb0lVSEkydnlSZVZL?= =?utf-8?B?UWhZSERZaWViNVM0eFdmVXowT2lPSHNZajlrRnJHWFl2N3hSeUZXZ1o5VjNj?= =?utf-8?Q?0vVk=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1836;6:OVdR7cWQuMtW/9/RokL5K9/OFvQD8cu3oesJP5knZmgfbM16lgHVhX3o5mR3s9+s4PYE/Qg0VmsnYnbI9MUxpl4Ua14HojjDig7QG66k0Oc23UNzT0BbJEdMLI3YpFWYIfwxlm1wB0papg/Zkv1llC5hNt+WLUFS2h5C2Q405D/7S6FkvZa/DTxioCsHK4ojJK5SqgXTLhEMxBvQKKD3bZQjGO/hoan1LHeEkwcnyxZ0dh7IUT6HnfGjyxwoUZ6aLHqpW0SxPXo1n9+1c8GSwuiUeSuCxdwBlU9/8CRt2rEwynAMZwpqaF3fg+59be1ErQTJSahrvNft+kwA0Qu4M0G7gIbQKgrgM4Gzp/oNJAY=;5:t7nvrAWU7iVO3lGOHkekWNCJ91GcWVDvvI0diWqK/4JN4TPqu2uCfr7fpp0vSlTfqb5uvOLnNAIkJFfTbVxNzaFt14d4Q/978jaFxXrDaH+lejkn6fDkdmaoNFJjqFW9ojmg9ICt/lAltV7pUUQHHYDGFQDX3iraw1VKFLbHO6Q=;24:330LR4qe6F0y7fcmweGcWZ4frGW26Y9y1p8PUW90xBlIhx3pUGF9ZMu31BhTQRDu9LwiRRaek9/Aby/ohrENUN47ZTvWhrbAwUUtUW/LAbs=;7:NgzNUiwzWG+yuaqpCBQmWYYUBSOGxpzHXYoLPXNj6h2Hj+y6q42uGmY4H6BvK5MnivRYTTU/VLjBBQxz3Try+f42MlGCLBA/pKo6QFtERJNUXhumX4LYo/ZxO7YamGX+Gf7zGUQGex9/k1iOP0RbFL9ow/b5pmqNbakJXloKHBxOEIKu4Jz9xBESDf1RALWkDfOx0z9nzSuzZmhTs0lxQ7qWXdyJzjHremSWsyqwaE47fc9AvcNRn7X7xjIZLk7J SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1836;20:hQ2DN77KbLFlw3bXRM1t7F4RF1w1jlE45eGPYqOELdb1DIl9O3z+uccD5a8cKdioup7MXwm2okWTZITwTjJsqwIcBwrCDk5AZs0dx+hUFMMclknp86anfb12jGRgHGU7NCko2ot48vYzcUSp1JsW1P1aWt99AuCazSlHs8QDFAw= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2017 06:29:56.1618 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f45d67da-7f34-4b63-8504-08d534971d2e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR15MB1836 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-26_02:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/24/17 11:09 AM, Arnaldo Carvalho de Melo wrote: > Em Fri, Nov 24, 2017 at 04:16:52PM +0100, Daniel Borkmann escreveu: >> [ +Yonghong ] >> >> On 11/24/2017 03:47 PM, Arnaldo Carvalho de Melo wrote: >>> FYI, just noticed, recently updated clang to version 6, from its >>> upstream git repo. >> >> Do you recall what was your LLVM version prior to this where it was >> working fine? (Wild guess from below would be the BPF inline asm > > IIRC it was 4.0 I tried the following example (the almost the same one as the failed compilation one before except a few SEC(...) marking which should not impact the result): $ cat bpf_prog.c #include #include int bpf_func__vfs_llseek(void *ctx) { return 0; } $ cat run.sh KERNEL_INC_OPTIONS="-nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include -I/home/yhs/work/net-next/arch/x86/include -I/home/yhs/work/linux-bld/arch/x86/include -I/home/yhs/work/net-next/include -I/home/yhs/work/linux-bld/include -I/home/yhs/work/net-next/arch/x86/include/uapi -I/home/yhs/work/linux-bld/arch/x86/include/generated/uapi -I/home/yhs/work/net-next/include/uapi -I/home/yhs/work/linux-bld/include/generated/uapi -include /home/yhs/work/net-next/include/linux/kconfig.h" clang -D__KERNEL__ -D__NR_CPUS__=4 -xc \ $KERNEL_INC_OPTIONS \ -Wno-unused-value -Wno-pointer-sign \ -c bpf_prog.c -O2 -target bpf $ You can actually get KERNEL_INC_OPTIONS by compiling kernel samples/bpf. This program failed at both llvm 4.0 and latest trunk (6.0). The same symptom: In file included from bpf_prog.c:2: In file included from /home/yhs/work/net-next/arch/x86/include/uapi/asm/ptrace.h:5: In file included from /home/yhs/work/net-next/include/linux/compiler.h:237: In file included from /home/yhs/work/net-next/arch/x86/include/asm/barrier.h:5: In file included from /home/yhs/work/net-next/arch/x86/include/asm/alternative.h:10: /home/yhs/work/net-next/arch/x86/include/asm/asm.h:145:50: error: unknown register name 'esp' in asm register unsigned long current_stack_pointer asm(_ASM_SP); ^ /home/yhs/work/net-next/arch/x86/include/asm/asm.h:44:18: note: expanded from macro '_ASM_SP' #define _ASM_SP __ASM_REG(sp) I suggest that you use the same compilation process as samples/bpf and tools/testing/selftests/bpf: $ cat run1.sh KERNEL_INC_OPTIONS="-nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include -I/home/yhs/work/net-next/arch/x86/include -I/home/yhs/work/linux-bld/arch/x86/include -I/home/yhs/work/net-next/include -I/home/yhs/work/linux-bld/include -I/home/yhs/work/net-next/arch/x86/include/uapi -I/home/yhs/work/linux-bld/arch/x86/include/generated/uapi -I/home/yhs/work/net-next/include/uapi -I/home/yhs/work/linux-bld/include/generated/uapi -include /home/yhs/work/net-next/include/linux/kconfig.h" clang -D__KERNEL__ -D__NR_CPUS__=4 -xc \ $KERNEL_INC_OPTIONS \ -Wno-unused-value -Wno-pointer-sign \ -c bpf_prog.c -O2 -emit-llvm -S llc -filetype=obj -march=bpf bpf_prog.ll $ This is especially true if you are doing tracing there ptrace.h may be included in your header files. The "clang" compiler will be able to handle host inline asm properly and filter out functions which uses host inline asm's. If any file-level inline asms are still left (e.g., arm64), the llvm 6.0 should be able to handle this but not llvm 4.0. > >> support that was added recently to LLVM (2865ab6996) vs asm() used >> in headers included in the stdin header causing trouble due to arch >> mixup?) >> >>> root@jouet ~]# perf test -v LLVM >>> 37: LLVM search and compile : >>> 37.1: Basic BPF llvm compile : >>> --- start --- >>> test child forked, pid 5255 >>> Kernel build dir is set to /lib/modules/4.14.0+/build >>> set env: KBUILD_DIR=/lib/modules/4.14.0+/build >>> unset env: KBUILD_OPTS >>> include option is set to -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h >>> set env: NR_CPUS=4 >>> set env: LINUX_VERSION_CODE=0x40e00 >>> set env: CLANG_EXEC=/usr/local/bin/clang >>> set env: CLANG_OPTIONS=-xc >>> set env: KERNEL_INC_OPTIONS= -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h >>> set env: WORKING_DIR=/lib/modules/4.14.0+/build >>> set env: CLANG_SOURCE=- >>> llvm compiling command template: echo '/* >>> * bpf-script-example.c >>> * Test basic LLVM building >>> */ >>> #ifndef LINUX_VERSION_CODE >>> # error Need LINUX_VERSION_CODE >>> # error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' >>> #endif >>> #define BPF_ANY 0 >>> #define BPF_MAP_TYPE_ARRAY 2 >>> #define BPF_FUNC_map_lookup_elem 1 >>> #define BPF_FUNC_map_update_elem 2 >>> >>> static void *(*bpf_map_lookup_elem)(void *map, void *key) = >>> (void *) BPF_FUNC_map_lookup_elem; >>> static void *(*bpf_map_update_elem)(void *map, void *key, void *value, int flags) = >>> (void *) BPF_FUNC_map_update_elem; >>> >>> struct bpf_map_def { >>> unsigned int type; >>> unsigned int key_size; >>> unsigned int value_size; >>> unsigned int max_entries; >>> }; >>> >>> #define SEC(NAME) __attribute__((section(NAME), used)) >>> struct bpf_map_def SEC("maps") flip_table = { >>> .type = BPF_MAP_TYPE_ARRAY, >>> .key_size = sizeof(int), >>> .value_size = sizeof(int), >>> .max_entries = 1, >>> }; >>> >>> SEC("func=SyS_epoll_wait") >>> int bpf_func__SyS_epoll_wait(void *ctx) >>> { >>> int ind =0; >>> int *flag = bpf_map_lookup_elem(&flip_table, &ind); >>> int new_flag; >>> if (!flag) >>> return 0; >>> /* flip flag and store back */ >>> new_flag = !*flag; >>> bpf_map_update_elem(&flip_table, &ind, &new_flag, BPF_ANY); >>> return new_flag; >>> } >>> char _license[] SEC("license") = "GPL"; >>> int _version SEC("version") = LINUX_VERSION_CODE; >>> ' | $CLANG_EXEC -D__KERNEL__ -D__NR_CPUS__=$NR_CPUS -DLINUX_VERSION_CODE=$LINUX_VERSION_CODE $CLANG_OPTIONS $KERNEL_INC_OPTIONS -Wno-unused-value -Wno-pointer-sign -working-directory $WORKING_DIR -c "$CLANG_SOURCE" -target bpf -O2 -o - >>> test child finished with 0 >>> ---- end ---- >>> LLVM search and compile subtest 0: Ok >>> 37.2: kbuild searching : >>> --- start --- >>> test child forked, pid 5728 >>> Kernel build dir is set to /lib/modules/4.14.0+/build >>> set env: KBUILD_DIR=/lib/modules/4.14.0+/build >>> unset env: KBUILD_OPTS >>> include option is set to -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h >>> set env: NR_CPUS=4 >>> set env: LINUX_VERSION_CODE=0x40e00 >>> set env: CLANG_EXEC=/usr/local/bin/clang >>> set env: CLANG_OPTIONS=-xc >>> set env: KERNEL_INC_OPTIONS= -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h >>> set env: WORKING_DIR=/lib/modules/4.14.0+/build >>> set env: CLANG_SOURCE=- >>> llvm compiling command template: echo '/* >>> * bpf-script-test-kbuild.c >>> * Test include from kernel header >>> */ >>> #ifndef LINUX_VERSION_CODE >>> # error Need LINUX_VERSION_CODE >>> # error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' >>> #endif >>> #define SEC(NAME) __attribute__((section(NAME), used)) >>> >>> #include >>> #include >>> >>> SEC("func=vfs_llseek") >>> int bpf_func__vfs_llseek(void *ctx) >>> { >>> return 0; >>> } >>> >>> char _license[] SEC("license") = "GPL"; >>> int _version SEC("version") = LINUX_VERSION_CODE; >>> ' | $CLANG_EXEC -D__KERNEL__ -D__NR_CPUS__=$NR_CPUS -DLINUX_VERSION_CODE=$LINUX_VERSION_CODE $CLANG_OPTIONS $KERNEL_INC_OPTIONS -Wno-unused-value -Wno-pointer-sign -working-directory $WORKING_DIR -c "$CLANG_SOURCE" -target bpf -O2 -o - >>> In file included from :12: >>> In file included from /home/acme/git/linux/arch/x86/include/uapi/asm/ptrace.h:5: >>> In file included from /home/acme/git/linux/include/linux/compiler.h:237: >>> In file included from /home/acme/git/linux/arch/x86/include/asm/barrier.h:5: >>> In file included from /home/acme/git/linux/arch/x86/include/asm/alternative.h:10: >>> /home/acme/git/linux/arch/x86/include/asm/asm.h:145:50: error: unknown register name 'esp' in asm >>> register unsigned long current_stack_pointer asm(_ASM_SP); >>> ^ >>> /home/acme/git/linux/arch/x86/include/asm/asm.h:44:18: note: expanded from macro '_ASM_SP' >>> #define _ASM_SP __ASM_REG(sp) >>> ^ >>> /home/acme/git/linux/arch/x86/include/asm/asm.h:27:32: note: expanded from macro '__ASM_REG' >>> #define __ASM_REG(reg) __ASM_SEL_RAW(e##reg, r##reg) >>> ^ >>> /home/acme/git/linux/arch/x86/include/asm/asm.h:18:29: note: expanded from macro '__ASM_SEL_RAW' >>> # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a) >>> ^ >>> /home/acme/git/linux/arch/x86/include/asm/asm.h:11:32: note: expanded from macro '__ASM_FORM_RAW' >>> # define __ASM_FORM_RAW(x) #x >>> ^ >>> :4:1: note: expanded from here >>> "esp" >>> ^ >>> 1 error generated. >>> ERROR: unable to compile - >>> Hint: Check error message shown above. >>> Hint: You can also pre-compile it into .o using: >>> clang -target bpf -O2 -c - >>> with proper -I and -D options. >>> Failed to compile test case: 'kbuild searching' >>> test child finished with -1 >>> ---- end ---- >>> LLVM search and compile subtest 1: FAILED! >>> 37.3: Compile source for BPF prologue generation : >>> --- force skipped --- >>> LLVM search and compile subtest 2: Skip >>> 37.4: Compile source for BPF relocation : >>> --- force skipped --- >>> LLVM search and compile subtest 3: Skip >>> [root@jouet ~]# clang -v >>> clang version 6.0.0 (https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_git_clang.git&d=DwIBAg&c=5VD0RTtNlTh3ycd41b3MUw&r=DA8e1B5r073vIqRrFz7MRA&m=z5qVLSWJOX6g2fVdnv6PkJEj6w9ZeuUbyGZiXHbXR8o&s=e4qbhCUq0iI5gnbkZLhFvoo0HDFpRyIjElZsWLCJlZc&e= 56cc8f8880db2ebc433eeb6b6a707c101467a186) (https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_git_llvm.git&d=DwIBAg&c=5VD0RTtNlTh3ycd41b3MUw&r=DA8e1B5r073vIqRrFz7MRA&m=z5qVLSWJOX6g2fVdnv6PkJEj6w9ZeuUbyGZiXHbXR8o&s=1kpNkh0Slwca73HtsdX4NxJzsEM5vRjayUu-GQldnU8&e= 3656d83960a4f3fedf6d8f19043abf52379f78c3) >>> Target: x86_64-unknown-linux-gnu >>> Thread model: posix >>> InstalledDir: /usr/local/bin >>> Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/7 >>> Selected GCC installation: /usr/lib/gcc/x86_64-redhat-linux/7 >>> Candidate multilib: .;@m64 >>> Candidate multilib: 32;@m32 >>> Selected multilib: .;@m64 >>> [root@jouet ~]# >>>