forked from Imagelibrary/binutils-gdb
bfd/
* elf.c (_bfd_elf_make_section_from_shdr): Don't set SEC_EXCLUDE
for SHT_GROUP sections.
ld/
* ldlang.c (lang_add_section): Set SEC_EXCLUDE for SEC_GROUP
sections when doing a final link. Clear SEC_EXCLUDE when doing
a relocable link, except for SEC_DEBUGGING sections.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Use the
same condition here to drop SEC_EXCLUDE orphan sections.
This commit is contained in:
25
ld/ldlang.c
25
ld/ldlang.c
@@ -1096,11 +1096,26 @@ lang_add_section (lang_statement_list_type *ptr,
|
||||
|
||||
discard = FALSE;
|
||||
|
||||
/* Discard sections marked with SEC_EXCLUDE if we are doing a final
|
||||
link. Discard debugging sections marked with SEC_EXCLUDE on a
|
||||
relocatable link too. */
|
||||
if ((flags & SEC_EXCLUDE) != 0
|
||||
&& ((flags & SEC_DEBUGGING) != 0 || !link_info.relocatable))
|
||||
if (link_info.relocatable)
|
||||
{
|
||||
/* SEC_EXCLUDE is ignored when doing a relocatable link,
|
||||
except in the special case of debug info. (See bfd/stabs.c) */
|
||||
if ((flags & SEC_DEBUGGING) == 0)
|
||||
flags &= ~SEC_EXCLUDE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* SEC_GROUP sections should be dropped on a final link. */
|
||||
if ((flags & SEC_GROUP) != 0)
|
||||
flags |= SEC_EXCLUDE;
|
||||
}
|
||||
|
||||
/* Write SEC_EXCLUDE flag back, to simplify later linker code. */
|
||||
if (section->owner != NULL)
|
||||
bfd_set_section_flags (section->owner, section, flags);
|
||||
|
||||
/* Discard sections marked with SEC_EXCLUDE. */
|
||||
if ((flags & SEC_EXCLUDE) != 0)
|
||||
discard = TRUE;
|
||||
|
||||
/* Discard input sections which are assigned to a section named
|
||||
|
||||
Reference in New Issue
Block a user