Also copy EI_OSABI field
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 12 Dec 2013 22:41:15 +0000 (14:41 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 12 Dec 2013 22:41:15 +0000 (14:41 -0800)
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
bfd/elf.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/strip-10.d

index 09da41b..7e41ce8 100644 (file)
@@ -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>
index 66d9644..30d4171 100644 (file)
--- 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);
index fbcb5d2..26cda41 100644 (file)
@@ -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.
index 588c7d1..f4cf76d 100644 (file)
@@ -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