From 6ce51ab8608c2f37fa5fe965f03e15f3d2579632 Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 30 Dec 2009 17:29:37 +0000 Subject: [PATCH] PR 10450 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the GNU hash table if they need a dynamic value. Otherwise, don't add them if they are defined in a dynamic object or are forced local. --- gold/ChangeLog | 7 +++++++ gold/dynobj.cc | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 860eda9501..8acaf87621 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2009-12-30 Ian Lance Taylor + + PR 10450 + * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the + GNU hash table if they need a dynamic value. Otherwise, don't add + them if they are defined in a dynamic object or are forced local. + 2009-12-29 Ian Lance Taylor PR 10450 diff --git a/gold/dynobj.cc b/gold/dynobj.cc index ebb5f33ad9..f982c4b469 100644 --- a/gold/dynobj.cc +++ b/gold/dynobj.cc @@ -959,9 +959,10 @@ Dynobj::create_gnu_hash_table(const std::vector& dynsyms, { Symbol* sym = dynsyms[i]; - // FIXME: Should put on unhashed_dynsyms if the symbol is - // hidden. - if (sym->is_undefined()) + if (!sym->needs_dynsym_value() + && (sym->is_undefined() + || sym->is_from_dynobj() + || sym->is_forced_local())) unhashed_dynsyms.push_back(sym); else { -- 2.11.0