aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2006-09-12 22:10:31 +0000
committerH.J. Lu <hjl.tools@gmail.com>2006-09-12 22:10:31 +0000
commit41198d0cfa94b0197dc8bdfb9542ad55ce980850 (patch)
tree793f1aeedaa770464a7da60d4d7cbfab4d803cde
parentcd269619269e6b7700e65e194d1a05288f87f928 (diff)
downloadbinutils-41198d0cfa94b0197dc8bdfb9542ad55ce980850.zip
binutils-41198d0cfa94b0197dc8bdfb9542ad55ce980850.tar.gz
binutils-41198d0cfa94b0197dc8bdfb9542ad55ce980850.tar.bz2
bfd/
2006-09-12 H.J. Lu <hongjiu.lu@intel.com> PR ld/3197 * elflink.c (elf_link_output_extsym): Compute bucket only if needed. ld/testsuite/ 2006-09-12 H.J. Lu <hongjiu.lu@intel.com> PR ld/3197 * ld-elf/hash.d: New test.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elflink.c10
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-elf/hash.d8
4 files changed, 24 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0d4a95e..1e22c44 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/3197
+ * elflink.c (elf_link_output_extsym): Compute bucket only if
+ needed.
+
2006-09-10 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/3186
diff --git a/bfd/elflink.c b/bfd/elflink.c
index d3f9b62..a1bc864 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -7061,8 +7061,6 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data)
if (h->dynindx != -1
&& elf_hash_table (finfo->info)->dynamic_sections_created)
{
- size_t bucketcount;
- size_t bucket;
bfd_byte *esym;
sym.st_name = h->dynstr_index;
@@ -7074,14 +7072,16 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data)
}
bed->s->swap_symbol_out (finfo->output_bfd, &sym, esym, 0);
- bucketcount = elf_hash_table (finfo->info)->bucketcount;
- bucket = h->u.elf_hash_value % bucketcount;
-
if (finfo->hash_sec != NULL)
{
size_t hash_entry_size;
bfd_byte *bucketpos;
bfd_vma chain;
+ size_t bucketcount;
+ size_t bucket;
+
+ bucketcount = elf_hash_table (finfo->info)->bucketcount;
+ bucket = h->u.elf_hash_value % bucketcount;
hash_entry_size
= elf_section_data (finfo->hash_sec)->this_hdr.sh_entsize;
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 9e90891..d482c48 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/3197
+ * ld-elf/hash.d: New test.
+
2006-09-04 Vladimir Prus <vladimir@codesourcery.com>
* ld-arm/use-thumb-lib.sym: Use regexps instead of
diff --git a/ld/testsuite/ld-elf/hash.d b/ld/testsuite/ld-elf/hash.d
new file mode 100644
index 0000000..20c7790
--- /dev/null
+++ b/ld/testsuite/ld-elf/hash.d
@@ -0,0 +1,8 @@
+#source: start.s
+#readelf: -d
+#ld: -shared --hash-style=gnu
+#target: *-*-linux*
+
+#...
+[ ]*0x[0-9a-z]+[ ]+\(GNU_HASH\)[ ]+0x[0-9a-z]+
+#...