aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <bugdal@aerifal.cx>2016-02-23 10:37:24 +0000
committerNick Clifton <nickc@redhat.com>2016-02-23 10:37:24 +0000
commit47993b4af18c6ef1cad300f6393bf896d3cb5e5c (patch)
tree48ccff27b2073be55b7b38396e6f23dcfef2cf43
parentc955ae7389e1c5dba0aef5c88c64f647c13e01c5 (diff)
downloadgdb-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/ChangeLog6
-rw-r--r--bfd/elf32-microblaze.c6
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,