diff options
author | Rich Felker <bugdal@aerifal.cx> | 2016-02-23 10:37:24 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-02-23 10:37:24 +0000 |
commit | 47993b4af18c6ef1cad300f6393bf896d3cb5e5c (patch) | |
tree | 48ccff27b2073be55b7b38396e6f23dcfef2cf43 | |
parent | c955ae7389e1c5dba0aef5c88c64f647c13e01c5 (diff) | |
download | gdb-47993b4af18c6ef1cad300f6393bf896d3cb5e5c.zip gdb-47993b4af18c6ef1cad300f6393bf896d3cb5e5c.tar.gz gdb-47993b4af18c6ef1cad300f6393bf896d3cb5e5c.tar.bz2 |
Fix the genetation of GOT entries for the Microblaze target.
PR target/19516
* elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol):
Always produce a RELATIVE reloc for a local symbol.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf32-microblaze.c | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 611f905..5ec3b93 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-02-23 Rich Felker <bugdal@aerifal.cx> + + PR target/19516 + * elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol): + Always produce a RELATIVE reloc for a local symbol. + 2016-02-23 Hans-Peter Nilsson <hp@axis.com> Fix test-case ld-elf/pr19617b diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index b9c32a4..7cc2a73 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -3288,7 +3288,7 @@ microblaze_elf_finish_dynamic_symbol (bfd *output_bfd, BFD_ASSERT (sgot != NULL && srela != NULL); offset = (sgot->output_section->vma + sgot->output_offset - + (h->got.offset &~ (bfd_vma) 1)); + + (h->got.offset &~ (bfd_vma) 1)); /* If this is a -Bsymbolic link, and the symbol is defined locally, we just want to emit a RELATIVE reloc. Likewise if @@ -3296,8 +3296,8 @@ microblaze_elf_finish_dynamic_symbol (bfd *output_bfd, The entry in the global offset table will already have been initialized in the relocate_section function. */ if (bfd_link_pic (info) - && (info->symbolic || h->dynindx == -1) - && h->def_regular) + && ((info->symbolic && h->def_regular) + || h->dynindx == -1)) { asection *sec = h->root.u.def.section; microblaze_elf_output_dynamic_relocation (output_bfd, |