Support thin archive member for LTO.

2011-09-15  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>

	PR ld/13183
	* ldmain.c (add_archive_element): Support thin archive member
	for LTO.
This commit is contained in:
H.J. Lu 2011-09-15 16:03:03 +00:00
parent d93db82c58
commit 2b7e430865
2 changed files with 11 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2011-09-15 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
PR ld/13183
* ldmain.c (add_archive_element): Support thin archive member
for LTO.
2011-08-26 Nick Clifton <nickc@redhat.com>
* po/es.po: Updated Spanish translation.

View file

@ -808,12 +808,12 @@ add_archive_element (struct bfd_link_info *info,
BFD, but we still want to output the original BFD filename. */
orig_input = *input;
#ifdef ENABLE_PLUGINS
if (bfd_my_archive (abfd) != NULL
&& plugin_active_plugins_p ()
&& !no_more_claiming)
if (plugin_active_plugins_p () && !no_more_claiming)
{
/* We must offer this archive member to the plugins to claim. */
int fd = open (bfd_my_archive (abfd)->filename, O_RDONLY | O_BINARY);
const char *filename = (bfd_my_archive (abfd) != NULL
? bfd_my_archive (abfd)->filename : abfd->filename);
int fd = open (filename, O_RDONLY | O_BINARY);
if (fd >= 0)
{
struct ld_plugin_input_file file;
@ -822,7 +822,7 @@ add_archive_element (struct bfd_link_info *info,
member, not the whole file, and must exclude the header.
Fortunately for us, that is how the data is stored in the
origin field of the bfd and in the arelt_data. */
file.name = bfd_my_archive (abfd)->filename;
file.name = filename;
file.offset = abfd->origin;
file.filesize = arelt_size (abfd);
file.fd = fd;