aboutsummaryrefslogtreecommitdiff
path: root/bfd/linker.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2004-07-27 14:20:49 +0000
committerH.J. Lu <hjl.tools@gmail.com>2004-07-27 14:20:49 +0000
commit3d7f7666a44caa6e80c048f693002b254e2fc721 (patch)
tree86d8c7925d9254c018e4b0d820a144e914fcaad7 /bfd/linker.c
parent9232bbb040244905a13453a40beeb3b4ffac8e1b (diff)
downloadgdb-3d7f7666a44caa6e80c048f693002b254e2fc721.zip
gdb-3d7f7666a44caa6e80c048f693002b254e2fc721.tar.gz
gdb-3d7f7666a44caa6e80c048f693002b254e2fc721.tar.bz2
2004-07-27 H.J. Lu <hongjiu.lu@intel.com>
PR 161/251 * elf-bfd.h (bfd_elf_section_data): Add sec_group. (elf_sec_group): Defined. (bfd_elf_match_symbols_in_sections): New prototype. (_bfd_elf_setup_group_pointers): Likewise. * elf.c (bfd_elf_discard_group): Abort. (bfd_elf_set_group_contents): Also include relocation sections. Remove zero-fill for ld -r. (_bfd_elf_setup_group_pointers): New function. (elf_sort_elf_symbol): Likewise. (elf_sym_name_compare): Likewise. (bfd_elf_match_symbols_in_sections): Likewise. * elfcode.h (elf_object_p): Call _bfd_elf_setup_group_pointers. * elflink.c (match_group_member): New. (elf_link_input_bfd): Check group member for discarded section. (try_match_symbols_in_sections): New function. (already_linked): Likewise. (_bfd_elf_section_already_linked): Support mixing comdat group and linkonce section. * libbfd-in.h (bfd_section_already_linked_table_traverse): New. * linker.c (bfd_section_already_linked_table_traverse): New. * libbfd.h: Regenerated.
Diffstat (limited to 'bfd/linker.c')
-rw-r--r--bfd/linker.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/bfd/linker.c b/bfd/linker.c
index cd2adb5..a2095dc 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -2858,8 +2858,19 @@ DESCRIPTION
static struct bfd_hash_table _bfd_section_already_linked_table;
/* Support routines for the hash table used by section_already_linked,
- initialize the table, lookup, fill in an entry and remove the
- table. */
+ initialize the table, traverse, lookup, fill in an entry and remove
+ the table. */
+
+void
+bfd_section_already_linked_table_traverse
+ (bfd_boolean (*func) (struct bfd_section_already_linked_hash_entry *,
+ void *), void *info)
+{
+ bfd_hash_traverse (&_bfd_section_already_linked_table,
+ (bfd_boolean (*) (struct bfd_hash_entry *,
+ void *)) func,
+ info);
+}
struct bfd_section_already_linked_hash_entry *
bfd_section_already_linked_table_lookup (const char *name)