diff options
author | Alan Modra <amodra@gmail.com> | 2011-10-11 06:30:20 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-10-11 06:30:20 +0000 |
commit | 98c53ba3060c6a4b0c7e5370cda665f2b450facb (patch) | |
tree | 2d47c9f9370fd7f3aedbcba28b1c185cf21a7440 /bfd | |
parent | 0838fb575ec286250d500871c0a078e6bd25eacc (diff) | |
download | gdb-98c53ba3060c6a4b0c7e5370cda665f2b450facb.zip gdb-98c53ba3060c6a4b0c7e5370cda665f2b450facb.tar.gz gdb-98c53ba3060c6a4b0c7e5370cda665f2b450facb.tar.bz2 |
PR binutils/13257
* archive.c (_bfd_find_nested_archive, _bfd_get_elt_at_filepos): Open
thin archive element using container target if not defaulted.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/archive.c | 13 |
2 files changed, 17 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 004406d..5a919fb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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. diff --git a/bfd/archive.c b/bfd/archive.c index 77f8829..44ac712 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -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); } |