On Wed, 2016-01-20 at 20:16 -0800, Martin Michlmayr wrote: > Package: xen > Version: 4.6.0-1 > Severity: important > User: debian-...@lists.debian.org > Usertags: ftbfs-gcc-6 gcc-6-misleading-indentation > > This package fails to build with GCC 6. GCC 6 has not been released > yet, but it's expected that GCC 6 will become the default compiler for > stretch. > > Note that only the first error is reported; there might be more. You > can find a snapshot of GCC 6 in experimental. To build with GCC 6, > you can set CC=gcc-6 CXX=g++-6 explicitly. > > You may be able to find out more about this issue at > https://gcc.gnu.org/gcc-6/changes.html > > > sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on dl580gen9-02.hlinux > ... > > gcc -O2 -fomit-frame-pointer -m64 -fno-strict-aliasing -std=gnu99 -Wall > > -Wstrict-prototypes -Wdeclaration-after-statement > > -Wno-unused-but-set-variable -Wno-unused-local-typedefs -DNDEBUG > > -I/<>/debian/build/build-hypervisor_amd64_amd64/xen/include > > -I/<>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm-x86/mach-generic > > > > -I/<>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm-x86/mach-default > > -msoft-float -fno-stack-protector -fno-exceptions -Wnested-externs > > -DHAVE_GAS_VMX -DHAVE_GAS_EPT -DHAVE_GAS_FSGSBASE -mno-red-zone -mno-sse > > -fpic -fno-asynchronous-unwind-tables -DGCC_HAS_VISIBILITY_ATTRIBUTE > > -fno-builtin -fno-common -Werror -Wredundant-decls -Wno-pointer-arith -pipe > > -g -D__XEN__ -include > > /<>/debian/build/build-hypervisor_amd64_amd64/xen/include/xen/config.h > > -nostdinc -DCONFIG_SHADOW_PAGING -DHAS_ACPI -DHAS_GDBSX -DHAS_PASSTHROUGH > > -DHAS_MEM_ACCESS -DHAS_MEM_PAGING -DHAS_MEM_SHARING -DHAS_PCI -DHAS_IOPORT > > S -DHAS_PDX -MMD -MF .non-fatal.o.d -c non-fatal.c -o non-fatal.o > > non-fatal.c: In function 'init_nonfatal_mce_checker': > > non-fatal.c:103:2: error: statement is indented as if it were guarded by... > > [-Werror=misleading-indentation] > > switch (c->x86_vendor) { > > ^~~~~~ > > > > non-fatal.c:97:5: note: ...this 'if' clause, but it is not > > if ( __get_cpu_var(poll_bankmask) == NULL ) > > ^~ > > > > cc1: all warnings being treated as errors
I have rebuilt the upstream xen source (both development version and 4.6) with gcc-6 from experimental: $ gcc-6 --version gcc-6 (Debian 6-20160117-1) 6.0.0 20160117 (experimental) [trunk revision 232481] Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. and did not come across any issues. However looking at non-fatal.c I can see that the misleading-indentation it is complaining about is still present. Neither the upstream build system nor the Debian packaging are enabling Wmisleading-indentation, so I suspect this has come from somewhere else, perhaps via gcc or maybe via dh and some hardening thing? I don't see the warning/error being enabled on the gcc command line in the log snippet above, so perhaps this was an option enabled in an earlier gcc- 6 snapshot which isn't on now? Regardless, I'm going to take a look at enabling this warning upstream and fixing the fallout, since it seems like a good code cleanliness thing to do. Ian.