Set my_archive for thin archives
authorAlan Modra <amodra@gmail.com>
Tue, 14 Jun 2016 03:42:00 +0000 (13:12 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 14 Jun 2016 03:42:00 +0000 (13:12 +0930)
commitb0cffb47671ffbaac559c1f17a9f248256ea6c42
tree8a671e9057ebcd1cc30e15f0caedc9b6bcad32ac
parent57bc0e78e9d1fc318e1265f22280e1c3b7527d65
Set my_archive for thin archives

LTO plugin support in plugin_maybe_claim wants to close the IR bfd
after replacing it with the recompiled object, but can't do so for
archive elements due to various pointers that access the archive bfd.
Thin archives have the same problem.  They too cannot have their
element bfds closed.

PR ld/20241
bfd/
* archive.c (open_nested_file): Set my_archive.
* bfd.c (_bfd_default_error_handler <%B>): Exclude archive file name
for thin archives.
* bfdio.c (bfd_tell): Don't adjust origin for thin archives.
(bfd_seek): Likewise.
* bfdwin.c (bfd_get_file_window): Likewise.
* cache.c (cache_bmmap): Likewise.
(bfd_cache_lookup_worker): Don't look in my_archive for thin archives.
* mach-o.c (bfd_mach_o_follow_dsym): Don't open my_archive for
thin archives.
* plugin.c (try_claim): Likewise.
* xcofflink.c (xcoff_link_add_dynamic_symbols): Use import path of
file within thin archive, not the archive.
binutils/
* bucomm.c (bfd_get_archive_filename): Return file name within thin
archive.
ld/
* ldmain.c (add_archive_element): Just print file name of file within
thin archives.
* ldmisc.c (vfinfo): Likewise.
* plugin.c (plugin_object_p): Open file within thin archives.
(plugin_maybe_claim): Expand comment.
15 files changed:
bfd/ChangeLog
bfd/archive.c
bfd/bfd.c
bfd/bfdio.c
bfd/bfdwin.c
bfd/cache.c
bfd/mach-o.c
bfd/plugin.c
bfd/xcofflink.c
binutils/ChangeLog
binutils/bucomm.c
ld/ChangeLog
ld/ldmain.c
ld/ldmisc.c
ld/plugin.c