aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2013-12-12 14:41:15 -0800
committerH.J. Lu <hjl.tools@gmail.com>2013-12-12 14:41:15 -0800
commit57b828ef364b3cce05d9fb35be758cb4530e0e12 (patch)
tree51bfcdcc47a95c1cb2569937a11dc76290d9d7f9
parent84b66498ef56905eb8ec15b94f3f06ddad978234 (diff)
downloadgdb-57b828ef364b3cce05d9fb35be758cb4530e0e12.zip
gdb-57b828ef364b3cce05d9fb35be758cb4530e0e12.tar.gz
gdb-57b828ef364b3cce05d9fb35be758cb4530e0e12.tar.bz2
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.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf.c14
-rw-r--r--binutils/testsuite/ChangeLog5
-rw-r--r--binutils/testsuite/binutils-all/strip-10.d4
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 <hongjiu.lu@intel.com>
+ 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 <hongjiu.lu@intel.com>
+
* elf32-sh.c (bfd_elf32_bfd_set_private_bfd_flags): Removed.
2013-12-12 H.J. Lu <hongjiu.lu@intel.com>
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 <hongjiu.lu@intel.com>
+
+ PR binutils/16318
+ * binutils-all/strip-10.d: Check OS/ABI.
+
2013-12-07 Mike Frysinger <vapier@gentoo.org>
* 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|<OS specific>: 10) +DEFAULT +[1-9] foo