forked from Imagelibrary/binutils-gdb
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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user