2004-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	* elf.c (_bfd_elf_make_section_from_shdr): Undo the last
	change.

ld/

2004-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Clear
	SEC_EXCLUDE on non-SEC_DEBUGGING sections for relocatable link.
	* ldlang.c (lang_add_section): Likewise.
This commit is contained in:
H.J. Lu 2004-05-27 05:53:36 +00:00
parent 9bb351fd9c
commit b309625038
5 changed files with 26 additions and 23 deletions

View File

@ -1,3 +1,8 @@
2004-05-26 H.J. Lu <hongjiu.lu@intel.com>
* elf.c (_bfd_elf_make_section_from_shdr): Undo the last
change.
2004-05-27 Alexandre Oliva <aoliva@redhat.com>
* elf-m10300.c (mn10300_elf_relax_section): Don't test isym within

View File

@ -677,7 +677,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
if (hdr->sh_type != SHT_NOBITS)
flags |= SEC_HAS_CONTENTS;
if (hdr->sh_type == SHT_GROUP)
flags |= SEC_GROUP;
flags |= SEC_GROUP | SEC_EXCLUDE;
if ((hdr->sh_flags & SHF_ALLOC) != 0)
{
flags |= SEC_ALLOC;

View File

@ -1,3 +1,9 @@
2004-05-26 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Clear
SEC_EXCLUDE on non-SEC_DEBUGGING sections for relocatable link.
* ldlang.c (lang_add_section): Likewise.
2004-05-26 Alan Modra <amodra@bigpond.net.au>
* ldlang.c (lang_add_section): Set SEC_EXCLUDE for SEC_GROUP

View File

@ -1182,9 +1182,10 @@ gld${EMULATION_NAME}_place_orphan (lang_input_statement_type *file, asection *s)
#define HAVE_SECTION(hold, name) \
(hold.os != NULL || (hold.os = lang_output_section_find (name)) != NULL)
if (((s->flags & (SEC_EXCLUDE | SEC_GROUP)) != 0 && !link_info.relocatable)
|| ((s->flags & (SEC_EXCLUDE | SEC_DEBUGGING))
== (SEC_EXCLUDE | SEC_DEBUGGING)))
if (link_info.relocatable && (s->flags & SEC_DEBUGGING) == 0)
s->flags &= ~SEC_EXCLUDE;
if ((s->flags & SEC_EXCLUDE) != 0)
{
if (s->output_section == NULL)
s->output_section = bfd_abs_section_ptr;

View File

@ -1094,29 +1094,20 @@ lang_add_section (lang_statement_list_type *ptr,
flags = bfd_get_section_flags (section->owner, section);
discard = FALSE;
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 (link_info.relocatable && (flags & SEC_DEBUGGING) == 0)
{
/* 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. */
/* Write the modified 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 = (flags & SEC_EXCLUDE) != 0;
/* Discard input sections which are assigned to a section named
DISCARD_SECTION_NAME. */