Fix problem where __start_ and __stop_ section symbols do not honor version script.
When creating the special __start_ and __stop_ section symbols, gold does not check the version script to see if they should be local instead of global. 2015-07-21 Cary Coutant <ccoutant@gmail.com> gold/ PR gold/18548 * symtab.cc (Symbol_table::do_define_in_output_data): Check for forced local symbol even when oldsym != NULL. (Symbol_table::do_define_in_output_segment): Likewise. (Symbol_table::do_define_as_constant): Likewise.
This commit is contained in:
parent
b8c6c5ef99
commit
5417c94d1a
@ -1,3 +1,11 @@
|
||||
2015-07-21 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/18548
|
||||
* symtab.cc (Symbol_table::do_define_in_output_data): Check for
|
||||
forced local symbol even when oldsym != NULL.
|
||||
(Symbol_table::do_define_in_output_segment): Likewise.
|
||||
(Symbol_table::do_define_as_constant): Likewise.
|
||||
|
||||
2015-07-21 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/18698
|
||||
|
@ -1953,6 +1953,9 @@ Symbol_table::do_define_in_output_data(
|
||||
return sym;
|
||||
else
|
||||
{
|
||||
if (binding == elfcpp::STB_LOCAL
|
||||
|| this->version_script_.symbol_is_local(name))
|
||||
this->force_local(oldsym);
|
||||
delete sym;
|
||||
return oldsym;
|
||||
}
|
||||
@ -2067,6 +2070,9 @@ Symbol_table::do_define_in_output_segment(
|
||||
return sym;
|
||||
else
|
||||
{
|
||||
if (binding == elfcpp::STB_LOCAL
|
||||
|| this->version_script_.symbol_is_local(name))
|
||||
this->force_local(oldsym);
|
||||
delete sym;
|
||||
return oldsym;
|
||||
}
|
||||
@ -2186,6 +2192,9 @@ Symbol_table::do_define_as_constant(
|
||||
return sym;
|
||||
else
|
||||
{
|
||||
if (binding == elfcpp::STB_LOCAL
|
||||
|| this->version_script_.symbol_is_local(name))
|
||||
this->force_local(oldsym);
|
||||
delete sym;
|
||||
return oldsym;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user