Khem, are you OK with this v6 patch for binutils to add build support for EFI on x86-64?
Christopher On Mon, Jul 30, 2018 at 11:32 AM, Khem Raj <raj.k...@gmail.com> wrote: > We can and many toolchains do that especially in embedded targets but it > will cause more compile time to build binutils and size will grow a lot and > since we do not use universal binutils which can be shared across > architectures we will not benefit from this although it does mean our > binutils will be able to inspect objects of many different kinds weather > that’s valuable or not I can’t say much it’s not my usecase at least > > On Mon, Jul 30, 2018 at 4:29 AM Burton, Ross <ross.bur...@intel.com> > wrote: > >> Is just passing --enable-targets=all not an option? >> >> Ross >> >> On 30 July 2018 at 08:55, Christopher Clark >> <christopher.w.cl...@gmail.com> wrote: >> > 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.cla...@baesystems.com> >> > --- >> > Changes in v6: added required "Upstream-Status" field to patch header. >> > >> > Changes in v5: Apply a patch to extend the set of emulations for x86-64, >> > instead of supplying the "enable-targets" flag via the recipe. >> > >> > Reasoning: this looks like the least invasive way to add the needed >> emulation >> > only when required. It will add the extra support to any builds that >> have >> > x86-64 target enabled and not modify others. >> > >> > binutils uses autoconf and the AC_ARG_ENABLE macro for handling the >> > "--enable-targets" option to the generated configure script. It doesn't >> allow >> > for repeating the parameter with additional arguments to extend the >> list: >> > it's a one-shot flag. That seems to be standard practice for autoconf. >> > >> > binutils source contains config files that map from the target >> identifiers >> > to lists of emulations to enable. This patch extends some of those >> lists. >> > >> > Tested with x86-64 build to produce Xen EFI. >> > >> > meta/recipes-devtools/binutils/binutils-2.31.inc | 1 + >> > .../0016-add-i386pep-emulation-for-x86_64.patch | 41 >> ++++++++++++++++++++++ >> > 2 files changed, 42 insertions(+) >> > create mode 100644 meta/recipes-devtools/binutils/binutils/0016-add- >> i386pep-emulation-for-x86_64.patch >> > >> > diff --git a/meta/recipes-devtools/binutils/binutils-2.31.inc >> b/meta/recipes-devtools/binutils/binutils-2.31.inc >> > index ec9e9c3..02d5bca 100644 >> > --- a/meta/recipes-devtools/binutils/binutils-2.31.inc >> > +++ b/meta/recipes-devtools/binutils/binutils-2.31.inc >> > @@ -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 >> > index 0000000..9f20784 >> > --- /dev/null >> > +++ b/meta/recipes-devtools/binutils/binutils/0016-add- >> i386pep-emulation-for-x86_64.patch >> > @@ -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.cla...@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 ;; >> > -- >> > 2.7.4 >> > >> >
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core