blob: 22bd3b9c8ffa06308ed1f327bf9486d3a54c95d9 [file] [log] [blame]
# Copyright (C) 1997 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.
# Please email any bugs, comments, and/or additions to this file to:
# bug-lib-g++@prep.ai.mit.edu
# This file was written by Bob Manson. (manson@cygnus.com)
load_lib "libgloss.exp"
global base_dir
proc libio_init { args } {
global wrapper_file;
global wrap_compile_flags;
set wrapper_file "";
set wrap_compile_flags "";
if [target_info exists needs_status_wrapper] {
set result [build_wrapper "testglue.o"];
if { $result != "" } {
set wrapper_file [lindex $result 0];
set wrap_compile_flags [lindex $result 1];
} else {
warning "Status wrapper failed to build."
}
}
}
#
# Run the test specified by srcfile and resultfile. compile_args and
# exec_args are additional arguments to be passed in when compiling and
# running the testcase, respectively.
#
proc test_libio { srcfile compile_args inpfile resultfile exec_args } {
global LIBIO
global srcdir subdir objdir
global TOOL_OPTIONS
global wrapper_file wrap_compile_flags;
if { $inpfile != "" } {
set inpfile "$srcdir/../tests/$inpfile"
}
set args ""
lappend args "additional_flags=-O3";
lappend args "additional_flags=-I.. -I$srcdir/.."
lappend args "additional_flags=$wrap_compile_flags";
lappend args "libs=$wrapper_file";
if { $compile_args != "" } {
lappend args "additional_flags=$compile_args"
}
if [regexp "\.cc$" $srcfile] {
lappend args "additional_flags=-nostdinc++"
lappend args "additional_flags=[g++_include_flags]";
lappend args "additional_flags=[g++_link_flags]";
lappend args "libs=-lstdc++"
} else {
if [info exists LIBIO] {
lappend args "libdir=$LIBIO"
} else {
lappend args "additional_flags=[libio_link_flags]";
}
lappend args "libs=-lio"
}
if [target_info exists slow_simulator] then {
lappend args "additional_flags=-DSLOW_SIMULATOR"
}
if [info exists TOOL_OPTIONS] {
lappend args "additional_options=$TOOL_OPTIONS"
}
set gp [get_multilibs];
if { $gp != "" } {
if [file exists $gp/libiberty/libiberty.a] {
lappend args "libdir=$gp/libiberty";
set found_libiberty 1;
}
}
if ![info exists found_libiberty] {
set lib [lookfor_file "$objdir" "libiberty/libiberty.a"];
if { $lib != "" } {
lappend args "libdir=[file dirname $lib]";
}
}
lappend args "libs=-liberty"
lappend args "debug";
set errname "$srcfile"
set srcfile "$srcdir/../tests/$srcfile"
regsub "\\..*$" "[file tail $srcfile]" "" executable
set executable "$objdir/$executable"
if { [target_compile $srcfile $executable executable $args] != "" } {
fail "$errname compilation $exec_args";
setup_xfail "*-*-*"
fail "$errname execution $exec_args"
if { $resultfile != "" } {
setup_xfail "*-*-*"
fail "$errname output $exec_args"
}
return;
}
pass "$errname compilation $exec_args"
set result [libio_load $executable $exec_args $inpfile];
set status [lindex $result 0];
set output [lindex $result 1];
if { $status == "unsupported" } {
unsupported "target does not support loading $srcfile"
return;
}
if { $status != "pass" } {
$status "$errname execution $exec_args"
setup_xfail "*-*-*"
fail "$errname output $exec_args"
return;
}
pass "$errname execution $exec_args"
if { $resultfile != "" } {
set id [open $srcdir/../tests/$resultfile r];
set expected ""
append expected [read $id];
verbose "expected is $expected"
verbose "actual is $output"
regsub -all "\r" $output "" output
regsub "\n+$" $expected "" expected
regsub "\n+$" $output "" output
regsub "^\n+" $expected "" expected
regsub "^\n+" $output "" output
if { $expected == $output } {
pass "$errname output $exec_args"
} else {
fail "$errname output $exec_args"
}
close $id;
}
}
#
# libio_version -- extract and print the version number of libio
#
proc default_libio_version {} {
global LIBIO
}
proc default_libio_start { } {
}