diff options
author | Ian Lance Taylor <ian@airs.com> | 1999-06-22 21:01:24 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1999-06-22 21:01:24 +0000 |
commit | 464e1740d2e1a1907ee35b2c47e205ed8f2e5583 (patch) | |
tree | f2a24e65eaee4be666ebf38e67545cd71398a0ea | |
parent | 75945f9f4c515667bb91f081004fc08fdb02bb14 (diff) | |
download | fsf-binutils-gdb-464e1740d2e1a1907ee35b2c47e205ed8f2e5583.zip fsf-binutils-gdb-464e1740d2e1a1907ee35b2c47e205ed8f2e5583.tar.gz fsf-binutils-gdb-464e1740d2e1a1907ee35b2c47e205ed8f2e5583.tar.bz2 |
From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Set unused dynindx
field to 0, not -1.
(ppc_elf_finish_dynamic_sections): Check for positive section
dynindx field, rather than comparing against -1.
(ppc_elf_relocate_section): Only return false if undefined_symbol
or reloc_overflow fail, not always upon encountering an error.
-rw-r--r-- | bfd/ChangeLog | 10 | ||||
-rw-r--r-- | bfd/elf32-ppc.c | 45 |
2 files changed, 33 insertions, 22 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6da6d4e..aa2ebec 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +1999-06-22 Ian Lance Taylor <ian@zembu.com> + + From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>: + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Set unused dynindx + field to 0, not -1. + (ppc_elf_finish_dynamic_sections): Check for positive section + dynindx field, rather than comparing against -1. + (ppc_elf_relocate_section): Only return false if undefined_symbol + or reloc_overflow fail, not always upon encountering an error. + 1999-06-22 Mark Mitchell <mark@codesourcery.com> * elflink.h (link_read_relocs): Explicitly cast external_relocs to diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index b84b863..639171d 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -2102,7 +2102,7 @@ ppc_elf_size_dynamic_sections (output_bfd, info) if ((s->flags & SEC_LINKER_CREATED) != 0 || (s->flags & SEC_ALLOC) == 0) { - elf_section_data (s)->dynindx = -1; + elf_section_data (s)->dynindx = 0; continue; } @@ -2949,7 +2949,7 @@ ppc_elf_finish_dynamic_sections (output_bfd, info) indx = elf_section_data (s)->this_idx; dindx = elf_section_data (s)->dynindx; - if (dindx != -1) + if (dindx > 0) { BFD_ASSERT(indx > 0); BFD_ASSERT(dindx > 0); @@ -3200,12 +3200,13 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section, relocation = 0; else { - (*info->callbacks->undefined_symbol)(info, - h->root.root.string, - input_bfd, - input_section, - rel->r_offset); - ret = false; + if (! (*info->callbacks->undefined_symbol)(info, + h->root.root.string, + input_bfd, + input_section, + rel->r_offset)) + return false; + relocation = 0; continue; } } @@ -3230,12 +3231,12 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section, || h->root.type == bfd_link_hash_defweak) && sec->output_section == NULL) { - (*info->callbacks->undefined_symbol) (info, - h->root.root.string, - input_bfd, - input_section, - rel->r_offset); - ret = false; + if (! (*info->callbacks->undefined_symbol) (info, + h->root.root.string, + input_bfd, + input_section, + rel->r_offset)) + return false; continue; } break; @@ -3784,14 +3785,14 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section, name = bfd_section_name (input_bfd, sec); } - (*info->callbacks->reloc_overflow)(info, - name, - howto->name, - (bfd_vma) 0, - input_bfd, - input_section, - offset); - ret = false; + if (! (*info->callbacks->reloc_overflow)(info, + name, + howto->name, + (bfd_vma) 0, + input_bfd, + input_section, + offset)) + return false; } else ret = false; |