aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-arm.c21
2 files changed, 17 insertions, 9 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b09680a..783c831 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-11 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate): Correct logic for
+ R_ARM_RELATIVE on Symbian OS.
+
2004-11-09 Mark Mitchell <mark@codesourcery.com>
* som.c (som_bfd_print_private_bfd_data): New function.
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index e55c7c5..a7c3246 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -2381,15 +2381,18 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
/* This symbol is local, or marked to become local. */
relocate = TRUE;
if (globals->symbian_p)
- /* On Symbian OS, the data segment and text segement
- can be relocated independently. Therefore, we must
- indicate the segment to which this relocation is
- relative. The BPABI allows us to use any symbol in
- the right segment; we just use the section symbol
- as it is convenient. (We cannot use the symbol
- given by "h" directly as it will not appear in the
- dynamic symbol table.) */
- symbol = input_section->output_section->target_index;
+ {
+ /* On Symbian OS, the data segment and text segement
+ can be relocated independently. Therefore, we
+ must indicate the segment to which this
+ relocation is relative. The BPABI allows us to
+ use any symbol in the right segment; we just use
+ the section symbol as it is convenient. (We
+ cannot use the symbol given by "h" directly as it
+ will not appear in the dynamic symbol table.) */
+ symbol = elf_section_data (sym_sec->output_section)->dynindx;
+ BFD_ASSERT (symbol != 0);
+ }
else
/* On SVR4-ish systems, the dynamic loader cannot
relocate the text and data segments independently,