| # Tests for ClassLoader and native library loader code. |
| |
| # Do all the work for a single JNI test. Return 0 on failure. |
| proc gcj_loader_test_one {srcfile} { |
| global objdir srcdir subdir |
| |
| set resfile $srcdir/$subdir/[file rootname [file tail $srcfile]].out |
| |
| regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out |
| set executable "${objdir}/$out.exe" |
| |
| set errname [file rootname [file tail $srcfile]] |
| set args [libjava_arguments link] |
| lappend args "additional_flags=--main=[file rootname [file tail $srcfile]] $srcdir/$subdir/MyLoader.java $objdir/dummy.o" |
| set x [libjava_prune_warnings \ |
| [libjava_tcompile $srcfile "$executable" executable $args]] |
| |
| if { $x != "" } { |
| verbose "target_compile failed: $x" 2 |
| |
| fail "$errname compilation from source" |
| untested "$errname execution from source compiled test" |
| return |
| } |
| pass "$errname compilation from source" |
| |
| libjava_invoke $executable $executable "" $executable "" $resfile "" |
| |
| return 1 |
| } |
| |
| # Run the bytecode loader tests. |
| proc gcj_loader_run {} { |
| global srcdir subdir objdir |
| global build_triplet host_triplet |
| global GCJ_UNDER_TEST |
| |
| set file "${srcdir}/${subdir}/dummy.java" |
| if {! [bytecompile_file $file [pwd]]} { |
| fail "bytecompile $file" |
| # FIXME - should use `untested' on all remaining tests. |
| # But that is hard. |
| return 0 |
| } |
| pass "bytecompile $file" |
| |
| set args [libjava_arguments compile] |
| lappend args "additional_flags=--resource $objdir/dummy.class" |
| set x [libjava_prune_warnings \ |
| [libjava_tcompile "$objdir/dummy.class" "$objdir/dummy.o" object $args]] |
| |
| if { $x != "" } { |
| verbose "resource compilation failed: $x" 2 |
| |
| fail "resource compilation dummy.class" |
| return 0; |
| } |
| pass "resource compilation: dummy.class" |
| |
| catch { lsort [glob -nocomplain ${srcdir}/${subdir}/Test*.java] } srcfiles |
| |
| foreach x $srcfiles { |
| gcj_loader_test_one $x |
| } |
| } |
| |
| gcj_loader_run |