PR 10450
authorIan Lance Taylor <ian@airs.com>
Wed, 30 Dec 2009 07:45:32 +0000 (07:45 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 30 Dec 2009 07:45:32 +0000 (07:45 +0000)
* layout.cc (Layout::create_dynamic_symtab): Only set entsize of
.gnu.hash table for a 32-bit target.

gold/ChangeLog
gold/layout.cc

index 95160724c266f2160e5bb8af294ab1eb051e6874..860eda95014d20c5a31dc954e52285abab02315a 100644 (file)
@@ -1,5 +1,9 @@
 2009-12-29  Ian Lance Taylor  <iant@google.com>
 
+       PR 10450
+       * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
+       .gnu.hash table for a 32-bit target.
+
        PR 10450
        * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
        regular and a dynamic object only needs a dynamic symbol table
index 82f18c4b2706a13e581c87257dd101ae95b62bb3..5462532576494f0c76e23e425b74f221916c40e0 100644 (file)
@@ -2978,7 +2978,12 @@ Layout::create_dynamic_symtab(const Input_objects* input_objects,
       hashsec->add_output_section_data(hashdata);
 
       hashsec->set_link_section(dynsym);
-      hashsec->set_entsize(4);
+
+      // For a 64-bit target, the entries in .gnu.hash do not have a
+      // uniform size, so we only set the entry size for a 32-bit
+      // target.
+      if (parameters->target().get_size() == 32)
+       hashsec->set_entsize(4);
 
       odyn->add_section_address(elfcpp::DT_GNU_HASH, hashsec);
     }