bfd/
authorMaciej W. Rozycki <macro@linux-mips.org>
Tue, 16 Jun 2009 02:14:12 +0000 (02:14 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Tue, 16 Jun 2009 02:14:12 +0000 (02:14 +0000)
* elf32-vax.c (elf_vax_relocate_section): For symbol references
from an executable to a shared library treat R_VAX_PC32
relocations as R_VAX_PLT32 ones.

bfd/ChangeLog
bfd/elf32-vax.c

index 15ee34e..211e0a5 100644 (file)
@@ -1,5 +1,11 @@
 2009-06-16  Maciej W. Rozycki  <macro@linux-mips.org>
 
+       * elf32-vax.c (elf_vax_relocate_section): For symbol references
+       from an executable to a shared library treat R_VAX_PC32
+       relocations as R_VAX_PLT32 ones.
+
+2009-06-16  Maciej W. Rozycki  <macro@linux-mips.org>
+
        * elf32-vax.c (elf_vax_instantiate_got_entries): Skip local
        symbols in GOT space calculation.
        (elf_vax_relocate_section): Adjust accordingly.
index 516734d..80c5046 100644 (file)
@@ -1544,6 +1544,14 @@ elf_vax_relocate_section (bfd *output_bfd,
          }
          break;
 
+       case R_VAX_PC32:
+         /* If we are creating an executable and the function this
+            reloc refers to is in a shared lib, then we made a PLT
+            entry for this symbol and need to handle the reloc like
+            a PLT reloc.  */
+         if (info->shared)
+            goto r_vax_pc32_shared;
+         /* Fall through.  */
        case R_VAX_PLT32:
          /* Relocation is to the entry for this symbol in the
             procedure linkage table.  */
@@ -1605,7 +1613,7 @@ elf_vax_relocate_section (bfd *output_bfd,
 
        case R_VAX_PC8:
        case R_VAX_PC16:
-       case R_VAX_PC32:
+       r_vax_pc32_shared:
          if (h == NULL
              || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
              || h->forced_local)