mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
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