diff options
author | Phil Blundell <philb@gnu.org> | 2000-11-06 19:41:20 +0000 |
---|---|---|
committer | Phil Blundell <philb@gnu.org> | 2000-11-06 19:41:20 +0000 |
commit | aea4709d3bb85f064b352c727a7de7db8e8bc39e (patch) | |
tree | b13b6f83015229be7671f8e162b772f7d23676c5 | |
parent | dfef140a12e04362844301e9a4581414437d73d6 (diff) | |
download | gdb-aea4709d3bb85f064b352c727a7de7db8e8bc39e.zip gdb-aea4709d3bb85f064b352c727a7de7db8e8bc39e.tar.gz gdb-aea4709d3bb85f064b352c727a7de7db8e8bc39e.tar.bz2 |
2000-11-05 Philip Blundell <philb@gnu.org>
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit
BFDs containing no sections to be merged, regardless of their flags.
2000-11-04 Philip Blundell <philb@gnu.org>
* elf32-arm.h (elf32_arm_relocate_section): Suppress error message
if a relocation for an undefined symbol also results in an
overflow.
-rw-r--r-- | bfd/ChangeLog | 11 | ||||
-rw-r--r-- | bfd/elf32-arm.h | 31 |
2 files changed, 38 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9230b0d..9e1fb76 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,14 @@ +2000-11-05 Philip Blundell <philb@gnu.org> + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit + BFDs containing no sections to be merged, regardless of their flags. + +2000-11-04 Philip Blundell <philb@gnu.org> + + * elf32-arm.h (elf32_arm_relocate_section): Suppress error message + if a relocation for an undefined symbol also results in an + overflow. + 2000-10-31 Philip Blundell <philb@gnu.org> * elf32-arm.h (elf32_arm_merge_private_bfd_data): Only handle diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h index 72bbe78..2e8a657 100644 --- a/bfd/elf32-arm.h +++ b/bfd/elf32-arm.h @@ -1846,10 +1846,15 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section, switch (r) { case bfd_reloc_overflow: - if (!((*info->callbacks->reloc_overflow) - (info, name, howto->name, (bfd_vma) 0, - input_bfd, input_section, rel->r_offset))) - return false; + /* If the overflowing reloc was to an undefined symbol, + we have already printed one error message and there + is no point complaining again. */ + if ((! h || + h->root.type != bfd_link_hash_undefined) + && (!((*info->callbacks->reloc_overflow) + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset)))) + return false; break; case bfd_reloc_undefined: @@ -1974,6 +1979,8 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd) flagword out_flags; flagword in_flags; boolean flags_compatible = true; + boolean null_input_bfd = true; + asection *sec; if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour || bfd_get_flavour (obfd) != bfd_target_elf_flavour) @@ -2029,6 +2036,22 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd) if (in_flags == out_flags) return true; + /* Check to see if the input BFD actually contains any sections. + If not, its flags may not have been initialised either, but it cannot + actually cause any incompatibility. */ + for (sec = ibfd->sections; sec != NULL; sec = sec->next) + { + /* Ignore synthetic glue sections. */ + if (strcmp (sec->name, ".glue_7") + && strcmp (sec->name, ".glue_7t")) + { + null_input_bfd = false; + break; + } + } + if (null_input_bfd) + return true; + /* If any of the input BFDs is non-PIC, the output is also position dependent. */ if (!(in_flags & EF_PIC)) |