summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch')
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch57
1 files changed, 0 insertions, 57 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch b/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch
deleted file mode 100644
index b4bc10f9c5..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0012-Fix-TLS-LD-to-LE-optimization-for-x32.patch
+++ /dev/null
@@ -1,57 +0,0 @@
1From 0c6a475b99dc06a49549d81059f290b23b86c62d Mon Sep 17 00:00:00 2001
2From: "H.J. Lu" <hjl.tools@gmail.com>
3Date: Tue, 20 Nov 2012 05:57:53 +0000
4Subject: [PATCH 12/27] Fix TLS LD to LE optimization for x32
5
6 PR gold/14858
7 * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
8---
9 gold/ChangeLog | 5 +++++
10 gold/x86_64.cc | 9 ++++++++-
11 2 files changed, 13 insertions(+), 1 deletion(-)
12
13diff --git a/gold/ChangeLog b/gold/ChangeLog
14index 9a1a9d3..b31d11f 100644
15--- a/gold/ChangeLog
16+++ b/gold/ChangeLog
17@@ -1,3 +1,8 @@
18+2012-11-19 H.J. Lu <hongjiu.lu@intel.com>
19+
20+ PR gold/14858
21+ * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
22+
23 2012-11-14 Roland McGrath <mcgrathr@google.com>
24
25 * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
26diff --git a/gold/x86_64.cc b/gold/x86_64.cc
27index b5b616f..8ddf4f2 100644
28--- a/gold/x86_64.cc
29+++ b/gold/x86_64.cc
30@@ -3959,8 +3959,12 @@ Target_x86_64<size>::Relocate::tls_ld_to_le(
31 section_size_type view_size)
32 {
33 // leaq foo@tlsld(%rip),%rdi; call __tls_get_addr@plt;
34+ // For SIZE == 64:
35 // ... leq foo@dtpoff(%rax),%reg
36 // ==> .word 0x6666; .byte 0x66; movq %fs:0,%rax ... leaq x@tpoff(%rax),%rdx
37+ // For SIZE == 32:
38+ // ... leq foo@dtpoff(%rax),%reg
39+ // ==> nopl 0x0(%rax); movl %fs:0,%eax ... leaq x@tpoff(%rax),%rdx
40
41 tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, -3);
42 tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, 9);
43@@ -3970,7 +3974,10 @@ Target_x86_64<size>::Relocate::tls_ld_to_le(
44
45 tls::check_tls(relinfo, relnum, rela.get_r_offset(), view[4] == 0xe8);
46
47- memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12);
48+ if (size == 64)
49+ memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12);
50+ else
51+ memcpy(view - 3, "\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0\0", 12);
52
53 // The next reloc should be a PLT32 reloc against __tls_get_addr.
54 // We can skip it.
55--
561.7.9.5
57