1 # Expect script for i386 no-PLT tests.
2 # Copyright (C) 2016-2017 Free Software Foundation, Inc.
4 # This file is part of the GNU Binutils.
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.
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.
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,
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.
33 if ![istarget "i?86-*-*"] {
37 # Check to see if the C compiler works
38 if { [which $CC] == 0 } {
42 run_cc_link_tests [list \
44 "Build no-plt-func1.o no-plt-main1.o" \
47 {no-plt-func1.c no-plt-main1.c} \
50 "Build no-plt-check1a.o no-plt-extern1a.o \
51 no-plt-check1b.o no-plt-extern1b.o" \
53 "-Wa,-mrelax-relocations=yes" \
54 {no-plt-check1a.S no-plt-extern1a.S \
55 no-plt-check1b.S no-plt-extern1b.S } \
58 "Build libno-plt-1a.so" \
59 "-shared tmpdir/no-plt-func1.o" \
66 "Build libno-plt-1b.so" \
67 "-shared tmpdir/no-plt-extern1a.o" \
70 {{readelf -Wr libno-plt-1b.rd} \
71 {objdump -dwrj.text libno-plt-1b.dd}} \
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" \
80 {{readelf -Wr no-plt-1a.rd} {objdump -dwrj.text no-plt-1a.dd}} \
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" \
89 {{readelf -Wr no-plt-1b.rd} {objdump -dwrj.text no-plt-1b.dd}} \
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" \
98 {{readelf -Wr no-plt-1c.rd} {objdump -dwrj.text no-plt-1c.dd}} \
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" \
107 {{readelf -Wr no-plt-1d.rd} {objdump -dwrj.text no-plt-1d.dd}} \
112 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
113 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
116 {{readelf -Wr no-plt-1e.rd} {objdump -dwrj.text no-plt-1e.dd}} \
121 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
122 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
125 {{readelf -Wr no-plt-1f.rd} {objdump -dwrj.text no-plt-1f.dd}} \
130 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
131 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
134 {{readelf -Wr no-plt-1g.rd} {objdump -dwrj.text no-plt-1g.dd}} \
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" \
143 {{readelf -Wr no-plt-1h.rd} {objdump -dwrj.text no-plt-1h.dd}} \
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" \
152 {{readelf -Wr no-plt-1i.rd} {objdump -dwrj.text no-plt-1i.dd}} \
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" \
161 {{readelf -Wr no-plt-1j.rd} {objdump -dwrj.text no-plt-1j.dd}} \
166 run_ld_link_exec_tests [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" \
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" \
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" \
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" \
205 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
206 tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
214 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
215 tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
223 "-pie tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
224 tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
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" \
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" \
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" \
259 # Run-time tests which require working IFUNC support.
260 if { [check_ifunc_available] } {
261 run_cc_link_tests [list \
263 "Build pr20244-3a.o pr20244-3b.o pr20244-3c.o pr20244-3d.o" \
266 { pr20244-3a.c pr20244-3b.S pr20244-3c.S pr20244-3d.S } \
269 "Build pr20253-1a.o pr20253-1b.o pr20253-1c.o pr20253-1d.o" \
272 { pr20253-1a.c pr20253-1b.S pr20253-1c.S pr20253-1d.S } \
275 "Build libpr20253-1a.so" \
276 "-shared tmpdir/pr20253-1b.o \
277 tmpdir/pr20253-1c.o tmpdir/pr20253-1d.o" \
284 "Build pr20253-2a.o pr20253-2b.o pr20253-2c.o pr20253-2d.o" \
287 { pr20253-2a.c pr20253-2b.S pr20253-2c.S pr20253-2d.S } \
291 run_ld_link_exec_tests [list \
294 "tmpdir/pr20244-3a.o tmpdir/pr20244-3b.o \
295 tmpdir/pr20244-3c.o tmpdir/pr20244-3d.o" \
303 "--static tmpdir/pr20244-3a.o tmpdir/pr20244-3b.o \
304 tmpdir/pr20244-3c.o tmpdir/pr20244-3d.o" \
312 "tmpdir/pr20253-1a.o tmpdir/pr20253-1b.o \
313 tmpdir/pr20253-1c.o tmpdir/pr20253-1d.o" \
321 "--static tmpdir/pr20253-1a.o tmpdir/pr20253-1b.o \
322 tmpdir/pr20253-1c.o tmpdir/pr20253-1d.o" \
330 "-pie tmpdir/pr20253-1a.o tmpdir/pr20253-1b.o \
331 tmpdir/pr20253-1c.o tmpdir/pr20253-1d.o" \
339 "tmpdir/pr20253-1a.o tmpdir/libpr20253-1a.so" \
347 "-pie tmpdir/pr20253-1a.o tmpdir/libpr20253-1a.so" \
355 "tmpdir/pr20253-1a.o" \
357 { pr20253-1b.S pr20253-1c.S pr20253-1d.S } \
364 "--static tmpdir/pr20253-1a.o" \
366 { pr20253-1b.S pr20253-1c.S pr20253-1d.S } \
373 "tmpdir/pr20253-2a.o tmpdir/pr20253-2b.o \
374 tmpdir/pr20253-2c.o tmpdir/pr20253-2d.o" \
382 "--static tmpdir/pr20253-2a.o tmpdir/pr20253-2b.o \
383 tmpdir/pr20253-2c.o tmpdir/pr20253-2d.o" \
391 "tmpdir/pr20253-2a.o" \
393 { pr20253-2b.S pr20253-2c.S pr20253-2d.S } \
400 "--static tmpdir/pr20253-2a.o" \
402 { pr20253-2b.S pr20253-2c.S pr20253-2d.S } \