From: Vladimir Radosavljevic Date: Tue, 24 Jan 2017 01:12:10 +0000 (-0800) Subject: Fix MIPS GOT when global symbols are forced to local visibility. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c1f59f8ff9462ce45a3287ea06382a97e561fed3;p=binutils-gdb.git 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. --- 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.