diff options
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.patch | 57 |
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 @@ | |||
1 | From 0c6a475b99dc06a49549d81059f290b23b86c62d Mon Sep 17 00:00:00 2001 | ||
2 | From: "H.J. Lu" <hjl.tools@gmail.com> | ||
3 | Date: Tue, 20 Nov 2012 05:57:53 +0000 | ||
4 | Subject: [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 | |||
13 | diff --git a/gold/ChangeLog b/gold/ChangeLog | ||
14 | index 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 | ||
26 | diff --git a/gold/x86_64.cc b/gold/x86_64.cc | ||
27 | index 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 | -- | ||
56 | 1.7.9.5 | ||
57 | |||