aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-arm.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3495161..2fed91d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2009-07-10 Julian Brown <julian@codesourcery.com>
+
+ * elf32-arm.c (arm_build_one_stub): Use the hash entry of the
+ symbol a stub entry is derived from, not the entry for the stub
+ itself, in call to elf32_arm_final_link_relocate.
+
2009-07-10 H.J. Lu <hongjiu.lu@intel.com>
* elf.c (_bfd_elf_get_synthetic_symtab): Remove leading zeros
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 2d53304..bb45587 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -3549,6 +3549,9 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
branch. */
points_to = sym_value;
+ /* There may be unintended consequences if this is not true. */
+ BFD_ASSERT (stub_entry->h == NULL);
+
/* Note: _bfd_final_link_relocate doesn't handle these relocations
properly. We should probably use this function unconditionally,
rather than only for certain relocations listed in the enclosing
@@ -3557,7 +3560,7 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
(template[stub_reloc_idx[i]].r_type),
stub_bfd, info->output_bfd, stub_sec, stub_sec->contents, &rel,
points_to, info, stub_entry->target_section, "", sym_flags,
- (struct elf_link_hash_entry *) stub_entry, &unresolved_reloc,
+ (struct elf_link_hash_entry *) stub_entry->h, &unresolved_reloc,
&error_message);
}
else