* elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic
authorDaniel Jacobowitz <drow@false.org>
Mon, 27 Oct 2003 17:33:44 +0000 (17:33 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 27 Oct 2003 17:33:44 +0000 (17:33 +0000)
objects.

bfd/ChangeLog
bfd/elf32-arm.h

index df6cb7746f15bc7d1b361a223f72628eb2e58d03..83b30468f666e917691b7d2efaab5730e62cd92e 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-27  Daniel Jacobowitz  <drow@mvista.com>
+
+       * elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic
+       objects.
+
 2003-10-14  Richard Sandiford  <rsandifo@redhat.com>
 
        * elfxx-mips.c (mips_elf_create_got_section): Initialize global_gotno.
index 15eb478a2952b2b89b4728fb2a0ae467c8e77a0e..10496134ff7941cf0114aba078f142080cde0d45 100644 (file)
@@ -2217,7 +2217,6 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd)
   flagword out_flags;
   flagword in_flags;
   bfd_boolean flags_compatible = TRUE;
-  bfd_boolean null_input_bfd = TRUE;
   asection *sec;
 
   /* Check if we have the same endianess.  */
@@ -2268,21 +2267,29 @@ 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)
+  /* 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.  Do not short-circuit
+     dynamic objects; their section list may be emptied by
+     elf_link_add_object_symbols.  */
+
+  if (!(ibfd->flags & DYNAMIC))
     {
-      /* Ignore synthetic glue sections.  */
-      if (strcmp (sec->name, ".glue_7")
-         && strcmp (sec->name, ".glue_7t"))
+      bfd_boolean null_input_bfd = TRUE;
+
+      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
        {
-         null_input_bfd = FALSE;
-         break;
+         /* 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 (null_input_bfd)
-    return TRUE;
 
   /* Complain about various flag mismatches.  */
   if (EF_ARM_EABI_VERSION (in_flags) != EF_ARM_EABI_VERSION (out_flags))