diff options
author | Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> | 2017-01-23 17:12:10 -0800 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2017-01-23 17:12:10 -0800 |
commit | c1f59f8ff9462ce45a3287ea06382a97e561fed3 (patch) | |
tree | 1beae8d102f1df23e92c1808b8737d3d2bd9429d /gold | |
parent | c780b47c74872da62b5b5dfcbfe8c3db1631f981 (diff) | |
download | gdb-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')
-rw-r--r-- | gold/ChangeLog | 8 | ||||
-rw-r--r-- | gold/mips.cc | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index b357d88..c074564 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2017-01-23 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> + + 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 <nickc@redhat.com> * aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS 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. |