libjava.compile test fixes.

* lib/libjava.exp (libjava_tcompile): New proc.
	(test_libjava_from_source): Use it.
	(test_libjava_from_javac): Likewise.
	(find_javac): New proc.
	(bytecompile_file): Use it.
	(test_libjava_from_javac): Handle `xfail-gcjC' tag.  If no-exec
	set, then don't link even if program has a `main'.

	* libjava.compile/static_3.xfail: New file.
	* libjava.compile/weirddecl.xfail: New file.
	* libjava.compile/static_2.xfail: New file.
	* libjava.compile/not_a_redef.xfail: New file.
	* libjava.compile/inner_1.xfail: New file.
	* libjava.compile/assignment_2.xfail: New file.
	* libjava.compile/assignment.xfail: New file.
	* libjava.compile/abstr.xfail: New file.
	* libjava.compile/PR375.xfail: New file.
	* libjava.compile/PR374.java: New file.
	* libjava.compile/PR238.xfail: New file.
	* libjava.compile/PR208.xfail: New file.
	* libjava.compile/PR207.xfail: New file.

From-SVN: r38296
This commit is contained in:
Tom Tromey 2000-12-16 02:06:29 +00:00 committed by Tom Tromey
parent 325de66c4c
commit 0254608834
15 changed files with 90 additions and 25 deletions

View File

@ -1,3 +1,27 @@
2000-12-15 Tom Tromey <tromey@redhat.com>
* lib/libjava.exp (libjava_tcompile): New proc.
(test_libjava_from_source): Use it.
(test_libjava_from_javac): Likewise.
(find_javac): New proc.
(bytecompile_file): Use it.
(test_libjava_from_javac): Handle `xfail-gcjC' tag. If no-exec
set, then don't link even if program has a `main'.
* libjava.compile/static_3.xfail: New file.
* libjava.compile/weirddecl.xfail: New file.
* libjava.compile/static_2.xfail: New file.
* libjava.compile/not_a_redef.xfail: New file.
* libjava.compile/inner_1.xfail: New file.
* libjava.compile/assignment_2.xfail: New file.
* libjava.compile/assignment.xfail: New file.
* libjava.compile/abstr.xfail: New file.
* libjava.compile/PR375.xfail: New file.
* libjava.compile/PR374.java: New file.
* libjava.compile/PR238.xfail: New file.
* libjava.compile/PR208.xfail: New file.
* libjava.compile/PR207.xfail: New file.
2000-11-30 Tom Tromey <tromey@cygnus.com> 2000-11-30 Tom Tromey <tromey@cygnus.com>
* libjava.lang/instinit.java: Don't extend `foo'. * libjava.lang/instinit.java: Don't extend `foo'.

View File

@ -10,6 +10,19 @@ if ![info exists tmpdir] {
set tmpdir "/tmp" set tmpdir "/tmp"
} }
# This is like `target_compile' but it does some surgery to work
# around stupid DejaGNU bugs. In particular DejaGNU has very poor
# quoting, so for instance a `$' will be re-evaluated at spawn time.
# We don't want that.
proc libjava_tcompile {source destfile type options} {
# This strange-looking expression really does quote the `$'.
regsub -all -- {\$} $source {\$} source
regsub -all -- {\$} $destfile {\$} destfile
verbose "Now source = $source"
verbose "Now destfile = $destfile"
return [target_compile $source $destfile $type $options]
}
# Read an `xfail' file if it exists. Returns a list of xfail tokens. # Read an `xfail' file if it exists. Returns a list of xfail tokens.
proc libjava_read_xfail {file} { proc libjava_read_xfail {file} {
if {! [file exists $file]} { if {! [file exists $file]} {
@ -46,12 +59,8 @@ proc find_gcjh {} {
return [libjava_find_program gcjh] return [libjava_find_program gcjh]
} }
proc bytecompile_file { file objdir {classpath {}} } { proc find_javac {} {
global env global SUN_JAVAC GCJ_UNDER_TEST env
global SUN_JAVAC
global GCJ_UNDER_TEST
set dirname [file dirname $file]
# If JDK doesn't run on your platform but some other # If JDK doesn't run on your platform but some other
# JDK-compatible javac does, you may set SUN_JAVAC to point to it. # JDK-compatible javac does, you may set SUN_JAVAC to point to it.
# One of the most important properties of a SUN_JAVAC is that it # One of the most important properties of a SUN_JAVAC is that it
@ -60,14 +69,21 @@ proc bytecompile_file { file objdir {classpath {}} } {
# those that have. For example, Pizza won't do it, but you can # those that have. For example, Pizza won't do it, but you can
# use `kaffe sun.tools.javac.Main', if you have Sun's classes.zip # use `kaffe sun.tools.javac.Main', if you have Sun's classes.zip
# in the kaffe's default search path. # in the kaffe's default search path.
if ![info exists SUN_JAVAC] { if {![info exists SUN_JAVAC]} {
if [info exists env(SUN_JAVAC)] { if {[info exists env(SUN_JAVAC)]} {
set SUN_JAVAC $env(SUN_JAVAC) set SUN_JAVAC $env(SUN_JAVAC)
} else { } else {
set SUN_JAVAC "$GCJ_UNDER_TEST -C" set SUN_JAVAC "$GCJ_UNDER_TEST -C"
} }
} }
return $SUN_JAVAC
}
proc bytecompile_file { file objdir {classpath {}} } {
global env
set dirname [file dirname $file]
set javac [find_javac]
catch {unset env(CLASSPATH)} catch {unset env(CLASSPATH)}
if {$classpath != ""} then { if {$classpath != ""} then {
set env(CLASSPATH) $classpath set env(CLASSPATH) $classpath
@ -75,7 +91,7 @@ proc bytecompile_file { file objdir {classpath {}} } {
if {[catch { if {[catch {
set here [pwd] set here [pwd]
cd $dirname cd $dirname
set q [eval exec "$SUN_JAVAC [list $file] -d $objdir 2>@ stdout"] set q [eval exec "$javac [list $file] -d $objdir 2>@ stdout"]
cd $here cd $here
# "return" a result # "return" a result
set q $q set q $q
@ -338,7 +354,7 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile
} }
set x [prune_warnings \ set x [prune_warnings \
[target_compile $srcfile "$executable" $target $args]] [libjava_tcompile $srcfile "$executable" $target $args]]
if {[info exists opts(xfail-gcj)]} { if {[info exists opts(xfail-gcj)]} {
setup_xfail *-*-* setup_xfail *-*-*
} }
@ -449,9 +465,15 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
# bytecompile files with Sun's compiler for now. # bytecompile files with Sun's compiler for now.
set bc_ok [bytecompile_file $srcfile $objdir] set bc_ok [bytecompile_file $srcfile $objdir]
# FIXME: assumes we are using javac to compile to bytecode.
# This is not always the case. set javac [find_javac]
if {[info exists opts(xfail-javac)]} { # This is an ugly heuristic but it will have to do.
if {[string match *gcj* $javac]} {
set tag gcjC
} else {
set tag javac
}
if {[info exists opts(xfail-$tag)]} {
setup_xfail *-*-* setup_xfail *-*-*
} }
if {! $bc_ok} then { if {! $bc_ok} then {
@ -481,12 +503,12 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
verbose "jvscan is $jvscan" verbose "jvscan is $jvscan"
set main_name [string trim \ set main_name [string trim \
[prune_warnings \ [prune_warnings \
[target_compile $srcfile "" none \ [libjava_tcompile $srcfile "" none \
"compiler=$jvscan additional_flags=--print-main"]]] "compiler=$jvscan additional_flags=--print-main"]]]
verbose "main name is $main_name" verbose "main name is $main_name"
set class_out [string trim \ set class_out [string trim \
[prune_warnings \ [prune_warnings \
[target_compile $srcfile "" none \ [libjava_tcompile $srcfile "" none \
"compiler=$jvscan additional_flags=--list-class"]]] "compiler=$jvscan additional_flags=--list-class"]]]
verbose "class list is $class_out" verbose "class list is $class_out"
@ -519,14 +541,13 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
set opts(no-exec) x set opts(no-exec) x
} }
set largs {} set largs {}
if {$main_name == ""} {
if {! [info exists opts(no-exec)]} { if {[info exists opts(no-exec)]} {
perror "No `main' given in program $errname" set type object
return set mode compile
} else { } elseif {$main_name == ""} {
set type object perror "No `main' given in program $errname"
set mode compile return
}
} else { } else {
set type executable set type executable
lappend largs "additional_flags=--main=$main_name" lappend largs "additional_flags=--main=$main_name"
@ -554,14 +575,14 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
foreach c_file $class_files { foreach c_file $class_files {
set executable [file rootname [file tail $c_file]].o set executable [file rootname [file tail $c_file]].o
set x [prune_warnings \ set x [prune_warnings \
[target_compile $c_file "$executable" $type $args]] [libjava_tcompile $c_file "$executable" $type $args]]
if {$x != ""} { if {$x != ""} {
break break
} }
} }
} else { } else {
set x [prune_warnings \ set x [prune_warnings \
[target_compile $class_files "$executable" $type $args]] [libjava_tcompile $class_files "$executable" $type $args]]
} }
if {[info exists opts(xfail-byte)]} { if {[info exists opts(xfail-byte)]} {
setup_xfail *-*-* setup_xfail *-*-*

View File

@ -0,0 +1,2 @@
no-link
xfail-byte

View File

@ -0,0 +1,2 @@
no-link
xfail-byte

View File

@ -0,0 +1 @@
no-link

View File

@ -0,0 +1,2 @@
xfail-gcj
xfail-gcjC

View File

@ -0,0 +1 @@
xfail-gcj

View File

@ -1 +1,2 @@
no-link no-link
xfail-byte

View File

@ -0,0 +1,2 @@
xfail-gcj
xfail-gcjC

View File

@ -0,0 +1,2 @@
xfail-gcj
xfail-gcjC

View File

@ -0,0 +1 @@
xfail-gcj

View File

@ -0,0 +1 @@
no-link

View File

@ -0,0 +1 @@
no-link

View File

@ -0,0 +1 @@
no-link

View File

@ -0,0 +1,3 @@
no-link
xfail-gcj
xfail-gcjC