1997-08-22 00:57:35 +02:00
|
|
|
# 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
|
1998-06-28 01:01:02 +02:00
|
|
|
global wrapper_file wrap_compile_flags
|
|
|
|
global ld_library_path
|
1997-08-22 00:57:35 +02:00
|
|
|
|
|
|
|
if { $inpfile != "" } {
|
|
|
|
set inpfile "$srcdir/../tests/$inpfile"
|
|
|
|
}
|
|
|
|
|
|
|
|
set args ""
|
1998-06-28 01:01:02 +02:00
|
|
|
set ld_library_path ""
|
1997-08-22 00:57:35 +02:00
|
|
|
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++"
|
1997-09-05 23:37:51 +02:00
|
|
|
lappend args "additional_flags=[libstdc++_include_flags]";
|
|
|
|
lappend args "additional_flags=[libstdc++_link_flags]";
|
1997-08-22 00:57:35 +02:00
|
|
|
lappend args "libs=-lstdc++"
|
|
|
|
} else {
|
|
|
|
if [info exists LIBIO] {
|
|
|
|
lappend args "libdir=$LIBIO"
|
|
|
|
} else {
|
|
|
|
lappend args "additional_flags=[libio_link_flags]";
|
|
|
|
}
|
1997-12-11 19:46:55 +01:00
|
|
|
lappend args "additional_flags=[libio_link_flags]";
|
1997-08-22 00:57:35 +02:00
|
|
|
lappend args "libs=-lio"
|
|
|
|
}
|
|
|
|
|
|
|
|
if [target_info exists slow_simulator] then {
|
|
|
|
lappend args "additional_flags=-DSLOW_SIMULATOR"
|
|
|
|
}
|
|
|
|
|
|
|
|
if [info exists TOOL_OPTIONS] {
|
1999-06-23 14:10:00 +02:00
|
|
|
lappend args "additional_flags=$TOOL_OPTIONS"
|
1997-08-22 00:57:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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 { } {
|
|
|
|
}
|