[dpdk-dev] compile error with linuxapp-clang target on Fedora 20 with 3.15.10 kernel

Neil Horman nhorman at tuxdriver.com
Mon Sep 22 15:18:51 CEST 2014


On Mon, Sep 22, 2014 at 09:36:33AM +0000, Richardson, Bruce wrote:
> Hi all,
> 
> just looking to see if anyone has any suggestions to help me debug an issue I'm seeing here. Basically, the clang target is no longer working for me on Fedora 20 -due to errors when compiling up the kernel modules. The interesting thing is that the gcc target works fine, while the clang target doesn't - despite the fact that gcc is used as the compiler for the kernel modules in both builds. Something else about the clang target is affecting the kernel compile.
> 
> From my investigation, it looks like the compiler flags used in both cases are different, but I'm not sure why. The output of compiling up the first of the kni files is shown below, first for a regular gcc target and secondly for the clang target. From what I read, some initial support for clang compiler went into the 3.15 kernels - is it possible that clang is being incorrectly detected as the kernel compiler by the kernel build system in the second case?
> 
> Regards,
> /Bruce
> 
> #### GCC TARGET COMPILE
> == Build lib/librte_eal/linuxapp/kni
> make -C /usr/src/kernels/3.15.10-201.fc20.x86_64 \
> KBUILD_SRC=/usr/src/kernels/3.15.10-201.fc20.x86_64 \
> KBUILD_EXTMOD="/home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni" -f /usr/src/kernels/3.15.10-201.fc20.x86_64/Makefile \
> 
> test -e include/generated/autoconf.h -a -e include/config/auto.conf || (                \
> echo >&2;                                                       \
> echo >&2 "  ERROR: Kernel configuration is invalid.";           \
> echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
> echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";      \
> echo >&2 ;                                                      \
> /bin/false)
> mkdir -p /home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/.tmp_versions ; rm -f /home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/.tmp_versions/*
> make -f /usr/src/kernels/3.15.10-201.fc20.x86_64/scripts/Makefile.build obj=/home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni
>   gcc -Wp,-MD,/home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/.ixgbe_main.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include -I/usr/src/kernels/3.15.10-201.fc20.x86_64/arch/x86/include -Iarch/x86/include/generated  -I/usr/src/kernels/3.15.10-201.fc20.x86_64/include -Iinclude -I/usr/src/kernels/3.15.10-201.fc20.x86_64/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/kernels/3.15.10-201.fc20.x86_64/include/uapi -Iinclude/generated/uapi -include /usr/src/kernels/3.15.10-201.fc20.x86_64/include/linux/kconfig.h   -I/home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mno-mmx -mno-sse -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni --param max-inline-insns-single=50   -I/home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/include   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni/ethtool/ixgbe   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni/ethtool/igb -include /home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/include/rte_config.h -Wall -Werror  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(ixgbe_main)"  -D"KBUILD_MODNAME=KBUILD_STR(rte_kni)" -c -o /home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o /home/bruce/mbuf_rework/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.c
> 
> #### CLANG TARGET COMPILE (MODULE COMPILED USING GCC)
> == Build lib/librte_eal/linuxapp/kni
> make -C /usr/src/kernels/3.15.10-201.fc20.x86_64 \
> KBUILD_SRC=/usr/src/kernels/3.15.10-201.fc20.x86_64 \
> KBUILD_EXTMOD="/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni" -f /usr/src/kernels/3.15.10-201.fc20.x86_64/Makefile \
> 
> test -e include/generated/autoconf.h -a -e include/config/auto.conf || (                \
> echo >&2;                                                       \
> echo >&2 "  ERROR: Kernel configuration is invalid.";           \
> echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
> echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";      \
> echo >&2 ;                                                      \
> /bin/false)
> mkdir -p /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/.tmp_versions ; rm -f /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/.tmp_versions/*
> make -f /usr/src/kernels/3.15.10-201.fc20.x86_64/scripts/Makefile.build obj=/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni
>   gcc -Wp,-MD,/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/.ixgbe_main.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include -I/usr/src/kernels/3.15.10-201.fc20.x86_64/arch/x86/include -Iarch/x86/include/generated  -I/usr/src/kernels/3.15.10-201.fc20.x86_64/include -Iinclude -I/usr/src/kernels/3.15.10-201.fc20.x86_64/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/kernels/3.15.10-201.fc20.x86_64/include/uapi -Iinclude/generated/uapi -include /usr/src/kernels/3.15.10-201.fc20.x86_64/include/linux/kconfig.h   -I/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni -D__KERNEL__ -Wno-unknown-warning-option -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mno-mmx -mno-sse -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni --param max-inline-insns-single=50   -I/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/include   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni/ethtool/ixgbe   -I/home/bruce/mbuf_rework/lib/librte_eal/linuxapp/kni/ethtool/igb -include /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/include/rte_config.h -Wall -Werror  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(ixgbe_main)"  -D"KBUILD_MODNAME=KBUILD_STR(rte_kni)" -c -o /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/ixgbe_main.c
> In file included from /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/ixgbe_main.c:34:0:
> /usr/src/kernels/3.15.10-201.fc20.x86_64/include/linux/netdevice.h: In function 'netif_addr_lock_nested':
> /usr/src/kernels/3.15.10-201.fc20.x86_64/include/linux/netdevice.h:2954:6: error: variable 'subclass' set but not used [-Werror=unused-but-set-variable]
>   int subclass = SINGLE_DEPTH_NESTING;
>       ^
> /home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/ixgbe_main.c: At top level:
> cc1: error: unrecognized command line option "-Wno-unknown-warning-option" [-Werror]
> cc1: all warnings being treated as errors
> make[10]: *** [/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o] Error 1
> make[9]: *** [_module_/home/bruce/mbuf_rework/x86_64-native-linuxapp-clang/build/lib/librte_eal/linuxapp/kni] Error 2
> make[8]: *** [sub-make] Error 2
> make[7]: *** [rte_kni.ko] Error 2
> make[6]: *** [kni] Error 2
> make[5]: *** [linuxapp] Error 2
> make[4]: *** [librte_eal] Error 2
> make[3]: *** [lib] Error 2
> make[2]: *** [all] Error 2
> make[1]: *** [x86_64-native-linuxapp-clang_install] Error 2
> make: *** [install] Error 2
> 


FWIW, gcc documents the -Wno-unknown-warning option, not the
-Wno-unknown-warning-option option, so it seems that, when using the clang
config something about it is slipping in an extra option that gcc is choking on,
though I can't see what that might be from my git tree

Neil



More information about the dev mailing list