diff options
author | Ian Lance Taylor <ian@airs.com> | 2009-12-30 07:45:32 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2009-12-30 07:45:32 +0000 |
commit | 1b81fb710f222c7ad23396a40b59314b7fe0ba5b (patch) | |
tree | 770741608703fab6361d80066024997d0ebdc055 | |
parent | 8d6d383d7cb7438e29207f3bc7c87130c97411e6 (diff) | |
download | gdb-1b81fb710f222c7ad23396a40b59314b7fe0ba5b.zip gdb-1b81fb710f222c7ad23396a40b59314b7fe0ba5b.tar.gz gdb-1b81fb710f222c7ad23396a40b59314b7fe0ba5b.tar.bz2 |
PR 10450
* layout.cc (Layout::create_dynamic_symtab): Only set entsize of
.gnu.hash table for a 32-bit target.
-rw-r--r-- | gold/ChangeLog | 4 | ||||
-rw-r--r-- | gold/layout.cc | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 9516072..860eda9 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -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. diff --git a/gold/layout.cc b/gold/layout.cc index 82f18c4..5462532 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -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); } |