[OE-core] [PATCH v6] binutils : enable x86_64-pep for producing EFI binaries on x86-64

Christopher Clark christopher.w.clark at gmail.com
Mon Aug 6 18:59:00 UTC 2018


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.khem at 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.burton at intel.com>
> wrote:
>
>> Is just passing --enable-targets=all not an option?
>>
>> Ross
>>
>> On 30 July 2018 at 08:55, Christopher Clark
>> <christopher.w.clark at 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.clark6 at 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.clark6 at 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
>> >
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20180806/820d14ea/attachment-0002.html>


More information about the Openembedded-core mailing list