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.
This commit is contained in:
H.J. Lu 2013-12-12 14:41:15 -08:00
parent 84b66498ef
commit 57b828ef36
4 changed files with 24 additions and 6 deletions

View file

@ -1,3 +1,10 @@
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.

View file

@ -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);

View 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.

View 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