loader.exp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # Tests for ClassLoader and native library loader code.
  2. # Compute the correct name for an object file.
  3. # This is an awful hack.
  4. proc gcj_object_file_name {compiler base} {
  5. verbose "OBJECT: compiler = $compiler"
  6. if {[string match *libtool* $compiler]} {
  7. return $base.lo
  8. }
  9. return $base.o
  10. }
  11. # Do all the work for a single JNI test. Return 0 on failure.
  12. proc gcj_loader_test_one {srcfile} {
  13. global objdir srcdir subdir
  14. set resfile $srcdir/$subdir/[file rootname [file tail $srcfile]].out
  15. regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out
  16. set executable "${objdir}/$out.exe"
  17. set errname [file rootname [file tail $srcfile]]
  18. set args [libjava_arguments link]
  19. lappend args "additional_flags=--main=[file rootname [file tail $srcfile]] [gcj_object_file_name $args dummy]"
  20. set x [libjava_prune_warnings \
  21. [libjava_tcompile $srcfile "$executable" executable $args]]
  22. if { $x != "" } {
  23. verbose "target_compile failed: $x" 2
  24. fail "$errname compilation from source"
  25. untested "$errname execution from source compiled test"
  26. return
  27. }
  28. pass "$errname compilation from source"
  29. libjava_invoke $errname "source compiled test" "" $executable "" $resfile ""
  30. return 1
  31. }
  32. # Run the bytecode loader tests.
  33. proc gcj_loader_run {} {
  34. global srcdir subdir objdir
  35. global build_triplet host_triplet
  36. global GCJ_UNDER_TEST
  37. # set file "${srcdir}/${subdir}/dummy.java"
  38. # if {! [bytecompile_file $file [pwd]]} {
  39. # fail "bytecompile $file"
  40. # # FIXME - should use `untested' on all remaining tests.
  41. # # But that is hard.
  42. # return 0
  43. # }
  44. # pass "bytecompile $file"
  45. set args [libjava_arguments compile]
  46. lappend args "additional_flags=--resource $srcdir/$subdir/dummy.class"
  47. set x [libjava_prune_warnings \
  48. [libjava_tcompile "$srcdir/$subdir/dummy.class" "$objdir/[gcj_object_file_name $args dummy]" object $args]]
  49. if { $x != "" } {
  50. verbose "resource compilation failed: $x" 2
  51. fail "resource compilation dummy.class"
  52. return 0;
  53. }
  54. pass "resource compilation: dummy.class"
  55. catch { lsort [glob -nocomplain ${srcdir}/${subdir}/Test*.jar] } srcfiles
  56. foreach x $srcfiles {
  57. gcj_loader_test_one $x
  58. }
  59. }
  60. gcj_loader_run