]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2000-11-05 Philip Blundell <philb@gnu.org>
authorPhil Blundell <philb@gnu.org>
Mon, 6 Nov 2000 19:41:20 +0000 (19:41 +0000)
committerPhil Blundell <philb@gnu.org>
Mon, 6 Nov 2000 19:41:20 +0000 (19:41 +0000)
* 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.

bfd/ChangeLog
bfd/elf32-arm.h

index 9230b0d04a37dc8faddfa3e4fa1bffbdc74b9123..9e1fb765c678bcb5181cc8e710bd097e984b5e81 100644 (file)
@@ -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
index 72bbe780bf01c4fdd42b6d31a854dfd4870a5b9e..2e8a657ec8163713ff382dac7a818f4b9b8e0648 100644 (file)
@@ -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))