mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
# 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 $errname "source compiled test" "" $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
 |