2007-07-26 Michael Snyder <msnyder@svkmacdonelllnx>
authorMichael Snyder <msnyder@vmware.com>
Fri, 27 Jul 2007 01:04:29 +0000 (01:04 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 27 Jul 2007 01:04:29 +0000 (01:04 +0000)
* linker.c (bfd_section_already_linked_table_insert): Change
return type from void to boolean.  Return FALSE on failure.
(_bfd_generic_section_already_linked): Test return value of
bfd_section_already_linked_table_insert, call fatal on error.

* elflink.c (_bfd_elf_section_already_linked): Test return value
of bfd_section_already_linked_table_insert, call fatal on error.

* libbfd-in.h (bfd_section_already_linked_table_insert): Update
return type to bfd_boolean.

* libbfd.h: Regenerate.

bfd/ChangeLog
bfd/elflink.c
bfd/libbfd-in.h
bfd/libbfd.h
bfd/linker.c

index 42a1e74..2cf4d1f 100644 (file)
@@ -1,3 +1,18 @@
+2007-07-26  Michael Snyder  <msnyder@svkmacdonelllnx>
+
+       * linker.c (bfd_section_already_linked_table_insert): Change 
+       return type from void to boolean.  Return FALSE on failure.
+       (_bfd_generic_section_already_linked): Test return value of
+       bfd_section_already_linked_table_insert, call fatal on error.
+
+       * elflink.c (_bfd_elf_section_already_linked): Test return value
+       of bfd_section_already_linked_table_insert, call fatal on error.
+
+       * libbfd-in.h (bfd_section_already_linked_table_insert): Update
+       return type to bfd_boolean.
+
+       * libbfd.h: Regenerate.
+
 2007-07-26  Adam Nemet  <anemet@caviumnetworks.com>
 
        * archive.c (do_slurp_bsd_armap, do_slurp_coff_armap,
index 1e98cb7..6cfb8b9 100644 (file)
@@ -12235,7 +12235,8 @@ _bfd_elf_section_already_linked (bfd *abfd, struct bfd_section *sec,
        }
 
   /* This is the first section with this name.  Record it.  */
-  bfd_section_already_linked_table_insert (already_linked_list, sec);
+  if (! bfd_section_already_linked_table_insert (already_linked_list, sec))
+    info->callbacks->einfo (_("%F%P: already_linked_table: %E"));
 }
 
 bfd_boolean
index 6aa250d..ec11bd5 100644 (file)
@@ -726,7 +726,7 @@ struct bfd_section_already_linked
 
 extern struct bfd_section_already_linked_hash_entry *
   bfd_section_already_linked_table_lookup (const char *);
-extern void bfd_section_already_linked_table_insert
+extern bfd_boolean bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *, asection *);
 extern void bfd_section_already_linked_table_traverse
   (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
index bfc31e0..2d5b5b3 100644 (file)
@@ -731,7 +731,7 @@ struct bfd_section_already_linked
 
 extern struct bfd_section_already_linked_hash_entry *
   bfd_section_already_linked_table_lookup (const char *);
-extern void bfd_section_already_linked_table_insert
+extern bfd_boolean bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *, asection *);
 extern void bfd_section_already_linked_table_traverse
   (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
index a679a32..fb293cc 100644 (file)
@@ -2923,7 +2923,7 @@ bfd_section_already_linked_table_lookup (const char *name)
                           TRUE, FALSE));
 }
 
-void
+bfd_boolean
 bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *already_linked_list,
    asection *sec)
@@ -2933,9 +2933,12 @@ bfd_section_already_linked_table_insert
   /* Allocate the memory from the same obstack as the hash table is
      kept in.  */
   l = bfd_hash_allocate (&_bfd_section_already_linked_table, sizeof *l);
+  if (l == NULL)
+    return FALSE;
   l->sec = sec;
   l->next = already_linked_list->entry;
   already_linked_list->entry = l;
+  return TRUE;
 }
 
 static struct bfd_hash_entry *
@@ -2947,7 +2950,7 @@ already_linked_newfunc (struct bfd_hash_entry *entry ATTRIBUTE_UNUSED,
     bfd_hash_allocate (table, sizeof *ret);
 
   if (ret == NULL)
-    return ret;
+    return NULL;
 
   ret->entry = NULL;
 
@@ -2973,7 +2976,7 @@ bfd_section_already_linked_table_free (void)
 
 void
 _bfd_generic_section_already_linked (bfd *abfd, asection *sec,
-                                    struct bfd_link_info *info ATTRIBUTE_UNUSED)
+                                    struct bfd_link_info *info)
 {
   flagword flags;
   const char *name;
@@ -3074,7 +3077,8 @@ _bfd_generic_section_already_linked (bfd *abfd, asection *sec,
     }
 
   /* This is the first section with this name.  Record it.  */
-  bfd_section_already_linked_table_insert (already_linked_list, sec);
+  if (! bfd_section_already_linked_table_insert (already_linked_list, sec))
+    info->callbacks->einfo (_("%F%P: already_linked_table: %E"));
 }
 
 /* Convert symbols in excluded output sections to use a kept section.  */