This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb/users/hjl/linux/master] Handle Initial-Exec to Local-Exec for x32
- From: H.J.Lu <hjl at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 11 Jan 2015 16:20:21 -0000
- Subject: [binutils-gdb/users/hjl/linux/master] Handle Initial-Exec to Local-Exec for x32
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e749cab89d976c723ee01a3dfcfd7ec1a883f890
commit e749cab89d976c723ee01a3dfcfd7ec1a883f890
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Tue Jan 6 12:58:54 2015 -0800
Handle Initial-Exec to Local-Exec for x32
PR gold/17809
* x86_64.cc (Target_x86_64<size>::Relocate::tls_ie_to_le): Handle
x32.
Diff:
---
gold/ChangeLog | 6 ++++++
gold/x86_64.cc | 6 ++++++
2 files changed, 12 insertions(+)
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 496d9a7..af56066 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/17809
+ * x86_64.cc (Target_x86_64<size>::Relocate::tls_ie_to_le): Handle
+ x32.
+
2015-01-02 Alan Modra <amodra@gmail.com>
* version.cc (print_version): Just print current year.
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index b45eb3b..c368b03 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -4100,6 +4100,8 @@ Target_x86_64<size>::Relocate::tls_ie_to_le(
// movq
if (op1 == 0x4c)
view[-3] = 0x49;
+ else if (size == 32 && op1 == 0x44)
+ view[-3] = 0x41;
view[-2] = 0xc7;
view[-1] = 0xc0 | reg;
}
@@ -4108,6 +4110,8 @@ Target_x86_64<size>::Relocate::tls_ie_to_le(
// Special handling for %rsp.
if (op1 == 0x4c)
view[-3] = 0x49;
+ else if (size == 32 && op1 == 0x44)
+ view[-3] = 0x41;
view[-2] = 0x81;
view[-1] = 0xc0 | reg;
}
@@ -4116,6 +4120,8 @@ Target_x86_64<size>::Relocate::tls_ie_to_le(
// addq
if (op1 == 0x4c)
view[-3] = 0x4d;
+ else if (size == 32 && op1 == 0x44)
+ view[-3] = 0x45;
view[-2] = 0x8d;
view[-1] = 0x80 | reg | (reg << 3);
}