From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753868AbdKXTJ0 (ORCPT ); Fri, 24 Nov 2017 14:09:26 -0500 Received: from mail.kernel.org ([198.145.29.99]:54454 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753703AbdKXTJZ (ORCPT ); Fri, 24 Nov 2017 14:09:25 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E0879219A1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=acme@kernel.org Date: Fri, 24 Nov 2017 16:09:23 -0300 From: Arnaldo Carvalho de Melo To: Daniel Borkmann Cc: Wang Nan , Alexei Starovoitov , Adrian Hunter , David Ahern , Jiri Olsa , Ingo Molnar , Namhyung Kim , Linux Kernel Mailing List , yhs@fb.com Subject: Re: perf test LLVM & clang 6 failing Message-ID: <20171124190923.GR8789@kernel.org> References: <20171124144717.GO8789@kernel.org> <7cd16670-37c9-21f5-21c8-d50385ebc951@iogearbox.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7cd16670-37c9-21f5-21c8-d50385ebc951@iogearbox.net> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > 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 (http://llvm.org/git/clang.git 56cc8f8880db2ebc433eeb6b6a707c101467a186) (http://llvm.org/git/llvm.git 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 ~]# > >