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