From b3705d2a514a4235bd08c02f708f02b1c9285019 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 10 Feb 2010 23:00:29 +0000 Subject: * i386.cc (Relocate::relocate_tls): A local symbol is final if not shared, not if not position independent. * x86_64.cc (Relocate::relocate_tls): Likewise. * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test. (tls_pie_pic_test): New target. * testsuite/Makefile.in: Rebuild. --- gold/i386.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'gold/i386.cc') diff --git a/gold/i386.cc b/gold/i386.cc index f2a7b53..97d98d7 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -1897,10 +1897,9 @@ Target_i386::Relocate::relocate_tls(const Relocate_info<32, false>* relinfo, elfcpp::Elf_types<32>::Elf_Addr value = psymval->value(object, 0); - const bool is_final = - (gsym == NULL - ? !parameters->options().output_is_position_independent() - : gsym->final_value_is_known()); + const bool is_final = (gsym == NULL + ? !parameters->options().shared() + : gsym->final_value_is_known()); const tls::Tls_optimization optimized_type = Target_i386::optimize_tls_reloc(is_final, r_type); switch (r_type) -- cgit v1.1