From c1f59f8ff9462ce45a3287ea06382a97e561fed3 Mon Sep 17 00:00:00 2001 From: Vladimir Radosavljevic Date: Mon, 23 Jan 2017 17:12:10 -0800 Subject: [PATCH] Fix MIPS GOT when global symbols are forced to local visibility. gold/ PR gold/21054 * mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol to the dynamic symbol table if it is forced to local visibility. (Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the dynamic symbol table if it is forced to local visibility. --- gold/ChangeLog | 8 ++++++++ gold/mips.cc | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index b357d88ac64..c074564e60f 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2017-01-23 Vladimir Radosavljevic + + PR gold/21054 + * mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol + to the dynamic symbol table if it is forced to local visibility. + (Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the + dynamic symbol table if it is forced to local visibility. + 2017-01-20 Nick Clifton * aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS diff --git a/gold/mips.cc b/gold/mips.cc index 4f505744fb7..ca3dd005451 100644 --- a/gold/mips.cc +++ b/gold/mips.cc @@ -5627,7 +5627,7 @@ Mips_got_info::record_global_got_symbol( mips_sym->set_got_not_only_for_calls(); // A global symbol in the GOT must also be in the dynamic symbol table. - if (!mips_sym->needs_dynsym_entry()) + if (!mips_sym->needs_dynsym_entry() && !mips_sym->is_forced_local()) { switch (mips_sym->visibility()) { @@ -9781,7 +9781,8 @@ Target_mips::do_finalize_sections(Layout* layout, elfcpp::STV_DEFAULT, 0, false, false); - rld_map->set_needs_dynsym_entry(); + if (!rld_map->is_forced_local()) + rld_map->set_needs_dynsym_entry(); if (!parameters->options().pie()) // This member holds the absolute address of the debug pointer. -- 2.30.2