[edk2] BaseTools: aarch64: add -fno-asynchronous-unwind-tables to gcc cflags

Message ID 1436449678-19930-1-git-send-email-leif.lindholm@linaro.org
State New
Headers show

Commit Message

Leif Lindholm July 9, 2015, 1:47 p.m.
Some toolchains, at least Fedora GCC, generate inline unwind tables in
object files. These confuses GenFw to no end, leading to build failures:
  GenFw: ERROR 3000: Invalid WriteSections64(): ...
         unsupported ELF EM_AARCH64 relocation 0x105.
  GenFw: ERROR 3000: Invalid WriteSections64(): ...
         unsupported ELF EM_AARCH64 relocation 0x0.

I am aware of no current use of these tables, so explicitly disable
their generation for aarch64.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
---
 BaseTools/Conf/tools_def.template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Leif Lindholm July 9, 2015, 2:05 p.m. | #1
On Thu, Jul 09, 2015 at 03:59:38PM +0200, Laszlo Ersek wrote:
> Am I right to think this is a verbatim repost from
> 
>   http://thread.gmane.org/gmane.comp.bios.tianocore.devel/12482

Rebased onto 0f895683da0613f27ac460a69745a15571d2a2a9, but yes,
otherwise identical.

/
    Leif
 
> ? If so, then I think Olivier should review it and then just go ahead
> and commit it, preferably with:
> 
> Tested-by: Wei Huang <wei@redhat.com>
> 
> based on Wei's message with Message-Id <54F740B4.3050104@redhat.com>.
> 
> Unfortunately I can't find that email at the moment in the gmane
> archive, but I'm attaching it.
> 
> Thanks
> Laszlo

> Date: Wed, 04 Mar 2015 11:28:20 -0600
> From: Wei Huang <wei@redhat.com>
> To: Laszlo Ersek <lersek@redhat.com>, edk2-devel@lists.sourceforge.net
> CC: linaro-uefi@lists.linaro.org, "Leif Lindholm (Linaro address)"
>  <leif.lindholm@linaro.org>
> Subject: Re: [edk2] [PATCH] BaseTools: aarch64: add
>  -fno-asynchronous-unwind-tables to cflags
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101
>  Thunderbird/31.2.0
> 
> I can confirm that this patch fixes my problem. The machine is a native
> AArch64 server, with Fedora GCC 4.8.3.
> 
> Thanks,
> -Wei
> 
> On 03/04/2015 03:13 AM, Laszlo Ersek wrote:
> > On 02/06/15 14:52, Leif Lindholm wrote:
> >> Some toolchains, at least Fedora GCC, generate inline unwind tables in
> >> object files. These confuses GenFw to no end, leading to build failures:
> >>   GenFw: ERROR 3000: Invalid WriteSections64(): ...
> >>          unsupported ELF EM_AARCH64 relocation 0x105.
> >>   GenFw: ERROR 3000: Invalid WriteSections64(): ...
> >>          unsupported ELF EM_AARCH64 relocation 0x0.
> >>
> >> I am aware of no current use of these tables, so explicitly disable
> >> their generation for aarch64.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.0
> >> Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
> >> ---
> >>  BaseTools/Conf/tools_def.template | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
> >> index f008024..04fdeba 100644
> >> --- a/BaseTools/Conf/tools_def.template
> >> +++ b/BaseTools/Conf/tools_def.template
> >> @@ -3817,7 +3817,7 @@ DEFINE GCC_IA32_CC_FLAGS           = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -
> >>  DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
> >>  DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency
> >>  DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
> >> -DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address
> >> +DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables
> >>  DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
> >>  DEFINE GCC_IA32_X64_DLINK_COMMON   = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
> >>  DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
> > 
> > Ping -- a colleague of mine has just run into this. (I don't use Fedora,
> > but many of my colleagues do.)
> > 
> > Thanks
> > Laszlo
> > 


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/

Patch hide | download patch | download mbox

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 7edd759..8e5750e 100644
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -3818,7 +3818,7 @@  DEFINE GCC_IA32_CC_FLAGS           = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -
 DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
 DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency
 DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
-DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address
+DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables
 DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
 DEFINE GCC_IA32_X64_DLINK_COMMON   = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
 DEFINE GCC_ARM_AARCH64_DLINK_COMMON= --emit-relocs -nostdlib --gc-sections -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map