summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils/binutils/0055-Remove-ABI_64_P-check-on-R_X86_64_PCXX.patch
blob: 697d70eac5d4c2dd58ddbd1fb3e855d855b947b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
Upstream-Status: Backport

From fee27086a7592c1812253e9c1c26f412dd87f3a2 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 10 Jan 2012 20:34:56 +0000
Subject: [PATCH 055/262] Remove ABI_64_P check on R_X86_64_PCXX

bfd/

2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/13581
	* elf64-x86-64.c (elf_x86_64_relocate_section): Remove ABI_64_P
	check on R_X86_64_PCXX.

ld/testsuite/

2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/13581
	* ld-x86-64/ilp32-4.s: New.
	* ld-x86-64/ilp32-10.d: Likewise.
	* ld-x86-64/ilp32-10.s: Likewise.

	* ld-x86-64/ilp32-4.d: Adjusted.
	* ld-x86-64/ilp32-5.d: Likewise.
	* ld-x86-64/ilp32-5.s: Likewise.

	* ld-x86-64/x86-64.exp: Run ilp32-10.
---
 bfd/ChangeLog                     |    7 +++++++
 bfd/elf64-x86-64.c                |    1 -
 ld/testsuite/ChangeLog            |   14 ++++++++++++++
 ld/testsuite/ld-x86-64/ilp32-10.d |    3 +++
 ld/testsuite/ld-x86-64/ilp32-10.s |    3 +++
 ld/testsuite/ld-x86-64/ilp32-4.d  |   32 +++++++++++++-------------------
 ld/testsuite/ld-x86-64/ilp32-4.s  |    3 +++
 ld/testsuite/ld-x86-64/ilp32-5.d  |    2 +-
 ld/testsuite/ld-x86-64/ilp32-5.s  |    2 +-
 ld/testsuite/ld-x86-64/x86-64.exp |    1 +
 10 files changed, 46 insertions(+), 22 deletions(-)
 create mode 100644 ld/testsuite/ld-x86-64/ilp32-10.d
 create mode 100644 ld/testsuite/ld-x86-64/ilp32-10.s
 create mode 100644 ld/testsuite/ld-x86-64/ilp32-4.s

diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 3a2444b..bdb3ae6 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -3460,7 +3460,6 @@ elf_x86_64_relocate_section (bfd *output_bfd,
 	case R_X86_64_PC16:
 	case R_X86_64_PC32:
 	  if (info->shared
-	      && ABI_64_P (output_bfd)
 	      && (input_section->flags & SEC_ALLOC) != 0
 	      && (input_section->flags & SEC_READONLY) != 0
 	      && h != NULL)
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.d b/ld/testsuite/ld-x86-64/ilp32-10.d
new file mode 100644
index 0000000..43d9fbd
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.d
@@ -0,0 +1,3 @@
+#as: --x32
+#ld: -shared -melf32_x86_64
+#error: .*relocation R_X86_64_PC32 against undefined symbol `bar' can not be used when making a shared object; recompile with -fPIC
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.s b/ld/testsuite/ld-x86-64/ilp32-10.s
new file mode 100644
index 0000000..70e4a90
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.s
@@ -0,0 +1,3 @@
+	.globl foo
+foo:
+	mov bar(%rip), %rax
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.d b/ld/testsuite/ld-x86-64/ilp32-4.d
index 84dc7b2..92d8a67 100644
--- a/ld/testsuite/ld-x86-64/ilp32-4.d
+++ b/ld/testsuite/ld-x86-64/ilp32-4.d
@@ -1,36 +1,30 @@
-#source: start.s
 #as: --x32
 #ld: -m elf32_x86_64 -shared --no-ld-generated-unwind-info
 #readelf: -d -S --wide
 
-There are 10 section headers, starting at offset 0x22c:
+There are 9 section headers, starting at offset 0x1d8:
 
 Section Headers:
   \[Nr\] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
   \[ 0\]                   NULL            00000000 000000 000000 00      0   0  0
-  \[ 1\] .hash             HASH            00000094 000094 000030 04   A  2   0  4
-  \[ 2\] .dynsym           DYNSYM          000000c4 0000c4 000070 10   A  3   2  4
-  \[ 3\] .dynstr           STRTAB          00000134 000134 00001d 00   A  0   0  1
-  \[ 4\] .rela.dyn         RELA            00000154 000154 00000c 0c   A  2   0  4
-  \[ 5\] .text             PROGBITS        00000160 000160 000005 00  AX  0   0  4
-  \[ 6\] .dynamic          DYNAMIC         00200168 000168 000078 08  WA  3   0  4
-  \[ 7\] .shstrtab         STRTAB          00000000 0001e0 00004a 00      0   0  1
-  \[ 8\] .symtab           SYMTAB          00000000 0003bc 0000e0 10      9   9  4
-  \[ 9\] .strtab           STRTAB          00000000 00049c 000043 00      0   0  1
+  \[ 1\] .hash             HASH            00000094 000094 00002c 04   A  2   0  4
+  \[ 2\] .dynsym           DYNSYM          000000c0 0000c0 000060 10   A  3   2  4
+  \[ 3\] .dynstr           STRTAB          00000120 000120 000019 00   A  0   0  1
+  \[ 4\] .text             PROGBITS        0000013c 00013c 000001 00  AX  0   0  4
+  \[ 5\] .dynamic          DYNAMIC         00200140 000140 000058 08  WA  3   0  4
+  \[ 6\] .shstrtab         STRTAB          00000000 000198 000040 00      0   0  1
+  \[ 7\] .symtab           SYMTAB          00000000 000340 0000c0 10      8   8  4
+  \[ 8\] .strtab           STRTAB          00000000 000400 00003f 00      0   0  1
 Key to Flags:
   W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\), l \(large\)
   I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
   O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
 
-Dynamic section at offset 0x168 contains 10 entries:
+Dynamic section at offset 0x140 contains 6 entries:
   Tag        Type                         Name/Value
  0x00000004 \(HASH\)                       0x94
- 0x00000005 \(STRTAB\)                     0x134
- 0x00000006 \(SYMTAB\)                     0xc4
- 0x0000000a \(STRSZ\)                      29 \(bytes\)
+ 0x00000005 \(STRTAB\)                     0x120
+ 0x00000006 \(SYMTAB\)                     0xc0
+ 0x0000000a \(STRSZ\)                      25 \(bytes\)
  0x0000000b \(SYMENT\)                     16 \(bytes\)
- 0x00000007 \(RELA\)                       0x154
- 0x00000008 \(RELASZ\)                     12 \(bytes\)
- 0x00000009 \(RELAENT\)                    12 \(bytes\)
- 0x00000016 \(TEXTREL\)                    0x0
  0x00000000 \(NULL\)                       0x0
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.s b/ld/testsuite/ld-x86-64/ilp32-4.s
new file mode 100644
index 0000000..5f270c7
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-4.s
@@ -0,0 +1,3 @@
+	.globl _start
+_start:
+	ret
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.d b/ld/testsuite/ld-x86-64/ilp32-5.d
index e4673e5..4870c2b 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.d
+++ b/ld/testsuite/ld-x86-64/ilp32-5.d
@@ -4,5 +4,5 @@
 
 #...
 [0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+
-[0-9a-f]+ +[0-9a-f]+ +R_X86_64_PC32 +[0-9a-f]+ +foo - 4
+[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ +foo \+ 0
 [0-9a-f]+ +[0-9a-f]+ +R_X86_64_32 +[0-9a-f]+ +foo \+ 0
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.s b/ld/testsuite/ld-x86-64/ilp32-5.s
index 0d97807..ef0c60e 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.s
+++ b/ld/testsuite/ld-x86-64/ilp32-5.s
@@ -1,6 +1,6 @@
 	.globl bar
 bar:
-	mov foo(%rip), %rax
+	mov foo@GOTPCREL(%rip), %rax
 
 	.data
 xxx:
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 77b081b..44d3e07 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -207,6 +207,7 @@ run_dump_test "ilp32-6"
 run_dump_test "ilp32-7"
 run_dump_test "ilp32-8"
 run_dump_test "ilp32-9"
+run_dump_test "ilp32-10"
 run_dump_test "ia32-1"
 run_dump_test "ia32-2"
 run_dump_test "ia32-3"
-- 
1.7.9.5

OpenPOWER on IntegriCloud