All of lore.kernel.org
 help / color / mirror / Atom feed
From: Keir Fraser <keir.xen@gmail.com>
To: Roger Pau Monne <roger.pau@entel.upc.edu>, xen-devel@lists.xensource.com
Subject: Re: [PATCH] ipxe: fix compilation issues with some gcc versions
Date: Fri, 16 Dec 2011 12:59:10 +0000	[thread overview]
Message-ID: <CB10F11E.27664%keir.xen@gmail.com> (raw)
In-Reply-To: <8c0ce135cda382630adc.1324039808@alpine.localdomain>

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

> # HG changeset patch
> # User Roger Pau Monne <roger.pau@entel.upc.edu>
> # 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@entel.upc.edu>
> 
> 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@ipxe.org>
> +Date:   Wed Mar 16 19:30:42 2011 +0000
> +
> +    [build] Allow workaround-specific flags to override default flags
> +    
> +    Signed-off-by: Michael Brown <mcb30@ipxe.org>
> +
> +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@free.fr>
> +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@free.fr>
> +    Modified-by: Michael Brown <mcb30@ipxe.org>
> +    Signed-off-by: Michael Brown <mcb30@ipxe.org>
> +
> +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@lists.xensource.com
> http://lists.xensource.com/xen-devel

  reply	other threads:[~2011-12-16 12:59 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-16 12:50 [PATCH] ipxe: fix compilation issues with some gcc versions Roger Pau Monne
2011-12-16 12:59 ` Keir Fraser [this message]
2011-12-16 13:04   ` Roger Pau Monné
2011-12-16 13:21     ` Keir Fraser
2011-12-18 13:26       ` Roger Pau Monné
2011-12-18 14:56         ` Keir Fraser
2011-12-20 12:57           ` Roger Pau Monné
2011-12-20 13:02             ` Keir Fraser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CB10F11E.27664%keir.xen@gmail.com \
    --to=keir.xen@gmail.com \
    --cc=roger.pau@entel.upc.edu \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.