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

Re: [Xen-devel] [PATCH] ipxe: fix compilation issues with some gcc versions


  • To: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Keir Fraser <keir.xen@xxxxxxxxx>
  • Date: Fri, 16 Dec 2011 12:59:10 +0000
  • Delivery-date: Fri, 16 Dec 2011 12:59:46 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: Acy78oCLOKqhbAQjD0KZeXiHTjEmDg==
  • Thread-topic: [Xen-devel] [PATCH] ipxe: fix compilation issues with some gcc versions

On 16/12/2011 12:50, "Roger Pau Monne" <roger.pau@xxxxxxxxxxxxx> wrote:

> # HG changeset patch
> # User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> # Date 1324039730 -3600
> # Node ID 8c0ce135cda382630adc72d64757ec64854ba696
> # Parent  b60667a56ae085ee2bcea896887d0907fb86af41
> ipxe: fix compilation issues with some gcc versions
> 
> Backported some changes from current ipxe, to fix a issue with some
> new versions of gcc that add -fPIC by default, and compilation fails
> with the following error:

Is there a newer release tag on the ipxe repo that we could build instead,
that would automatically get us these fixes?

 -- Keir

> arch/i386/core/cpu.c: In function 'get_cpuinfo':
> arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
> constraints in an 'asm'
> arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
> constraints in an 'asm'
> arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
> constraints in an 'asm'
> arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
> constraints in an 'asm'
> 
> Two patches from ipxe git have been added. The problem is reproducible
> with at least this version of gcc:
> 
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-alpine-linux-uclibc/4.6.2/lto-wrap
> per
> Target: x86_64-alpine-linux-uclibc
> Configured with:
> /home/buildozer/aports/main/gcc/src/gcc-4.6.2/configure --prefix=/usr
> --mandir=/usr/share/man --infodir=/usr/share/info
> --build=x86_64-alpine-linux-uclibc --host=x86_64-alpine-linux-uclibc
> --target=x86_64-alpine-linux-uclibc --with-pkgversion='Alpine
> 4.6.2-r1' --disable-altivec --disable-checking --disable-fixed-point
> --disable-libssp --disable-libstdcxx-pch --disable-multilib
> --disable-nls --disable-werror --enable-__cxa_atexit --enable-cld
> --enable-esp --enable-cloog-backend
> --enable-languages=c,c++,objc,java,go --enable-shared
> --enable-target-optspace --enable-tls --enable-threads
> --with-dynamic-linker=ld64-uClibc.so.0.9.32
> --with-dynamic-linker-prefix=/lib --with-system-zlib
> --without-system-libunwind
> Thread model: posix
> gcc version 4.6.2 (Alpine 4.6.2-r1)
> 
> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> 
> diff -r b60667a56ae0 -r 8c0ce135cda3
> tools/firmware/etherboot/patches/gpxe-git-b8924c1aed51
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/firmware/etherboot/patches/gpxe-git-b8924c1aed51 Fri Dec 16
> 13:48:50 2011 +0100
> @@ -0,0 +1,72 @@
> +commit b8924c1aed512aa40cf28a43635df383880f771d
> +Author: Michael Brown <mcb30@xxxxxxxx>
> +Date:   Wed Mar 16 19:30:42 2011 +0000
> +
> +    [build] Allow workaround-specific flags to override default flags
> +    
> +    Signed-off-by: Michael Brown <mcb30@xxxxxxxx>
> +
> +diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
> +index 709f8de..78e78c9 100644
> +--- a/src/Makefile.housekeeping
> ++++ b/src/Makefile.housekeeping
> +@@ -109,6 +109,10 @@ VERYCLEANUP += .toolcheck
> + # Check for various tool workarounds
> + #
> + 
> ++WORKAROUND_CFLAGS :=
> ++WORKAROUND_ASFLAGS :=
> ++WORKAROUND_LDFLAGS :=
> ++
> + # Make syntax does not allow use of comma or space in certain places.
> + # This ugly workaround is suggested in the manual.
> + #
> +@@ -119,7 +123,7 @@ SPACE := $(EMPTY) $(EMPTY)
> + # Check for an old version of gas (binutils 2.9.1)
> + #
> + OLDGAS := $(shell $(AS) --version | grep -q '2\.9\.1' && $(ECHO) -DGAS291)
> +-CFLAGS += $(OLDGAS)
> ++WORKAROUND_CFLAGS += $(OLDGAS)
> + oldgas :
> +  @$(ECHO) $(oldgas)
> + 
> +@@ -131,7 +135,7 @@ ifeq ($(CCTYPE),gcc)
> + SP_TEST = $(CC) -fno-stack-protector -x c -c /dev/null \
> +   -o /dev/null >/dev/null 2>&1
> + SP_FLAGS := $(shell $(SP_TEST) && $(ECHO) '-fno-stack-protector')
> +-CFLAGS += $(SP_FLAGS)
> ++WORKAROUND_CFLAGS += $(SP_FLAGS)
> + endif
> + 
> + # gcc 4.4 generates .eh_frame sections by default, which distort the
> +@@ -141,7 +145,7 @@ ifeq ($(CCTYPE),gcc)
> + CFI_TEST = $(CC) -fno-dwarf2-cfi-asm -x c -c /dev/null \
> +    -o /dev/null >/dev/null 2>&1
> + CFI_FLAGS := $(shell $(CFI_TEST) && $(ECHO) '-fno-dwarf2-cfi-asm')
> +-CFLAGS += $(CFI_FLAGS)
> ++WORKAROUND_CFLAGS += $(CFI_FLAGS)
> + endif
> + 
> + # Some versions of gas choke on division operators, treating them as
> +@@ -150,7 +154,7 @@ endif
> + #
> + DIVIDE_TEST = $(AS) --divide /dev/null -o /dev/null 2>/dev/null
> + DIVIDE_FLAGS := $(shell $(DIVIDE_TEST) && $(ECHO) '--divide')
> +-ASFLAGS += $(DIVIDE_FLAGS)
> ++WORKAROUND_ASFLAGS += $(DIVIDE_FLAGS)
> + 
> + 
> 
##############################################################################>
#
> + #
> +@@ -375,9 +379,9 @@ CFLAGS  += -diag-disable 1419 # Missing prototypes
> + CFLAGS  += -diag-disable 1599 # Hidden variables
> + CFLAGS  += -Wall -Wmissing-declarations
> + endif
> +-CFLAGS  += $(EXTRA_CFLAGS)
> +-ASFLAGS  += $(EXTRA_ASFLAGS)
> +-LDFLAGS  += $(EXTRA_LDFLAGS)
> ++CFLAGS  += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS)
> ++ASFLAGS  += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS)
> ++LDFLAGS  += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS)
> + 
> + # Inhibit -Werror if NO_WERROR is specified on make command line
> + #
> diff -r b60667a56ae0 -r 8c0ce135cda3
> tools/firmware/etherboot/patches/gpxe-git-fe61f6de0dd5
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/firmware/etherboot/patches/gpxe-git-fe61f6de0dd5 Fri Dec 16
> 13:48:50 2011 +0100
> @@ -0,0 +1,32 @@
> +commit fe61f6de0dd5d39ac3de5e8e18742f9bd0aafad7
> +Author: Gilles Espinasse <g.esp@xxxxxxx>
> +Date:   Tue Mar 29 15:30:11 2011 +0100
> +
> +    [build] Fix compilation when gcc is patched to default to -fPIE -Wl,-pie
> +    
> +    Signed-off-by: Gilles Espinasse <g.esp@xxxxxxx>
> +    Modified-by: Michael Brown <mcb30@xxxxxxxx>
> +    Signed-off-by: Michael Brown <mcb30@xxxxxxxx>
> +
> +diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
> +index 57e52c0..c184351 100644
> +--- a/src/Makefile.housekeeping
> ++++ b/src/Makefile.housekeeping
> +@@ -138,6 +138,17 @@ SP_FLAGS := $(shell $(SP_TEST) && $(ECHO)
> '-fno-stack-protector')
> + WORKAROUND_CFLAGS += $(SP_FLAGS)
> + endif
> + 
> ++# Some widespread patched versions of gcc include -fPIE -Wl,-pie by
> ++# default.  Note that gcc will exit *successfully* if it fails to
> ++# recognise an option that starts with "no", so we have to test for
> ++# output on stderr instead of checking the exit status.
> ++#
> ++ifeq ($(CCTYPE),gcc)
> ++PIE_TEST = [ -z "`$(CC) -fno-PIE -nopie -x c -c /dev/null -o /dev/null
> 2>&1`" ]
> ++PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE -nopie')
> ++WORKAROUND_CFLAGS += $(PIE_FLAGS)
> ++endif
> ++
> + # gcc 4.4 generates .eh_frame sections by default, which distort the
> + # output of "size".  Inhibit this.
> + #
> diff -r b60667a56ae0 -r 8c0ce135cda3 tools/firmware/etherboot/patches/series
> --- a/tools/firmware/etherboot/patches/series Fri Dec 16 10:47:18 2011 +0100
> +++ b/tools/firmware/etherboot/patches/series Fri Dec 16 13:48:50 2011 +0100
> @@ -1,3 +1,5 @@
>  boot_prompt_option.patch
>  gpxe-git-0edf2405b457
>  gpxe-git-a803ef3dfeac
> +gpxe-git-b8924c1aed51
> +gpxe-git-fe61f6de0dd5
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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