bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/20062] Gold2.26 fail to link Uefi firmware with internal error


From: steven.shi at intel dot com
Subject: [Bug gold/20062] Gold2.26 fail to link Uefi firmware with internal error in do_layout, but ld works
Date: Tue, 12 Dec 2017 03:04:48 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=20062

--- Comment #4 from Steven Shi <steven.shi at intel dot com> ---
Thanks. With below build option update, the Uefi GCC5 tool chain can use
ld.gold  build OVMF and boot on Qemu.

$ git diff master
diff --git a/BaseTools/Conf/tools_def.template
b/BaseTools/Conf/tools_def.template
index 98ab6dd..919c1b4 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -4584,14 +4584,14 @@ DEFINE GCC48_AARCH64_DLINK2_FLAGS    =
DEF(GCC47_AARCH64_DLINK2_FLAGS)
 DEFINE GCC48_ARM_ASLDLINK_FLAGS      = DEF(GCC47_ARM_ASLDLINK_FLAGS)
 DEFINE GCC48_AARCH64_ASLDLINK_FLAGS  = DEF(GCC47_AARCH64_ASLDLINK_FLAGS)

-DEFINE GCC49_IA32_CC_FLAGS           = DEF(GCC48_IA32_CC_FLAGS)
-DEFINE GCC49_X64_CC_FLAGS            = DEF(GCC48_X64_CC_FLAGS)
+DEFINE GCC49_IA32_CC_FLAGS           = DEF(GCC48_IA32_CC_FLAGS) -fuse-ld=gold
+DEFINE GCC49_X64_CC_FLAGS            = DEF(GCC48_X64_CC_FLAGS) -fuse-ld=gold
-mcmodel=large -fno-pie
 DEFINE GCC49_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-n,-q,--gc-sections -z
common-page-size=0x40
 DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON)
-Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
 DEFINE GCC49_IA32_X64_DLINK_FLAGS    = DEF(GCC49_IA32_X64_DLINK_COMMON)
-Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)
-Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE GCC49_IA32_DLINK2_FLAGS       = DEF(GCC48_IA32_DLINK2_FLAGS)
+DEFINE GCC49_IA32_DLINK2_FLAGS       = DEF(GCC48_IA32_DLINK2_FLAGS)
-fuse-ld=gold -Wl,--no-gc-sections
 DEFINE GCC49_X64_DLINK_FLAGS         = DEF(GCC49_IA32_X64_DLINK_FLAGS)
-Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
-DEFINE GCC49_X64_DLINK2_FLAGS        = DEF(GCC48_X64_DLINK2_FLAGS)
+DEFINE GCC49_X64_DLINK2_FLAGS        = DEF(GCC48_X64_DLINK2_FLAGS)
-fuse-ld=gold -Wl,-no-pie,--no-gc-sections
 DEFINE GCC49_ASM_FLAGS               = DEF(GCC48_ASM_FLAGS)
 DEFINE GCC49_ARM_ASM_FLAGS           = DEF(GCC48_ARM_ASM_FLAGS)
 DEFINE GCC49_AARCH64_ASM_FLAGS       = DEF(GCC48_AARCH64_ASM_FLAGS)
diff --git a/BaseTools/Scripts/GccBase.lds b/BaseTools/Scripts/GccBase.lds
old mode 100644
new mode 100755
index a43e007..7e2f5a7
--- a/BaseTools/Scripts/GccBase.lds
+++ b/BaseTools/Scripts/GccBase.lds
@@ -57,10 +57,6 @@ SECTIONS {
     KEEP (*(.eh_frame))
   }

-  .rela (INFO) : {
-    *(.rela .rela.*)
-  }
-
   .hii : ALIGN(CONSTANT(COMMONPAGESIZE)) {
     KEEP (*(.hii))
   }
@@ -69,7 +65,6 @@ SECTIONS {
    * Retain the GNU build id but in a non-allocatable section so GenFw
    * does not copy it into the PE/COFF image.
    */
-  .build-id (INFO) : { *(.note.gnu.build-id) }

   /DISCARD/ : {
     *(.note.GNU-stack)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]