Remove sh-symbianelf support
[deliverable/binutils-gdb.git] / ld / testsuite / ld-sh / sh64 / relfail.exp
CommitLineData
1b19eb81 1# Expect script for ld-sh tests
219d1afa 2# Copyright (C) 2001-2018 Free Software Foundation, Inc.
1b19eb81 3#
f96b4a7b
NC
4# This file is part of the GNU Binutils.
5#
6# This program is free software; you can redistribute it and/or modify
1b19eb81 7# it under the terms of the GNU General Public License as published by
f96b4a7b 8# the Free Software Foundation; either version 3 of the License, or
1b19eb81 9# (at your option) any later version.
f96b4a7b 10#
1b19eb81
AO
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.
f96b4a7b 15#
1b19eb81
AO
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
f96b4a7b
NC
18# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19# MA 02110-1301, USA.
1b19eb81
AO
20#
21
22# Test SH reloc failures - that is, cases that ld must not allow.
23
24if ![istarget sh64-*-*] {
25 return
26}
27
24d1feef
SC
28if [istarget sh64-*-linux*] {
29 set emul32 "shlelf32_linux"
30 set oformat32 "elf32-sh64-linux"
31 set startsym "_start"
32 set doabi64 0
f19ae42f
KK
33} elseif { [istarget sh64*-*-netbsd*] || [istarget sh5*-*-netbsd*] } then {
34 set emul32 "shelf32_nbsd"
35 set oformat32 "elf32-sh64-nbsd"
36 set startsym "__start"
37 set doabi64 1
38 set emul64 "shelf64_nbsd"
39 set oformat64 "elf64-sh64-nbsd"
24d1feef
SC
40} else {
41 set emul32 "shelf32"
42 set oformat32 "elf32-sh64"
43 set startsym "start"
44 set doabi64 1
45 set emul64 "shelf64"
46 set oformat64 "elf64-sh64"
47}
48
1b19eb81
AO
49# opcode, asflags, ldflags, expected or "" for fail
50# opcode blank means rebuild relfail.o and set default as/ld options
51
24d1feef 52set sh64abi32relfailtests {
1b19eb81 53
24d1feef 54 { "" "-isa=shcompact -abi=32" "-m $emul32 -Ttext 0x1000 --oformat $oformat32" "" }
1b19eb81
AO
55 { "mov.l lab,r0;.align 3;lab:nop" "" "" "mov.l 1008" }
56 { "mov.l to0,r0" "" "" "mov.l 1010" }
57 { "mov.l to1,r0" "" "" "" }
58 { "mov.l to2,r0" "" "" "" }
59 { "mov.l to3,r0" "" "" "" }
60 { "mov.l to4,r0" "" "" "mov.l 1014" }
61
24d1feef
SC
62 { "" "-isa=shmedia -abi=32 -no-expand" "-m $emul32 -Ttext 0x1000 --oformat $oformat32" "" }
63 { "pta lab,tr0;.align 3;lab:nop" "" "" "pta.*1008" }
64
65 { "ld.q r0,datalabel to0 - 0x1000,r0" "" "" "ld.q.*,16," }
66 { "ld.q r0,datalabel to1 - 0x1000,r0" "" "" "" }
67 { "ld.q r0,datalabel to2 - 0x1000,r0" "" "" "" }
68 { "ld.q r0,datalabel to3 - 0x1000,r0" "" "" "" }
69 { "ld.q r0,datalabel to4 - 0x1000,r0" "" "" "" }
70
71 { "ld.l r0,datalabel to0 - 0x1000,r0" "" "" "ld.l.*,16," }
72 { "ld.l r0,datalabel to1 - 0x1000,r0" "" "" "" }
73 { "ld.l r0,datalabel to2 - 0x1000,r0" "" "" "" }
74 { "ld.l r0,datalabel to3 - 0x1000,r0" "" "" "" }
75 { "ld.l r0,datalabel to4 - 0x1000,r0" "" "" "ld.l.*,20," }
76
77 { "ld.w r0,datalabel to0 - 0x1000,r0" "" "" "ld.w.*,16," }
78 { "ld.w r0,datalabel to1 - 0x1000,r0" "" "" "" }
79 { "ld.w r0,datalabel to2 - 0x1000,r0" "" "" "ld.w.*,18," }
80 { "ld.w r0,datalabel to3 - 0x1000,r0" "" "" "" }
81 { "ld.w r0,datalabel to4 - 0x1000,r0" "" "" "ld.w.*,20," }
82
83}
84
85set sh64abi64relfailtests {
86
87 { "" "-isa=shmedia -abi=64 -no-expand" "-m $emul64 -Ttext 0x1000 --oformat $oformat64" "" }
1b19eb81
AO
88 { "pta lab,tr0;.align 3;lab:nop" "" "" "pta.*1008" }
89 { "pta datalabel to0,tr0" "" "" "pta.*1010" }
90 { "pta datalabel to1,tr0" "" "" "pta.*1011" }
91 { "pta datalabel to2,tr0" "" "" "" }
92 { "pta datalabel to3,tr0" "" "" "" }
93 { "pta datalabel to4,tr0" "" "" "pta.*1014" }
94
95 { "ld.q r0,datalabel to0 - 0x1000,r0" "" "" "ld.q.*,16," }
96 { "ld.q r0,datalabel to1 - 0x1000,r0" "" "" "" }
97 { "ld.q r0,datalabel to2 - 0x1000,r0" "" "" "" }
98 { "ld.q r0,datalabel to3 - 0x1000,r0" "" "" "" }
99 { "ld.q r0,datalabel to4 - 0x1000,r0" "" "" "" }
100
101 { "ld.l r0,datalabel to0 - 0x1000,r0" "" "" "ld.l.*,16," }
102 { "ld.l r0,datalabel to1 - 0x1000,r0" "" "" "" }
103 { "ld.l r0,datalabel to2 - 0x1000,r0" "" "" "" }
104 { "ld.l r0,datalabel to3 - 0x1000,r0" "" "" "" }
105 { "ld.l r0,datalabel to4 - 0x1000,r0" "" "" "ld.l.*,20," }
106
107 { "ld.w r0,datalabel to0 - 0x1000,r0" "" "" "ld.w.*,16," }
108 { "ld.w r0,datalabel to1 - 0x1000,r0" "" "" "" }
109 { "ld.w r0,datalabel to2 - 0x1000,r0" "" "" "ld.w.*,18," }
110 { "ld.w r0,datalabel to3 - 0x1000,r0" "" "" "" }
111 { "ld.w r0,datalabel to4 - 0x1000,r0" "" "" "ld.w.*,20," }
112
113}
114
115proc run_sh64relfailtests {sh64relfailtests} {
116 global ld
117 global as
118 global nm
119 global objdump
120 global readelf
121 global srcdir
122 global subdir
24d1feef
SC
123 global emul32
124 global emul64
125 global oformat32
126 global oformat64
127 global startsym
1b19eb81
AO
128
129 set testindex 0
130 set is_unresolved 0
24d1feef 131
1b19eb81
AO
132 foreach testentry $sh64relfailtests {
133 set opcode [lindex $testentry 0]
134 set as_options [lindex $testentry 1]
24d1feef 135 set ld_options [subst [lindex $testentry 2]]
1b19eb81
AO
136 set expect_fail [lindex $testentry 3]
137
138 set testname "SH64 relfail $opcode $as_options $ld_options"
139
140 set objfiles {}
141
142 incr testindex
143
144 if {$opcode == ""} {
145 set def_as_options $as_options
146 set def_ld_options $ld_options
147 set is_unresolved 0
148 set baseobj "tmpdir/relfail-$testindex.o"
149 if ![ld_assemble $as "$as_options $srcdir/$subdir/relfail.s" $baseobj] {
150 set is_unresolved 1
151 }
152 continue
153 }
154
155 if {$as_options == ""} {
b24f926d 156 set as_options $def_as_options
1b19eb81
AO
157 }
158 if {$ld_options == ""} {
b24f926d 159 set ld_options $def_ld_options
1b19eb81
AO
160 }
161
162 if { $is_unresolved } {
163 unresolved $testname
164 continue
165 }
166
167 set asm [open "tmpdir/relfail-$testindex.s" "w"]
168 puts $asm " .text"
24d1feef
SC
169 puts $asm " .global $startsym"
170 puts $asm "$startsym:"
b24f926d 171 puts $asm " $opcode"
1b19eb81
AO
172 close $asm
173
174 if ![ld_assemble $as "$as_options tmpdir/relfail-$testindex.s" "tmpdir/relfail-$testindex.o"] {
175 unresolved $testname
176 continue
177 }
178
179 set binfile "tmpdir/relfail-$testindex.x"
180
181 file delete $binfile
182 set objects "tmpdir/relfail-$testindex.o $baseobj"
d9816402 183 set result [ld_link $ld $binfile "--no-warn-mismatch $ld_options $objects"]
1b19eb81
AO
184
185 set exists [file exists $binfile]
186 if {$exists && $expect_fail == ""} {
187 verbose "$testname: file $binfile exists when it shouldn't" 1
188 catch "exec $objdump -d $binfile" objdump_output
189 verbose $objdump_output 1
190 fail "$testname (file exists)"
191 continue
192 }
193 if {!$exists && $expect_fail != ""} {
194 verbose "$testname: file $binfile doesn't exist when it should" 1
195 fail "$testname (file missing)"
196 continue
197 }
198
199 if {$exists} {
200 catch "exec $objdump -d $binfile" objdump_output
201 regsub -all {[ ][ ]*} $objdump_output " " objdump_short
202 if ![regexp $expect_fail $objdump_short junk] {
203 verbose $objdump_output 1
204 fail "$testname (incorrect reloc)"
205 continue
206 }
207 }
208
209 file delete "tmpdir/relfail-$testindex.s"
210 file delete "tmpdir/relfail-$testindex.o"
211 file delete $binfile
212 pass $testname
213 }
214}
215
24d1feef
SC
216run_sh64relfailtests $sh64abi32relfailtests
217if {$doabi64} {
218 run_sh64relfailtests $sh64abi64relfailtests
219}
This page took 0.704916 seconds and 4 git commands to generate.