]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - ld/testsuite/ld-x86-64/tls.exp
Use variable args in run_ld_link_exec_tests
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-x86-64 / tls.exp
1 # Expect script for x86-64 TLS 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.
25 if ![isnative] {
26 return
27 }
28
29 # Only on Linux for now.
30 if ![istarget "x86_64-*-linux*"] {
31 return
32 }
33
34 # Check to see if the C compiler works
35 if { [which $CC] == 0 } {
36 return
37 }
38
39 run_cc_link_tests [list \
40 [list \
41 "Build tls-def1.o tls-main1.o" \
42 "" \
43 "-fPIE" \
44 {tls-def1.c tls-main1.c} \
45 ] \
46 [list \
47 "Build tls-gd1.o tls-ld1.o" \
48 "" \
49 "-fPIC -Wa,-mrelax-relocations=yes" \
50 {tls-gd1.S tls-ld1.S} \
51 ] \
52 [list \
53 "Build libtls-1a.so" \
54 "-shared tmpdir/tls-def1.o" \
55 "" \
56 {dummy.s} \
57 {} \
58 "libtls-1a.so" \
59 ] \
60 [list \
61 "Build libtls-1b.so" \
62 "-shared tmpdir/tls-gd1.o tmpdir/tls-ld1.o" \
63 "" \
64 {dummy.s} \
65 {} \
66 "libtls-1b.so" \
67 ] \
68 ]
69
70 run_ld_link_exec_tests [list \
71 [list \
72 "TLS GD/LD -> LE transition without PLT (dynamic)" \
73 "tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \
74 tmpdir/tls-ld1.o" \
75 "" \
76 { dummy.s } \
77 "tls-1a" \
78 "pass.out" \
79 ] \
80 [list \
81 "TLS GD/LD -> LE transition without PLT (PIE)" \
82 "-pie tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \
83 tmpdir/tls-ld1.o" \
84 "" \
85 { dummy.s } \
86 "tls-1b" \
87 "pass.out" \
88 ] \
89 [list \
90 "TLS GD/LD -> LE transition without PLT (static)" \
91 "-static tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \
92 tmpdir/tls-ld1.o" \
93 "" \
94 { dummy.s } \
95 "tls-1c" \
96 "pass.out" \
97 ] \
98 [list \
99 "TLS GD/LD -> IE transition without PLT" \
100 "tmpdir/tls-main1.o tmpdir/tls-gd1.o tmpdir/tls-ld1.o \
101 tmpdir/libtls-1a.so -R tmpdir" \
102 "" \
103 { dummy.s } \
104 "tls-1d" \
105 "pass.out" \
106 ] \
107 [list \
108 "TLS without PLT (1)" \
109 "tmpdir/tls-main1.o \
110 tmpdir/libtls-1a.so tmpdir/libtls-1b.so -R tmpdir" \
111 "" \
112 { dummy.s } \
113 "tls-1e" \
114 "pass.out" \
115 ] \
116 [list \
117 "TLS without PLT (2)" \
118 "tmpdir/tls-main1.o tmpdir/tls-def1.o \
119 tmpdir/libtls-1b.so -R tmpdir" \
120 "" \
121 { dummy.s } \
122 "tls-1f" \
123 "pass.out" \
124 ] \
125 ]