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 9516072..860eda9 100644 (file)
@@ -1,6 +1,10 @@
 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
        entry if it is externally visible.
index 82f18c4..5462532 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);
     }