diff options
author | Cary Coutant <ccoutant@gmail.com> | 2015-11-14 11:04:01 -0800 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2015-11-14 11:04:01 -0800 |
commit | db1ff0288b923bc17d2408a6172a016b7ba0a6a4 (patch) | |
tree | 13887d54cd1212d858665f111621ad38bc2ada62 /gold/symtab.cc | |
parent | 895d4275baf1739a1a02d6c5c918be42b9102702 (diff) | |
download | gdb-db1ff0288b923bc17d2408a6172a016b7ba0a6a4.zip gdb-db1ff0288b923bc17d2408a6172a016b7ba0a6a4.tar.gz gdb-db1ff0288b923bc17d2408a6172a016b7ba0a6a4.tar.bz2 |
Fix problem where bss symbols for copy relocations are marked local.
gold/
PR gold/19244
PR gold/18548
* symtab.cc (Symbol_table::do_define_in_output_data): Check for forced
local symbols only for predefined symbols.
Diffstat (limited to 'gold/symtab.cc')
-rw-r--r-- | gold/symtab.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gold/symtab.cc b/gold/symtab.cc index 6d107a8..22a44e0 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -1986,8 +1986,9 @@ Symbol_table::do_define_in_output_data( return sym; else { - if (binding == elfcpp::STB_LOCAL - || this->version_script_.symbol_is_local(name)) + if (defined == PREDEFINED + && (binding == elfcpp::STB_LOCAL + || this->version_script_.symbol_is_local(name))) this->force_local(oldsym); delete sym; return oldsym; |