From 04981bc1fb2151ec0d6adf57793eea41779c2f34 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Tue, 16 Jun 2009 02:14:12 +0000 Subject: [PATCH] bfd/ * 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 | 6 ++++++ bfd/elf32-vax.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 15ee34e..211e0a5 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 2009-06-16 Maciej W. Rozycki + * 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 + * elf32-vax.c (elf_vax_instantiate_got_entries): Skip local symbols in GOT space calculation. (elf_vax_relocate_section): Adjust accordingly. diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c index 516734d..80c5046 100644 --- a/bfd/elf32-vax.c +++ b/bfd/elf32-vax.c @@ -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) -- 2.7.4