Optimize for add_archive_element.

bfd/

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

	* elflink.c (elf_link_add_archive_symbols): Remove subsbfd.

ld/

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

	* ldlang.c (load_symbols): Optimize for add_archive_element.
This commit is contained in:
H.J. Lu 2010-12-12 14:52:27 +00:00
parent 68efed4197
commit db0ca79ff4
4 changed files with 12 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2010-12-12 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (elf_link_add_archive_symbols): Remove subsbfd.
2010-12-12 H.J. Lu <hongjiu.lu@intel.com>
* elf.c (special_sections_g): Add ".gnu.lto_".

View File

@ -5011,7 +5011,6 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
{
struct elf_link_hash_entry *h;
bfd *element;
bfd *subsbfd = NULL;
struct bfd_link_hash_entry *undefs_tail;
symindex mark;
@ -5075,11 +5074,9 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
undefs_tail = info->hash->undefs_tail;
if (! (*info->callbacks->add_archive_element)
(info, element, symdef->name, &subsbfd))
(info, element, symdef->name, &element))
goto error_return;
/* Potentially, the add_archive_element hook may have set a
substitute BFD for us. */
if (! bfd_link_add_symbols (subsbfd ? subsbfd : element, info))
if (! bfd_link_add_symbols (element, info))
goto error_return;
/* If there are any new undefined symbols, we need to make

View File

@ -1,3 +1,7 @@
2010-12-12 H.J. Lu <hongjiu.lu@intel.com>
* ldlang.c (load_symbols): Optimize for add_archive_element.
2010-12-09 Mike Frysinger <vapier@gentoo.org>
* .gitignore: New file.

View File

@ -2717,15 +2717,14 @@ load_symbols (lang_input_statement_type *entry,
loaded = FALSE;
}
subsbfd = NULL;
subsbfd = member;
if (! ((*link_info.callbacks->add_archive_element)
(&link_info, member, "--whole-archive", &subsbfd)))
abort ();
/* Potentially, the add_archive_element hook may have set a
substitute BFD for us. */
if (! bfd_link_add_symbols (subsbfd ? subsbfd : member,
&link_info))
if (! bfd_link_add_symbols (member, &link_info))
{
einfo (_("%F%B: could not read symbols: %E\n"), member);
loaded = FALSE;