1 # Expect script
for MIPS ELF linker tests
2 # Copyright
2002, 2003, 2004, 2005 Free Software Foundation
, Inc.
4 # This file is free software
; you can redistribute it and
/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation
; either version
2 of the License
, or
7 #
(at your option
) any later version.
9 # This
program is distributed in the hope that it will be useful
,
10 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License
for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this
program; if not
, write to the Free Software
16 # Foundation
, Inc.
, 51 Franklin Street
- Fifth Floor
, Boston
, MA
02110-1301, USA.
19 if {[istarget
"mips*-*-vxworks"]} {
21 {"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
22 "-mips2" {vxworks1-lib.s}
23 {{readelf
--relocs vxworks1
-lib.rd
} {objdump
-dr vxworks1
-lib.dd
}
24 {readelf
--symbols vxworks1
-lib.nd
}}
26 {"VxWorks executable test 1 (dynamic)" \
27 "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
29 {{readelf
--relocs vxworks1.rd
} {objdump
-dr vxworks1.dd
}}
31 {"VxWorks executable test 2 (dynamic)" \
32 "-Tvxworks1.ld -q --force-dynamic"
34 {{readelf
--segments vxworks2.sd
}}
36 {"VxWorks executable test 2 (static)"
39 {{readelf
--segments vxworks2
-static.sd
}}
42 run_ld_link_tests $mipsvxtests
43 run_dump_test
"vxworks1-static"
47 if {![istarget mips
*-*-*] ||
![is_elf_format
]} {
51 set has_newabi
[expr
[istarget
*-*-irix6
*] ||
[istarget mips64
*-*-linux
*]]
52 set linux_gnu
[expr
[istarget mips
*-*-linux
*]]
53 set embedded_elf
[expr
[istarget mips
*-*-elf
]]
56 # Check MIPS16 markings being passed through link.
57 run_dump_test
"mips16-1"
59 # MIPS branch offset final link checking.
60 run_dump_test
"branch-misc-1"
62 # Test multi
-got link. We only
do this
on GNU
/Linux because it requires
63 # the
"traditional" emulations.
65 run_dump_test
"multi-got-1"
66 run_dump_test
"multi-got-no-shared"
70 run_dump_test
"elf-rel-got-n32"
71 run_dump_test
"elf-rel-xgot-n32"
73 run_dump_test
"elf-rel-got-n64-linux"
74 run_dump_test
"elf-rel-xgot-n64-linux"
76 run_dump_test
"elf-rel-got-n64"
77 run_dump_test
"elf-rel-xgot-n64"
80 run_dump_test
"relax-jalr-n32"
81 run_dump_test
"relax-jalr-n32-shared"
82 run_dump_test
"relax-jalr-n64"
83 run_dump_test
"relax-jalr-n64-shared"
87 run_dump_test
"rel32-o32"
88 run_dump_test
"rel32-n32"
92 if { $embedded_elf
} {
93 run_dump_test
"region1"
97 # This could work
on other targets too
, but would need the appropriate
99 run_dump_test
"reloc-1-rel"
102 run_dump_test
"reloc-1-n32"
104 # Uses a linux
-specific
ld -m
switch
105 run_dump_test
"reloc-1-n64"
108 run_dump_test
"reloc-2"
109 run_dump_test
"reloc-merge-lo16"
110 if {$has_newabi
&& $linux_gnu
} {
111 run_dump_test
"eh-frame1-n32"
112 run_dump_test
"eh-frame1-n64"
113 run_dump_test
"eh-frame2-n32"
114 run_dump_test
"eh-frame2-n64"
117 run_dump_test
"eh-frame3"
118 run_dump_test
"eh-frame4"
121 run_dump_test
"jaloverflow"
122 run_dump_test
"jaloverflow-2"
124 run_dump_test
"jalbal"
127 run_dump_test
"mips16-hilo"
129 run_dump_test
"mips16-hilo-n32"
133 run_dump_test
"textrel-1"
137 run_dump_test
"emit-relocs-1"
140 #
For tests which may involve multiple files
, use run_ld_link_tests.
142 # List contains test
-items with
3 items followed by
2 lists
:
143 #
0:name 1:ld options
2:assembler options
144 #
3:filenames of assembler files
4: action and options.
5: name of output file
147 # objdump
: Apply objdump options
on result. Compare with regex
(last
arg).
148 # nm
: Apply nm options
on result. Compare with regex
(last
arg).
149 # readelf
: Apply readelf options
on result. Compare with regex
(last
arg).
152 {"Static executable with TLS" "-static -melf32btsmip -T mips-dyn.ld"
153 "-EB -march=mips1 -32 -KPIC" {tlsbin-o32.s}
154 {{objdump
{-dr
-m mips
:isa32r2
} tlsbin
-o32.d
} {objdump
-srj.got tlsbin
-o32.got
}}
156 {"Shared library with TLS" "-shared -melf32btsmip -T mips-lib.ld"
157 "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
158 {{objdump
{-dr
-m mips
:isa32r2
} tlslib
-o32.d
} {objdump
-Rsj.got tlslib
-o32.got
}}
160 {"Dynamic executable with TLS"
161 "-melf32btsmip -T mips-dyn.ld tmpdir/tlslib-o32.so"
162 "-EB -march=mips1 -32 -KPIC" {tlsdyn-o32.s}
163 {{objdump
{-dr
-m mips
:isa32r2
} tlsdyn
-o32.d
} {objdump
-Rsj.got tlsdyn
-o32.got
}}
165 {"Shared library with multiple GOTs and TLS"
166 "-shared -melf32btsmip -T mips-lib.ld"
167 "-EB -march=mips1 -32 -KPIC" {tls-multi-got-1-1.s tls-multi-got-1-2.s}
168 {{readelf
{-d
-r
} tls
-multi
-got
-1.r
}
169 {objdump
{-dr
-m mips
:isa32r2
} tls
-multi
-got
-1.d
}
170 {objdump
-Rsj.got tls
-multi
-got
-1.got
}}
172 {"Shared library with TLS and versioning"
173 "-shared -melf32btsmip -T mips-lib.ld --version-script tlslib.ver"
174 "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
175 {{objdump
{-dr
-m mips
:isa32r2
} tlslib
-o32.d
} {objdump
-Rsj.got tlslib
-o32
-ver.got
}}
177 {"Dynamic executable with TLS and versioning"
178 "-melf32btsmip -T mips-dyn.ld tmpdir/tlslib-o32-ver.so"
179 "-EB -march=mips1 -32 -KPIC" {tlsdyn-o32.s tlsdyn-o32-2.s}
180 {{objdump
{-dr
-m mips
:isa32r2
} tlsdyn
-o32
-1.d
} {objdump
-Rsj.got tlsdyn
-o32
-1.got
}}
181 "tls-dynamic-o32-ver"}
182 {"Dynamic executable with TLS and versioning (order 2)"
183 "-melf32btsmip -T mips-dyn.ld tmpdir/tlsdyn-o32.o tmpdir/tlslib-o32-ver.so tmpdir/tlsdyn-o32-2.o"
184 "-EB -march=mips1 -32 -KPIC" {}
185 {{objdump
{-dr
-m mips
:isa32r2
} tlsdyn
-o32
-2.d
} {objdump
-Rsj.got tlsdyn
-o32
-2.got
}}
186 "tls-dynamic-o32-ver-2"}
187 {"Dynamic executable with TLS and versioning (order 3)"
188 "-melf32btsmip -T mips-dyn.ld tmpdir/tlsdyn-o32-2.o tmpdir/tlslib-o32-ver.so tmpdir/tlsdyn-o32.o"
189 "-EB -march=mips1 -32 -KPIC" {}
190 {{objdump
{-dr
-m mips
:isa32r2
} tlsdyn
-o32
-3.d
} {objdump
-Rsj.got tlsdyn
-o32
-3.got
}}
191 "tls-dynamic-o32-ver-3"}
192 {"Shared library with TLS and hidden symbols"
193 "-shared -melf32btsmip -T mips-lib.ld --version-script tlslib-hidden.ver"
194 "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
195 {{objdump
{-dr
-m mips
:isa32r2
} tlslib
-o32.d
} {objdump
-Rsj.got tlslib
-o32
-hidden.got
}}
196 "tlslib-o32-hidden.so"}
197 {"Shared library with TLS and hidden symbols (2)"
198 "-shared -melf32btsmip -T mips-lib.ld"
199 "-EB -march=mips1 -32 -KPIC" {tls-hidden2a.s tls-hidden2b.s}
200 {{objdump
-drj.
text tls
-hidden2.d
} {objdump
-sj.got tls
-hidden2
-got.d
}}
202 {"Shared library with TLS and hidden symbols (3)"
203 "-shared -melf32btsmip -T tls-hidden3.ld"
204 "-EB -march=mips2 -32 -KPIC" {tls-hidden3a.s tls-hidden3b.s}
205 {{objdump
-dj.
text tls
-hidden3.d
} {objdump
-sj.got tls
-hidden3.got
}
206 {readelf
--relocs tls
-hidden3.r
}}
208 {"Shared library with TLS and hidden symbols (4)"
209 "-shared -melf32btsmip -T tls-hidden3.ld"
210 "-EB -march=mips2 -32 -KPIC" {tls-hidden4a.s tls-hidden4b.s}
211 {{objdump
-sj.got tls
-hidden4.got
} {readelf
--relocs tls
-hidden4.r
}}
215 if {[istarget mips
*-*-linux
*]} {
216 run_ld_link_tests $mips_tls_tests