From: H.J. Lu Date: Thu, 12 Dec 2013 22:41:15 +0000 (-0800) Subject: Also copy EI_OSABI field X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=57b828ef364b3cce05d9fb35be758cb4530e0e12;p=binutils-gdb.git Also copy EI_OSABI field bfd/ PR binutils/16318 * elf.c (_bfd_elf_copy_private_bfd_data): Remove BFD_ASSERT. Set e_flags only if elf_flags_init is FALSE. Copy EI_OSABI field. binutils/testsuite/ PR binutils/16318 * binutils-all/strip-10.d: Check OS/ABI. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 09da41bb4ea..7e41ce8806c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2013-12-12 H.J. Lu + + PR binutils/16318 + * elf.c (_bfd_elf_copy_private_bfd_data): Remove BFD_ASSERT. + Set e_flags only if elf_flags_init is FALSE. Copy EI_OSABI + field. + 2013-12-12 H.J. Lu * elf32-sh.c (bfd_elf32_bfd_set_private_bfd_flags): Removed. diff --git a/bfd/elf.c b/bfd/elf.c index 66d9644f4c8..30d4171154f 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -1117,13 +1117,17 @@ _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd) || bfd_get_flavour (obfd) != bfd_target_elf_flavour) return TRUE; - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); + if (!elf_flags_init (obfd)) + { + elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; + elf_flags_init (obfd) = TRUE; + } elf_gp (obfd) = elf_gp (ibfd); - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = TRUE; + + /* Also copy the EI_OSABI field. */ + elf_elfheader (obfd)->e_ident[EI_OSABI] = + elf_elfheader (ibfd)->e_ident[EI_OSABI]; /* Copy object attributes. */ _bfd_elf_copy_obj_attributes (ibfd, obfd); diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog index fbcb5d256fa..26cda41d415 100644 --- a/binutils/testsuite/ChangeLog +++ b/binutils/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-12 H.J. Lu + + PR binutils/16318 + * binutils-all/strip-10.d: Check OS/ABI. + 2013-12-07 Mike Frysinger * binutils-all/windres/escapex-2.rc: Remove +x file mode. diff --git a/binutils/testsuite/binutils-all/strip-10.d b/binutils/testsuite/binutils-all/strip-10.d index 588c7d125cc..f4cf76d2032 100644 --- a/binutils/testsuite/binutils-all/strip-10.d +++ b/binutils/testsuite/binutils-all/strip-10.d @@ -1,8 +1,10 @@ #PROG: strip #source: unique.s #strip: -g -#readelf: -s +#readelf: -sh #name: strip on STB_GNU_UNIQUE +#... + OS/ABI:[ \t]+UNIX - GNU #... +[0-9]+: +[0-9a-f]+ +[0-9]+ +OBJECT +(UNIQUE|: 10) +DEFAULT +[1-9] foo