aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-12-18 04:24:26 -0800
committerH.J. Lu <hjl.tools@gmail.com>2020-12-18 04:24:36 -0800
commit04f8967487515179cc6dfc7c828f77eeb75c08d3 (patch)
treee94cbcef29d4c243b02807377d5f9a98f2c3808c /bfd
parent3fafa2e26ed651e3d3a50193b5bbf8f55779c7aa (diff)
downloadgdb-04f8967487515179cc6dfc7c828f77eeb75c08d3.zip
gdb-04f8967487515179cc6dfc7c828f77eeb75c08d3.tar.gz
gdb-04f8967487515179cc6dfc7c828f77eeb75c08d3.tar.bz2
elf: Copy elf_gnu_osabi_retain only for relocatable link
Copy elf_gnu_osabi_retain from input only for relocatable link since SHF_GNU_RETAIN has no impact on non-relocatable outputs. bfd/ PR ld/27091 * elflink.c (elf_link_input_bfd): Copy elf_gnu_osabi_retain from input only for relocatable link. ld/ PR ld/27091 * testsuite/ld-elf/retain7.s: New file. * testsuite/ld-elf/retain7a.d: Likewise. * testsuite/ld-elf/retain7b.d: Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elflink.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index cb72b13..582add8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-12-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/27091
+ * elflink.c (elf_link_input_bfd): Copy elf_gnu_osabi_retain
+ from input only for relocatable link.
+
2020-12-18 Alan Modra <amodra@gmail.com>
* elf32-microblaze.c (dbg): Delete unused variable.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 2489700..1b33981 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -10806,7 +10806,9 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
|| bed->elf_osabi == ELFOSABI_GNU
|| bed->elf_osabi == ELFOSABI_FREEBSD)
elf_tdata (output_bfd)->has_gnu_osabi
- |= elf_tdata (input_bfd)->has_gnu_osabi;
+ |= (elf_tdata (input_bfd)->has_gnu_osabi
+ & (bfd_link_relocatable (flinfo->info)
+ ? -1 : ~elf_gnu_osabi_retain));
/* Read the local symbols. */
isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;