diff options
author | Nick Clifton <nickc@redhat.com> | 2005-05-17 14:39:18 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2005-05-17 14:39:18 +0000 |
commit | 8a7c49abd326392b99a95120e58d24707153e5c1 (patch) | |
tree | d9bc814d9385f5712b3da575fb52751355523a8b | |
parent | 042dc3486fc61af8bd9fd7f445fdfbe607a9afe5 (diff) | |
download | binutils-redhat-8a7c49abd326392b99a95120e58d24707153e5c1.tar.gz |
ldlang.c (print_assignment): Do not rely upon a valid result having a section
associated with it.
elf32-arm.c (elf32_arm_final_link_relocate): Gracefully handle the situation
where a symbols's section is not known but a section relative R_ARM_RELATIVE
reloc has to be generated for the Symbian OS.
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-arm.c | 5 | ||||
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ldlang.c | 10 |
4 files changed, 22 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3dd9ed05bd..3d2b2d9b23 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -7,6 +7,11 @@ 2005-05-17 Nick Clifton <nickc@redhat.com> + * elf32-arm.c (elf32_arm_final_link_relocate): Gracefully handle + the situation where a symbols's section is not known but a section + relative R_ARM_RELATIVE reloc has to be generated for the Symbian + OS. + * elf32-v850.c (v850_elf_relocate_section): Move code to test for the presence of a symbol table to just before the symbol table is actually used. diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 2e5ca4c612..73554cfcc7 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -2692,7 +2692,10 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, 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; + if (sym_sec) + symbol = elf_section_data (sym_sec->output_section)->dynindx; + else + symbol = elf_section_data (input_section->output_section)->dynindx; BFD_ASSERT (symbol != 0); } else diff --git a/ld/ChangeLog b/ld/ChangeLog index 342b939258..27654cb84d 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2005-05-17 Julian Brown <julian@codesourcery.com> + + * ldlang.c (print_assignment): Do not rely upon a valid result + having a section associated with it. + 2005-05-17 Nick Clifton <nickc@redhat.com> * ldlang.c (Scan_for_self_assignment): Check an assignment tree to diff --git a/ld/ldlang.c b/ld/ldlang.c index 19b986abc7..ee85422b30 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -3219,7 +3219,10 @@ print_assignment (lang_assignment_statement_type *assignment, if (computation_is_valid) { - value = result.value + result.section->bfd_section->vma; + value = result.value; + + if (result.section) + value += result.section->bfd_section->vma; minfo ("0x%V", value); if (is_dot) @@ -3233,7 +3236,10 @@ print_assignment (lang_assignment_statement_type *assignment, FALSE, FALSE, TRUE); if (h) { - value = h->u.def.value + result.section->bfd_section->vma; + value = h->u.def.value; + + if (result.section) + value += result.section->bfd_section->vma; minfo ("[0x%V]", value); } |