Package: linux Version: 3.14.4-1 Usertags: goto-cc During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder and pbuilder) the build failed with the following error. Please note that we use our research compiler tool-chain (using tools from the cbmc package), which permits extended reporting on type inconsistencies at link time.
[...] HOSTCC arch/x86/tools/relocs_32.o HOSTCC arch/x86/tools/relocs_64.o HOSTCC arch/x86/tools/relocs_common.o HOSTLD arch/x86/tools/relocs file /srv/jenkins-slave/workspace/sid-goto-cc-linux/linux-3.14.4/arch/x86/tools/relocs.c line 698: error: conflicting types for variable "per_cpu_load_addr" old definition in module relocs_32 file /srv/jenkins-slave/workspace/sid-goto-cc-linux/linux-3.14.4/arch/x86/tools/relocs.c line 698 unsigned int new definition in module relocs_64 file /srv/jenkins-slave/workspace/sid-goto-cc-linux/linux-3.14.4/arch/x86/tools/relocs.c line 698 unsigned long int scripts/Makefile.host:127: recipe for target 'arch/x86/tools/relocs' failed make[6]: *** [arch/x86/tools/relocs] Error 64 /srv/jenkins-slave/workspace/sid-goto-cc-linux/linux-3.14.4/arch/x86/Makefile:179: recipe for target 'archscripts' failed make[5]: *** [archscripts] Error 2 Unlike other variables in relocs.c, per_cpu_load_addr is not marked static: http://sources.debian.net/src/linux/3.11.8-1/arch/x86/tools/relocs.c?hl=698#L698 As, however, the type used in its declaration is different for relocs_32/relocs_64, a type conflict (of the thus duplicate definition) arises. The standard linker will pick either of the two definitions, possibly resulting in the 32 bit (unsigned int) version being used, which would cause arbitrary values to be overwritten when assigning to per_cpu_load_addr in a 64 bit context. Best, Michael
pgpArdNsrEA0h.pgp
Description: PGP signature