Fix handling of relocations against TLS section symbols.
Gold doesn't handle relocations against the section symbol for a TLS section correctly. Instead of using the offset of the section relative to the TLS segment, it uses the address of the actual section. This patch checks for section symbols for TLS sections, and treats them the same as TLS symbols. gold/ PR gold/16773 * object.cc (Sized_relobj_file): Compute value of section symbols for TLS sections the same as TLS symbols.
This commit is contained in:
parent
a73c2b56cd
commit
5efeedf61e
2 changed files with 9 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-09-26 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
PR gold/16773
|
||||
* object.cc (Sized_relobj_file): Compute value of section symbols
|
||||
for TLS sections the same as TLS symbols.
|
||||
|
||||
2014-09-25 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
PR gold/17432
|
||||
|
|
|
@ -2359,7 +2359,9 @@ Sized_relobj_file<size, big_endian>::compute_final_local_value_internal(
|
|||
lv_out->set_merged_symbol_value(msv);
|
||||
}
|
||||
}
|
||||
else if (lv_in->is_tls_symbol())
|
||||
else if (lv_in->is_tls_symbol()
|
||||
|| (lv_in->is_section_symbol()
|
||||
&& (os->flags() & elfcpp::SHF_TLS)))
|
||||
lv_out->set_output_value(os->tls_offset()
|
||||
+ secoffset
|
||||
+ lv_in->input_value());
|
||||
|
|
Loading…
Add table
Reference in a new issue