Add 2 i386 tests to call IFUNC functions via GOT
[deliverable/binutils-gdb.git] / ld / testsuite / ld-i386 / no-plt.exp
CommitLineData
ffc89b17
L
1# Expect script for i386 no-PLT tests.
2# Copyright (C) 2016 Free Software Foundation, Inc.
3#
4# This file is part of the GNU Binutils.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 3 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19# MA 02110-1301, USA.
20#
21
22# The following tests require running the executable generated by ld,
23# or enough of a build environment to create a fully linked executable.
24# This is not commonly available when testing a cross-built linker.
25if ![isnative] {
26 return
27}
28
29if ![is_elf_format] {
30 return
31}
32
33if ![istarget "i?86-*-*"] {
34 return
35}
36
37# Check to see if the C compiler works
38if { [which $CC] == 0 } {
39 return
40}
41
42run_cc_link_tests [list \
43 [list \
44 "Build no-plt-func1.o no-plt-main1.o" \
45 "" \
46 "-fPIE" \
47 {no-plt-func1.c no-plt-main1.c} \
48 ] \
49 [list \
50 "Build no-plt-check1a.o no-plt-extern1a.o \
51 no-plt-check1b.o no-plt-extern1b.o" \
52 "" \
53 "-Wa,-mrelax-relocations=yes" \
54 {no-plt-check1a.S no-plt-extern1a.S \
55 no-plt-check1b.S no-plt-extern1b.S } \
56 ] \
57 [list \
58 "Build libno-plt-1a.so" \
59 "-shared tmpdir/no-plt-func1.o" \
60 "" \
61 {dummy.s} \
62 {} \
63 "libno-plt-1a.so" \
64 ] \
65 [list \
66 "Build libno-plt-1b.so" \
67 "-shared tmpdir/no-plt-extern1a.o" \
68 "" \
69 {dummy.s} \
70 {{readelf -Wr libno-plt-1b.rd} \
71 {objdump -dwrj.text libno-plt-1b.dd}} \
72 "libno-plt-1b.so" \
73 ] \
74 [list \
75 "No PLT (dynamic 1a)" \
76 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
77 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
78 "" \
79 {dummy.s} \
80 {{readelf -Wr no-plt-1a.rd} {objdump -dwrj.text no-plt-1a.dd}} \
81 "no-plt-1a" \
82 ] \
83 [list \
84 "No PLT (dynamic 1b)" \
85 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
86 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
87 "" \
88 {dummy.s} \
89 {{readelf -Wr no-plt-1b.rd} {objdump -dwrj.text no-plt-1b.dd}} \
90 "no-plt-1b" \
91 ] \
92 [list \
93 "No PLT (dynamic 1c)" \
94 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
95 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
96 "" \
97 {dummy.s} \
98 {{readelf -Wr no-plt-1c.rd} {objdump -dwrj.text no-plt-1c.dd}} \
99 "no-plt-1c" \
100 ] \
101 [list \
102 "No PLT (static 1d)" \
103 "-static tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
104 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
105 "" \
106 {dummy.s} \
107 {{readelf -Wr no-plt-1d.rd} {objdump -dwrj.text no-plt-1d.dd}} \
108 "no-plt-1d" \
109 ] \
110 [list \
111 "No PLT (PIE 1e)" \
112 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
113 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
114 "" \
115 {dummy.s} \
116 {{readelf -Wr no-plt-1e.rd} {objdump -dwrj.text no-plt-1e.dd}} \
117 "no-plt-1e" \
118 ] \
119 [list \
120 "No PLT (PIE 1f)" \
121 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
122 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
123 "" \
124 { dummy.s } \
125 {{readelf -Wr no-plt-1f.rd} {objdump -dwrj.text no-plt-1f.dd}} \
126 "no-plt-1f" \
127 ] \
128 [list \
129 "No PLT (PIE 1g)" \
130 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
131 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
132 "" \
133 { dummy.s } \
134 {{readelf -Wr no-plt-1g.rd} {objdump -dwrj.text no-plt-1g.dd}} \
135 "no-plt-1g" \
136 ] \
137 [list \
138 "No PLT (dynamic 1h)" \
139 "tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
140 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
141 "" \
142 {dummy.s} \
143 {{readelf -Wr no-plt-1h.rd} {objdump -dwrj.text no-plt-1h.dd}} \
144 "no-plt-1h" \
145 ] \
146 [list \
147 "No PLT (dynamic 1i)" \
148 "tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
149 tmpdir/no-plt-extern1b.o tmpdir/libno-plt-1a.so" \
150 "" \
151 {dummy.s} \
152 {{readelf -Wr no-plt-1i.rd} {objdump -dwrj.text no-plt-1i.dd}} \
153 "no-plt-1i" \
154 ] \
155 [list \
156 "No PLT (static 1j)" \
157 "-static tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
158 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
159 "" \
160 {dummy.s} \
161 {{readelf -Wr no-plt-1j.rd} {objdump -dwrj.text no-plt-1j.dd}} \
162 "no-plt-1j" \
163 ] \
164]
165
166run_ld_link_exec_tests [] [list \
167 [list \
168 "No PLT (dynamic 1a)" \
169 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
170 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
171 "" \
172 { dummy.s } \
173 "no-plt-1a" \
174 "pass.out" \
175 ] \
176 [list \
177 "No PLT (dynamic 1b)" \
178 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
179 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
180 "" \
181 { dummy.s } \
182 "no-plt-1b" \
183 "pass.out" \
184 ] \
185 [list \
186 "No PLT (dynamic 1c)" \
187 "tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
188 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
189 "" \
190 { dummy.s } \
191 "no-plt-1c" \
192 "pass.out" \
193 ] \
194 [list \
195 "No PLT (static 1d)" \
196 "-static tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
197 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
198 "" \
199 { dummy.s } \
200 "no-plt-1d" \
201 "pass.out" \
202 ] \
203 [list \
204 "No PLT (PIE 1e)" \
205 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
206 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
207 "" \
208 { dummy.s } \
209 "no-plt-1e" \
210 "pass.out" \
211 ] \
212 [list \
213 "No PLT (PIE 1f)" \
214 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
215 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
216 "" \
217 { dummy.s } \
218 "no-plt-1f" \
219 "pass.out" \
220 ] \
221 [list \
222 "No PLT (PIE 1g)" \
223 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
224 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
225 "" \
226 { dummy.s } \
227 "no-plt-1g" \
228 "pass.out" \
229 ] \
230 [list \
231 "No PLT (dynamic 1h)" \
232 "tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
233 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
234 "" \
235 {dummy.s} \
236 "no-plt-1h" \
237 "pass.out" \
238 ] \
239 [list \
240 "No PLT (dynamic 1i)" \
241 "tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
242 tmpdir/no-plt-extern1b.o tmpdir/libno-plt-1a.so" \
243 "" \
244 {dummy.s} \
245 "no-plt-1i" \
246 "pass.out" \
247 ] \
248 [list \
249 "No PLT (static 1j)" \
250 "-static tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
251 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
252 "" \
253 {dummy.s} \
254 "no-plt-1j" \
255 "pass.out" \
256 ] \
257]
This page took 0.032607 seconds and 4 git commands to generate.