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

PR ld/2008
	* elf.c (_bfd_elf_setup_sections): Return FALSE if
	elf_linked_to_section will be set to NULL.

	* format.c (bfd_check_format_matches): Don't check the default
	target twice.
This commit is contained in:
H.J. Lu 2005-12-13 15:34:28 +00:00
parent a717134b33
commit 25bbc98480
3 changed files with 28 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2005-12-13 H.J. Lu <hongjiu.lu@intel.com>
PR ld/2008
* elf.c (_bfd_elf_setup_sections): Return FALSE if
elf_linked_to_section will be set to NULL.
* format.c (bfd_check_format_matches): Don't check the default
target twice.
2005-12-13 Alan Modra <amodra@bigpond.net.au> 2005-12-13 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (ppc64_elf_relocate_section): Force tail calls in * elf64-ppc.c (ppc64_elf_relocate_section): Force tail calls in

View File

@ -654,8 +654,23 @@ _bfd_elf_setup_sections (bfd *abfd)
} }
else else
{ {
asection *link;
this_hdr = elf_elfsections (abfd)[elfsec]; this_hdr = elf_elfsections (abfd)[elfsec];
elf_linked_to_section (s) = this_hdr->bfd_section;
/* PR 1991, 2008:
Some strip/objcopy may leave an incorrect value in
sh_link. We don't want to proceed. */
link = this_hdr->bfd_section;
if (link == NULL)
{
(*_bfd_error_handler)
(_("%B: sh_link [%d] in section `%A' is incorrect"),
s->owner, s, elfsec);
result = FALSE;
}
elf_linked_to_section (s) = link;
} }
} }
} }

View File

@ -217,7 +217,9 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
const bfd_target *temp; const bfd_target *temp;
bfd_error_type err; bfd_error_type err;
if (*target == &binary_vec) /* Don't check the default target twice. */
if (*target == &binary_vec
|| (!abfd->target_defaulted && *target == save_targ))
continue; continue;
abfd->xvec = *target; /* Change BFD's target temporarily. */ abfd->xvec = *target; /* Change BFD's target temporarily. */