From: Cary Coutant Date: Fri, 26 Sep 2014 20:34:27 +0000 (-0700) Subject: Fix handling of relocations against TLS section symbols. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5efeedf61e4fe720fd3e9a08e6c91c10abb66d42;p=binutils-gdb.git 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. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 4b39c3fe0f8..f71db091ff4 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2014-09-26 Cary Coutant + + 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 PR gold/17432 diff --git a/gold/object.cc b/gold/object.cc index 03239d8443f..6ab84cef70f 100644 --- a/gold/object.cc +++ b/gold/object.cc @@ -2359,7 +2359,9 @@ Sized_relobj_file::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());