PR binutils/13257

* archive.c (_bfd_find_nested_archive, _bfd_get_elt_at_filepos): Open
	thin archive element using container target if not defaulted.
This commit is contained in:
Alan Modra 2011-10-11 06:30:20 +00:00
parent 0838fb575e
commit 98c53ba306
2 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2011-10-11 Alan Modra <amodra@gmail.com>
PR binutils/13257
* archive.c (_bfd_find_nested_archive, _bfd_get_elt_at_filepos): Open
thin archive element using container target if not defaulted.
2011-10-10 Nick Clifton <nickc@redhat.com>
* po/es.po: Updated Spanish translation.

View File

@ -343,6 +343,7 @@ static bfd *
_bfd_find_nested_archive (bfd *arch_bfd, const char *filename)
{
bfd *abfd;
const char *target;
for (abfd = arch_bfd->nested_archives;
abfd != NULL;
@ -351,7 +352,10 @@ _bfd_find_nested_archive (bfd *arch_bfd, const char *filename)
if (filename_cmp (filename, abfd->filename) == 0)
return abfd;
}
abfd = bfd_openr (filename, NULL);
target = NULL;
if (!arch_bfd->target_defaulted)
target = arch_bfd->xvec->name;
abfd = bfd_openr (filename, target);
if (abfd)
{
abfd->archive_next = arch_bfd->nested_archives;
@ -597,6 +601,8 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
if (bfd_is_thin_archive (archive))
{
const char *target;
/* This is a proxy entry for an external file. */
if (! IS_ABSOLUTE_PATH (filename))
{
@ -628,7 +634,10 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
}
/* It's not an element of a nested archive;
open the external file as a bfd. */
n_nfd = bfd_openr (filename, NULL);
target = NULL;
if (!archive->target_defaulted)
target = archive->xvec->name;
n_nfd = bfd_openr (filename, target);
if (n_nfd == NULL)
bfd_set_error (bfd_error_malformed_archive);
}