Switch the license of all files explicitly copyright the FSF
[deliverable/binutils-gdb.git] / sim / testsuite / sim / cris / c / c.exp
CommitLineData
6aba47ca 1# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
5e1f6430
HPN
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
4744ac1b 5# the Free Software Foundation; either version 3 of the License, or
5e1f6430
HPN
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
4744ac1b 14# along with this program. If not, see <http://www.gnu.org/licenses/>.
5e1f6430
HPN
15
16# Miscellaneous CRIS simulator testcases testing syscall sequences.
17
18if ![istarget cris*-*-*] {
19 return
20}
21
22set CFLAGS_FOR_TARGET "-O2"
23if [istarget cris-*-*] {
24 set mach "crisv10"
25} {
26 set mach "crisv32"
27}
28
29# Using target_compile, since it is less noisy,
30if { [target_compile $srcdir/$subdir/hello.c compilercheck.x \
31 "executable" "" ] == "" } {
32 set has_cc 1
33} {
34 verbose -log "Can't execute C compiler"
35 set has_cc 0
36}
37
38# Like istarget, except take a list of targets as a string.
39proc anytarget { targets } {
40 set targetlist [split $targets]
41 set argc [llength $targetlist]
42 for { set i 0 } { $i < $argc } { incr i } {
43 if [istarget [lindex $targetlist $i]] {
44 return 1
45 }
46 }
47 return 0
48}
49
50foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
51 if ![runtest_file_p $runtests $src] {
52 continue
53 }
54 set testname "[file tail $src]"
55
56 set opt_array [slurp_options $src]
57 if { $opt_array == -1 } {
58 unresolved $testname
59 return
60 }
61
62 # And again, to simplify specifying tests.
63 if ![runtest_file_p $runtests $src] {
64 continue
65 }
66
67 # Note absence of CC in results, but don't make a big fuss over it.
68 if { $has_cc == 0 } {
69 untested $testname
70 continue
71 }
72
73 # Clear default options
74 set opts(cc) ""
75 set opts(sim) ""
76 set opts(output) ""
77 set opts(progoptions) ""
78 set opts(timeout) ""
79 set opts(mach) ""
80 set opts(xerror) "no"
81 set opts(dest) "$testname.x"
82 set opts(simenv) ""
83 set opts(kfail) ""
84 set opts(xfail) ""
85 set opts(target) ""
86 set opts(notarget) ""
87
88 # Clear any machine specific options specified in a previous test case
89 if [info exists opts(sim,$mach)] {
90 unset opts(sim,$mach)
91 }
92
93 foreach i $opt_array {
94 set opt_name [lindex $i 0]
95 set opt_machs [lindex $i 1]
96 set opt_val [lindex $i 2]
97 if ![info exists opts($opt_name)] {
98 perror "unknown option $opt_name in file $src"
99 unresolved $testname
100 return
101 }
102
103 # Replace specific substitutions:
104 # @exedir@ is where the test-program is located.
105 regsub -all "@exedir@" $opt_val "[pwd]" opt_val
106 # @srcdir@ is where the source of the test-program is located.
107 regsub -all "@srcdir@" $opt_val "$srcdir/$subdir" opt_val
108
109 # Multiple of these options concatenate, they don't override.
110 if { $opt_name == "output" || $opt_name == "progoptions" } {
111 set opt_val "$opts($opt_name)$opt_val"
112 }
113
114 # Similar with "xfail", "kfail", "target" and "notarget", but
115 # arguments are space-separated.
116 if { $opt_name == "xfail" || $opt_name == "kfail" \
117 || $opt_name == "target" || $opt_name == "notarget" } {
118 if { $opts($opt_name) != "" } {
119 set opt_val "$opts($opt_name) $opt_val"
120 }
121 }
122
123 foreach m $opt_machs {
124 set opts($opt_name,$m) $opt_val
125 }
126 if { "$opt_machs" == "" } {
127 set opts($opt_name) $opt_val
128 }
129 }
130
131 if { $opts(output) == "" } {
132 if { "$opts(xerror)" == "no" } {
133 set opts(output) "pass\n"
134 } else {
135 set opts(output) "fail\n"
136 }
137 }
138
139 if { $opts(target) != "" && ![anytarget $opts(target)] } {
140 continue
141 }
142
143 if { $opts(notarget) != "" && [anytarget $opts(notarget)] } {
144 continue
145 }
146
147 # If no machine specific options, default to the general version.
148 if ![info exists opts(sim,$mach)] {
149 set opts(sim,$mach) $opts(sim)
150 }
151
152 # Change \n sequences to newline chars.
153 regsub -all "\\\\n" $opts(output) "\n" opts(output)
154
155 verbose -log "Compiling $src with $opts(cc)"
156
157 set dest "$opts(dest)"
158 if { [sim_compile $src $dest "executable" "$opts(cc)" ] != "" } {
159 unresolved $testname
160 continue
161 }
162
163 verbose -log "Simulating $src with $opts(sim,$mach)"
164
165 # Time to setup xfailures and kfailures.
166 if { "$opts(xfail)" != "" } {
167 verbose -log "xfail: $opts(xfail)"
168 # Using eval to make $opts(xfail) appear as individual
169 # arguments.
170 eval setup_xfail $opts(xfail)
171 }
172 if { "$opts(kfail)" != "" } {
173 verbose -log "kfail: $opts(kfail)"
174 eval setup_kfail $opts(kfail)
175 }
176
177 set result [sim_run $dest "$opts(sim,$mach)" "$opts(progoptions)" \
178 "" "$opts(simenv)"]
179 set status [lindex $result 0]
180 set output [lindex $result 1]
181
182 if { "$status" == "pass" } {
183 if { "$opts(xerror)" == "no" } {
184 if [string match $opts(output) $output] {
185 pass "$mach $testname"
186 } else {
187 verbose -log "output: $output" 3
188 verbose -log "pattern: $opts(output)" 3
189 fail "$mach $testname (execution)"
190 }
191 } else {
192 verbose -log "`pass' return code when expecting failure" 3
193 fail "$mach $testname (execution)"
194 }
195 } elseif { "$status" == "fail" } {
196 if { "$opts(xerror)" == "no" } {
197 fail "$mach $testname (execution)"
198 } else {
199 if [string match $opts(output) $output] {
200 pass "$mach $testname"
201 } else {
202 verbose -log "output: $output" 3
203 verbose -log "pattern: $opts(output)" 3
204 fail "$mach $testname (execution)"
205 }
206 }
207 } else {
208 $status "$mach $testname"
209 }
210}
This page took 0.106995 seconds and 4 git commands to generate.