aboutsummaryrefslogtreecommitdiff
path: root/gold/mips.cc
diff options
context:
space:
mode:
authorVladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>2017-01-23 17:12:10 -0800
committerCary Coutant <ccoutant@gmail.com>2017-01-23 17:12:10 -0800
commitc1f59f8ff9462ce45a3287ea06382a97e561fed3 (patch)
tree1beae8d102f1df23e92c1808b8737d3d2bd9429d /gold/mips.cc
parentc780b47c74872da62b5b5dfcbfe8c3db1631f981 (diff)
downloadgdb-c1f59f8ff9462ce45a3287ea06382a97e561fed3.zip
gdb-c1f59f8ff9462ce45a3287ea06382a97e561fed3.tar.gz
gdb-c1f59f8ff9462ce45a3287ea06382a97e561fed3.tar.bz2
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.
Diffstat (limited to 'gold/mips.cc')
-rw-r--r--gold/mips.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/gold/mips.cc b/gold/mips.cc
index 4f50574..ca3dd00 100644
--- a/gold/mips.cc
+++ b/gold/mips.cc
@@ -5627,7 +5627,7 @@ Mips_got_info<size, big_endian>::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<size, big_endian>::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.