diff options
author | Jim Wilson <jimw@sifive.com> | 2018-06-03 14:44:44 -0700 |
---|---|---|
committer | Jim Wilson <jimw@sifive.com> | 2018-06-03 14:44:44 -0700 |
commit | 137b5cbd204241ec47873c353cf7e41b47182d53 (patch) | |
tree | c7c74ea379ec140de91606c4fa53249f1a5bce31 /bfd | |
parent | b15fe636afad8bfef76940823bed96f2c1860c30 (diff) | |
download | gdb-137b5cbd204241ec47873c353cf7e41b47182d53.zip gdb-137b5cbd204241ec47873c353cf7e41b47182d53.tar.gz gdb-137b5cbd204241ec47873c353cf7e41b47182d53.tar.bz2 |
RISC-V: Fix symbol address problem with versioned symbols.
bfd/
PR ld/22756
* elfnn-riscv.c (riscv_relax_delete_bytes): Add versioned_hidden check
to code that ignores duplicate symbols.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elfnn-riscv.c | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1a4a301..250e416 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2018-06-03 Jim Wilson <jimw@sifive.com> + + PR ld/22756 + * elfnn-riscv.c (riscv_relax_delete_bytes): Add versioned_hidden check + to code that ignores duplicate symbols. + 2018-06-01 H.J. Lu <hongjiu.lu@intel.com> * version.m4: Bump version to 2.30.52 diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index b82e655..a0bdee5 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -2708,9 +2708,12 @@ riscv_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, size_t count, call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference the same symbol (which is __wrap_SYMBOL), but still exist as two different symbols in 'sym_hashes', we don't want to adjust - the global symbol __wrap_SYMBOL twice. - This check is only relevant when symbols are being wrapped. */ - if (link_info->wrap_hash != NULL) + the global symbol __wrap_SYMBOL twice. */ + /* The same problem occurs with symbols that are versioned_hidden, as + foo becomes an alias for foo@BAR, and hence they need the same + treatment. */ + if (link_info->wrap_hash != NULL + || sym_hash->versioned == versioned_hidden) { struct elf_link_hash_entry **cur_sym_hashes; |