| # Tests for ClassLoader and native library loader code. |
| |
| # Compute the correct name for an object file. |
| # This is an awful hack. |
| proc gcj_object_file_name {compiler base} { |
| verbose "OBJECT: compiler = $compiler" |
| if {[string match *libtool* $compiler]} { |
| return $base.lo |
| } |
| return $base.o |
| } |
| |
| # 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]] [gcj_object_file_name $args dummy]" |
| 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 $srcdir/$subdir/dummy.class" |
| set x [libjava_prune_warnings \ |
| [libjava_tcompile "$srcdir/$subdir/dummy.class" "$objdir/[gcj_object_file_name $args dummy]" 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*.jar] } srcfiles |
| |
| foreach x $srcfiles { |
| gcj_loader_test_one $x |
| } |
| } |
| |
| gcj_loader_run |