This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] dejagnu + libgloss, preliminary
- To: gcc-patches at gcc dot gnu dot org, gdr at codesourcery dot com
- Subject: [v3] dejagnu + libgloss, preliminary
- From: Benjamin Kosnik <bkoz at redhat dot com>
- Date: Thu, 10 May 2001 01:42:06 -0700
Some things remain to be done.
tests_flags.in setting LIBS is going to either have to deal with much
more, or be removed and replaced with something more robust. In
particular, libgloss (but only libgloss) needs -lsim, so that'll need
to be done in some extensible manner. I believe the powerpc-eabism
port needs more info still (and hey, let's put libsim.a in
Yet-Another-Oddly-Named-Directory-Called-RS600. Lucky for us, no small
minds there.)
Some kind of executable test solution will have to be done that
encompasses both sid and non-sid (ie normal simulators).
This, however, is a start.
-benjamin
tested x86/linux
2001-05-09 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/lib/libstdc++.exp: Use libgloss.exp. Call
libgloss_link_flags to find crt0.o for targets that use libgloss
instead of newlib.
Change LDFLAGS to LIBS.
Consistently name procedures libstdc++-XXX.
* testsuite/libstdc++.tests/tests.exp: Use new procedure names.
Index: testsuite/lib/libstdc++.exp
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/lib/libstdc++.exp,v
retrieving revision 1.8
diff -c -p -r1.8 libstdc++.exp
*** libstdc++.exp 2001/04/12 13:35:24 1.8
--- libstdc++.exp 2001/05/10 08:29:45
***************
*** 27,34 ****
## as follows:
## lib_env(CXX) The compiler used to run testcases.
## lib_env(CXXFLAGS) Special flags passed to the compiler.
## lib_env(INCLUDES) Includes options to pass to the compiler.
! ## lib_env(LDFLAGS) Additional library flags.
## lib_env(LIBTOOL) Path to the `libtool' script.
## lib_env(SRC_DIR) Where V3 master source lives.
## lib_env(BUILD_DIR) Where V3 is built.
--- 27,35 ----
## as follows:
## lib_env(CXX) The compiler used to run testcases.
## lib_env(CXXFLAGS) Special flags passed to the compiler.
+ ## lib_env(LIBGLOSSFLAGS) Flags for finding libgloss-using xcompilers.
## lib_env(INCLUDES) Includes options to pass to the compiler.
! ## lib_env(LIBS) Libraries to link, and dditional library flags.
## lib_env(LIBTOOL) Path to the `libtool' script.
## lib_env(SRC_DIR) Where V3 master source lives.
## lib_env(BUILD_DIR) Where V3 is built.
***************
*** 41,46 ****
--- 42,48 ----
load_lib dg.exp
+ load_lib libgloss.exp
## Initialization routine.
proc libstdc++-dg-init { args } {
*************** proc libstdc++-dg-init { args } {
*** 59,65 ****
# Set proper environment variables for the framework.
libstdc++-setup-flags ${src-dir} ${build-dir}
! # mkcheck.in used to output these information.
set output [remote_exec host $lib_env(CXX) -v]
# XXX don't try clever formatting hacks at the moment
# if { [lindex $output 0] == 0 } {
--- 61,67 ----
# Set proper environment variables for the framework.
libstdc++-setup-flags ${src-dir} ${build-dir}
! # mkcheck.in used to output this information.
set output [remote_exec host $lib_env(CXX) -v]
# XXX don't try clever formatting hacks at the moment
# if { [lindex $output 0] == 0 } {
*************** proc libstdc++-dg-init { args } {
*** 77,86 ****
##
## This is the heart of the framework. For the time being, it is
## pretty much baroque, but it will improve as time goes.
! proc libstdc++_load { prog } {
global lib_env
set opts $lib_env(testcase_options)
! set results [remote_load target $lib_env(LIBTOOL) "--mode=execute $prog"]
if { [lindex $results 0] == "pass" && [info exists opts(diff)] } {
# FIXME: We should first test for any mentioned @output@ file here
--- 79,89 ----
##
## This is the heart of the framework. For the time being, it is
## pretty much baroque, but it will improve as time goes.
! proc libstdc++-load { prog } {
global lib_env
+
set opts $lib_env(testcase_options)
! set results [remote_load target $prog]
if { [lindex $results 0] == "pass" && [info exists opts(diff)] } {
# FIXME: We should first test for any mentioned @output@ file here
*************** proc libstdc++_load { prog } {
*** 102,112 ****
}
## Nothing particular to do.
! proc libstdc++_exit { } {
}
## Output the version of the libs tested.
! proc libstdc++_version { } {
global lib_env
set version "undeterminated"
--- 105,115 ----
}
## Nothing particular to do.
! proc libstdc++-exit { } {
}
## Output the version of the libs tested.
! proc libstdc++-version { } {
global lib_env
set version "undeterminated"
*************** proc libstdc++_version { } {
*** 124,130 ****
## Main loop. Loop over TEST-DIRECTORIES and run each testcase
## found therein.
! proc libstdc++_runtest { testdirs } {
global runtests
global srcdir
global outdir
--- 127,133 ----
## Main loop. Loop over TEST-DIRECTORIES and run each testcase
## found therein.
! proc libstdc++-runtest { testdirs } {
global runtests
global srcdir
global outdir
*************** proc libstdc++_runtest { testdirs } {
*** 150,157 ****
}
# verbose "Testing [dg-trim-dirname $srcdir $testfile]"
! libstdc++_do_test $testfile static
! libstdc++_do_test $testfile shared
}
cd ${top-tests-dir}
}
--- 153,160 ----
}
# verbose "Testing [dg-trim-dirname $srcdir $testfile]"
! libstdc++-do-test $testfile static
! libstdc++-do-test $testfile shared
}
cd ${top-tests-dir}
}
*************** proc libstdc++-dg-test { testfile compil
*** 195,209 ****
"link" {
# If we're asked to run a testcase, then just do a `link'.
# Later, the framework will load the program image through
! # libstdc++_load callback.
if { $which_library == "static" } {
append output_file ".st-exe"
} else {
append output_file ".sh-exe"
}
append lt_args " --mode=link $lib_env(FLAGS) \
! $lib_env($which_library) $testfile \
! -o $output_file $lib_env(LDFLAGS)"
}
default {
perror "$compile_type: option not recognized"
--- 198,212 ----
"link" {
# If we're asked to run a testcase, then just do a `link'.
# Later, the framework will load the program image through
! # libstdc++-load callback.
if { $which_library == "static" } {
append output_file ".st-exe"
} else {
append output_file ".sh-exe"
}
append lt_args " --mode=link $lib_env(FLAGS) \
! $lib_env(LIBGLOSSFLAGS) $lib_env($which_library) \
! $testfile -o $output_file $lib_env(LIBS)"
}
default {
perror "$compile_type: option not recognized"
*************** proc libstdc++-setup-flags {src-dir buil
*** 235,242 ****
set lib_env(CXX) [lindex $flags 3]
set lib_env(CXXFLAGS) [lindex $flags 4]
set lib_env(INCLUDES) [lindex $flags 5]
! set lib_env(LDFLAGS) [lindex $flags 6]
!
# This is really really fragile. We should find a better away to
# tell the framework which flags to use for static/shared libraries.
set lib_env(static) "-static"
--- 238,246 ----
set lib_env(CXX) [lindex $flags 3]
set lib_env(CXXFLAGS) [lindex $flags 4]
set lib_env(INCLUDES) [lindex $flags 5]
! set lib_env(LIBS) [lindex $flags 6]
! set lib_env(LIBGLOSSFLAGS) [libgloss_link_flags]
!
# This is really really fragile. We should find a better away to
# tell the framework which flags to use for static/shared libraries.
set lib_env(static) "-static"
*************** proc maybe-make-directory {dir} {
*** 256,262 ****
}
}
! proc libstdc++_do_test { testfile lib } {
global which_library; set which_library $lib
## Is it planed to handle -keep-output throught @xxx@-option
dg-test -keep-output $testfile "" ""
--- 260,266 ----
}
}
! proc libstdc++-do-test { testfile lib } {
global which_library; set which_library $lib
## Is it planed to handle -keep-output throught @xxx@-option
dg-test -keep-output $testfile "" ""
*************** proc libstdc++-process-options { testfil
*** 268,274 ****
array set opts { diff {} output {} require {} }
set percent [file rootname [file tail $testfile]]
! set option-pattern "@.*@.*"
set results [grep $testfile ${option-pattern}]
if ![string match "" $results] {
--- 272,278 ----
array set opts { diff {} output {} require {} }
set percent [file rootname [file tail $testfile]]
! set option-pattern "@.*@0.*"
set results [grep $testfile ${option-pattern}]
if ![string match "" $results] {
*************** proc dg-test { args } {
*** 402,408 ****
perror "$name: $errmsg for \"$op\"\n"
}
# ??? The call to unresolved here is necessary to clear `errcnt'.
! # What we really need is a proc like perror that doesn't set errcnt.
# It should also set exit_status to 1.
unresolved "$name: $errmsg for \"$op\""
return
--- 406,412 ----
perror "$name: $errmsg for \"$op\"\n"
}
# ??? The call to unresolved here is necessary to clear `errcnt'.
! # What is needed is a proc like perror that doesn't set errcnt.
# It should also set exit_status to 1.
unresolved "$name: $errmsg for \"$op\""
return
*************** proc dg-test { args } {
*** 589,595 ****
# Note that if the program has special run-time requirements, running
# of the program can be delayed until here. Ditto for other situations.
# It would be a bit cumbersome though.
-
if ![string match ${dg-final-code} ""] {
regsub -all "\\\\(\[{}\])" ${dg-final-code} "\\1" dg-final-code
# Note that the use of `args' here makes this a varargs proc.
--- 593,598 ----
*************** proc dg-test { args } {
*** 599,605 ****
if [catch "dg-final-proc $prog" errmsg] {
perror "$name: error executing dg-final: $errmsg"
# ??? The call to unresolved here is necessary to clear `errcnt'.
! # What we really need is a proc like perror that doesn't set errcnt.
# It should also set exit_status to 1.
unresolved "$name: error executing dg-final: $errmsg"
}
--- 602,608 ----
if [catch "dg-final-proc $prog" errmsg] {
perror "$name: error executing dg-final: $errmsg"
# ??? The call to unresolved here is necessary to clear `errcnt'.
! # What is needed is a proc like perror that doesn't set errcnt.
# It should also set exit_status to 1.
unresolved "$name: error executing dg-final: $errmsg"
}
Index: testsuite/libstdc++.tests/tests.exp
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/libstdc++.tests/tests.exp,v
retrieving revision 1.4
diff -c -p -r1.4 tests.exp
*** tests.exp 2001/05/01 17:28:02 1.4
--- tests.exp 2001/05/10 08:29:45
*************** remote_exec host ${shell-ulimit-command}
*** 34,40 ****
remote_exec host ${shell-ulimit-command} "-v ${maximum-memory-usage}"
## Now, do the work directory by directory
! libstdc++_runtest [glob -nocomplain $srcdir/*]
dg-finish
--- 34,40 ----
remote_exec host ${shell-ulimit-command} "-v ${maximum-memory-usage}"
## Now, do the work directory by directory
! libstdc++-runtest [glob -nocomplain $srcdir/*]
dg-finish