aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog8
-rw-r--r--gold/i386.cc3
-rw-r--r--gold/x86_64.cc3
3 files changed, 11 insertions, 3 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index bae5102..56fc48e 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,6 +1,12 @@
+2009-01-29 Cary Coutant <ccoutant@google.com>
+
+ * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
+ to __tls_get_addr.
+ * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
+
2009-01-28 Ian Lance Taylor <iant@google.com>
- * version.cc (version_string): Bump to 1.8.
+ * version.cc (version_string): Bump to 1.9.
* gold.h: Include <cstring> and <stdint.h>.
* version.cc: Include <cstdio>.
diff --git a/gold/i386.cc b/gold/i386.cc
index 3779d4e..e033d34 100644
--- a/gold/i386.cc
+++ b/gold/i386.cc
@@ -1633,7 +1633,8 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
{
if (this->skip_call_tls_get_addr_)
{
- if (r_type != elfcpp::R_386_PLT32
+ if ((r_type != elfcpp::R_386_PLT32
+ && r_type != elfcpp::R_386_PC32)
|| gsym == NULL
|| strcmp(gsym->name(), "___tls_get_addr") != 0)
gold_error_at_location(relinfo, relnum, rel.get_r_offset(),
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index 1724624..4dfe75b 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -1703,7 +1703,8 @@ Target_x86_64::Relocate::relocate(const Relocate_info<64, false>* relinfo,
{
if (this->skip_call_tls_get_addr_)
{
- if (r_type != elfcpp::R_X86_64_PLT32
+ if ((r_type != elfcpp::R_X86_64_PLT32
+ && r_type != elfcpp::R_X86_64_PC32)
|| gsym == NULL
|| strcmp(gsym->name(), "__tls_get_addr") != 0)
{