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

Re: [Xen-devel] Bug#853710: xen: ftbfs with GCC-7



>>> On 31.01.17 at 13:09, <ian.jackson@xxxxxxxxxxxxx> wrote:
> Matthias Klose of the Debian Project reports that the Xen package in
> Debian stretch, which is based on a snapshot of xen.git#stable-4.8,
> does not build with GCC-7.
> 
> Matthias Klose writes ("Bug#853710: xen: ftbfs with GCC-7"):
>> The package fails to build in a test rebuild on at least amd64 with
>> gcc-7/g++-7, but succeeds to build with gcc-6/g++-6. The
>> severity of this report may be raised before the buster release.
>> There is no need to fix this issue in time for the stretch release.
>> 
>> The full build log can be found at:
>> 
> http://people.debian.org/~doko/logs/gcc7-20170126/xen_4.8.1~pre.2017.01.23-1_ 
> unstable_gcc7.log
>> The last lines of the build log are at the end of this report.
> ...
>> gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall 
> -Wstrict-prototypes -Wdeclaration-after-statement 
> -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -O2 
> -fomit-frame-pointer -nostdinc -fno-builtin -fno-common -Werror 
> -Wredundant-decls -Wno-pointer-arith -pipe -g -D__XEN__ -include 
> /<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/xen/co
> nfig.h '-D__OBJECT_FILE__="compat.o"' -Wa,--strip-local-absolute -MMD -MF 
> ./.compat.o.d 
> -I/<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include 
> -I/<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm-x8
> 6/mach-generic 
> -I/<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm-
> x86/mach-default '-D__OBJECT_LABEL__=arch$x86$efi$compat.o' -msoft-float 
> -fno-stack-protector -fno-exceptions -Wnested-externs -DHAVE_GAS_VMX 
> -DHAVE_GAS_SSE4_2 -DHAVE_GAS_EPT -DHAVE_GAS_FSGSBASE -U__OBJECT_LABEL__ 
> -DHAVE_GAS_QUOTED_SYM '-D__OBJECT_LABEL__=arch/x86/efi/compat.o' 
> -mno-red-zone -mno-sse -fpic -fno-asynchronous-unwind-tables 
> -DGCC_HAS_VISIBILITY_ATTRIBUTE -fshort-wchar -c compat.c -o compat.o
>> In file included from 
> /<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm/ua
> ccess.h:12:0,
>>                  from 
> /<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm/gu
> est_access.h:10,
>>                  from 
> /<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/xen/gu
> est_access.h:10,
>>                  from compat.c:1:
>> runtime.c: In function 'efi_compat_get_info':
>> 
> /<<PKGBUILDDIR>>/debian/build/build-hypervisor_amd64_amd64/xen/include/asm/x86_64
> /uaccess.h:56:37: error: '*' in boolean context, suggest '&&' instead 
> [-Werror=int-in-bool-context]
>>       compat_access_ok(addr, (count) * (size)))
> 
> I looked at the code and the macros at the root of the message are
> these:
> 
>   #define compat_array_access_ok(addr,count,size) \
>       (likely((count) < (~0U / (size))) && \
>        compat_access_ok(addr, (count) * (size)))
> 
>   #define __compat_access_ok(d, addr, size) \
>       __compat_addr_ok(d, (unsigned long)(addr) + ((size) ? (size) - 1 : 0))
> 
> This expands to, effectively (and stripping extra parents etc.)
> 
>       addr + (count*size ? count*size - 1 : 0)
> 
> GCC-7 is complaining about count*size (ie, the result of a
> multiplication) being used as a boolean (ie, for the ?: conditional).
> 
> I think the compiler is simply wrong to complain about this.  Such
> idioms must be extremely common.

Indeed. They should report this against gcc.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.