* elf.c (setup_group): Set SEC_LINK_ONCE on GRP_COMDAT groups.

(bfd_section_from_shdr): Likewise.  Set section name of group
	sections from signature.
	(group_signature): Split out from setup_group.  Ensure symbol table
	is available.
	(bfd_elf_discard_group): New function.
	(_bfd_elf_make_section_from_shdr): Don't set SEC_LINK_ONCE on
	.gnu.linkonce* sections if they are members of a group.
	(set_group_contents): Set GRP_COMDAT flag.
	* section.c (bfd_discard_group): New function.
	* bfd-in.h (bfd_elf_discard_group): Declare.
	* bfd-in2.h: Regenerate.
	* elf-bfd.h (struct bfd_elf_section_data): Add linkonce_p field.
	(elf_linkonce_p): Define.
This commit is contained in:
Alan Modra
2002-06-04 01:05:21 +00:00
parent 90937f86aa
commit b885599bed
6 changed files with 117 additions and 19 deletions

View File

@ -1375,3 +1375,24 @@ _bfd_strip_section_from_output (info, s)
s->flags |= SEC_EXCLUDE;
}
/*
FUNCTION
bfd_discard_group
SYNOPSIS
void bfd_discard_group (bfd *abfd, asection *group);
DESCRIPTION
Remove all members of @var{group} from the output.
*/
void
bfd_discard_group (abfd, group)
bfd *abfd;
asection *group;
{
if ((group->flags & SEC_GROUP) != 0
&& abfd->xvec->flavour == bfd_target_elf_flavour)
bfd_elf_discard_group (abfd, group);
}