1 # Copyright
(C
) 1988, 90, 91, 92, 95, 96, 1997, 2007
2 # Free Software Foundation
, Inc.
4 # This
program 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
3 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 GCC
; see the file COPYING3.
If not see
16 #
<http
://www.gnu.org
/licenses
/>.
18 # This file was written by Mike Stump
<mrs@cygnus.com
>
21 # mike_cleanup
-- remove
any files that are created by the testcase
23 proc mike_cleanup
{ src_code output_file assembly_file
} {
24 remote_file build
delete $output_file $assembly_file
28 # prebase
-- sets up a Mike Stump
(mrs@cygnus.com
) style G
++ test
31 global compiler_output
32 global not_compiler_output
33 global compiler_result
34 global not_compiler_result
41 set compiler_output
"^$"
42 set not_compiler_output
".*Internal compiler error.*"
43 set compiler_result
""
44 set not_compiler_result
""
45 set program_output
".*PASS.*"
49 set target_regexp
".*"
55 proc postbase
{ src_code run groups
args } {
59 global not_compiler_output
60 global compiler_output
61 global compiler_result
62 global not_compiler_result
73 if ![regexp $target_regexp $target_triplet
] {
74 unsupported $subdir
/$src_code
78 if { [llength $
args] > 0 } {
79 set comp_options
[lindex $
args 0]
84 set fail_message $subdir
/$src_code
85 set pass_message $subdir
/$src_code
87 if [info exists GROUP
] {
88 if {[lsearch $groups $GROUP
] == -1} {
93 if [string match $run yes
] {
97 set output_file
"$tmpdir/[file tail [file rootname $src_code]]"
98 set assembly_file
"$output_file"
99 append assembly_file
".S"
101 set compile_type
"none"
106 set compile_type
"assembly"
107 set output_file $assembly_file
111 set compile_type
"object"
112 append output_file
".o"
116 set compile_type
"executable"
117 append output_file
".exe"
121 set compile_type
"executable"
122 append output_file
".exe"
128 set compile_type
"none"
132 set src_file
"$srcdir/$subdir/$src_code"
135 if { $comp_options
!= "" } {
136 lappend options
"additional_flags=$comp_options"
139 if ![ishost
"*-dos-*"] {
140 lappend options
"libs=-lstdc++ -lg++"
142 lappend options
"libs=-lstdcxx -lgxx"
145 set comp_output
[g
++_target_compile $src_file $output_file $compile_type $options
]
149 #
Delete things like
"ld.so warning" messages.
150 set comp_output
[prune_warnings $comp_output
]
152 if [regexp
-- $not_compiler_output $comp_output
] {
153 if { $verbose
> 1 } {
154 send_user
"\nChecking:\n$not_compiler_output\nto make sure it does not match:\n$comp_output\nbut it does.\n\n"
156 send_log
"\nCompiler output:\n$comp_output\n\n"
159 # The framework doesn
't like to see any error remnants,
162 if [info exists errorInfo] {
166 mike_cleanup $src_code $output_file $assembly_file
170 # remove any leftover CRs.
171 regsub -all -- "\r" $comp_output "" comp_output
173 regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $comp_output "" comp_output
174 regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $comp_output "" comp_output
176 set unsupported_message [${tool}_check_unsupported_p $comp_output]
177 if { $unsupported_message != "" } {
178 unsupported "$subdir/$src_code: $unsupported_message"
179 mike_cleanup $src_code $output_file $assembly_file
183 if { $verbose > 1 } {
184 send_user "\nChecking:\n$compiler_output\nto see if it matches:\n$comp_output\n"
186 send_log "\nCompiler output:\n$comp_output\n\n"
188 if [regexp -- $compiler_output $comp_output] {
189 if { $verbose > 1 } {
190 send_user "Yes, it matches.\n\n"
193 if [file exists [file rootname [file tail $src_code]].s] {
194 set fd [open [file rootname [file tail $src_code]].s r]
197 if { $compiler_result != "" } {
198 verbose "Checking .s file for $compiler_result" 2
199 if [regexp -- $compiler_result $dot_s] {
200 verbose "Yes, it matches." 2
202 verbose "Nope, doesn't match.
" 2
207 if { $not_compiler_result
!= "" } {
208 verbose
"Checking .s file for not $not_compiler_result" 2
209 if ![regexp
-- $not_compiler_result $dot_s
] {
210 verbose
"Nope, not found (that's good)." 2
212 verbose
"Uh oh, it was found." 2
218 if [string match $run yes
] {
219 set result
[g
++_load $output_file
]
220 set status [lindex $result
0]
221 set output
[lindex $result
1]
223 if { $
status == -1 } {
224 mike_cleanup $src_code $output_file $assembly_file
227 if { $verbose
> 1 } {
228 send_user
"Checking:\n$program_output\nto see if it matches:\n$output\n\n"
230 if ![regexp
-- $program_output $output
] {
232 if { $verbose
> 1 } {
233 send_user
"Nope, does not match.\n\n"
236 if { $verbose
> 1 } {
237 send_user
"Yes, it matches.\n\n"
242 if { $verbose
> 1 } {
243 send_user
"Nope, does not match.\n\n"
247 if [string match $pass
"yes"] {
253 # The framework doesn
't like to see any error remnants,
256 if [info exists errorInfo] {
261 mike_cleanup $src_code $output_file $assembly_file