From 51e0d189edbc6fc454d774c45593f1d04b661fea Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 15 Jul 1999 09:15:26 +0000 Subject: [PATCH] G19990217_02.no-link: New file. * libjava.compile/G19990217_02.no-link: New file. * libjava.compile/test.exp: Look for `.no-link' file. * lib/libjava.exp (test_libjava_from_source): Added `no-link' option. (test_libjava_from_javac): Likewise. Also, handle package information from class name when creating class file name. From-SVN: r28113 --- libjava/testsuite/ChangeLog | 9 +++ libjava/testsuite/lib/libjava.exp | 55 +++++++++++++++---- .../libjava.compile/G19990217_02.no-link | 1 + libjava/testsuite/libjava.compile/test.exp | 3 + 4 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 libjava/testsuite/libjava.compile/G19990217_02.no-link diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index bc5dc65d70b..cb9224e049d 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,12 @@ +1999-07-14 Tom Tromey + + * libjava.compile/G19990217_02.no-link: New file. + * libjava.compile/test.exp: Look for `.no-link' file. + * lib/libjava.exp (test_libjava_from_source): Added `no-link' + option. + (test_libjava_from_javac): Likewise. Also, handle package + information from class name when creating class file name. + 1999-07-13 Tom Tromey * libjava.lang/test.exp: New file. diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp index fd5ceb481ed..3abb648a8b9 100644 --- a/libjava/testsuite/lib/libjava.exp +++ b/libjava/testsuite/lib/libjava.exp @@ -233,6 +233,7 @@ proc libjava_arguments {{mode compile}} { # # Run the test specified by srcfile and resultfile. compile_args and # exec_args are options telling this proc how to work. +# `no-link' don't try to link the program # `no-exec' don't try to run the test # `xfail-gcj' compilation from source will fail # `xfail-javac' compilation with javac will fail @@ -264,20 +265,33 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile return } - set args [libjava_arguments link] - # Add the --main flag - lappend args "additional_flags=--main=[file rootname [file tail $srcfile]]" - if { $compile_args != "" } { - lappend args "additional_flags=$compile_args" + if {[info exists opts(no-link)]} { + set mode compile + } else { + set mode link + } + set args [libjava_arguments $mode] + if {! [info exists opts(no-link)]} { + # Add the --main flag + lappend args "additional_flags=--main=[file rootname [file tail $srcfile]]" + if { $compile_args != "" } { + lappend args "additional_flags=$compile_args" + } } regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out set executable "${objdir}/$out" + if {[info exists opts(no-link)]} { + append executable ".o" + set target object + } else { + set target executable + } if { $compile_args != "" } { set errname "$errname $compile_args" } - set x [target_compile $srcfile "$executable" executable $args] + set x [target_compile $srcfile "$executable" $target $args] if {[info exists opts(xfail-gcj)]} { setup_xfail *-*-* } @@ -294,7 +308,8 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile } pass "$errname compilation from source" - if {[info exists opts(no-exec)]} { + if {[info exists opts(no-exec)] + || [info exists opts(no-link)]} { return } @@ -352,6 +367,7 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile # # Run the test specified by srcfile and resultfile. compile_args and # exec_args are options telling this proc how to work. +# `no-link' don't try to link the program # `no-exec' don't try to run the test # `xfail-gcj' compilation from source will fail # `xfail-javac' compilation with javac will fail @@ -422,14 +438,20 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e [list $objdir/[file rootname [file tail $srcfile]].class] } else { # Turn "a b" into "a.class b.class". + # Also, turn "foo.bar" into "foo/bar.class". set class_files {} foreach file [split [string trim $class_out]] { + set file [join [split $file .] /] lappend class_files $objdir/$file.class } } # Usually it is an error for a test program not to have a `main' - # method. However, for no-exec tests it is ok. + # method. However, for no-exec tests it is ok. Treat no-link + # like no-exec here. + if {[info exists opts(no-link)]} { + set opts(no-exec) x + } set largs {} if {$main_name == ""} { if {! [info exists opts(no-exec)]} { @@ -437,7 +459,6 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e return } else { set type object - set executable [file rootname [file tail $srcfile]].o set mode compile } } else { @@ -460,7 +481,20 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e } verbose "compilation command = $args" 2 - set x [target_compile $class_files "$executable" $type $args] + # When compiling and not linking, we have to build each .o + # separately. We do this because DejaGNU's target_compile won't + # accept an empty "destfile" argument when the mode is "compile". + if {$mode == "compile"} { + foreach c_file $class_files { + set executable [file rootname [file tail $c_file]].o + set x [target_compile $c_file "$executable" $type $args] + if {$x != ""} { + break + } + } + } else { + set x [target_compile $class_files "$executable" $type $args] + } if {[info exists opts(xfail-byte)]} { setup_xfail *-*-* } @@ -535,6 +569,7 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e # # Run the test specified by srcfile and resultfile. compile_args and # exec_args are options telling this proc how to work. +# `no-link' don't try to link the program # `no-exec' don't try to run the test # `xfail-gcj' compilation from source will fail # `xfail-javac' compilation with javac will fail diff --git a/libjava/testsuite/libjava.compile/G19990217_02.no-link b/libjava/testsuite/libjava.compile/G19990217_02.no-link new file mode 100644 index 00000000000..e69cdecc103 --- /dev/null +++ b/libjava/testsuite/libjava.compile/G19990217_02.no-link @@ -0,0 +1 @@ +Don't link me diff --git a/libjava/testsuite/libjava.compile/test.exp b/libjava/testsuite/libjava.compile/test.exp index c76a58c5b0e..3d9c13b78b6 100644 --- a/libjava/testsuite/libjava.compile/test.exp +++ b/libjava/testsuite/libjava.compile/test.exp @@ -6,6 +6,9 @@ verbose "srcfiles are $srcfiles" set prefix "" foreach x $srcfiles { set args [libjava_read_xfail [file rootname $x].xfail] + if {[file exists [file rootname $x].no-link]} { + lappend args no-link + } lappend args no-exec test_libjava $options "$x" "" "" "" $args -- 2.30.2