diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-12-18 04:24:26 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-12-18 04:24:36 -0800 |
commit | 04f8967487515179cc6dfc7c828f77eeb75c08d3 (patch) | |
tree | e94cbcef29d4c243b02807377d5f9a98f2c3808c /bfd | |
parent | 3fafa2e26ed651e3d3a50193b5bbf8f55779c7aa (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elflink.c | 4 |
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; |