Fix the genetation of GOT entries for the Microblaze target.
authorRich Felker <bugdal@aerifal.cx>
Tue, 23 Feb 2016 10:37:24 +0000 (10:37 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 23 Feb 2016 10:37:24 +0000 (10:37 +0000)
PR target/19516
* elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol):
Always produce a RELATIVE reloc for a local symbol.

bfd/ChangeLog
bfd/elf32-microblaze.c

index 611f9051b2592ee9ee1bf961ce7d674869764733..5ec3b934c83c3db6114af2c98f32d5db3698e1f1 100644 (file)
@@ -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
index b9c32a4b2e9e09988e2a9e8898ccd888207f8794..7cc2a731427de17a37abd121e5487f8443647eff 100644 (file)
@@ -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,