From b3f2a0325df98f18f7e3ae9e0ec3c1a6bf5e362d Mon Sep 17 00:00:00 2001 From: Phil Edwards Date: Fri, 1 Aug 2003 00:49:14 +0000 Subject: [PATCH] libstdc++-v3-dg.exp: Rename... 2003-07-31 Phil Edwards * testsuite/lib/libstdc++-v3-dg.exp: Rename... * testsuite/lib/libstdc++-v3.exp: ...to this. * testsuite/libstdc++-v3.dg/dg.exp: No special case needed now. From-SVN: r70033 --- libstdc++-v3/ChangeLog | 6 + .../testsuite/lib/libstdc++-v3-dg.exp | 240 ----------------- libstdc++-v3/testsuite/lib/libstdc++-v3.exp | 243 +++++++++++++++++- libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp | 5 +- 4 files changed, 245 insertions(+), 249 deletions(-) delete mode 100644 libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1c8b16c5431..fd038fb810f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2003-07-31 Phil Edwards + + * testsuite/lib/libstdc++-v3-dg.exp: Rename... + * testsuite/lib/libstdc++-v3.exp: ...to this. + * testsuite/libstdc++-v3.dg/dg.exp: No special case needed now. + 2003-07-31 Doug Gregor Add user specialization tests. diff --git a/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp b/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp deleted file mode 100644 index 8c296d6ff5e..00000000000 --- a/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Define libstdc++-v3 callbacks for dg.exp. - -load_lib dg.exp -load_lib libgloss.exp -load_lib prune.exp - -# Called once, by libstdc++-v3-init below. "Static" to this file. -proc libstdc++-v3-copy-files {srcfiles dstdir} { - foreach f $srcfiles { - if { [catch { set symlink [file readlink $f] } x] } then { - file copy -force $f $dstdir - } else { - if { [regexp "^/" "$symlink"] } then { - file copy -force $symlink $dstdir - } else { - set dirname [file dirname $f] - file copy -force $dirname/$symlink $dstdir - } - } - } -} - -# Called once, from libstdc++-v3.dg/dg.exp. -proc libstdc++-v3-init { args } { - global srcdir - global outdir - global blddir - global cxx - global includes - global cxxflags - global objdir - global gluefile wrap_flags - global ld_library_path - global tool_root_dir - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] - - # By default, we assume we want to run program images. - global dg-do-what-default - set dg-do-what-default run - - # Copy any required data files. - libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.tst"] $outdir - libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.txt"] $outdir - - # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found. - # locate libgcc.a so we don't need to account for different values of - # SHLIB_EXT on different platforms - set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] - if {$gccdir != ""} { - set gccdir [file dirname $gccdir] - } - - set ld_library_path "." - append ld_library_path ":${gccdir}" - set compiler ${gccdir}/g++ - if { [is_remote host] == 0 && [which $compiler] != 0 } { - foreach i "[exec $compiler --print-multi-lib]" { - set mldir "" - regexp -- "\[a-z0-9=/\.-\]*;" $i mldir - set mldir [string trimright $mldir "\;@"] - if { "$mldir" == "." } { - continue - } - if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] == 1 } { - append ld_library_path ":${gccdir}/${mldir}" - } - } - } - append ld_library_path ":${blddir}/src/.libs" - - # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but - # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH - # (for the 64-bit ABI). The right way to do this would be to modify - # unix.exp -- but that's not an option since it's part of DejaGNU - # proper, so we do it here. We really only need to do - # this on IRIX, but it shouldn't hurt to do it anywhere else. - setenv LD_LIBRARY_PATH $ld_library_path - setenv SHLIB_PATH $ld_library_path - setenv LD_LIBRARYN32_PATH $ld_library_path - setenv LD_LIBRARY64_PATH $ld_library_path - setenv LD_RUN_PATH $ld_library_path - verbose -log "Set LD_*_PATHs to ${ld_library_path}" - - # Do a bunch of handstands and backflips for cross compiling and - # finding simulators... - if [is_remote host] { - set header [remote_download host ${blddir}/testsuite/testsuite_hooks.h] - if { $header == "" } { - verbose -log "Unable to download ${blddir}/testsuite/testsuite_hooks.h to host." - return "untested" - } - set cxx [transform "g++"] - set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT" - set includes "-I./" - } else { - # If we find a testsuite_flags file, we're testing in the build dir. - set flags_file "${blddir}/scripts/testsuite_flags" - if { [file exists $flags_file] } { - set cxx [exec sh $flags_file --build-cxx] - set cxxflags [exec sh $flags_file --cxxflags] - set includes [exec sh $flags_file --build-includes] - } else { - set cxx [transform "g++"] - set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT" - set includes "-I${srcdir}" - } - } - - if { [target_info needs_status_wrapper]!=""} { - file delete ${objdir}/testglue.o; - set gluefile ${objdir}/testglue.o; - set result [build_wrapper $gluefile]; - if { $result != "" } { - set gluefile [lindex $result 0]; - set wrap_flags [lindex $result 1]; - } else { - unset gluefile - } - } -} - -# Callback from system dg-test. -proc libstdc++-v3-dg-test { prog do_what extra_tool_flags } { - # Set up the compiler flags, based on what we're going to do. - - switch $do_what { - "preprocess" { - set compile_type "preprocess" - set output_file "[file rootname [file tail $prog]].i" - } - "compile" { - set compile_type "assembly" - set output_file "[file rootname [file tail $prog]].s" - } - "assemble" { - set compile_type "object" - set output_file "[file rootname [file tail $prog]].o" - } - "link" { - set compile_type "executable" - set output_file "./[file rootname [file tail $prog]].exe" - } - "run" { - set compile_type "executable" - # FIXME: "./" is to cope with "." not being in $PATH. - # Should this be handled elsewhere? - # YES. - set output_file "./[file rootname [file tail $prog]].exe" - # This is the only place where we care if an executable was - # created or not. If it was, dg.exp will try to run it. - remote_file build delete $output_file; - } - default { - perror "$do_what: not a valid dg-do keyword" - return "" - } - } - set options "" - if { $extra_tool_flags != "" } { - lappend options "additional_flags=$extra_tool_flags" - } - - set comp_output [libstdc++-v3_target_compile "$prog" "$output_file" "$compile_type" $options]; - set comp_output [ prune_g++_output $comp_output ]; - - return [list $comp_output $output_file] -} - -# Called from libstdc++-v3-dg-test above. Calls back into system's -# target_compile to actually do the work. -proc libstdc++-v3_target_compile { source dest type options } { - global gluefile - global wrap_flags - global cxx - global cxxflags - global includes - global blddir - - if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { - lappend options "libs=${gluefile}" - lappend options "ldflags=${wrap_flags}" - } - - set cxx_final $cxx - set cxxlibglossflags [libgloss_link_flags] - set cxx_final [concat $cxx_final $cxxlibglossflags] - set cxx_final [concat $cxx_final $cxxflags] - set cxx_final [concat $cxx_final $includes] - - lappend options "compiler=$cxx_final" - - # Picks up the freshly-built testsuite library corresponding to the - # multilib under test. - lappend options "ldflags=-L${blddir}/testsuite" - lappend options "libs=-lv3test" - - return [target_compile $source $dest $type $options] -} - - -# Called once, from libstdc++-v3.dg/dg.exp. -proc v3-list-tests { filename } { - global srcdir - global outdir - - set tests_file "${outdir}/${filename}" - set sfiles "" - - # If there is a testsuite_file, use it. - if { [file exists $tests_file] } { - set f [open $tests_file] - while { ! [eof $f] } { - set t [gets $f] - if { [string length "$t"] != 0 } { - lappend sfiles ${srcdir}/${t} - } - } - close $f - } else { - verbose "cannot open $tests_file" - } - return $sfiles -} diff --git a/libstdc++-v3/testsuite/lib/libstdc++-v3.exp b/libstdc++-v3/testsuite/lib/libstdc++-v3.exp index bc3467dd9e9..8c296d6ff5e 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++-v3.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++-v3.exp @@ -1,7 +1,240 @@ +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -# This is the "tool init file" for libstdc++-v3. There's nothing here. -# It's simply a placeholder for two reasons. First, to show where we would -# put things, in case we ever want to take advantage of the tool init file. -# Second, to make dejagnu shut up about "WARNING could not find tool init -# file," which is harmless but tends to scare/confuse people. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Define libstdc++-v3 callbacks for dg.exp. + +load_lib dg.exp +load_lib libgloss.exp +load_lib prune.exp + +# Called once, by libstdc++-v3-init below. "Static" to this file. +proc libstdc++-v3-copy-files {srcfiles dstdir} { + foreach f $srcfiles { + if { [catch { set symlink [file readlink $f] } x] } then { + file copy -force $f $dstdir + } else { + if { [regexp "^/" "$symlink"] } then { + file copy -force $symlink $dstdir + } else { + set dirname [file dirname $f] + file copy -force $dirname/$symlink $dstdir + } + } + } +} + +# Called once, from libstdc++-v3.dg/dg.exp. +proc libstdc++-v3-init { args } { + global srcdir + global outdir + global blddir + global cxx + global includes + global cxxflags + global objdir + global gluefile wrap_flags + global ld_library_path + global tool_root_dir + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + + # By default, we assume we want to run program images. + global dg-do-what-default + set dg-do-what-default run + + # Copy any required data files. + libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.tst"] $outdir + libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.txt"] $outdir + + # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found. + # locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms + set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + } + + set ld_library_path "." + append ld_library_path ":${gccdir}" + set compiler ${gccdir}/g++ + if { [is_remote host] == 0 && [which $compiler] != 0 } { + foreach i "[exec $compiler --print-multi-lib]" { + set mldir "" + regexp -- "\[a-z0-9=/\.-\]*;" $i mldir + set mldir [string trimright $mldir "\;@"] + if { "$mldir" == "." } { + continue + } + if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] == 1 } { + append ld_library_path ":${gccdir}/${mldir}" + } + } + } + append ld_library_path ":${blddir}/src/.libs" + + # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but + # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH + # (for the 64-bit ABI). The right way to do this would be to modify + # unix.exp -- but that's not an option since it's part of DejaGNU + # proper, so we do it here. We really only need to do + # this on IRIX, but it shouldn't hurt to do it anywhere else. + setenv LD_LIBRARY_PATH $ld_library_path + setenv SHLIB_PATH $ld_library_path + setenv LD_LIBRARYN32_PATH $ld_library_path + setenv LD_LIBRARY64_PATH $ld_library_path + setenv LD_RUN_PATH $ld_library_path + verbose -log "Set LD_*_PATHs to ${ld_library_path}" + + # Do a bunch of handstands and backflips for cross compiling and + # finding simulators... + if [is_remote host] { + set header [remote_download host ${blddir}/testsuite/testsuite_hooks.h] + if { $header == "" } { + verbose -log "Unable to download ${blddir}/testsuite/testsuite_hooks.h to host." + return "untested" + } + set cxx [transform "g++"] + set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT" + set includes "-I./" + } else { + # If we find a testsuite_flags file, we're testing in the build dir. + set flags_file "${blddir}/scripts/testsuite_flags" + if { [file exists $flags_file] } { + set cxx [exec sh $flags_file --build-cxx] + set cxxflags [exec sh $flags_file --cxxflags] + set includes [exec sh $flags_file --build-includes] + } else { + set cxx [transform "g++"] + set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT" + set includes "-I${srcdir}" + } + } + + if { [target_info needs_status_wrapper]!=""} { + file delete ${objdir}/testglue.o; + set gluefile ${objdir}/testglue.o; + set result [build_wrapper $gluefile]; + if { $result != "" } { + set gluefile [lindex $result 0]; + set wrap_flags [lindex $result 1]; + } else { + unset gluefile + } + } +} + +# Callback from system dg-test. +proc libstdc++-v3-dg-test { prog do_what extra_tool_flags } { + # Set up the compiler flags, based on what we're going to do. + + switch $do_what { + "preprocess" { + set compile_type "preprocess" + set output_file "[file rootname [file tail $prog]].i" + } + "compile" { + set compile_type "assembly" + set output_file "[file rootname [file tail $prog]].s" + } + "assemble" { + set compile_type "object" + set output_file "[file rootname [file tail $prog]].o" + } + "link" { + set compile_type "executable" + set output_file "./[file rootname [file tail $prog]].exe" + } + "run" { + set compile_type "executable" + # FIXME: "./" is to cope with "." not being in $PATH. + # Should this be handled elsewhere? + # YES. + set output_file "./[file rootname [file tail $prog]].exe" + # This is the only place where we care if an executable was + # created or not. If it was, dg.exp will try to run it. + remote_file build delete $output_file; + } + default { + perror "$do_what: not a valid dg-do keyword" + return "" + } + } + set options "" + if { $extra_tool_flags != "" } { + lappend options "additional_flags=$extra_tool_flags" + } + + set comp_output [libstdc++-v3_target_compile "$prog" "$output_file" "$compile_type" $options]; + set comp_output [ prune_g++_output $comp_output ]; + + return [list $comp_output $output_file] +} + +# Called from libstdc++-v3-dg-test above. Calls back into system's +# target_compile to actually do the work. +proc libstdc++-v3_target_compile { source dest type options } { + global gluefile + global wrap_flags + global cxx + global cxxflags + global includes + global blddir + + if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { + lappend options "libs=${gluefile}" + lappend options "ldflags=${wrap_flags}" + } + + set cxx_final $cxx + set cxxlibglossflags [libgloss_link_flags] + set cxx_final [concat $cxx_final $cxxlibglossflags] + set cxx_final [concat $cxx_final $cxxflags] + set cxx_final [concat $cxx_final $includes] + + lappend options "compiler=$cxx_final" + + # Picks up the freshly-built testsuite library corresponding to the + # multilib under test. + lappend options "ldflags=-L${blddir}/testsuite" + lappend options "libs=-lv3test" + + return [target_compile $source $dest $type $options] +} + + +# Called once, from libstdc++-v3.dg/dg.exp. +proc v3-list-tests { filename } { + global srcdir + global outdir + + set tests_file "${outdir}/${filename}" + set sfiles "" + + # If there is a testsuite_file, use it. + if { [file exists $tests_file] } { + set f [open $tests_file] + while { ! [eof $f] } { + set t [gets $f] + if { [string length "$t"] != 0 } { + lappend sfiles ${srcdir}/${t} + } + } + close $f + } else { + verbose "cannot open $tests_file" + } + return $sfiles +} diff --git a/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp b/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp index aa04dd60398..03b7f8b5e1a 100644 --- a/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp +++ b/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp @@ -16,16 +16,13 @@ # libstdc++-v3 testsuite that uses the 'dg.exp' driver. -# Load support procs. -load_lib libstdc++-v3-dg.exp - # If a testcase doesn't have special options, use these. global DEFAULT_CXXFLAGS if ![info exists DEFAULT_CXXFLAGS] then { set DEFAULT_CXXFLAGS "-D_GLIBCXX_ASSERT" } -# Initialize 'dg' last or dejagnu exits with an error... +# Initialization. dg-init libstdc++-v3-init -- 2.30.2