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.
This commit is contained in:
H.J. Lu
2004-07-27 14:20:49 +00:00
parent 9232bbb040
commit 3d7f7666a4
8 changed files with 496 additions and 17 deletions

View File

@ -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)