aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-12-12 14:52:27 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-12-12 14:52:27 +0000
commitdb0ca79ff43c1ca413646ef08baa220a79ab44f2 (patch)
treed58d19e2967fcc3dc6bd968d68bf288f1c22e2b7
parent68efed4197a833bbc5ca02116098e6f67a2608d6 (diff)
downloadfsf-binutils-gdb-db0ca79ff43c1ca413646ef08baa220a79ab44f2.zip
fsf-binutils-gdb-db0ca79ff43c1ca413646ef08baa220a79ab44f2.tar.gz
fsf-binutils-gdb-db0ca79ff43c1ca413646ef08baa220a79ab44f2.tar.bz2
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.
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elflink.c7
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/ldlang.c5
4 files changed, 12 insertions, 8 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 102e082..602c669 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,9 @@
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_".
2010-12-10 Alan Modra <amodra@gmail.com>
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 32575d9..a8aac7c 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -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
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 58b6e82..ca9baf8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index e804a53..03a11bd 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -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;