1 # Expect script
for ld-x86_64 tests
2 # Copyright
(C
) 2002-2016 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 # Test x86_64 linking
; all types of relocs. This tests the assembler and
23 # tools like objdump as well as the linker.
25 if { !([istarget
"x86_64-*-elf*"]
26 ||
[istarget
"x86_64-*-nacl*"]
27 ||
[istarget
"x86_64-*-linux*"]) } {
31 if [istarget
"*-*-nacl*"] {
32 set emul
"elf_x86_64_nacl"
37 # List contains test
-items with
3 items followed by
2 lists
:
38 #
0:name 1:ld early options
2:ld late options
3:assembler options
39 #
4:filenames of assembler files
5: action and options.
6: name of output file
42 # objdump
: Apply objdump options
on result. Compare with regex
(last
arg).
43 # nm
: Apply nm options
on result. Compare with regex
(last
arg).
44 # readelf
: Apply readelf options
on result. Compare with regex
(last
arg).
47 {"Helper shared library (basic PLT test)"
48 "-shared -melf_x86_64" "" "--64" {pltlib.s} {} "libpltlib.so"}
49 {"basic PLT generation"
50 "-melf_x86_64 tmpdir/libpltlib.so" "" "--64" {plt.s}
51 {{objdump
-drj.plt plt.pd
}} "plt"}
52 {"TLS -fpic -shared transitions"
53 "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
54 "--64" {tlspic1.s tlspic2.s}
55 {{readelf
-WSsrl tlspic.rd
} {objdump
-drj.
text\
-Mintel64 tlspic.dd
}
56 {objdump
-sj.got tlspic.sd
} {objdump
-sj.tdata tlspic.td
}}
58 {"TLS descriptor -fpic -shared transitions"
59 "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
60 "--64" {tlsdesc.s tlspic2.s}
61 {{readelf
-WSsrld tlsdesc.rd
} {objdump
-drj.
text tlsdesc.dd
}
62 {objdump
"-s -j.got -j.got.plt" tlsdesc.sd} {objdump -sj.tdata tlsdesc.td}
63 {objdump
-drj.plt tlsdesc.pd
}} "libtlsdesc.so"}
64 {"Helper shared library" "-shared -melf_x86_64" ""
65 "--64" {tlslib.s} {} "libtlslib.so"}
66 {"TLS -fpic and -fno-pic exec transitions"
67 "-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
68 "--64" {tlsbinpic.s tlsbin.s}
69 {{readelf
-WSsrl tlsbin.rd
} {objdump
-drj.
text tlsbin.dd
}
70 {objdump
-sj.got tlsbin.sd
} {objdump
-sj.tdata tlsbin.td
}}
72 {"TLS descriptor -fpic and -fno-pic exec transitions"
73 "-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
74 "--64" {tlsbindesc.s tlsbin.s}
75 {{readelf
-WSsrl tlsbindesc.rd
} {objdump
-drj.
text tlsbindesc.dd
}
76 {objdump
-sj.got tlsbindesc.sd
} {objdump
-sj.tdata tlsbindesc.td
}}
78 {"TLS with global dynamic and descriptors"
79 "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
81 {{readelf
-WSsrl tlsgdesc.rd
} {objdump
-drj.
text\
-Mintel64 tlsgdesc.dd
}}
83 {"TLS in debug sections" "-melf_x86_64" ""
85 {{objdump
-sj.debug_foobar tlsg.sd
}} "tlsg"}
86 {"TLS GD->LE transition" "-melf_x86_64" ""
88 {{objdump
-dwr tlsgd1.dd
}} "tlsgd1"}
89 {"TLS LD->LE transition" "-melf_x86_64" ""
91 {{objdump
-dwr tlsld1.dd
}} "tlsld1"}
92 {"TLS IE->LE transition" "-melf_x86_64" ""
94 {{objdump
-dwr tlsie1.dd
}} "tlsie1"}
95 {"Helper 64bit object 1" "-r -melf_x86_64" ""
96 "--64" {mixed1a.s} {} "libmixe1a.o"}
97 {"Helper 32bit object 1" "-r -melf_i386" ""
98 "--32" {mixed1b.s} {} "libmixe1b.o"}
99 {"Helper 64bit object 2" "-r -melf_x86_64" ""
100 "--64" {mixed2a.s} {} "libmixe2a.o"}
101 {"Helper 32bit object 2" "-r -melf_i386" ""
102 "--32" {mixed2b.s} {} "libmixe2b.o"}
103 {"Split by file with 'l' flag on section."
104 "-split-by-file -r -melf_x86_64" ""
105 "--64" {split-by-file1.s split-by-file2.s}
106 {{readelf
-SW split
-by
-file.rd
}} "split-by-file.o"}
107 {"TLS X32 IE->LE transition" "-melf32_x86_64" ""
109 {{objdump
-dwr tlsie4.dd
}} "tlsie4"}
110 {"TLS X32 GD->LE transition" "-melf32_x86_64" ""
112 {{objdump
-dwr tlsgd4.dd
}} "tlsgd4"}
113 {"Helper TLS GD->IE transition DSO" "-shared -melf_x86_64" ""
114 "--64" {tlsgd5b.s} {} "libtlsgd5.so"}
115 {"TLS GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so" ""
117 {{objdump
-dwr tlsgd5.dd
}} "tlsgd5"}
118 {"Helper TLS X32 GD->IE transition DSO" "-shared -melf32_x86_64" ""
119 "--x32" {tlsgd6b.s} {} "libtlsgd6.so"}
120 {"TLS X32 GD->IE transition" "-melf32_x86_64 tmpdir/libtlsgd6.so" ""
122 {{objdump
-dwr tlsgd6.dd
}} "tlsgd6"}
123 {"TLS X32 LD->LE transition" "-melf32_x86_64" ""
125 {{objdump
-dwr tlsld2.dd
}} "tlsld2"}
126 {"TLS -mcmodel=large GD->LE transition" "-melf_x86_64" ""
128 {{objdump
-dwr tlsgd7.dd
}} "tlsgd7"}
129 {"TLS -mcmodel=large LD->LE transition" "-melf_x86_64" ""
131 {{objdump
-dwr tlsld3.dd
}} "tlsld3"}
132 {"TLS -mcmodel=large GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so" ""
134 {{objdump
-dwrj.
text tlsgd8.dd
}} "tlsgd8"}
136 {"build 32-bit object with 33 locals" "-melf_x86_64 -e 0" "" "--32" {32bit.s} {{ ld incompatible.l }} "dummy" }
137 {"build 64-bit object" "-melf_x86_64 -e 0 --defsym foo=1" "" "--64" {64bit.s} {} "dummy" }
138 {"link mixed objects" "-melf_x86_64 -e 0 tmpdir/32bit.o tmpdir/64bit.o" "" "" {} { { ld incompatible.l } } "mixed"}
139 {"PR ld/17313 (1)" "-melf_x86_64" ""
140 "--64" {dummy.s} {} ""}
141 {"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" ""
142 "--64" {lea1.s} {} "libpr17313.so"}
143 {"PR ld/17306 (1)" "-melf_x86_64" ""
144 "--64" {pr17306b.s} {} ""}
145 {"PR ld/17306 (2)" "-melf_x86_64 -shared -Bsymbolic --just-symbols=tmpdir/pr17306b.o" ""
146 "--64" {pr17306a.s} {} "libpr17306.so"}
147 {"PR ld/17709 (1)" "-melf_x86_64 -shared" ""
148 "--64" {pr17709a.s} {} "libpr17709.so"}
149 {"PR ld/17709 (2)" "-melf_x86_64 tmpdir/libpr17709.so" ""
150 "--64" {pr17709b.s} {{readelf -rW pr17709.rd}} "pr17709"}
151 {"Build pr19827a.o" "" ""
152 "--64" { pr19827a.S }}
153 {"Build pr19827b.so" "-melf_x86_64 -shared" ""
154 "--64" { pr19827b.S } {} "pr19827b.so"}
155 {"Build pr19827" "-melf_x86_64 -pie tmpdir/pr19827a.o tmpdir/pr19827b.so" ""
156 "--64" { dummy.s } {{readelf {-rW} pr19827.rd}} "pr19827"}
157 {"Build pr19827.so" "-melf_x86_64 -shared -Bsymbolic" ""
158 "--64" { pr19827a.S } {{readelf {-rW} pr19827.rd}} "pr19827.so"}
159 {"Build pr19969.so" "-melf_x86_64 -shared" ""
160 "--64" { pr19969a.S } {} "pr19969.so"}
163 # So as to avoid rewriting
every last test case here in a nacl variant
,
164 # we use black magic to massage the generic cases into nacl
-variant cases.
165 if [istarget
"*-*-nacl*"] {
166 set emul elf_x86_64_nacl
168 set lhs
{elf
(32)?_
(i386|x86_64
)[[:>:]]}
171 # Change all the
-melf_x86_64 to
-melf_x86_64_nacl so linking can succeed.
172 regsub
-all
-- $lhs $x86_64tests $rhs x86_64tests
174 # Same
, applied to all the run_dump_test cases.
175 set options_regsub
(ld) [list $lhs $rhs
]
177 # The section
/segment layout differs too much
for the vanilla
178 # readelf output files to match. So massage the cases so that
179 # they refer to a foo
-nacl.rd file instead of a foo.rd file.
180 regsub
-all
-- {([a
-z0
-9]+)\.rd
} $x86_64tests
{\
1-nacl.rd
} x86_64tests
183 regsub
-all
-- {([a
-z0
-9]+)\.pd
} $x86_64tests
{\
1-nacl.pd
} x86_64tests
188 run_ld_link_tests $x86_64tests
193 set test_name
"Mixed x86_64 and i386 input test 1"
195 if { ![ld_simple_link $
ld tmpdir
/$test
"-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
196 if [string match
"*i386* architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
203 set test_name
"Mixed x86_64 and i386 input test 2"
205 if { ![ld_simple_link $
ld tmpdir
/$test
"-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
206 if [string match
"*i386* architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
214 run_dump_test
"abs-l1om"
215 run_dump_test
"pcrel8"
216 run_dump_test
"pcrel16"
217 run_dump_test
"tlsgd2"
218 run_dump_test
"tlsgd3"
219 run_dump_test
"tlsie2"
220 run_dump_test
"tlsie3"
221 run_dump_test
"hidden1"
222 run_dump_test
"hidden2"
223 run_dump_test
"hidden3"
224 run_dump_test
"hidden4"
225 run_dump_test
"hidden5"
226 run_dump_test
"protected1"
227 run_dump_test
"protected2"
228 run_dump_test
"protected2-l1om"
229 run_dump_test
"protected3"
230 run_dump_test
"protected3-l1om"
231 run_dump_test
"protected4"
232 run_dump_test
"protected5"
233 run_dump_test
"protected6a"
234 run_dump_test
"protected6b"
235 run_dump_test
"protected7a"
236 run_dump_test
"protected7b"
237 run_dump_test
"tlsle1"
238 run_dump_test
"tlspie1"
239 run_dump_test
"unique1"
240 run_dump_test
"nogot1"
241 run_dump_test
"nogot2"
242 run_dump_test
"discarded1"
243 run_dump_test
"pr12718"
244 run_dump_test
"pr12921"
245 run_dump_test
"pr13947"
246 run_dump_test
"pr12570a"
247 run_dump_test
"pr12570b"
248 run_dump_test
"pr14215"
249 run_dump_test
"pr14207"
250 run_dump_test
"gotplt1"
254 run_dump_test
"largecomm-1a"
255 run_dump_test
"largecomm-1b"
256 run_dump_test
"largecomm-1c"
257 run_dump_test
"largecomm-1d"
258 run_dump_test
"largecomm-1e"
259 run_dump_test
"largecomm-1f"
260 run_dump_test
"pr19539a"
261 run_dump_test
"pr19539b"
262 run_dump_test
"pr19807-1a"
263 run_dump_test
"pr19807-1b"
264 run_dump_test
"pr19807-2a"
265 run_dump_test
"pr19807-2b"
266 run_dump_test
"pr19807-2c"
267 run_dump_test
"pr19807-2d"
268 run_dump_test
"pr19807-2e"
269 run_dump_test
"pr19969"
270 run_dump_test
"pr20093-1"
271 run_dump_test
"pr20093-2"
273 if { ![istarget
"x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
277 if ![ld_assemble $as
"--x32 $srcdir/$subdir/start.s" tmpdir/startx32.o] {
278 unresolved
"Build ILP32 start.o"
282 if ![ld_assemble $as
"--32 $srcdir/$subdir/start.s" tmpdir/start32.o] {
283 unresolved
"Build ia32 start.o"
287 if ![ld_assemble $as
"--64 $srcdir/$subdir/start.s" tmpdir/start64.o] {
288 unresolved
"Build LP64 start.o"
292 if ![ld_assemble $as
"--x32 $srcdir/$subdir/foo.s" tmpdir/foox32.o] {
293 unresolved
"Build ILP32 foo.o"
297 if ![ld_assemble $as
"--32 $srcdir/$subdir/foo.s" tmpdir/foo32.o] {
298 unresolved
"Build ia32 foo.o"
302 if ![ld_assemble $as
"--64 $srcdir/$subdir/foo.s" tmpdir/foo64.o] {
303 unresolved
"Build LP64 foo.o"
307 run_dump_test
"compressed1"
308 run_dump_test
"ilp32-1"
309 run_dump_test
"ilp32-2"
310 run_dump_test
"ilp32-3"
311 run_dump_test
"ilp32-4"
312 run_dump_test
"ilp32-4-nacl"
313 run_dump_test
"ilp32-5"
314 run_dump_test
"ilp32-6"
315 run_dump_test
"ilp32-7"
316 run_dump_test
"ilp32-8"
317 run_dump_test
"ilp32-9"
318 run_dump_test
"ilp32-10"
319 run_dump_test
"ilp32-11"
320 run_dump_test
"ia32-1"
321 run_dump_test
"ia32-2"
322 run_dump_test
"ia32-3"
323 run_dump_test
"lp64-1"
324 run_dump_test
"lp64-2"
325 run_dump_test
"lp64-3"
326 run_dump_test
"pr13082-1a"
327 run_dump_test
"pr13082-1b"
328 run_dump_test
"pr13082-2a"
329 run_dump_test
"pr13082-2b"
330 run_dump_test
"pr13082-3a"
331 run_dump_test
"pr13082-3b"
332 run_dump_test
"pr13082-3c"
333 run_dump_test
"pr13082-3d"
334 run_dump_test
"pr13082-4a"
335 run_dump_test
"pr13082-4b"
336 run_dump_test
"pr13082-5a"
337 run_dump_test
"pr13082-5b"
338 run_dump_test
"pr13082-6a"
339 run_dump_test
"pr13082-6b"
340 run_dump_test
"lea1a"
341 run_dump_test
"lea1b"
342 run_dump_test
"lea1c"
343 run_dump_test
"lea1d"
344 run_dump_test
"lea1e"
345 run_dump_test
"lea1f"
346 run_dump_test
"lea1g"
347 run_dump_test
"lea1h"
348 run_dump_test
"lea1i"
349 run_dump_test
"lea1j"
350 run_dump_test
"lea1k"
351 run_dump_test
"lea1l"
352 run_dump_test
"mov1a"
353 run_dump_test
"mov1b"
354 run_dump_test
"mov1c"
355 run_dump_test
"mov1d"
356 run_dump_test
"mov2a"
357 run_dump_test
"mov2b"
358 run_dump_test
"mov2c"
359 run_dump_test
"mov2d"
360 run_dump_test
"load1a"
361 run_dump_test
"load1b"
362 run_dump_test
"load1c"
363 run_dump_test
"load1d"
364 run_dump_test
"load1a-nacl"
365 run_dump_test
"load1b-nacl"
366 run_dump_test
"load1c-nacl"
367 run_dump_test
"load1d-nacl"
368 run_dump_test
"load2"
369 run_dump_test
"call1a"
370 run_dump_test
"call1b"
371 run_dump_test
"call1c"
372 run_dump_test
"call1d"
373 run_dump_test
"call1e"
374 run_dump_test
"call1f"
375 run_dump_test
"call1g"
376 run_dump_test
"call1h"
377 run_dump_test
"call1i"
378 run_dump_test
"pr17935-1"
379 run_dump_test
"pr17935-2"
380 run_dump_test
"pr18160"
381 run_dump_test
"pr18176"
382 run_dump_test
"pr18801"
383 run_dump_test
"pr18815"
384 run_dump_test
"pr19013"
385 run_dump_test
"pr19013-x32"
386 run_dump_test
"pr19013-nacl"
387 run_dump_test
"pr19162"
388 run_dump_test
"pr19175"
389 run_dump_test
"pr18591"
390 run_dump_test
"pr19615"
391 run_dump_test
"pr19636-1a"
392 run_dump_test
"pr19636-1b"
393 run_dump_test
"pr19636-1c"
394 run_dump_test
"pr19636-1d"
395 run_dump_test
"pr19636-1e"
396 run_dump_test
"pr19636-1f"
397 run_dump_test
"pr19636-1g"
398 run_dump_test
"pr19636-2a"
399 run_dump_test
"pr19636-2b"
400 run_dump_test
"pr19636-2c"
401 run_dump_test
"pr19636-2d"
402 run_dump_test
"pr19636-2d-nacl"
403 run_dump_test
"pr19636-2e"
404 run_dump_test
"pr19636-2f"
405 run_dump_test
"pr19636-2g"
406 run_dump_test
"pr19636-2h"
407 run_dump_test
"pr19636-2i"
408 run_dump_test
"pr19636-3a"
409 run_dump_test
"pr19636-3b"
410 run_dump_test
"pr19636-3c"
411 run_dump_test
"pr19645"
412 run_dump_test
"pr19609-1a"
413 run_dump_test
"pr19609-1b"
414 run_dump_test
"pr19609-1c"
415 run_dump_test
"pr19609-1d"
416 run_dump_test
"pr19609-1e"
417 run_dump_test
"pr19609-1f"
418 run_dump_test
"pr19609-1g"
419 run_dump_test
"pr19609-1h"
420 run_dump_test
"pr19609-1i"
421 run_dump_test
"pr19609-1j"
422 run_dump_test
"pr19609-1k"
423 run_dump_test
"pr19609-1l"
424 run_dump_test
"pr19609-1m"
425 run_dump_test
"pr19609-2a"
426 run_dump_test
"pr19609-2b"
427 run_dump_test
"pr19609-2c"
428 run_dump_test
"pr19609-2d"
429 run_dump_test
"pr19609-3a"
430 run_dump_test
"pr19609-3b"
431 run_dump_test
"pr19609-4a"
432 run_dump_test
"pr19609-4b"
433 run_dump_test
"pr19609-4c"
434 run_dump_test
"pr19609-4d"
435 run_dump_test
"pr19609-4e"
436 run_dump_test
"pr19609-5a"
437 run_dump_test
"pr19609-5b"
438 run_dump_test
"pr19609-5c"
439 run_dump_test
"pr19609-5d"
440 run_dump_test
"pr19609-5e"
441 run_dump_test
"pr19609-6a"
442 run_dump_test
"pr19609-6b"
443 run_dump_test
"pr19609-6c"
444 run_dump_test
"pr19609-6d"
445 run_dump_test
"pr19609-7a"
446 run_dump_test
"pr19609-7b"
447 run_dump_test
"pr19609-7c"
448 run_dump_test
"pr19609-7d"
449 run_dump_test
"pr19939a"
450 run_dump_test
"pr19939b"
451 run_dump_test
"pr19719"
453 proc undefined_weak
{cflags ldflags
} {
454 set testname
"Undefined weak symbol"
455 if { ![ string match
"" $cflags$ldflags] } {
456 set testname
"$testname ($cflags $ldflags)"
459 if { [ regexp
"\-fPIE" $cflags]
460 && ![ regexp
"\-z nodynamic-undefined-weak" $ldflags] } {
461 set weak_symbol
"Weak defined"
463 set weak_symbol
"Weak undefined"
466 run_cc_link_tests
[list \
468 "Build libpr19704a.so" \
469 "-shared -Wl,-soname,libpr19704.so" \
476 "Build libpr19704b.so" \
477 "-shared -Wl,-soname,libpr19704.so" \
485 exec cp tmpdir
/libpr19704a.so tmpdir
/libpr19704.so
487 run_ld_link_exec_tests
[] [list \
490 "$ldflags tmpdir/libpr19704.so -R tmpdir" \
499 exec cp tmpdir
/libpr19704b.so tmpdir
/libpr19704.so
501 set exec_output
[run_host_cmd tmpdir
/pr19704
""]
502 if {![string match $weak_symbol $exec_output
]} {
509 # Add $PLT_CFLAGS
if PLT is expected.
512 # Must be native with the C compiler
513 if { [isnative
] && [which $CC
] != 0 } {
515 {"Helper X32 DSO from x86-64 object" "" "-m64 -fPIC -g"
516 {simple.c
} {} "libsimple.a"}
519 set convertx32
"$objcopy -O elf32-x86-64 tmpdir/simple.o tmpdir/simple-x32.o"
520 send_log
"$convertx32\n"
521 set got
[remote_exec host
"$convertx32"]
522 if { [lindex $got
0] != 0 ||
![string match
"" [lindex $got 1]] } then {
524 fail
"Convert x86-64 object to x32"
529 {"X32 DSO from x86-64 object"
530 "-shared -melf32_x86_64 tmpdir/simple-x32.o" "" "--x32"
531 {dummy.s
} {{readelf
{-s
--wide
} x86
-64-x32.rd
}} "x86-64-x32"}
534 run_cc_link_tests
[list \
544 "Build libplt-main1.a" \
546 "-fPIC -Wa,-mrelax-relocations=yes" \
548 {{readelf
{-Wr
} plt
-main1.rd
}} \
552 "Build libplt-main2.a" \
554 "-fPIC -Wa,-mrelax-relocations=yes" \
556 {{readelf
{-Wr
} plt
-main2.rd
}} \
560 "Build libplt-main3.a" \
562 "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
564 {{readelf
{-Wr
} plt
-main3.rd
}} \
568 "Build libplt-main4.a" \
570 "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
572 {{readelf
{-Wr
} plt
-main4.rd
}} \
577 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
578 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
" \
581 {{readelf
{-Wr
} plt
-main.rd
}} \
585 "Build plt-main with PIE" \
586 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
587 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-pie
" \
590 {{readelf
{-Wr
} plt
-main.rd
}} \
594 "Build copyreloc-lib.so" \
597 { copyreloc
-lib.c
} \
602 "Build libcopyreloc-main.a" \
605 { copyreloc
-main.S
} \
607 "libcopyreloc-main.a" \
610 "Build copyreloc-main with PIE without -fPIE (1)" \
611 "tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
614 {{readelf
{-Wr
} copyreloc
-main1.rd
}} \
618 "Build copyreloc-main with PIE without -fPIE (2)" \
619 "tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
622 {{readelf
{-Wr
} copyreloc
-main2.rd
}} \
634 "Build pr17689now.so with -z now" \
635 "-shared -Wl,-z,now" \
638 {{readelf
{-Wr
} pr17689now.rd
}} \
649 "Build pr17689 with PIE without -fPIE" \
650 "tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
653 {{readelf
{-Wr
} pr17689.rd
}} \
657 "Build pr17689 with PIE -z now without -fPIE" \
658 "tmpdir/pr17689b.o tmpdir/pr17689.so -pie -Wl,-z,now" \
661 {{readelf
{-Wr
} pr17689now.rd
}} \
665 "Build pr17827 with PIE without -fPIE" \
666 "-Wl,--as-needed tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
669 {{readelf
{-Wr
} pr17827.rd
}} \
684 { pr18900b.c pr18900c.c
} \
690 "tmpdir/pr18900.o tmpdir/pr18900.so" \
693 {{readelf
{-Wrd
} pr18900a.rd
}} \
698 "-Wl,--as-needed tmpdir/pr18900.o tmpdir/pr18900.so" \
701 {{readelf
{-Wrd
} pr18900b.rd
}} \
713 "Build gotpcrel1d.so" \
721 "Build gotpcrel1a.o gotpcrel1b.o gotpcrel1c.o" \
723 "-Wa,-mrelax-relocations=yes" \
724 { gotpcrel1a.S gotpcrel1b.c gotpcrel1c.c
} \
728 "-Wl,--as-needed tmpdir/gotpcrel1a.o tmpdir/gotpcrel1b.o tmpdir/gotpcrel1c.o tmpdir/gotpcrel1d.so" \
731 {{objdump
{-dw
} gotpcrel1.dd
}} \
744 "-pie -nostdlib -nostartfiles tmpdir/pr19319.so" \
747 {{objdump
{-dw
} pr19319.dd
}} \
752 run_ld_link_exec_tests
[] [list \
755 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
756 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
" \
763 "Run plt-main with PIE" \
764 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
765 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-pie
" \
773 "Run copyreloc-main with PIE without -fPIE" \
774 "--as-needed tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
778 "copyreloc-main.out" \
781 "Run pr17689 with PIE without -fPIE" \
782 "tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
789 "Run pr17689 with PIE -z now without -fPIE" \
790 "--as-needed tmpdir/pr17689b.o tmpdir/pr17689.so -pie -z now" \
798 "tmpdir/pr18900.o tmpdir/pr18900.so" \
806 "tmpdir/pr19031.so" \
808 { pr19031b.S pr19031c.c
} \
814 "tmpdir/gotpcrel1d.so" \
816 { gotpcrel1a.S gotpcrel1b.c gotpcrel1c.c
} \
822 if { [istarget
"x86_64-*-linux*"] \
823 && ![istarget
"x86_64-*-linux*-gnux32"]} {
825 run_cc_link_tests
[list \
827 "Build plt-main with -z bndplt" \
828 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
829 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-z bndplt
" \
832 {{objdump
{-drw
} plt
-main
-bnd.dd
}} \
836 "Build plt-main with PIE and -z bndplt" \
837 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
838 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-z bndplt
-pie
" \
841 {{objdump
{-drw
} plt
-main
-bnd.dd
}} \
846 run_ld_link_exec_tests
[] [list \
848 "Run plt-main with -z bndplt" \
849 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
850 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-z bndplt
" \
857 "Run plt-main with PIE and -z bndplt" \
858 "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
859 tmpdir
/plt
-main4.o tmpdir
/libplt
-lib.so
-z bndplt
-pie
" \
870 undefined_weak
"-fPIE" ""
871 undefined_weak
"-fPIE" "-pie"
872 undefined_weak
"-fPIE" "-z nodynamic-undefined-weak"
873 undefined_weak
"-fPIE" "-pie -z nodynamic-undefined-weak"
876 if { ![istarget
"x86_64-*-linux*"]} {
881 run_dump_test
"pr17618"
882 run_dump_test
"pltgot-1"
883 run_dump_test
"pltgot-2"