From 57b828ef364b3cce05d9fb35be758cb4530e0e12 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 12 Dec 2013 14:41:15 -0800 Subject: [PATCH] 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. --- bfd/ChangeLog | 7 +++++++ bfd/elf.c | 14 +++++++++----- binutils/testsuite/ChangeLog | 5 +++++ binutils/testsuite/binutils-all/strip-10.d | 4 +++- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 09da41b..7e41ce8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,12 @@ 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. 2013-12-12 H.J. Lu diff --git a/bfd/elf.c b/bfd/elf.c index 66d9644..30d4171 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 fbcb5d2..26cda41 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 588c7d1..f4cf76d 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 -- 2.7.4