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.
This commit is contained in:
parent
b15fe636af
commit
137b5cbd20
2 changed files with 12 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue