]> code.ossystems Code Review - openembedded-core.git/commitdiff
binutils: enable x86_64-pep for producing EFI binaries on x86-64
authorChristopher Clark <christopher.w.clark@gmail.com>
Mon, 30 Jul 2018 07:55:21 +0000 (00:55 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Aug 2018 22:47:47 +0000 (23:47 +0100)
Add x86_64-pep emulation support to the set enabled for x86_64 targets
to enable the linker to produce Portable Executables for EFI binaries.

Enables building the x86-64 EFI variant of the Xen hypervisor for
the OpenXT Project.

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/recipes-devtools/binutils/binutils-2.31.inc
meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch [new file with mode: 0644]

index ec9e9c330dab429b717314a490872495d5492fb1..02d5bcab735778eb6ab96f633d4cf25acb524d6c 100644 (file)
@@ -35,6 +35,7 @@ SRC_URI = "\
      file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
      file://0014-Detect-64-bit-MIPS-targets.patch \
      file://0015-sync-with-OE-libtool-changes.patch \
+     file://0016-add-i386pep-emulation-for-x86_64.patch \
 "
 S  = "${WORKDIR}/git"
 
diff --git a/meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch b/meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch
new file mode 100644 (file)
index 0000000..9f20784
--- /dev/null
@@ -0,0 +1,41 @@
+binutils : enable x86_64-pep for producing EFI binaries on x86-64
+
+Add x86_64-pep emulation support to the set enabled for x86_64 targets
+to enable the linker to produce Portable Executables for EFI binaries.
+
+Enables building the x86-64 EFI variant of the Xen hypervisor for
+the OpenXT Project.
+
+Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+
+Upstream-Status: Inappropriate [OE configuration specific]
+---
+diff --git a/bfd/config.bfd b/bfd/config.bfd
+index c882421..dc705b6 100644
+--- a/bfd/config.bfd
++++ b/bfd/config.bfd
+@@ -688,7 +688,7 @@ case "${targ}" in
+     ;;
+   x86_64-*-linux-*)
+     targ_defvec=x86_64_elf64_vec
+-    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
++    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec x86_64_pe_vec x86_64_pe_be_vec i386_pe_vec"
+     want64=true
+     ;;
+   x86_64-*-nacl*)
+diff --git a/ld/configure.tgt b/ld/configure.tgt
+index a1db7ad..65a984a 100644
+--- a/ld/configure.tgt
++++ b/ld/configure.tgt
+@@ -253,8 +253,9 @@ x86_64-*-linux-gnux32)     targ_emul=elf32_x86_64
+                       tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'`
+                       tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` ;;
+ x86_64-*-linux-*)     targ_emul=elf_x86_64
+-                      targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om"
+-                      targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om"
++                      targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om i386pe i386pep"
++                      targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om i386pep"
++                      targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o"
+                       tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;;
+ i[3-7]86-*-redox*)    targ_emul=elf_i386
+                       targ_extra_emuls=elf_x86_64 ;;