aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfnn-riscv.c
diff options
context:
space:
mode:
authorJim Wilson <jimw@sifive.com>2018-06-03 14:44:44 -0700
committerJim Wilson <jimw@sifive.com>2018-06-03 14:44:44 -0700
commit137b5cbd204241ec47873c353cf7e41b47182d53 (patch)
treec7c74ea379ec140de91606c4fa53249f1a5bce31 /bfd/elfnn-riscv.c
parentb15fe636afad8bfef76940823bed96f2c1860c30 (diff)
downloadgdb-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/elfnn-riscv.c')
-rw-r--r--bfd/elfnn-riscv.c9
1 files changed, 6 insertions, 3 deletions
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;