This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[gold commit] PR gold/16773: Fix handling of relocations against TLS section symbols
- From: Cary Coutant <ccoutant at google dot com>
- To: Binutils <binutils at sourceware dot org>
- Date: Fri, 26 Sep 2014 13:36:09 -0700
- Subject: [gold commit] PR gold/16773: Fix handling of relocations against TLS section symbols
- Authentication-results: sourceware.org; auth=none
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.
-cary
2014-09-26 Cary Coutant <ccoutant@google.com>
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/object.cc b/gold/object.cc
index 03239d8..6ab84ce 100644
--- a/gold/object.cc
+++ b/gold/object.cc
@@ -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());