2005-12-07 H.J. Lu <hongjiu.lu@intel.com>

Andreas Schwab  <schwab@suse.de>

	PR binutils/1991
	* elf.c (assign_section_numbers): Always use the output section
	when setting up sh_link for SHF_LINK_ORDER.
This commit is contained in:
H.J. Lu 2005-12-07 19:21:44 +00:00
parent fe21a8fc74
commit f287603758
2 changed files with 26 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2005-12-07 H.J. Lu <hongjiu.lu@intel.com>
Andreas Schwab <schwab@suse.de>
PR binutils/1991
* elf.c (assign_section_numbers): Always use the output section
when setting up sh_link for SHF_LINK_ORDER.
2005-12-07 Thiemo Seufer <ths@networkno.de>
H.J. Lu <hongjiu.lu@intel.com>

View File

@ -3053,10 +3053,10 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
s = elf_linked_to_section (sec);
if (s)
{
/* elf_linked_to_section points to the input section. */
if (link_info != NULL)
{
/* For linker, elf_linked_to_section points to the
input section. */
/* Check discarded linkonce section. */
if (elf_discarded_section (s))
{
asection *kept;
@ -3074,9 +3074,26 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
}
s = kept;
}
}
if (link_info != NULL)
{
/* Handle linker. */
s = s->output_section;
BFD_ASSERT (s != NULL);
}
else
{
/* Handle objcopy. */
if (s->output_section == NULL)
{
(*_bfd_error_handler)
(_("%B: sh_link of section `%A' points to removed section `%A' of `%B'"),
abfd, d->this_hdr.bfd_section, s, s->owner);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
s = s->output_section;
}
d->this_hdr.sh_link = elf_section_data (s)->this_idx;
}
else