binutils/riscv-relax-versioned-hidden.patch
Michael Matz 2ba3d3648a Accepting request 613973 from home:Andreas_Schwab:Factory
- riscv-relax-versioned-hidden.patch: RISC-V: Fix symbol address problem
  with versioned symbols (PR ld/22756)

OBS-URL: https://build.opensuse.org/request/show/613973
OBS-URL: https://build.opensuse.org/package/show/devel:gcc/binutils?expand=0&rev=277
2018-06-04 13:25:20 +00:00

27 lines
1.1 KiB
Diff

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.
Index: binutils-2.30/bfd/elfnn-riscv.c
===================================================================
--- binutils-2.30.orig/bfd/elfnn-riscv.c
+++ binutils-2.30/bfd/elfnn-riscv.c
@@ -2666,9 +2666,12 @@ riscv_relax_delete_bytes (bfd *abfd, ase
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;