aboutsummaryrefslogtreecommitdiff
path: root/gold/symtab.cc
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2015-11-14 11:04:01 -0800
committerCary Coutant <ccoutant@gmail.com>2015-11-14 11:04:01 -0800
commitdb1ff0288b923bc17d2408a6172a016b7ba0a6a4 (patch)
tree13887d54cd1212d858665f111621ad38bc2ada62 /gold/symtab.cc
parent895d4275baf1739a1a02d6c5c918be42b9102702 (diff)
downloadgdb-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.cc5
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;