[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#717557: gcc-4.8: can't compile working 64bit kernel with 32bit userspace gcc-4.8



Control: found -1 4.8.2-1
Control: tag -1 - moreinfo
Control: affects -1 src:linux
Control: severity -1 grave

This also affects linux-image-3.11-trunk-amd64:i386, and presumably
linux-image-3.11-1-amd64:i386, and might also affect
linux-image-3.11-1-powerpc64:powerpc (at least the warnings appear when
building that).

It appears that the the kernel's detection of supported gcc options is
now failing when using a multilib 'cross-compiler'.  Normally it will
suppress the pointer-sign warnings.  But other more critical options are
also affected.

Here's a wdiff of the commands used to compile init/main.c for amd64, on
amd64 vs i386:

gcc-4.8 -Wp,-MD,init/.main.o.d  -nostdinc -isystem
[-/usr/lib/gcc/x86_64-linux-gnu/4.8/include-]
{+/usr/lib/gcc/i486-linux-gnu/4.8/include+}
-I/home/ben/src/d-k/dists/sid/linux/arch/x86/include
-Iarch/x86/include/generated
-I/home/ben/src/d-k/dists/sid/linux/include -Iinclude
-I/home/ben/src/d-k/dists/sid/linux/arch/x86/include/uapi
-Iarch/x86/include/generated/uapi
-I/home/ben/src/d-k/dists/sid/linux/include/uapi
-Iinclude/generated/uapi
-include /home/ben/src/d-k/dists/sid/linux/include/linux/kconfig.h
-I/home/ben/src/d-k/dists/sid/linux/init -Iinit -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 -Os -Wno-maybe-uninitialized -m64
[--mno-sse -mpreferred-stack-boundary=3 -mtune=generic-] -mno-red-zone
-mcmodel=kernel [--funit-at-a-time-] -maccumulate-outgoing-args
[--fstack-protector-] -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1
-DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=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 -Wno-unused-but-set-variable-]
-fomit-frame-pointer [--g -Wdeclaration-after-statement
-Wno-pointer-sign -fno-strict-overflow -fconserve-stack-]
-DCC_HAVE_ASM_GOTO    -D"KBUILD_STR(s)=#s"
-D"KBUILD_BASENAME=KBUILD_STR(main)"
-D"KBUILD_MODNAME=KBUILD_STR(main)" -c -o
init/.tmp_main.o /home/ben/src/d-k/dists/sid/linux/init/main.c

I think the critical omissions are either or both of:

-fno-strict-overflow
-mno-sse

And the reason is that the compile tests are all failing with:

> In file included from <command-line>:0:0:
> /usr/include/stdc-predef.h:30:26: fatal error: bits/predefs.h: No such file or directory
>  #include <bits/predefs.h>
>                           ^
> compilation terminated.

It looks like I can avoid this by changing the compile tests to use the
-nostdinc option.  But this change may possibly cause other problems,
and neither the pre-included header nor the fact that -nostdinc disables
it seem to be documented.

Ben.

-- 
Ben Hutchings
Time is nature's way of making sure that everything doesn't happen at once.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: