summaryrefslogtreecommitdiff
path: root/libjava/testsuite
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/testsuite
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/testsuite')
-rw-r--r--libjava/testsuite/ChangeLog-old2153
-rw-r--r--libjava/testsuite/Makefile.am109
-rw-r--r--libjava/testsuite/Makefile.in597
-rw-r--r--libjava/testsuite/config/default.exp1
-rw-r--r--libjava/testsuite/lib/libjava.exp799
-rw-r--r--libjava/testsuite/libjava.cni/PR9577.h29
-rw-r--r--libjava/testsuite/libjava.cni/PR9577.jarbin0 -> 629 bytes
-rw-r--r--libjava/testsuite/libjava.cni/PR9577.java14
-rw-r--r--libjava/testsuite/libjava.cni/PR9577.out1
-rw-r--r--libjava/testsuite/libjava.cni/cni.exp124
-rw-r--r--libjava/testsuite/libjava.cni/longfield.h33
-rw-r--r--libjava/testsuite/libjava.cni/longfield.jarbin0 -> 852 bytes
-rw-r--r--libjava/testsuite/libjava.cni/longfield.java22
-rw-r--r--libjava/testsuite/libjava.cni/longfield.out6
-rw-r--r--libjava/testsuite/libjava.cni/natPR9577.cc9
-rw-r--r--libjava/testsuite/libjava.cni/natlongfield.cc15
-rw-r--r--libjava/testsuite/libjava.cni/natshortfield.cc10
-rw-r--r--libjava/testsuite/libjava.cni/shortfield.h33
-rw-r--r--libjava/testsuite/libjava.cni/shortfield.jarbin0 -> 995 bytes
-rw-r--r--libjava/testsuite/libjava.cni/shortfield.java21
-rw-r--r--libjava/testsuite/libjava.cni/shortfield.out1
-rw-r--r--libjava/testsuite/libjava.cni/shortfieldbase.h25
-rw-r--r--libjava/testsuite/libjava.jar/TestClosureGC.jarbin0 -> 3997 bytes
-rw-r--r--libjava/testsuite/libjava.jar/TestClosureGC.java116
-rw-r--r--libjava/testsuite/libjava.jar/TestClosureGC.out1
-rw-r--r--libjava/testsuite/libjava.jar/TestClosureGC.xfail1
-rw-r--r--libjava/testsuite/libjava.jar/jar.exp67
-rw-r--r--libjava/testsuite/libjava.jar/simple.jarbin0 -> 666 bytes
-rw-r--r--libjava/testsuite/libjava.jar/simple.java7
-rw-r--r--libjava/testsuite/libjava.jar/simple.out1
-rw-r--r--libjava/testsuite/libjava.jar/simple.xfail1
-rw-r--r--libjava/testsuite/libjava.jni/PR15133.c9
-rw-r--r--libjava/testsuite/libjava.jni/PR15133.h19
-rw-r--r--libjava/testsuite/libjava.jni/PR15133.jarbin0 -> 674 bytes
-rw-r--r--libjava/testsuite/libjava.jni/PR15133.java14
-rw-r--r--libjava/testsuite/libjava.jni/PR15133.out1
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.c35
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.h19
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.jarbin0 -> 740 bytes
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.java16
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.out1
-rw-r--r--libjava/testsuite/libjava.jni/PR28178.c10
-rw-r--r--libjava/testsuite/libjava.jni/PR28178.h19
-rw-r--r--libjava/testsuite/libjava.jni/PR28178.jarbin0 -> 662 bytes
-rw-r--r--libjava/testsuite/libjava.jni/PR28178.java15
-rw-r--r--libjava/testsuite/libjava.jni/PR28178.out0
-rw-r--r--libjava/testsuite/libjava.jni/bytebuffer.c62
-rw-r--r--libjava/testsuite/libjava.jni/bytebuffer.h25
-rw-r--r--libjava/testsuite/libjava.jni/bytebuffer.jarbin0 -> 1150 bytes
-rw-r--r--libjava/testsuite/libjava.jni/bytebuffer.java38
-rw-r--r--libjava/testsuite/libjava.jni/bytebuffer.out26
-rw-r--r--libjava/testsuite/libjava.jni/calls.c75
-rw-r--r--libjava/testsuite/libjava.jni/calls.h19
-rw-r--r--libjava/testsuite/libjava.jni/calls.jarbin0 -> 1283 bytes
-rw-r--r--libjava/testsuite/libjava.jni/calls.java72
-rw-r--r--libjava/testsuite/libjava.jni/calls.out1
-rw-r--r--libjava/testsuite/libjava.jni/cxxtest.cc24
-rw-r--r--libjava/testsuite/libjava.jni/cxxtest.h19
-rw-r--r--libjava/testsuite/libjava.jni/cxxtest.jarbin0 -> 818 bytes
-rw-r--r--libjava/testsuite/libjava.jni/cxxtest.java25
-rw-r--r--libjava/testsuite/libjava.jni/cxxtest.out1
-rw-r--r--libjava/testsuite/libjava.jni/directbuffer.c75
-rw-r--r--libjava/testsuite/libjava.jni/directbuffer.h26
-rw-r--r--libjava/testsuite/libjava.jni/directbuffer.jarbin0 -> 1067 bytes
-rw-r--r--libjava/testsuite/libjava.jni/directbuffer.java40
-rw-r--r--libjava/testsuite/libjava.jni/directbuffer.out14
-rw-r--r--libjava/testsuite/libjava.jni/field.c24
-rw-r--r--libjava/testsuite/libjava.jni/field.h19
-rw-r--r--libjava/testsuite/libjava.jni/field.jarbin0 -> 810 bytes
-rw-r--r--libjava/testsuite/libjava.jni/field.java25
-rw-r--r--libjava/testsuite/libjava.jni/field.out1
-rw-r--r--libjava/testsuite/libjava.jni/final_method.c7
-rw-r--r--libjava/testsuite/libjava.jni/final_method.h19
-rw-r--r--libjava/testsuite/libjava.jni/final_method.jarbin0 -> 751 bytes
-rw-r--r--libjava/testsuite/libjava.jni/final_method.java17
-rw-r--r--libjava/testsuite/libjava.jni/final_method.out1
-rw-r--r--libjava/testsuite/libjava.jni/findclass.c12
-rw-r--r--libjava/testsuite/libjava.jni/findclass.h19
-rw-r--r--libjava/testsuite/libjava.jni/findclass.jarbin0 -> 809 bytes
-rw-r--r--libjava/testsuite/libjava.jni/findclass.java16
-rw-r--r--libjava/testsuite/libjava.jni/findclass.out1
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.c9
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.h19
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.jarbin0 -> 1073 bytes
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.java24
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.out1
-rw-r--r--libjava/testsuite/libjava.jni/iface.c40
-rw-r--r--libjava/testsuite/libjava.jni/iface.h19
-rw-r--r--libjava/testsuite/libjava.jni/iface.jarbin0 -> 991 bytes
-rw-r--r--libjava/testsuite/libjava.jni/iface.java27
-rw-r--r--libjava/testsuite/libjava.jni/iface.out2
-rw-r--r--libjava/testsuite/libjava.jni/init$NativeClass.h19
-rw-r--r--libjava/testsuite/libjava.jni/init.c8
-rw-r--r--libjava/testsuite/libjava.jni/init.h18
-rw-r--r--libjava/testsuite/libjava.jni/init.jarbin0 -> 1294 bytes
-rw-r--r--libjava/testsuite/libjava.jni/init.java26
-rw-r--r--libjava/testsuite/libjava.jni/init.out3
-rw-r--r--libjava/testsuite/libjava.jni/invocation/PR16923.c43
-rw-r--r--libjava/testsuite/libjava.jni/invocation/PR16923.jarbin0 -> 673 bytes
-rw-r--r--libjava/testsuite/libjava.jni/invocation/PR16923.java7
-rw-r--r--libjava/testsuite/libjava.jni/invocation/PR16923.out1
-rw-r--r--libjava/testsuite/libjava.jni/invoke.c7
-rw-r--r--libjava/testsuite/libjava.jni/invoke.h19
-rw-r--r--libjava/testsuite/libjava.jni/invoke.jarbin0 -> 762 bytes
-rw-r--r--libjava/testsuite/libjava.jni/invoke.java18
-rw-r--r--libjava/testsuite/libjava.jni/invoke.out3
-rw-r--r--libjava/testsuite/libjava.jni/jni.exp404
-rw-r--r--libjava/testsuite/libjava.jni/jniutf.c10
-rw-r--r--libjava/testsuite/libjava.jni/jniutf.h19
-rw-r--r--libjava/testsuite/libjava.jni/jniutf.jarbin0 -> 788 bytes
-rw-r--r--libjava/testsuite/libjava.jni/jniutf.java16
-rw-r--r--libjava/testsuite/libjava.jni/jniutf.out0
-rw-r--r--libjava/testsuite/libjava.jni/martin.c43
-rw-r--r--libjava/testsuite/libjava.jni/martin.h19
-rw-r--r--libjava/testsuite/libjava.jni/martin.jarbin0 -> 934 bytes
-rw-r--r--libjava/testsuite/libjava.jni/martin.java21
-rw-r--r--libjava/testsuite/libjava.jni/martin.out4
-rw-r--r--libjava/testsuite/libjava.jni/noclass.c9
-rw-r--r--libjava/testsuite/libjava.jni/noclass.h19
-rw-r--r--libjava/testsuite/libjava.jni/noclass.jarbin0 -> 755 bytes
-rw-r--r--libjava/testsuite/libjava.jni/noclass.java25
-rw-r--r--libjava/testsuite/libjava.jni/noclass.out1
-rw-r--r--libjava/testsuite/libjava.jni/overload.c16
-rw-r--r--libjava/testsuite/libjava.jni/overload.h20
-rw-r--r--libjava/testsuite/libjava.jni/overload.jarbin0 -> 749 bytes
-rw-r--r--libjava/testsuite/libjava.jni/overload.java18
-rw-r--r--libjava/testsuite/libjava.jni/overload.out2
-rw-r--r--libjava/testsuite/libjava.jni/pr11951.c16
-rw-r--r--libjava/testsuite/libjava.jni/pr11951.h19
-rw-r--r--libjava/testsuite/libjava.jni/pr11951.jarbin0 -> 715 bytes
-rw-r--r--libjava/testsuite/libjava.jni/pr11951.java18
-rw-r--r--libjava/testsuite/libjava.jni/pr11951.out1
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.c10
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.h19
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.jarbin0 -> 763 bytes
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.java13
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.out2
-rw-r--r--libjava/testsuite/libjava.jni/pr23739.c12
-rw-r--r--libjava/testsuite/libjava.jni/pr23739.h19
-rw-r--r--libjava/testsuite/libjava.jni/pr23739.jarbin0 -> 1319 bytes
-rw-r--r--libjava/testsuite/libjava.jni/pr23739.java22
-rw-r--r--libjava/testsuite/libjava.jni/pr23739.out3
-rw-r--r--libjava/testsuite/libjava.jni/pr29812.c7
-rw-r--r--libjava/testsuite/libjava.jni/pr29812.h19
-rw-r--r--libjava/testsuite/libjava.jni/pr29812.jarbin0 -> 964 bytes
-rw-r--r--libjava/testsuite/libjava.jni/pr29812.java25
-rw-r--r--libjava/testsuite/libjava.jni/pr29812.out0
-rw-r--r--libjava/testsuite/libjava.jni/pr29812_injar.c26
-rw-r--r--libjava/testsuite/libjava.jni/pr29812_injar.h19
-rw-r--r--libjava/testsuite/libjava.jni/pr29812_injar.jarbin0 -> 1045 bytes
-rw-r--r--libjava/testsuite/libjava.jni/pr29812_injar.java12
-rw-r--r--libjava/testsuite/libjava.jni/register.c32
-rw-r--r--libjava/testsuite/libjava.jni/register.h19
-rw-r--r--libjava/testsuite/libjava.jni/register.jarbin0 -> 724 bytes
-rw-r--r--libjava/testsuite/libjava.jni/register.java16
-rw-r--r--libjava/testsuite/libjava.jni/register.out1
-rw-r--r--libjava/testsuite/libjava.jni/register2.c48
-rw-r--r--libjava/testsuite/libjava.jni/register2.jarbin0 -> 1445 bytes
-rw-r--r--libjava/testsuite/libjava.jni/register2.java27
-rw-r--r--libjava/testsuite/libjava.jni/register2.out2
-rw-r--r--libjava/testsuite/libjava.jni/simple_int.c7
-rw-r--r--libjava/testsuite/libjava.jni/simple_int.h19
-rw-r--r--libjava/testsuite/libjava.jni/simple_int.jarbin0 -> 730 bytes
-rw-r--r--libjava/testsuite/libjava.jni/simple_int.java16
-rw-r--r--libjava/testsuite/libjava.jni/simple_int.out1
-rw-r--r--libjava/testsuite/libjava.jni/throwit.c25
-rw-r--r--libjava/testsuite/libjava.jni/throwit.h19
-rw-r--r--libjava/testsuite/libjava.jni/throwit.jarbin0 -> 864 bytes
-rw-r--r--libjava/testsuite/libjava.jni/throwit.java33
-rw-r--r--libjava/testsuite/libjava.jni/throwit.out4
-rw-r--r--libjava/testsuite/libjava.jni/virtual.c7
-rw-r--r--libjava/testsuite/libjava.jni/virtual.h19
-rw-r--r--libjava/testsuite/libjava.jni/virtual.jarbin0 -> 747 bytes
-rw-r--r--libjava/testsuite/libjava.jni/virtual.java17
-rw-r--r--libjava/testsuite/libjava.jni/virtual.out1
-rw-r--r--libjava/testsuite/libjava.jvmti/dummyagent.c10
-rw-r--r--libjava/testsuite/libjava.jvmti/events.h27
-rw-r--r--libjava/testsuite/libjava.jvmti/events.jarbin0 -> 751 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/events.java12
-rw-r--r--libjava/testsuite/libjava.jvmti/events.out59
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.h35
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.jarbin0 -> 1228 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.java80
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.out23
-rw-r--r--libjava/testsuite/libjava.jvmti/geterrorname.h27
-rw-r--r--libjava/testsuite/libjava.jvmti/geterrorname.jarbin0 -> 716 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/geterrorname.java12
-rw-r--r--libjava/testsuite/libjava.jvmti/geterrorname.out49
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.h27
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.jarbin0 -> 765 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.java10
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.out59
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getargssize.h19
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getargssize.jarbin0 -> 1111 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getargssize.java36
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getargssize.out5
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getlocalvartable.h19
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getlocalvartable.jarbin0 -> 1370 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getlocalvartable.java63
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getlocalvartable.out109
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getstacktrace.h21
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getstacktrace.jarbin0 -> 1237 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getstacktrace.java88
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/getstacktrace.out76
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/natgetargssize.cc58
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/natgetlocalvartable.cc70
-rw-r--r--libjava/testsuite/libjava.jvmti/interp/natgetstacktrace.cc144
-rw-r--r--libjava/testsuite/libjava.jvmti/jvmti-interp.exp188
-rw-r--r--libjava/testsuite/libjava.jvmti/jvmti.exp126
-rw-r--r--libjava/testsuite/libjava.jvmti/natevents.cc578
-rw-r--r--libjava/testsuite/libjava.jvmti/natgetallthreads.cc55
-rw-r--r--libjava/testsuite/libjava.jvmti/natgeterrorname.cc76
-rw-r--r--libjava/testsuite/libjava.jvmti/natgetmethodname.cc116
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore.jarbin0 -> 1041 bytes
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore.java52
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore.out4
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore2.jarbin0 -> 899 bytes
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore2.java31
-rw-r--r--libjava/testsuite/libjava.lang/ArrayStore2.out3
-rw-r--r--libjava/testsuite/libjava.lang/Array_1.jarbin0 -> 864 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Array_1.java18
-rw-r--r--libjava/testsuite/libjava.lang/Array_1.out4
-rw-r--r--libjava/testsuite/libjava.lang/Array_2.jarbin0 -> 721 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Array_2.java14
-rw-r--r--libjava/testsuite/libjava.lang/Array_2.out2
-rw-r--r--libjava/testsuite/libjava.lang/Array_3.jarbin0 -> 974 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Array_3.java91
-rw-r--r--libjava/testsuite/libjava.lang/Array_3.out0
-rw-r--r--libjava/testsuite/libjava.lang/Class_1.jarbin0 -> 1840 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Class_1.java46
-rw-r--r--libjava/testsuite/libjava.lang/Class_1.out21
-rw-r--r--libjava/testsuite/libjava.lang/CompareNaN.jarbin0 -> 687 bytes
-rw-r--r--libjava/testsuite/libjava.lang/CompareNaN.java15
-rw-r--r--libjava/testsuite/libjava.lang/CompareNaN.out1
-rw-r--r--libjava/testsuite/libjava.lang/Divide_1.jarbin0 -> 1632 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Divide_1.java203
-rw-r--r--libjava/testsuite/libjava.lang/Divide_1.out22
-rw-r--r--libjava/testsuite/libjava.lang/Divide_2.jarbin0 -> 684 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Divide_2.java20
-rw-r--r--libjava/testsuite/libjava.lang/Divide_2.out0
-rw-r--r--libjava/testsuite/libjava.lang/EvaluationOrder.jarbin0 -> 730 bytes
-rw-r--r--libjava/testsuite/libjava.lang/EvaluationOrder.java22
-rw-r--r--libjava/testsuite/libjava.lang/EvaluationOrder.out3
-rw-r--r--libjava/testsuite/libjava.lang/ExtraClassLoader.jarbin0 -> 2372 bytes
-rw-r--r--libjava/testsuite/libjava.lang/ExtraClassLoader.java36
-rw-r--r--libjava/testsuite/libjava.lang/ExtraClassLoader.out3
-rw-r--r--libjava/testsuite/libjava.lang/FileHandleGcTest.jarbin0 -> 757 bytes
-rw-r--r--libjava/testsuite/libjava.lang/FileHandleGcTest.java24
-rw-r--r--libjava/testsuite/libjava.lang/FileHandleGcTest.out0
-rw-r--r--libjava/testsuite/libjava.lang/Final.jarbin0 -> 766 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Final.java20
-rw-r--r--libjava/testsuite/libjava.lang/Final.out1
-rw-r--r--libjava/testsuite/libjava.lang/Float_1.jarbin0 -> 849 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Float_1.java52
-rw-r--r--libjava/testsuite/libjava.lang/Float_1.out1
-rw-r--r--libjava/testsuite/libjava.lang/Float_2.jarbin0 -> 1422 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Float_2.java138
-rw-r--r--libjava/testsuite/libjava.lang/Float_2.out0
-rw-r--r--libjava/testsuite/libjava.lang/G19990301_01.jarbin0 -> 1067 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990301_01.java12
-rw-r--r--libjava/testsuite/libjava.lang/G19990301_01.out2
-rw-r--r--libjava/testsuite/libjava.lang/G19990302_02.jarbin0 -> 778 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990302_02.java15
-rw-r--r--libjava/testsuite/libjava.lang/G19990302_02.out3
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_01.jarbin0 -> 762 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_01.java19
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_01.out3
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_02.jarbin0 -> 799 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_02.java19
-rw-r--r--libjava/testsuite/libjava.lang/G19990303_02.out3
-rw-r--r--libjava/testsuite/libjava.lang/G19990304_01.jarbin0 -> 764 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990304_01.java18
-rw-r--r--libjava/testsuite/libjava.lang/G19990304_01.out3
-rw-r--r--libjava/testsuite/libjava.lang/G19990310_01.jarbin0 -> 850 bytes
-rw-r--r--libjava/testsuite/libjava.lang/G19990310_01.java21
-rw-r--r--libjava/testsuite/libjava.lang/G19990310_01.out3
-rw-r--r--libjava/testsuite/libjava.lang/II.jarbin0 -> 685 bytes
-rw-r--r--libjava/testsuite/libjava.lang/II.java16
-rw-r--r--libjava/testsuite/libjava.lang/II.out1
-rw-r--r--libjava/testsuite/libjava.lang/InterfaceDispatch.jarbin0 -> 4725 bytes
-rw-r--r--libjava/testsuite/libjava.lang/InterfaceDispatch.java403
-rw-r--r--libjava/testsuite/libjava.lang/InterfaceDispatch.out27
-rw-r--r--libjava/testsuite/libjava.lang/InvokeInterface.jarbin0 -> 2413 bytes
-rw-r--r--libjava/testsuite/libjava.lang/InvokeInterface.java55
-rw-r--r--libjava/testsuite/libjava.lang/InvokeInterface.out6
-rw-r--r--libjava/testsuite/libjava.lang/InvokeReturn.jarbin0 -> 1209 bytes
-rw-r--r--libjava/testsuite/libjava.lang/InvokeReturn.java80
-rw-r--r--libjava/testsuite/libjava.lang/InvokeReturn.out8
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_1.jarbin0 -> 785 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_1.java27
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_1.out1
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_2.jarbin0 -> 879 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_2.java20
-rw-r--r--libjava/testsuite/libjava.lang/Invoke_2.out1
-rw-r--r--libjava/testsuite/libjava.lang/KeepInline.jarbin0 -> 875 bytes
-rw-r--r--libjava/testsuite/libjava.lang/KeepInline.java18
-rw-r--r--libjava/testsuite/libjava.lang/KeepInline.out2
-rw-r--r--libjava/testsuite/libjava.lang/LargeFile.jarbin0 -> 1081 bytes
-rw-r--r--libjava/testsuite/libjava.lang/LargeFile.java36
-rw-r--r--libjava/testsuite/libjava.lang/LargeFile.out1
-rw-r--r--libjava/testsuite/libjava.lang/MathBuiltin.jarbin0 -> 996 bytes
-rw-r--r--libjava/testsuite/libjava.lang/MathBuiltin.java91
-rw-r--r--libjava/testsuite/libjava.lang/MathBuiltin.out0
-rw-r--r--libjava/testsuite/libjava.lang/Matrix4f.jarbin0 -> 1511 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Matrix4f.java129
-rw-r--r--libjava/testsuite/libjava.lang/Matrix4f.out9
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_02.jarbin0 -> 856 bytes
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_02.java22
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_02.out1
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_3.jarbin0 -> 834 bytes
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_3.java24
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_3.out1
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_4.jarbin0 -> 720 bytes
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_4.java27
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_4.out1
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_5.jarbin0 -> 730 bytes
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_5.java29
-rw-r--r--libjava/testsuite/libjava.lang/N19990310_5.out1
-rw-r--r--libjava/testsuite/libjava.lang/Overflow.jarbin0 -> 677 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Overflow.java16
-rw-r--r--libjava/testsuite/libjava.lang/Overflow.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR12350.jarbin0 -> 1061 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR12350.java20
-rw-r--r--libjava/testsuite/libjava.lang/PR12350.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR12416.jarbin0 -> 1318 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR12416.java22
-rw-r--r--libjava/testsuite/libjava.lang/PR12416.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR12656.jarbin0 -> 928 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR12656.java11
-rw-r--r--libjava/testsuite/libjava.lang/PR12656.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR12915.jarbin0 -> 732 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR12915.java6
-rw-r--r--libjava/testsuite/libjava.lang/PR12915.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR141.jarbin0 -> 1142 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR141.java41
-rw-r--r--libjava/testsuite/libjava.lang/PR141.out8
-rw-r--r--libjava/testsuite/libjava.lang/PR160.jarbin0 -> 990 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR160.java34
-rw-r--r--libjava/testsuite/libjava.lang/PR160.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR162.jarbin0 -> 1818 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR162.java29
-rw-r--r--libjava/testsuite/libjava.lang/PR162.out4
-rw-r--r--libjava/testsuite/libjava.lang/PR16867.jarbin0 -> 714 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR16867.java17
-rw-r--r--libjava/testsuite/libjava.lang/PR16867.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR18699.jarbin0 -> 1127 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR18699.java36
-rw-r--r--libjava/testsuite/libjava.lang/PR18699.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR19870.jarbin0 -> 1944 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR19870.java44
-rw-r--r--libjava/testsuite/libjava.lang/PR19870.out8
-rw-r--r--libjava/testsuite/libjava.lang/PR19870_2.jarbin0 -> 1698 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR19870_2.java39
-rw-r--r--libjava/testsuite/libjava.lang/PR19870_2.out5
-rw-r--r--libjava/testsuite/libjava.lang/PR19921.jarbin0 -> 838 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR19921.java11
-rw-r--r--libjava/testsuite/libjava.lang/PR19921.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR20056.jarbin0 -> 719 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR20056.java13
-rw-r--r--libjava/testsuite/libjava.lang/PR20056.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR218.jarbin0 -> 764 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR218.java28
-rw-r--r--libjava/testsuite/libjava.lang/PR218.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR242.jarbin0 -> 1565 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR242.java36
-rw-r--r--libjava/testsuite/libjava.lang/PR242.out3
-rw-r--r--libjava/testsuite/libjava.lang/PR25535.jarbin0 -> 679 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR25535.java5
-rw-r--r--libjava/testsuite/libjava.lang/PR25535.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR260.jarbin0 -> 935 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR260.java15
-rw-r--r--libjava/testsuite/libjava.lang/PR260.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR26858.jarbin0 -> 38769 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR26858.java2075
-rw-r--r--libjava/testsuite/libjava.lang/PR26858.out2
-rw-r--r--libjava/testsuite/libjava.lang/PR27908.jarbin0 -> 2718 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR27908.java103
-rw-r--r--libjava/testsuite/libjava.lang/PR27908.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR29013.jarbin0 -> 649 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR29013.java9
-rw-r--r--libjava/testsuite/libjava.lang/PR29013.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR29495.jarbin0 -> 2261 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR29495.java56
-rw-r--r--libjava/testsuite/libjava.lang/PR29495.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR3096.jarbin0 -> 1089 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR3096.java36
-rw-r--r--libjava/testsuite/libjava.lang/PR3096.out10
-rw-r--r--libjava/testsuite/libjava.lang/PR31264.jarbin0 -> 844 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR31264.java28
-rw-r--r--libjava/testsuite/libjava.lang/PR31264.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR35020.jarbin0 -> 3559 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR35020.java30
-rw-r--r--libjava/testsuite/libjava.lang/PR35020.out9
-rw-r--r--libjava/testsuite/libjava.lang/PR36252.jarbin0 -> 959 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR36252.java16
-rw-r--r--libjava/testsuite/libjava.lang/PR36252.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR3731.jarbin0 -> 1047 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR3731.java14
-rw-r--r--libjava/testsuite/libjava.lang/PR3731.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR5057.jarbin0 -> 694 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR5057.java16
-rw-r--r--libjava/testsuite/libjava.lang/PR5057.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR5057_2.jarbin0 -> 995 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR5057_2.java19
-rw-r--r--libjava/testsuite/libjava.lang/PR5057_2.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR55.jarbin0 -> 814 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR55.java9
-rw-r--r--libjava/testsuite/libjava.lang/PR55.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR56.jarbin0 -> 598 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR56.java8
-rw-r--r--libjava/testsuite/libjava.lang/PR56.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR6085.jarbin0 -> 1898 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR6085.java35
-rw-r--r--libjava/testsuite/libjava.lang/PR6085.out2
-rw-r--r--libjava/testsuite/libjava.lang/PR6204.jarbin0 -> 1678 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR6204.java38
-rw-r--r--libjava/testsuite/libjava.lang/PR6204.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR6520.jarbin0 -> 749 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR6520.java13
-rw-r--r--libjava/testsuite/libjava.lang/PR6729.jarbin0 -> 883 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR6729.java13
-rw-r--r--libjava/testsuite/libjava.lang/PR6729.out1
-rw-r--r--libjava/testsuite/libjava.lang/PR6820.jarbin0 -> 865 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR6820.java15
-rw-r--r--libjava/testsuite/libjava.lang/PR6820.out2
-rw-r--r--libjava/testsuite/libjava.lang/PR7482.jarbin0 -> 2053 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR7482.java35
-rw-r--r--libjava/testsuite/libjava.lang/PR7482.out0
-rw-r--r--libjava/testsuite/libjava.lang/PR8866.jarbin0 -> 591 bytes
-rw-r--r--libjava/testsuite/libjava.lang/PR8866.java22
-rw-r--r--libjava/testsuite/libjava.lang/Process_1.jarbin0 -> 1117 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_1.java41
-rw-r--r--libjava/testsuite/libjava.lang/Process_1.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_2.jarbin0 -> 1203 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_2.java40
-rw-r--r--libjava/testsuite/libjava.lang/Process_2.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_3.jarbin0 -> 1485 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_3.java73
-rw-r--r--libjava/testsuite/libjava.lang/Process_3.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_4.jarbin0 -> 874 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_4.java20
-rw-r--r--libjava/testsuite/libjava.lang/Process_4.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_5.jarbin0 -> 1057 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_5.java43
-rw-r--r--libjava/testsuite/libjava.lang/Process_5.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_6.jarbin0 -> 865 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_6.java31
-rw-r--r--libjava/testsuite/libjava.lang/Process_6.out1
-rw-r--r--libjava/testsuite/libjava.lang/Process_7.jarbin0 -> 1618 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Process_7.java45
-rw-r--r--libjava/testsuite/libjava.lang/Process_7.out1
-rw-r--r--libjava/testsuite/libjava.lang/ProxyTest.jarbin0 -> 1919 bytes
-rw-r--r--libjava/testsuite/libjava.lang/ProxyTest.java37
-rw-r--r--libjava/testsuite/libjava.lang/ProxyTest.out4
-rw-r--r--libjava/testsuite/libjava.lang/RH194522.jarbin0 -> 874 bytes
-rw-r--r--libjava/testsuite/libjava.lang/RH194522.java18
-rw-r--r--libjava/testsuite/libjava.lang/RH194522.out0
-rw-r--r--libjava/testsuite/libjava.lang/Serialization.jarbin0 -> 1362 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Serialization.java32
-rw-r--r--libjava/testsuite/libjava.lang/Serialization.out3
-rw-r--r--libjava/testsuite/libjava.lang/Shazam.jarbin0 -> 733 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Shazam.java18
-rw-r--r--libjava/testsuite/libjava.lang/Shazam.out2
-rw-r--r--libjava/testsuite/libjava.lang/StackTrace2.jarbin0 -> 3165 bytes
-rw-r--r--libjava/testsuite/libjava.lang/StackTrace2.java77
-rw-r--r--libjava/testsuite/libjava.lang/StackTrace2.out5
-rw-r--r--libjava/testsuite/libjava.lang/StaticConstructor.jarbin0 -> 1162 bytes
-rw-r--r--libjava/testsuite/libjava.lang/StaticConstructor.java29
-rw-r--r--libjava/testsuite/libjava.lang/StaticConstructor.out1
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_1.jarbin0 -> 1351 bytes
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_1.java124
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_1.out19
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_overflow.jarbin0 -> 1610 bytes
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_overflow.java126
-rw-r--r--libjava/testsuite/libjava.lang/StringBuffer_overflow.out1
-rw-r--r--libjava/testsuite/libjava.lang/String_overflow.jarbin0 -> 1653 bytes
-rw-r--r--libjava/testsuite/libjava.lang/String_overflow.java140
-rw-r--r--libjava/testsuite/libjava.lang/String_overflow.out1
-rw-r--r--libjava/testsuite/libjava.lang/SyncGlobal.jarbin0 -> 1143 bytes
-rw-r--r--libjava/testsuite/libjava.lang/SyncGlobal.java24
-rw-r--r--libjava/testsuite/libjava.lang/SyncGlobal.out8
-rw-r--r--libjava/testsuite/libjava.lang/SyncTest.jarbin0 -> 1050 bytes
-rw-r--r--libjava/testsuite/libjava.lang/SyncTest.java34
-rw-r--r--libjava/testsuite/libjava.lang/SyncTest.out1
-rw-r--r--libjava/testsuite/libjava.lang/SyncTest.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Synch.jarbin0 -> 707 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Synch.java17
-rw-r--r--libjava/testsuite/libjava.lang/Synch.out1
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.jarbin0 -> 2204 bytes
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.java60
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.out2
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/TestProxy.jarbin0 -> 1410 bytes
-rw-r--r--libjava/testsuite/libjava.lang/TestProxy.java36
-rw-r--r--libjava/testsuite/libjava.lang/TestProxy.out1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Alive.jarbin0 -> 1098 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Alive.java46
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Alive.out5
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Alive.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_HoldsLock.jarbin0 -> 1187 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_HoldsLock.java27
-rw-r--r--libjava/testsuite/libjava.lang/Thread_HoldsLock.out3
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.jarbin0 -> 3972 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.java156
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.out8
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Join.jarbin0 -> 1890 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Join.java67
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Join.out12
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Join.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Monitor.jarbin0 -> 1750 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Monitor.java64
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Monitor.out1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Monitor.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep.jarbin0 -> 858 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep.java23
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep.out2
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep_2.jarbin0 -> 966 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep_2.java34
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep_2.out1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep_2.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait.jarbin0 -> 1096 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait.java48
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait.out4
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_2.jarbin0 -> 2131 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_2.java143
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_2.out20
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_2.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.jarbin0 -> 1968 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java75
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out5
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail1
-rw-r--r--libjava/testsuite/libjava.lang/Throw_1.jarbin0 -> 756 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Throw_1.java25
-rw-r--r--libjava/testsuite/libjava.lang/Throw_1.out0
-rw-r--r--libjava/testsuite/libjava.lang/Throw_2.jarbin0 -> 1011 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Throw_2.java59
-rw-r--r--libjava/testsuite/libjava.lang/Throw_2.out2
-rw-r--r--libjava/testsuite/libjava.lang/Throw_3.jarbin0 -> 947 bytes
-rw-r--r--libjava/testsuite/libjava.lang/Throw_3.java41
-rw-r--r--libjava/testsuite/libjava.lang/Throw_3.out1
-rw-r--r--libjava/testsuite/libjava.lang/WalkerTest.jarbin0 -> 1210 bytes
-rw-r--r--libjava/testsuite/libjava.lang/WalkerTest.java15
-rw-r--r--libjava/testsuite/libjava.lang/WalkerTest.out1
-rw-r--r--libjava/testsuite/libjava.lang/anfi.jarbin0 -> 1822 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anfi.java33
-rw-r--r--libjava/testsuite/libjava.lang/anfi.out3
-rw-r--r--libjava/testsuite/libjava.lang/anon.jarbin0 -> 2564 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anon.java52
-rw-r--r--libjava/testsuite/libjava.lang/anon.out5
-rw-r--r--libjava/testsuite/libjava.lang/anon2.jarbin0 -> 2361 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anon2.java50
-rw-r--r--libjava/testsuite/libjava.lang/anon2.out5
-rw-r--r--libjava/testsuite/libjava.lang/anon3.jarbin0 -> 1540 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anon3.java28
-rw-r--r--libjava/testsuite/libjava.lang/anon3.out2
-rw-r--r--libjava/testsuite/libjava.lang/anon4.jarbin0 -> 1631 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anon4.java30
-rw-r--r--libjava/testsuite/libjava.lang/anon4.out2
-rw-r--r--libjava/testsuite/libjava.lang/anon_ctor_itf_arg.jarbin0 -> 1962 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java38
-rw-r--r--libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out1
-rw-r--r--libjava/testsuite/libjava.lang/anonarray.jarbin0 -> 842 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anonarray.java22
-rw-r--r--libjava/testsuite/libjava.lang/anonarray.out4
-rw-r--r--libjava/testsuite/libjava.lang/anonarray2.jarbin0 -> 921 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anonarray2.java22
-rw-r--r--libjava/testsuite/libjava.lang/anonarray2.out4
-rw-r--r--libjava/testsuite/libjava.lang/anonarray3.jarbin0 -> 704 bytes
-rw-r--r--libjava/testsuite/libjava.lang/anonarray3.java13
-rw-r--r--libjava/testsuite/libjava.lang/anonarray3.out1
-rw-r--r--libjava/testsuite/libjava.lang/assign.jarbin0 -> 1261 bytes
-rw-r--r--libjava/testsuite/libjava.lang/assign.java19
-rw-r--r--libjava/testsuite/libjava.lang/assign.out0
-rw-r--r--libjava/testsuite/libjava.lang/assign2.jarbin0 -> 801 bytes
-rw-r--r--libjava/testsuite/libjava.lang/assign2.java21
-rw-r--r--libjava/testsuite/libjava.lang/assign2.out1
-rw-r--r--libjava/testsuite/libjava.lang/bclink.jarbin0 -> 640 bytes
-rw-r--r--libjava/testsuite/libjava.lang/bclink.java12
-rw-r--r--libjava/testsuite/libjava.lang/bclink.out0
-rw-r--r--libjava/testsuite/libjava.lang/bytearray.jarbin0 -> 829 bytes
-rw-r--r--libjava/testsuite/libjava.lang/bytearray.java10
-rw-r--r--libjava/testsuite/libjava.lang/bytearray.out2
-rw-r--r--libjava/testsuite/libjava.lang/direct_read.jarbin0 -> 1455 bytes
-rw-r--r--libjava/testsuite/libjava.lang/direct_read.java27
-rw-r--r--libjava/testsuite/libjava.lang/direct_read.out2
-rw-r--r--libjava/testsuite/libjava.lang/direct_write.jarbin0 -> 1391 bytes
-rw-r--r--libjava/testsuite/libjava.lang/direct_write.java27
-rw-r--r--libjava/testsuite/libjava.lang/direct_write.out2
-rw-r--r--libjava/testsuite/libjava.lang/emptystring.jarbin0 -> 883 bytes
-rw-r--r--libjava/testsuite/libjava.lang/emptystring.java15
-rw-r--r--libjava/testsuite/libjava.lang/emptystring.out4
-rw-r--r--libjava/testsuite/libjava.lang/err1.jarbin0 -> 1114 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err1.java25
-rw-r--r--libjava/testsuite/libjava.lang/err1.out1
-rw-r--r--libjava/testsuite/libjava.lang/err10.jarbin0 -> 819 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err10.java23
-rw-r--r--libjava/testsuite/libjava.lang/err10.out1
-rw-r--r--libjava/testsuite/libjava.lang/err11.jarbin0 -> 744 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err11.java30
-rw-r--r--libjava/testsuite/libjava.lang/err11.out1
-rw-r--r--libjava/testsuite/libjava.lang/err12.jarbin0 -> 862 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err12.java27
-rw-r--r--libjava/testsuite/libjava.lang/err12.out1
-rw-r--r--libjava/testsuite/libjava.lang/err13.jarbin0 -> 864 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err13.java21
-rw-r--r--libjava/testsuite/libjava.lang/err13.out1
-rw-r--r--libjava/testsuite/libjava.lang/err14.jarbin0 -> 764 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err14.java20
-rw-r--r--libjava/testsuite/libjava.lang/err14.out2
-rw-r--r--libjava/testsuite/libjava.lang/err2.jarbin0 -> 775 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err2.java28
-rw-r--r--libjava/testsuite/libjava.lang/err2.out1
-rw-r--r--libjava/testsuite/libjava.lang/err3.jarbin0 -> 856 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err3.java34
-rw-r--r--libjava/testsuite/libjava.lang/err3.out2
-rw-r--r--libjava/testsuite/libjava.lang/err4.jarbin0 -> 872 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err4.java34
-rw-r--r--libjava/testsuite/libjava.lang/err4.out2
-rw-r--r--libjava/testsuite/libjava.lang/err5.jarbin0 -> 905 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err5.java35
-rw-r--r--libjava/testsuite/libjava.lang/err5.out1
-rw-r--r--libjava/testsuite/libjava.lang/err6.jarbin0 -> 845 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err6.java26
-rw-r--r--libjava/testsuite/libjava.lang/err6.out1
-rw-r--r--libjava/testsuite/libjava.lang/err7.jarbin0 -> 691 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err7.java23
-rw-r--r--libjava/testsuite/libjava.lang/err7.out1
-rw-r--r--libjava/testsuite/libjava.lang/err8.jarbin0 -> 652 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err8.java23
-rw-r--r--libjava/testsuite/libjava.lang/err8.out1
-rw-r--r--libjava/testsuite/libjava.lang/err9.jarbin0 -> 831 bytes
-rw-r--r--libjava/testsuite/libjava.lang/err9.java32
-rw-r--r--libjava/testsuite/libjava.lang/err9.out1
-rw-r--r--libjava/testsuite/libjava.lang/final_inner.jarbin0 -> 1488 bytes
-rw-r--r--libjava/testsuite/libjava.lang/final_inner.java19
-rw-r--r--libjava/testsuite/libjava.lang/final_inner.out2
-rw-r--r--libjava/testsuite/libjava.lang/final_int.jarbin0 -> 1251 bytes
-rw-r--r--libjava/testsuite/libjava.lang/final_int.java22
-rw-r--r--libjava/testsuite/libjava.lang/final_int.out2
-rw-r--r--libjava/testsuite/libjava.lang/final_static_and_friend.jarbin0 -> 848 bytes
-rw-r--r--libjava/testsuite/libjava.lang/final_static_and_friend.java17
-rw-r--r--libjava/testsuite/libjava.lang/final_static_and_friend.out1
-rw-r--r--libjava/testsuite/libjava.lang/indirect.jarbin0 -> 2658 bytes
-rw-r--r--libjava/testsuite/libjava.lang/indirect.java33
-rw-r--r--libjava/testsuite/libjava.lang/indirect.out3
-rw-r--r--libjava/testsuite/libjava.lang/indirect_read.jarbin0 -> 2044 bytes
-rw-r--r--libjava/testsuite/libjava.lang/indirect_read.java33
-rw-r--r--libjava/testsuite/libjava.lang/indirect_read.out2
-rw-r--r--libjava/testsuite/libjava.lang/indirect_write.jarbin0 -> 1976 bytes
-rw-r--r--libjava/testsuite/libjava.lang/indirect_write.java32
-rw-r--r--libjava/testsuite/libjava.lang/indirect_write.out2
-rw-r--r--libjava/testsuite/libjava.lang/initexc.jarbin0 -> 1183 bytes
-rw-r--r--libjava/testsuite/libjava.lang/initexc.java37
-rw-r--r--libjava/testsuite/libjava.lang/initexc.out0
-rw-r--r--libjava/testsuite/libjava.lang/initfield.jarbin0 -> 1311 bytes
-rw-r--r--libjava/testsuite/libjava.lang/initfield.java20
-rw-r--r--libjava/testsuite/libjava.lang/initfield.out1
-rw-r--r--libjava/testsuite/libjava.lang/inline.jarbin0 -> 823 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inline.java35
-rw-r--r--libjava/testsuite/libjava.lang/inline.out2
-rw-r--r--libjava/testsuite/libjava.lang/inner1.jarbin0 -> 1973 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner1.java36
-rw-r--r--libjava/testsuite/libjava.lang/inner1.out2
-rw-r--r--libjava/testsuite/libjava.lang/inner2.jarbin0 -> 776 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner2.java18
-rw-r--r--libjava/testsuite/libjava.lang/inner2.out2
-rw-r--r--libjava/testsuite/libjava.lang/inner3.jarbin0 -> 1284 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner3.java23
-rw-r--r--libjava/testsuite/libjava.lang/inner3.out2
-rw-r--r--libjava/testsuite/libjava.lang/inner4.jarbin0 -> 1633 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner4.java34
-rw-r--r--libjava/testsuite/libjava.lang/inner4.out4
-rw-r--r--libjava/testsuite/libjava.lang/inner_array.jarbin0 -> 1602 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner_array.java30
-rw-r--r--libjava/testsuite/libjava.lang/inner_array.out3
-rw-r--r--libjava/testsuite/libjava.lang/inner_interface.jarbin0 -> 1644 bytes
-rw-r--r--libjava/testsuite/libjava.lang/inner_interface.java27
-rw-r--r--libjava/testsuite/libjava.lang/inner_interface.out2
-rw-r--r--libjava/testsuite/libjava.lang/instance.jarbin0 -> 942 bytes
-rw-r--r--libjava/testsuite/libjava.lang/instance.java48
-rw-r--r--libjava/testsuite/libjava.lang/instance.out21
-rw-r--r--libjava/testsuite/libjava.lang/instinit.jarbin0 -> 766 bytes
-rw-r--r--libjava/testsuite/libjava.lang/instinit.java22
-rw-r--r--libjava/testsuite/libjava.lang/instinit.out3
-rw-r--r--libjava/testsuite/libjava.lang/instinit2.jarbin0 -> 889 bytes
-rw-r--r--libjava/testsuite/libjava.lang/instinit2.java31
-rw-r--r--libjava/testsuite/libjava.lang/instinit2.out3
-rw-r--r--libjava/testsuite/libjava.lang/invoke_from_inner.jarbin0 -> 2208 bytes
-rw-r--r--libjava/testsuite/libjava.lang/invoke_from_inner.java37
-rw-r--r--libjava/testsuite/libjava.lang/invoke_from_inner.out2
-rw-r--r--libjava/testsuite/libjava.lang/invokethrow.jarbin0 -> 985 bytes
-rw-r--r--libjava/testsuite/libjava.lang/invokethrow.java35
-rw-r--r--libjava/testsuite/libjava.lang/invokethrow.out1
-rw-r--r--libjava/testsuite/libjava.lang/klass.jarbin0 -> 771 bytes
-rw-r--r--libjava/testsuite/libjava.lang/klass.java10
-rw-r--r--libjava/testsuite/libjava.lang/klass.out1
-rw-r--r--libjava/testsuite/libjava.lang/lang.exp35
-rw-r--r--libjava/testsuite/libjava.lang/md5test.jarbin0 -> 1649 bytes
-rw-r--r--libjava/testsuite/libjava.lang/md5test.java63
-rw-r--r--libjava/testsuite/libjava.lang/md5test.out12
-rw-r--r--libjava/testsuite/libjava.lang/multiple_finit.jarbin0 -> 1447 bytes
-rw-r--r--libjava/testsuite/libjava.lang/multiple_finit.java28
-rw-r--r--libjava/testsuite/libjava.lang/multiple_finit.out4
-rw-r--r--libjava/testsuite/libjava.lang/negzero.jarbin0 -> 680 bytes
-rw-r--r--libjava/testsuite/libjava.lang/negzero.java8
-rw-r--r--libjava/testsuite/libjava.lang/negzero.out2
-rw-r--r--libjava/testsuite/libjava.lang/nested_with_ctor.jarbin0 -> 1541 bytes
-rw-r--r--libjava/testsuite/libjava.lang/nested_with_ctor.java27
-rw-r--r--libjava/testsuite/libjava.lang/nested_with_ctor.out3
-rw-r--r--libjava/testsuite/libjava.lang/newarray_overflow.jarbin0 -> 1157 bytes
-rw-r--r--libjava/testsuite/libjava.lang/newarray_overflow.java88
-rw-r--r--libjava/testsuite/libjava.lang/newarray_overflow.out1
-rw-r--r--libjava/testsuite/libjava.lang/override.jarbin0 -> 1013 bytes
-rw-r--r--libjava/testsuite/libjava.lang/override.java19
-rw-r--r--libjava/testsuite/libjava.lang/override.out2
-rw-r--r--libjava/testsuite/libjava.lang/pr100.jarbin0 -> 709 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr100.java13
-rw-r--r--libjava/testsuite/libjava.lang/pr100.xpo2
-rw-r--r--libjava/testsuite/libjava.lang/pr109.jarbin0 -> 717 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr109.java29
-rw-r--r--libjava/testsuite/libjava.lang/pr109.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr13107.jarbin0 -> 788 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr13107.java25
-rw-r--r--libjava/testsuite/libjava.lang/pr13107.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_2.jarbin0 -> 666 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_2.java19
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_2.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_3.jarbin0 -> 717 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_3.java16
-rw-r--r--libjava/testsuite/libjava.lang/pr13107_3.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr133.jarbin0 -> 946 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr133.java34
-rw-r--r--libjava/testsuite/libjava.lang/pr133.out3
-rw-r--r--libjava/testsuite/libjava.lang/pr16789.jarbin0 -> 751 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr16789.java15
-rw-r--r--libjava/testsuite/libjava.lang/pr16789.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr17536.jarbin0 -> 703 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr17536.java5
-rw-r--r--libjava/testsuite/libjava.lang/pr17536.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr179.jarbin0 -> 2260 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr179.java49
-rw-r--r--libjava/testsuite/libjava.lang/pr179.out7
-rw-r--r--libjava/testsuite/libjava.lang/pr184.jarbin0 -> 757 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr184.java22
-rw-r--r--libjava/testsuite/libjava.lang/pr184.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr21785.jarbin0 -> 896 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr21785.java21
-rw-r--r--libjava/testsuite/libjava.lang/pr21785.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr21844.jarbin0 -> 1500 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr21844.java33
-rw-r--r--libjava/testsuite/libjava.lang/pr21844.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr22211.jarbin0 -> 625 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr22211.java8
-rw-r--r--libjava/testsuite/libjava.lang/pr24321.jarbin0 -> 1602 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr24321.java21
-rw-r--r--libjava/testsuite/libjava.lang/pr24321.out2
-rw-r--r--libjava/testsuite/libjava.lang/pr25676.jarbin0 -> 728 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr25676.java12
-rw-r--r--libjava/testsuite/libjava.lang/pr25676.out2
-rw-r--r--libjava/testsuite/libjava.lang/pr26390.jarbin0 -> 3388 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr26390.java45
-rw-r--r--libjava/testsuite/libjava.lang/pr26390.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr26990.jarbin0 -> 1125 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr26990.java13
-rw-r--r--libjava/testsuite/libjava.lang/pr26990.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr27171.jarbin0 -> 802 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr27171.java19
-rw-r--r--libjava/testsuite/libjava.lang/pr27171.out2
-rw-r--r--libjava/testsuite/libjava.lang/pr6388.jarbin0 -> 682 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr6388.java10
-rw-r--r--libjava/testsuite/libjava.lang/pr6388.out4
-rw-r--r--libjava/testsuite/libjava.lang/pr83.jarbin0 -> 928 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr83.java39
-rw-r--r--libjava/testsuite/libjava.lang/pr83.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr8415.jarbin0 -> 811 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr8415.java15
-rw-r--r--libjava/testsuite/libjava.lang/pr8415.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr8676.jarbin0 -> 593 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr8676.java11
-rw-r--r--libjava/testsuite/libjava.lang/pr8676.out0
-rw-r--r--libjava/testsuite/libjava.lang/pr8823.jarbin0 -> 1148 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr8823.java24
-rw-r--r--libjava/testsuite/libjava.lang/pr8823.out1
-rw-r--r--libjava/testsuite/libjava.lang/pr8945.jarbin0 -> 708 bytes
-rw-r--r--libjava/testsuite/libjava.lang/pr8945.java9
-rw-r--r--libjava/testsuite/libjava.lang/pr8945.out1
-rw-r--r--libjava/testsuite/libjava.lang/private_direct_read.jarbin0 -> 1556 bytes
-rw-r--r--libjava/testsuite/libjava.lang/private_direct_read.java26
-rw-r--r--libjava/testsuite/libjava.lang/private_direct_read.out2
-rw-r--r--libjava/testsuite/libjava.lang/private_direct_write.jarbin0 -> 1489 bytes
-rw-r--r--libjava/testsuite/libjava.lang/private_direct_write.java25
-rw-r--r--libjava/testsuite/libjava.lang/private_indirect_read.jarbin0 -> 2183 bytes
-rw-r--r--libjava/testsuite/libjava.lang/private_indirect_read.java32
-rw-r--r--libjava/testsuite/libjava.lang/private_indirect_write.jarbin0 -> 2121 bytes
-rw-r--r--libjava/testsuite/libjava.lang/private_indirect_write.java32
-rw-r--r--libjava/testsuite/libjava.lang/search_outer.jarbin0 -> 1558 bytes
-rw-r--r--libjava/testsuite/libjava.lang/search_outer.java28
-rw-r--r--libjava/testsuite/libjava.lang/search_outer.out3
-rw-r--r--libjava/testsuite/libjava.lang/shatest.jarbin0 -> 1274 bytes
-rw-r--r--libjava/testsuite/libjava.lang/shatest.java39
-rw-r--r--libjava/testsuite/libjava.lang/shatest.out2
-rw-r--r--libjava/testsuite/libjava.lang/stacktrace.jarbin0 -> 2079 bytes
-rw-r--r--libjava/testsuite/libjava.lang/stacktrace.java67
-rw-r--r--libjava/testsuite/libjava.lang/stacktrace.out6
-rw-r--r--libjava/testsuite/libjava.lang/stringconst.jarbin0 -> 1175 bytes
-rw-r--r--libjava/testsuite/libjava.lang/stringconst.java22
-rw-r--r--libjava/testsuite/libjava.lang/stringconst.out1
-rw-r--r--libjava/testsuite/libjava.lang/stringconst2.jarbin0 -> 877 bytes
-rw-r--r--libjava/testsuite/libjava.lang/stringconst2.java22
-rw-r--r--libjava/testsuite/libjava.lang/stringconst2.out1
-rw-r--r--libjava/testsuite/libjava.lang/stub.jarbin0 -> 3099 bytes
-rw-r--r--libjava/testsuite/libjava.lang/stub.java101
-rw-r--r--libjava/testsuite/libjava.lang/stub.out33
-rw-r--r--libjava/testsuite/libjava.lang/test_long.jarbin0 -> 883 bytes
-rw-r--r--libjava/testsuite/libjava.lang/test_long.java13
-rw-r--r--libjava/testsuite/libjava.lang/test_long.out1
-rw-r--r--libjava/testsuite/libjava.lang/tmi.jarbin0 -> 2020 bytes
-rw-r--r--libjava/testsuite/libjava.lang/tmi.java43
-rw-r--r--libjava/testsuite/libjava.lang/tmi.out5
-rw-r--r--libjava/testsuite/libjava.lang/tp.jarbin0 -> 2089 bytes
-rw-r--r--libjava/testsuite/libjava.lang/tp.java36
-rw-r--r--libjava/testsuite/libjava.lang/tp.out2
-rw-r--r--libjava/testsuite/libjava.lang/update_outer.jarbin0 -> 1619 bytes
-rw-r--r--libjava/testsuite/libjava.lang/update_outer.java28
-rw-r--r--libjava/testsuite/libjava.lang/update_outer.out2
-rw-r--r--libjava/testsuite/libjava.lang/utf8concat.jarbin0 -> 622 bytes
-rw-r--r--libjava/testsuite/libjava.lang/utf8concat.java11
-rw-r--r--libjava/testsuite/libjava.lang/utf8concat.out0
-rw-r--r--libjava/testsuite/libjava.lang/utilTest.jarbin0 -> 1471 bytes
-rw-r--r--libjava/testsuite/libjava.lang/utilTest.java58
-rw-r--r--libjava/testsuite/libjava.lang/utilTest.out3
-rw-r--r--libjava/testsuite/libjava.lang/verify.jarbin0 -> 1338 bytes
-rw-r--r--libjava/testsuite/libjava.lang/verify.java20
-rw-r--r--libjava/testsuite/libjava.lang/verify.out0
-rw-r--r--libjava/testsuite/libjava.loader/MyLoader.java14
-rw-r--r--libjava/testsuite/libjava.loader/TestEarlyGC.jarbin0 -> 2452 bytes
-rw-r--r--libjava/testsuite/libjava.loader/TestEarlyGC.java64
-rw-r--r--libjava/testsuite/libjava.loader/TestEarlyGC.out0
-rw-r--r--libjava/testsuite/libjava.loader/TestLeak.jarbin0 -> 1571 bytes
-rw-r--r--libjava/testsuite/libjava.loader/TestLeak.java33
-rw-r--r--libjava/testsuite/libjava.loader/TestLeak.out0
-rw-r--r--libjava/testsuite/libjava.loader/TestMultiple.jarbin0 -> 1165 bytes
-rw-r--r--libjava/testsuite/libjava.loader/TestMultiple.java28
-rw-r--r--libjava/testsuite/libjava.loader/TestMultiple.out0
-rw-r--r--libjava/testsuite/libjava.loader/TestParent.jarbin0 -> 1182 bytes
-rw-r--r--libjava/testsuite/libjava.loader/TestParent.java29
-rw-r--r--libjava/testsuite/libjava.loader/TestParent.out0
-rw-r--r--libjava/testsuite/libjava.loader/dummy.classbin0 -> 184 bytes
-rw-r--r--libjava/testsuite/libjava.loader/dummy.java6
-rw-r--r--libjava/testsuite/libjava.loader/loader.exp77
-rw-r--r--libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java31
-rw-r--r--libjava/testsuite/libjava.mauve/mauve.exp446
-rw-r--r--libjava/testsuite/libjava.mauve/xfails461
-rw-r--r--libjava/testsuite/libjava.special/pr21115.java34
-rw-r--r--libjava/testsuite/libjava.special/pr21115.out0
-rw-r--r--libjava/testsuite/libjava.special/pr21115I.java20
-rw-r--r--libjava/testsuite/libjava.special/special.exp108
-rw-r--r--libjava/testsuite/libjava.verify/README.verify10
-rw-r--r--libjava/testsuite/libjava.verify/verify.exp83
863 files changed, 20430 insertions, 0 deletions
diff --git a/libjava/testsuite/ChangeLog-old b/libjava/testsuite/ChangeLog-old
new file mode 100644
index 000000000..19584b59b
--- /dev/null
+++ b/libjava/testsuite/ChangeLog-old
@@ -0,0 +1,2153 @@
+2004-06-08 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR java/15769
+ * libjava.compile/PR15769.java: New test.
+
+2004-01-12 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * lib/libjava.exp: Add LD_LIBRARY_PATH_32/64 to get proper
+ path setting for Ssolaris 32/64-bit testing.
+ Reorganize LD_LIBRARY_PATH setting.
+
+2004-01-09 Andrew Haley <aph@redhat.com>
+
+ * lib/libjava.exp (bytecompile_file): Log compile command.
+
+2004-01-07 Andreas Tobler <a.tobler@schweiz.ch>
+
+ PR libgcj/13011:
+ * libjava.jar/simple.jar: Add a working MANIFEST.MF.
+
+2003-12-03 Ralph Loader <rcl@ihug.co.nz>
+
+ PR java/12374:
+ * libjava.compile/PR12374.java: New file.
+
+2003-12-01 Jeff Sturm <jsturm@one-point.com>
+
+ PR optimization/13024
+ * libjava.compile/PR13024.java: New file.
+
+ PR java/13237
+ * libjava.compile/PR13237.java: New file.
+
+2003-11-18 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * libjava.jar/jar.exp: Cleanup files and reset CLASSPATH.
+
+2003-11-17 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.compile/PR12857.java: New test case.
+
+2003-11-14 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jar/simple.jar: Replaced.
+
+2003-11-13 Tom Fitzsimmons <fitzsim@redhat.com>
+
+ * libjava.jni/jniutf.c: New file.
+ * libjava.jni/jniutf.java: New file.
+ * libjava.jni/jniutf.out: New file.
+
+2003-11-11 Tom Tromey <tromey@redhat.com>
+
+ For PR java/12915:
+ * libjava.lang/PR12915.java: New file.
+ * libjava.lang/PR12915.out: New file.
+
+ * libjava.jacks/jacks.exp (gcj_jacks_write): Enable "assert"
+ constraint.
+ * libjava.jacks/jacks.xfail: Added new xfails.
+
+2003-11-10 Tom Tromey <tromey@redhat.com>
+
+ For PR java/12996:
+ * libjava.jar/simple.jar: New file.
+ * libjava.jar/simple.xfail: New file.
+ * libjava.jar/simple.out: New file.
+ * libjava.jar/simple.java: New file.
+ * libjava.jar/jar.exp: New file.
+
+2003-11-08 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated.
+
+2003-11-03 Jeff Sturm <jsturm@one-point.com>
+
+ PR java/12866:
+ * libjava.compile/InnerExcept.java: New File.
+
+2003-10-22 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/12416:
+ * libjava.lang/PR12416.out: New file.
+ * libjava.lang/PR12416.java: New file.
+
+ PR libgcj/12656:
+ * libjava.lang/PR12656.java: New file.
+ * libjava.lang/PR12656.out: New file.
+
+2003-10-21 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (find_javac): Use -Wno-unreachable-bytecode.
+
+2003-10-08 Tom Tromey <tromey@redhat.com>
+
+ * libjava.mauve/xfails: Removed some tests.
+
+2003-09-27 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated for new passes.
+
+2003-09-21 Ralph Loader <suckfish@ihug.co.nz>
+
+ PR java/12350
+ * libjava.lang/PR12350.java: New file.
+ * libjava.lang/PR12350.out: New file.
+
+2003-09-17 Ranjit Mathew <rmathew@hotmail.com>
+
+ PR java/9577
+ * libjava.cni/PR9577.java: New file.
+ * libjava.cni/natPR9577.cc: New file.
+ * libjava.cni/PR9577.out: New file.
+
+2003-09-04 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.compile/compile.exp: Test with -O3 rather than -O.
+ * libjava.lang/lang.exp: Likewise.
+
+2003-09-04 Jeff Sturm <jsturm@one-point.com>
+
+ * lib/libjava.exp (libjava_arguments): Remove unneeded variables.
+ (test_libjava_from_source): Likewise.
+ (test_libjava_from_javac): Likewise.
+
+2003-08-23 Andreas Tobler <a.tobler@schweiz.ch>
+
+ PR libgcj/8823
+ * libjava.lang/pr8823.xfail: Removed.
+
+2003-08-19 Jeff Sturm <jsturm@one-point.com>
+
+ * lib/libjava.exp (libjava_arguments): Add $libjava to the list of
+ libraries.
+
+2003-08-18 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/11951:
+ * libjava.jni/pr11951.c: New file.
+ * libjava.jni/pr11951.out: New file.
+ * libjava.jni/pr11951.java: New file.
+
+2003-08-12 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated to account for new passes.
+ * libjava.compile/abstr.xfail: Now can compile from bytecode.
+ * libjava.compile/PR5641.xfail: Now can compile from bytecode.
+
+ * libjava.mauve/mauve.exp (test_mauve_sim): Don't find
+ DejaGNUTestHarness in gnu/testlet.
+ (test_mauve): Use correct object extension.
+
+2003-08-12 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (libjava_find_lib): Search for .so file first.
+ (libjava_arguments): Don't add libraries to link line explictly.
+
+2003-08-05 Tom Tromey <tromey@redhat.com>
+
+ For PR java/11600:
+ * libjava.compile/PR11600.xfail: New file.
+ * libjava.compile/PR11600.java: New file.
+
+2003-08-04 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.exp (gcj_jacks_run): Just ignore errors
+ from jacks.
+
+2003-07-24 Tom Tromey <tromey@redhat.com>
+
+ For PR libgcj/7482:
+ * libjava.lang/PR7482.java: New file.
+ * libjava.lang/PR7482.out: New file.
+
+2003-07-20 Tom Tromey <tromey@redhat.com>
+
+ * libjava.mauve/mauve.exp (mauve_find_harness_files): New proc.
+ (test_mauve): Use it.
+ (test_mauve_sim): Likewise.
+
+2003-07-19 Tom Tromey <tromey@redhat.com>
+
+ * libjava.verify/verify.exp (gcj_verify_list_tests): Only change
+ directory if new directory exists.
+
+2003-07-13 Tom Tromey <tromey@redhat.com>
+
+ * libjava.verify/verify.exp: Fixed variable init.
+
+2003-07-10 Tom Tromey <tromey@redhat.com>
+
+ * libjava.verify/verify.exp: New file.
+ * libjava.verify/README.verify: New file.
+
+2003-07-09 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/SyncTest.java (run): Cache .class value.
+
+2003-06-08 Roger Sayle <roger@eyesopen.com>
+
+ * libjava.lang/MathBuiltin.java: New test case.
+ * libjava.lang/MathBuiltin.out: New file.
+
+2003-06-05 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/mauve.exp (test_mauve): Add -wno-deprecated to GCJ.
+
+ PR libgcj/6181:
+ * libjava.mauve/xfails: Remove getBeanInfo() failures.
+
+ PR libgcj/6293:
+ * libjava.mauve/xfails: Remove PipedStream.close() failure.
+
+2003-05-31 Roger Sayle <roger@eyesopen.com>
+
+ * libjava.lang/Overflow.java: New test.
+ * libjava.lang/Overflow.out: New file.
+
+2003-05-06 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/verify.java: New file.
+ * libjava.lang/verify.out: New file.
+
+2003-05-01 Tom Tromey <tromey@redhat.com>
+
+ PR java/10459:
+ * libjava.compile/pr10459_2.java: New file.
+ * libjava.compile/pr10459.java: New file.
+
+2003-04-30 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/10582:
+ * libjava.lang/assign.java: New file.
+ * libjava.lang/assign.out: New file.
+
+2003-04-16 Mark Mitchell <mark@codesourcery.com>
+
+ PR middle-end/8866
+ * libjava.lang/PR8866.java: New test.
+
+2003-04-16 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/Throw_2.java (main): Make a successful test produce
+ some output.
+
+2003-03-22 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * libjava.jni/jni.exp: Add compilation/link fix dor darwin dylibs.
+
+2003-03-22 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (gcj_invoke): Moved...
+ * libjava.jni/jni.exp: ...from here.
+
+ * libjava.cni/shortfield.out: New file.
+ * libjava.cni/shortfield.java: New file.
+ * libjava.cni/natshortfield.cc: New file.
+ * libjava.cni/natlongfield.cc: New file.
+ * libjava.cni/longfield.out: New file.
+ * libjava.cni/longfield.java: New file.
+
+ * libjava.cni/cni.exp: New file.
+
+2003-03-11 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/initfield.java: New file.
+ * libjava.lang/initfield.out: New file.
+
+2003-03-08 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/initfield.java: New file.
+ * libjava.lang/initfield.out: New file.
+
+2003-03-10 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated to reflect reality.
+
+2003-03-02 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Remove all AcuniaPropertiesTest failures
+
+2003-02-23 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Most 4.7.10 tests pass now.
+
+2003-02-16 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/CompareNaN.java: New test.
+ * libjava.lang/CompareNaN.out: New test.
+
+2003-02-16 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Add Class.reflect2 and String.getBytes FAILs.
+
+2003-02-15 Mark Wielaard <mark@klomp.org>
+
+ * lib/libjava.exp (test_libjava_from_javac): Use regsub not string map.
+ * libjava.mauve/mauve.exp (mauve_compute_uses): Likewise.
+ (test_mauve): Likewise.
+
+2003-02-14 Mark Wielaard <mark@klomp.org>
+
+ * lib/libjava.exp (test_libjava_from_javac): Don't create .o files
+ containing $ characters and always quote class files with "'"s.
+
+2003-02-14 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/mauve.exp (mauve_compute_uses): Add inner class
+ object files by changing all occurances of $ to ^.
+ (test_mauve): Replace ^ with $ for class file names and quote
+ them with "'"s.
+
+2003-02-13 Tom Tromey <tromey@redhat.com>
+
+ * libjava.mauve/xfails: Added entries for an unimplemented Class
+ method.
+
+2003-02-07 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Add new entries for
+ gnu.testlet.java.text.CollationElementIterator.jdk11
+
+2003-02-03 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * libjava.jacks/jacks.exp (gcj_jacks_write): Set LD_LIBRARY_PATH
+ to find libgcc_s. Set JAVA_CLASSPATH to find libgcj.jar.
+
+2003-01-31 Mark Wielaard <mark@klomp.org>
+
+ * lib/libjava.exp (libjava_prune_warnings): Remove all unreachable
+ bytecode warnings.
+
+2003-01-28 Tom Tromey <tromey@redhat.com>
+
+ * libjava.loader/TestEarlyGC.java: Added comment explaining
+ bytecode.
+
+ * libjava.jacks/jacks.xfail: More lexer tests now pass.
+
+2003-01-27 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/consthrow.java: New file.
+ * libjava.compile/consthrow.xfail: New file.
+
+2003-01-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * libjava.lang/pr8823.xfail: New file, add "xfail-byte".
+
+2003-01-24 Ranjit Mathew <rmathew@hotmail.com>
+
+ * libjava.jni/calls.c (Java_calls_docall): Define with
+ JNIEXPORT and JNICALL method attributes.
+ * libjava.jni/field.c (Java_field_fetch): Likewise.
+ * libjava.jni/final_method.c (Java_final_1method_meth): Likewise.
+ * libjava.jni/findclass.c (Java_findclass_doit): Likewise.
+ * libjava.jni/invoke.c (Java_invoke_val): Likewise.
+ * libjava.jni/martin.c (Java_martin_myNative): Likewise.
+ * libjava.jni/noclass.c (Java_noclass_find_1it): Likewise.
+ * libjava.jni/overload.c (Java_overload_over__I): Likewise.
+ (Java_overload_over__II): Likewise.
+ * libjava.jni/register.c (JNI_OnLoad): Likewise.
+ * libjava.jni/simple_int.c (Java_simple_1int_nat): Likewise.
+ * libjava.jni/throwit.c (Java_throwit_throwit): Likewise.
+ * libjava.jni/virtual.c (Java_virtual_equals): Likewise.
+
+2003-01-21 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: All 8.4.3 tests and 9.4-modifier-10
+ now pass.
+
+2003-01-12 Tom Tromey <tromey@redhat.com>
+
+ Fix for PR libgcj/9139:
+ * lib/libjava.exp (find_javac): Put value of libgcj_jar into
+ return value when gcj is used.
+ * libjava.mauve/mauve.exp (test_mauve): Use libgcj_jar global.
+
+2003-01-03 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/pr8712.java: New file, for PR java/8712.
+
+2003-01-01 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/pr8955.java: New test, for PR java/8955.
+
+2002-12-19 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated.
+
+2002-12-18 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/pr8945.java: New file.
+ * libjava.lang/pr8945.out: New file.
+
+2002-12-12 Tom Tromey <tromey@redhat.com>
+
+ * libjava.loader/loader.exp (gcj_loader_test_one): Use
+ libjava_prune_warnings.
+ (gcj_loader_run): Likewise.
+ * libjava.mauve/mauve.exp (test_mauve): Use
+ libjava_prune_warnings.
+ (test_mauve_sim): Likewise.
+ * libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Use
+ libjava_prune_warnings.
+ (gcj_jni_build_header): Likewise.
+ * lib/libjava.exp (libjava_prune_warnings): New proc.
+ (gcj_link): Use it.
+ (test_libjava_from_source): Likewise.
+ (test_libjava_from_javac): Likewise.
+
+2002-12-08 Tom Tromey <tromey@redhat.com>
+
+ Test for PR libgcj/8823:
+ * libjava.lang/pr8823.java: New file.
+ * libjava.lang/pr8823.out: New file.
+
+2002-12-05 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/override.java: New file.
+ * libjava.lang/override.out: New file.
+
+2002-12-01 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.exp (gcj_jacks_setup_xfail): New function.
+ (gcj_jacks_parse): Use it; set up xfails.
+ * libjava.jacks/jacks.xfail: New file.
+
+2002-12-01 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Remove Inspector FAILs that now PASS.
+
+2002-11-21 Tom Tromey <tromey@redhat.com>
+
+ For PR java/8676:
+ * libjava.lang/pr8676.java: New file.
+ * libjava.lang/pr8676.out: New file.
+
+2002-11-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * libjava.loader/loader.exp (gcj_loader_test_one): Fix typo in
+ 'type' argument to libjava_tcompile.
+ (gcj_loader_run): Use libjava_tcompile instead of running
+ GCJ_UNDER_TEST directly.
+
+2002-11-05 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.exp: New file.
+
+2002-11-04 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/pr7912.java: New file.
+
+2002-11-04 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/utilTest.java: New.
+ * libjava.lang/utilTest.out: New.
+
+2002-11-04 Anthony Green <green@redhat.com>
+
+ * libjava.loader/MyLoader.java: New constructor.
+ * libjava.loader/TestParent.java: New file.
+ * libjava.loader/TestParent.out: New file.
+
+2002-11-04 Anthony Green <green@redhat.com>
+
+ * libjava.loader/TestEarlyGC.java,
+ libjava.loader/TestEarlyGC.out: New files (from
+ Jeff Sturm).
+
+2002-11-04 Anthony Green <green@redhat.com>
+
+ * libjava.loader/dummy.java, libjava.loader/loader.exp,
+ libjava.loader/MyLoader.java, libjava.loader/TestLeak.java,
+ libjava.loader/TestLeak.out, libjava.loader/TestMultiple.java,
+ libjava.loader/TestMultiple.out: New files.
+
+2002-11-02 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/initexc.java (fail): Static initializers must be
+ able to complete normally. From Eric Blake.
+
+ * libjava.lang/initexc.java: New file.
+ * libjava.lang/initexc.out: New file.
+
+2002-11-01 Tom Tromey <tromey@redhat.com>
+
+ For PR java/8415:
+ * libjava.lang/pr8415.java: New file.
+ * libjava.lang/pr8415.out: New file.
+
+ * libjava.mauve/mauve.exp (find_mauve_sources): New proc.
+ (test_mauve): Use it.
+ (test_mauve_sim): Likewise.
+
+2002-10-24 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/Primes.java: Removed.
+ * libjava.lang/Primes.out: Removed.
+
+2002-10-23 Tom Tromey <tromey@redhat.com>
+
+ For PR java/6388:
+ * libjava.lang/pr6388.java: New file.
+ * libjava.lang/pr6388.out: New file.
+
+2002-10-15 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/EvaluationOrder.java (EvaluationOrder): New.
+ * libjava.lang/EvaluationOrder.out (EvaluationOrder): New.
+
+2002-10-14 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/StaticConstructor.java: New.
+ * libjava.lang/StaticConstructor.out: New.
+
+2002-10-13 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Remove tests that now XPASS.
+
+2002-10-03 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/Array_3.java (baz): New.
+ (main): Call baz.
+
+2002-09-29 Anthony Green <green@redhat.com>
+
+ * libjava.lang/TestProxy.java: New file.
+ * libjava.lang/TestProxy.out: Ditto.
+
+2002-09-29 Anthony Green <green@redhat.com>
+
+ * libjava.lang/utf8concat.java: New file.
+ * libjava.lang/utf8concat.out: Ditto.
+
+2002-08-26 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/narrow_case.java: New file.
+
+2002-08-25 Adam Megacz <adam@xwt.org>
+
+ * lib/libjava.exp: don't apply -no-install when platform is mingw.
+
+2002-08-16 H.J. Lu <hjl@gnu.org>
+
+ * lib/libjava.exp (gcc_version): Removed.
+ (libgcj_jar): New.
+ (libjava_init): Set libgcj_jar with tcl glob.
+ (libjava_arguments): Use libgcj_jar.
+
+2002-07-22 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/zeroexp.java: New file.
+
+2002-07-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * libjava.compile/compile.exp: Sort sources.
+ * libjava.jni/jni.exp (gcj_jni_run): Likewise.
+ * libjava.lang/lang.exp: Likewise.
+
+2002-07-02 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/inline.java: New file.
+ * libjava.lang/inline.out: Likewise.
+
+ * libjava.lang/Array_3.java: Add another case.
+
+2002-06-23 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (RUNTEST): Added AM_RUNTESTFLAGS.
+ (AM_RUNTESTFLAGS): New variable.
+ (RUNTESTFLAGS): Don't define.
+ * lib/libjava.exp (libjava_invoke): New proc.
+ (test_libjava_from_source): Use it.
+ (test_libjava_from_javac): Likewise.
+ (libjava_find_gij): New proc.
+
+2002-06-12 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (test_libjava): Fixed typo.
+ * libjava.compile/PR6865.xfail: New file.
+
+2002-06-11 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/PR6865.java: New file. For PR java/6865.
+
+ * libjava.lang/PR6520.java: Fixed typo.
+
+2002-06-10 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/PR6520.java: New file. For PR java/6520.
+
+2002-06-04 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/T20020604.java: New file.
+
+ For PR libgcj/6389:
+ * libjava.mauve/xfails: Now passes System.getProperty test.
+
+ For PR java/1343 and PR java/6336:
+ * libjava.compile/PR1343.java: New file.
+
+ For PR java/5913:
+ * libjava.compile/PR5913.xfail: Removed.
+
+2002-05-29 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.compile/T20020529.java: New file.
+
+2002-05-27 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/PR6820.java: New file.
+ * libjava.lang/PR6820.out: New file.
+
+2002-05-23 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/PR6729.java: New file.
+ * libjava.lang/PR6729.out: New file.
+
+2002-05-04 Mark Wielaard <mark@klomp.org>
+
+ For PR java/6519:
+ * libjava.lang/emptystring.java: New.
+ * libjava.lang/emptystring.out: New.
+
+2002-04-21 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfail: Expect failures for PR java/6391 and
+ libgcj/6389.
+
+2002-04-16 Mark Wielaard <mark@klomp.org>
+
+ * libjava.lang/negzero.java: New.
+ * libjava.lang/negzero.out: New.
+
+2002-04-14 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Expect failures for PR libgcj/6302 and
+ libgcj/6298.
+
+2002-04-14 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Expect failures for PR libgcj/6293,
+ libgcj/6295, libgcj/6296 and libgcj/6297.
+
+2002-04-12 Anthony Green <green@redhat.com>
+
+ * lib/libjava.exp: Use libgcj-VERSION.jar, not libgcj.jar.
+
+2002-04-12 Loren J. Rittle <ljrittle@acm.org>
+
+ * libjava.lang/SyncGlobal.java, libjava.lang/SyncGlobal.out:
+ New test case.
+
+2002-04-09 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/PR6204.java, libjava.lang/PR6204.out: New test case.
+ * libjava.lang/PR6085.java, libjava.lang/PR6085.out: Likewise.
+
+2002-04-07 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/xfails: Add CASE_INSENSITIVE_ORDER, result was
+ unspecified and test should be updated to match latest spec.
+ Add AcuniaPropertiesTest, known bug #6219. Add test_getClassLoader,
+ what we do seems to be not really right or wrong.
+
+2002-04-06 Mark Wielaard <mark@klomp.org>
+
+ * libjava.mauve/mauve.exp: Use libgcj.jar not libgcj.zip.
+ * libjava.mauve/xfails: add Character.classify12 (number 1),
+ Character.getType (number 11), Character.getType (number 20) and
+ Character.getType (number 22). We implement 1.4 Character.
+
+2002-03-28 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/Throw_2.java: New.
+ * libjava.lang/Throw_2.out: New.
+
+2002-03-27 Anthony Green <green@redhat.com>
+
+ * libjava.lang/InvokeReturn.java: Modify test for targets
+ which do not yet support reflection.
+
+2002-03-27 Anthony Green <green@redhat.com>
+
+ * libjava.jni/jni.exp (gcj_jni_run): Fix cross build test.
+
+2002-03-27 Anthony Green <green@redhat.com>
+
+ * lib/libjava.exp: Add the wrapper link options only when we're
+ linking.
+
+2002-03-26 Tom Tromey <tromey@redhat.com>
+
+ * libjava.mauve/mauve.exp (test_mauve): Use correct stderr
+ redirection code.
+
+2002-03-22 Eric Blake <ebb9@email.byu.edu>
+
+ For PR java/6026:
+ * libjava.compile/PR6026.java: New file.
+
+2002-03-21 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/Thread_Interrupt.java (Looper.calibrate): New.
+ (yields): New.
+
+2002-03-18 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/jni.exp (gcj_jni_test_one): Find libstdc++ in build
+ tree.
+ (gcj_invoke): Added ld_library_additions argument.
+
+2002-03-17 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/jni.exp (gcj_jni_build_header): Use local_exec, not
+ target_compile. Fixes PR other/5874.
+
+2002-03-15 Eric Blake <ebb9@email.byu.edu>
+
+ For PR java/5902:
+ * libjava.compile/PR5902.java: Does not need to execute.
+ For PR java/5913:
+ * libjava.compile/PR5913.java: Ditto.
+
+2002-03-12 Tom Tromey <tromey@redhat.com>
+
+ Test for PR java/5848:
+ * libjava.compile/PR5848.xfail: New file.
+ * libjava.compile/PR5848.java: New file.
+
+2002-03-12 Eric Blake <ebb9@email.byu.edu>
+
+ * libjava.compile/PR5913.java: Expand test.
+
+2002-03-11 Eric Blake <ebb9@email.byu.edu>
+
+ * libjava.compile/PR5902.java: New file.
+ * libjava.compile/PR5913.java: New file.
+ * libjava.compile/PR5913.xfail: New file.
+
+2002-02-23 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/InvokeReturn.java: New file.
+ * libjava.lang/InvokeReturn.out: New file.
+
+2002-02-20 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * lib/libjava.exp: Add "xfail-byte-output" and "xfail-source-output".
+ Don't display expected and actual output for a failed output test.
+
+ * libjava.lang/ArrayStore.java: New file.
+ * libjava.lang/ArrayStore.out: New file.
+ * libjava.lang/ArrayStore.xfail: New file. xfail-byte-output.
+ * libjava.lang/ArrayStore2.java: New file.
+ * libjava.lang/ArrayStore2.out: New file.
+ * libjava.lang/ArrayStore2.xfail: New file. xfail-source-output.
+
+ * libjava.lang/stringconst.xfail: xfail-output -> xfail-source-output.
+
+2002-02-18 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/err7.xfail: Removed.
+ * libjava.lang/err8.xfail: Removed.
+
+ * libjava.lang/ArrayStore.java: New file.
+ * libjava.lang/ArrayStore.out: New file.
+
+2002-02-10 Tom Tromey <tromey@redhat.com>
+
+ For PR java/5641:
+ * libjava.compile/PR5641.xfail: New file.
+ * libjava.compile/PR5641.java: New file.
+
+2002-02-10 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * lib/libjava.exp (libjava_find_lib): Remove duplicate .la files.
+
+2002-01-05 H.J. Lu <hjl@gnu.org>
+
+ * libjava.jni/jni.exp: Add -I.. for generated header.
+
+2001-12-20 Tom Tromey <tromey@redhat.com>
+
+ For PR java/4766:
+ * libjava.compile/PR4766.java: New file.
+
+2001-12-20 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/FileHandleGcTest.out: New file.
+ * libjava.lang/FileHandleGcTest.java: New file.
+ * libjava.lang/Array_3.out: New file.
+ * libjava.lang/Array_3.java: New file.
+
+2001-12-18 Tom Tromey <tromey@redhat.com>
+
+ For PR java/3417:
+ * libjava.compile/PR3417.xfail: New file.
+ * libjava.compile/PR3417.java: New file.
+
+2001-12-17 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/PR3731.xfail: Removed.
+
+ Inspired by PR java/5057:
+ * libjava.lang/PR5057_2.java: New file.
+ * libjava.lang/PR5057_2.out: New file.
+
+ For PR java/5057:
+ * libjava.lang/PR5057.out: New file.
+ * libjava.lang/PR5057.java: New file.
+
+2001-12-13 Tom Tromey <tromey@redhat.com>
+
+ For PR libgcj/5103:
+ * libjava.jni/cxxtest.out: New file.
+ * libjava.jni/cxxtest.cc: New file.
+ * libjava.jni/cxxtest.java: New file.
+ * libjava.jni/jni.exp (gcj_jni_test_one): If there is no .c file,
+ assume there is a .cc file.
+
+2001-12-09 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/PR3731.out: Adjust output to reflect that "instanceof"
+ shouldn't trigger class initialization.
+
+2001-12-06 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/BlankFinal.java: Removed; incorrect test.
+
+2001-11-02 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * libjava.lang/TLtest.xfail: New file. Needs threads.
+
+2001-10-04 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.lang/PR3096.java: New file.
+ * libjava.lang/PR3096.out: Likewise.
+
+2001-09-27 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.compile/final_initialization_in_ctor.java: New file
+
+2001-08-28 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.compile/final_assignment_check.java: New file.
+ * libjava.compile/final_assignment_check.xfail: Likewise.
+ * libjava.compile/final_local_switch.java: Likewise.
+
+2001-08-24 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.lang/KeepInline.out: Fixed content.
+
+2001-08-17 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.compile/XercesBug.java: New file.
+
+2001-08-12 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.lang/Matrix4f.java: New file.
+ * libjava.lang/Matrix4f.out: New file.
+
+2001-08-03 Richard Henderson <rth@redhat.com>
+
+ * libjava.jni/calls.c (Java_calls_docall): Fix typo.
+
+2001-08-01 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/KeepInline.java: New file.
+ * libjava.lang/KeepInline.out: New file.
+
+2001-07-30 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/SyncTest.java: New file.
+ * libjava.lang/SyncTest.out: New file.
+ * libjava.lang/SyncTest.xfail: New file.
+
+2001-07-27 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * lib/libjava.exp (${tool}_set_ld_library_path): New, copied from
+ g++.exp.
+
+2001-07-19 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/PR3731.java: New file.
+ * libjava.lang/PR3731.out: New file.
+ * libjava.lang/PR3731.xfail: New file.
+
+2001-07-12 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.compile/anon_ctor_itf_arg.java: Moved to `libjava.lang.'
+ * libjava.compile/anon_ctor_itf_arg.out: Likewise
+ * libjava.lang/invoke_from_inner.java: New file.
+ * libjava.lang/invoke_from_inner.out: Likewise.
+
+2001-07-12 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.compile/anon_ctor_itf_arg.java: New file.
+ * libjava.compile/anon_ctor_itf_arg.out: New file.
+
+2001-07-12 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/N19990310_4.xfail: Removed.
+
+2001-07-10 Alexandre Petit-Bianco <apbianco@readhat.com>
+
+ * libjava.lang/TLtest.java: New file.
+ * libjava.lang/TLtest.out: New file.
+
+2001-07-06 Andrew Haley <aph@cambridge.redhat.com>
+
+ * libjava.lang/Divide_1.java: Add many more test cases.
+ * libjava.lang/Divide_1.out: Likewise.
+
+2001-07-03 Jeff Sturm <jsturm@one-point.com>
+
+ * libjava.lang/II.java: New file.
+ * libjava.lang/II.out: New file.
+
+2001-06-25 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/stub.xfail: Removed.
+
+2001-06-24 Andreas Jaeger <aj@suse.de>
+
+ * libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Fix path for
+ jni.h.
+
+2001-06-14 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/jni.exp: New file.
+ * lib/libjava.exp (gcj_link): New proc.
+
+2001-06-08 Tom Tromey <tromey@redhat.com>
+
+ Fix for PR libgcj/2874:
+ * libjava.mauve/mauve.exp (gcj_run_mauve_tests): New proc.
+ (test_mauve): Return 0 on failure.
+ * lib/libjava.exp (test_libjava_from_source): Remove generated
+ files if test is successful.
+ (test_libjava_from_javac): Likewise.
+ (gcj_cleanup): New proc.
+
+2001-06-05 Jeff Sturm <jsturm@one-point.com>
+
+ * lib/libjava.exp (libjava_arguments): Build with `-no-install'
+ when $mode == "link".
+
+2001-06-02 Anthony Green <green@redhat.com>
+
+ * libjava.lang/invokethrow.java: Fake a pass for systems which
+ don't support invocation.
+
+2001-05-30 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/invokethrow.out: New file.
+ * libjava.lang/invokethrow.java: New file.
+
+2001-05-03 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/Thread_Wait_Interrupt.xfail: New file.
+ * libjava.lang/Thread_Wait_2.xfail: New file.
+ * libjava.lang/Thread_Wait.xfail: New file.
+ * libjava.lang/Thread_Sleep.xfail: New file.
+ * libjava.lang/Thread_Monitor.xfail: New file.
+ * libjava.lang/Thread_Join.xfail: New file.
+ * libjava.lang/Thread_Interrupt.xfail: New file.
+ * libjava.lang/Thread_Alive.xfail: New file.
+ * lib/libjava.exp (libjava_init): Set global
+ libjava_uses_threads.
+ (test_libjava): Document `need-threads' tag.
+ (test_libjava_from_source): handle need-threads tag.
+ (test_libjava_from_javac): Likewise.
+
+2001-05-03 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/err11.xfail: Removed.
+
+2001-04-25 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (libjava_init): Use UTF-8 encoding.
+ (test_libjava_from_javac): Likewise.
+
+2001-04-09 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/pr83.xfail: Removed.
+ * libjava.lang/Shazam.xfail: Removed.
+ * libjava.lang/PR162.xfail: Removed.
+ * libjava.compile/PR375.xfail: Removed.
+ * libjava.compile/PR208.xfail: Removed xfail-byte.
+ * libjava.compile/PR207.xfail: Removed xfail-byte.
+
+2001-04-07 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/weirddecl.xfail: Removed xfail-*.
+ * libjava.compile/PR374.xfail: Removed.
+
+2001-03-29 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * libjava.lang/instinit2.out: Fixed.
+
+2001-03-22 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/field.out: New file.
+ * libjava.jni/field.c: New file.
+ * libjava.jni/field.java: New file.
+
+2001-03-20 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/uesc.java: New file.
+ * libjava.compile/uesc.xfail: New file.
+
+2001-03-16 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (libjava_arguments): Rewrote computation of
+ LD_LIBRARY_PATH. Add gcc build directory if it contains
+ libgcc_s.so.
+
+2001-03-14 Tom Tromey <tromey@redhat.com>
+
+ * libjava.compile/assignment.xfail: Removed.
+ * libjava.compile/assignment_2.xfail: Removed.
+
+2001-02-08 Warren Levy <warrenl@redhat.com>
+
+ * libjava.mauve/mauve.exp: Added support for XFAILs.
+ * libjava.mauve/xfails: New file.
+
+2001-01-26 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/martin.c (Java_martin_myNative): Flush stdout.
+
+ * libjava.jni/martin.out: New file.
+ * libjava.jni/martin.c: New file.
+ * libjava.jni/martin.java: New file.
+
+2001-01-16 Richard Henderson <rth@redhat.com>
+
+ * lib/libjava.exp (bytecompile_file): Don't unset CLASSPATH.
+ (libjava_arguments): Use .jar extension for libgcj.
+
+2001-01-08 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.compile/SuperConstr.java: New test case.
+
+2000-12-18 Tom Tromey <tromey@redhat.com>
+
+ * libjava.mauve/mauve.exp (test_mauve): Don't look for exceptions
+ thrown in the test harness.
+ (test_mauve_sim): Likewise.
+
+2000-12-16 Tom Tromey <tromey@redhat.com>
+
+ * lib/libjava.exp (test_libjava_from_javac): Strange quoting trick
+ for `.class' link case.
+ (bytecompile_file): Change directory outside of `catch'.
+
+ * libjava.lang/Thread_1.java: Removed.
+ * libjava.lang/Thread_1.out: Likewise.
+
+ * libjava.lang/N19990310_4.xfail: New file.
+ * libjava.lang/stub.xfail: Added new failure modes.
+ * libjava.lang/stringconst.xfail: New file.
+ * libjava.lang/PR162.xfail: New file.
+ * libjava.lang/Final.xfail: Removed.
+
+2000-12-15 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/instinit.out: Removed erroneous line.
+
+ * libjava.lang/Thread_1.out: Expect `0' active count.
+
+ * libjava.lang/stub.xfail: New file.
+ * libjava.lang/pr83.xfail: New file.
+ * libjava.lang/err8.xfail: New file.
+ * libjava.lang/err7.xfail: New file.
+ * libjava.lang/Shazam.xfail: New file.
+ * libjava.lang/err11.xfail: New file.
+
+ * libjava.lang/instinit2.java: Renamed class to `instinit2'.
+
+ * libjava.lang/anon3.out: Fixed typo.
+
+ * libjava.lang/Class_1.java (main): Uncommented out previously
+ failing code; now it works
+
+ * 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>
+
+ * libjava.lang/instinit.java: Don't extend `foo'.
+
+2000-11-26 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/weirddecl.java: New file.
+
+Fri Nov 24 11:25:20 2000 Anthony Green <green@redhat.com>
+
+ * lib/libjava.exp (bytecompile_file): Change default from javac to
+ gcj -C.
+ (libjava_arguments): Fix classpath.
+
+ * libjava.compile/PR129_B.no-link: New file.
+
+2000-11-24 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/PR375.java: New file. For PR gcj/375.
+
+ * libjava.compile/PR374.java: New file. For PR gcj/374.
+
+2000-11-07 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/sjis_comment3.java: Removed.
+ * libjava.compile/sjis_comment2.java: Removed.
+ * libjava.compile/sjis_comment1.java: Removed.
+ * libjava.compile/euc_comment3.java: Removed.
+ * libjava.compile/euc_comment2.java: Removed.
+ * libjava.compile/euc_comment1.java: Removed.
+
+2000-11-03 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): Set --tag on libtool
+ invocation.
+
+Sun Oct 8 19:14:05 2000 Anthony Green <green@redhat.com>
+
+ * libjava.compile/ArrayClass.java: New file.
+
+2000-08-31 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/abstr.xfail: New file.
+ * libjava.compile/abstr.java: New file.
+
+2000-08-09 Tom Tromey <tromey@cygnus.com>
+
+ From PR gcj/310:
+ * libjava.compile/PR310.java: New file.
+ * libjava.compile/PR310.xfail: New file.
+
+2000-07-30 Anthony Green <green@redhat.com>
+
+ * libjava.compile/PR295.java: New file.
+ See PR gcj/295.
+
+2000-07-11 Andrew Haley <aph@cygnus.com>
+
+ * libjava.compile/static_init2.java: New file.
+
+2000-07-07 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/stringconst2.out: New file.
+ * libjava.lang/stringconst2.java: New file.
+
+2000-06-23 Tom Tromey <tromey@cygnus.com>
+
+ For PR gcj/260:
+ * libjava.lang/PR260.out: New file.
+ * libjava.lang/PR260.java: New file.
+
+2000-06-13 Warren Levy <warrenl@cygnus.com>
+
+ Test for PR java.lang/258:
+ * libjava.lang/Class_1.java: New file.
+ * libjava.lang/Class_1.out: New file.
+
+2000-05-29 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.lang/PR242.java: New file. PR gcj/242.
+
+2000-05-23 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/PR238.java: New file. For PR gcj/238.
+
+ * libjava.lang/stringconst.out: New file.
+ * libjava.lang/stringconst.java: New file.
+
+2000-05-22 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.compile/PR232B.java: Additional PR gcj/232 test.
+
+2000-05-22 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/PR235.java: New file. For PR gcj/235.
+
+2000-05-21 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/PR234.java: New file. For PR gcj/234.
+
+2000-05-22 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test for PR gcj/232:
+ * libjava.compile/PR232.java: New file.
+
+2000-05-18 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (bytecompile_file): Use exec, not system.
+
+2000-05-17 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/mauve.exp (test_mauve): Call `prune_warnings'.
+ (test_mauve_sim): Likewise.
+ (test_mauve): Redirect stderr in system call.
+ (test_mauve_sim): Likewise.
+ * lib/libjava.exp (test_libjava_from_source): Call
+ `prune_warnings'.
+ (test_libjava_from_javac): Likewise.
+ (bytecompile_file): Redirect stderr in system call.
+ * lib/libjava.exp (libjava_find_program): New proc.
+ (find_jvscan): Use it.
+ (find_gcjh): New proc.
+
+ * libjava.compile/compile.exp: Use "", not $options.
+
+2000-05-16 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/instance.out: New file.
+ * libjava.lang/instance.java: New file.
+
+2000-05-10 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.lang/StringBuffer_1.java: New file.
+ * libjava.lang/StringBuffer_1.out: New file.
+
+2000-05-08 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test for PR gcj/224:
+ * libjava.compile/PR224.java: New file.
+ * libjava.compile/PR224.xfail: New file.
+
+2000-04-28 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test for PR gcj/218:
+ * libjava.lang/PR218.java: New file.
+ * libjava.lang/PR218.out: New file.
+
+2000-04-25 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.compile/MethodFailure4.java: New file.
+ * libjava.compile/MethodFailure4.out: New file.
+
+2000-04-20 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.compile/block.java: New file.
+ * libjava.compile/block.out: New file.
+
+2000-04-20 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/throwit.out: Fixed output to be correct.
+
+ * libjava.jni/noclass.java (main): `find_it' throws an exception.
+
+2000-04-16 Anthony Green <green@redhat.com>
+
+ * libjava.compile/PR209.java: New file.
+
+2000-04-16 Anthony Green <green@redhat.com>
+
+ * libjava.compile/PR208.java: New file.
+
+2000-04-16 Anthony Green <green@redhat.com>
+
+ * libjava.compile/PR207.java: New file.
+ libjava.compile/PR207_A.java: New file.
+ libjava.compile/PR206.java: New file.
+ libjava.compile/PR206_A.java: New file.
+
+2000-04-14 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Additional test for PR gcj/148:
+ * libjava.compile/assignment_2.java: New file.
+
+2000-03-28 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test case for PR libgcj/184:
+ * libjava.lang/pr184.java: New file.
+ * libjava.lang/pr184.out: New file.
+
+2000-03-27 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/test_long.out: New file.
+ * libjava.lang/test_long.java: New file.
+
+2000-03-26 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Array_1.xfail: Removed.
+
+2000-03-23 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.lang/Thread_Wait.java: New file.
+ * libjava.lang/Thread_Sleep.java: New file.
+ * libjava.lang/Thread_Monitor.java: New file.
+ * libjava.lang/Thread_Wait.out: New file.
+ * libjava.lang/Thread_Sleep.out: New file.
+ * libjava.lang/Thread_Monitor.out: New file.
+ * libjava.lang/Thread_Interrupt.java: New file.
+ * libjava.lang/Thread_Wait_2.java: New file.
+ * libjava.lang/Thread_Wait_2.out: New file.
+ * libjava.lang/Thread_Wait_Interrupt.java: New file.
+ * libjava.lang/Thread_Wait_Interrupt.out: New file.
+ * libjava.lang/Thread_Interrupt.out: New file.
+ * libjava.lang/Thread_Join.java: New file.
+ * libjava.lang/Thread_Join.out: New file.
+ * libjava.lang/Thread_Alive.java: New file.
+ * libjava.lang/Thread_Alive.out: New file.
+
+2000-03-22 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/iface.java: New file.
+ * libjava.compile/static_3.java: New file.
+ * libjava.compile/static_2.java: New file.
+ * libjava.compile/static_1.xfail: New file.
+ * libjava.compile/static_1.java: New file.
+ * libjava.compile/redef6.xfail: New file.
+ * libjava.compile/redef6.java: New file.
+ * libjava.compile/redef5.xfail: New file.
+ * libjava.compile/redef5.java: New file.
+ * libjava.compile/redef4.xfail: New file.
+ * libjava.compile/redef4.java: New file.
+ * libjava.compile/redef3.xfail: New file.
+ * libjava.compile/redef3.java: New file.
+ * libjava.compile/redef2.xfail: New file.
+ * libjava.compile/redef2.java: New file.
+ * libjava.compile/redef1.xfail: New file.
+ * libjava.compile/redef1.java: New file.
+ * libjava.compile/not_a_redef.java: New file.
+ * libjava.compile/inner_1.java: New file.
+ * libjava.compile/static_init.xfail: New file.
+ * libjava.compile/static_init.java: New file.
+
+2000-03-21 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test case for PR libgcj/179:
+ * libjava.lang/pr179.java: New file.
+ * libjava.lang/pr179.out: New file.
+
+2000-03-18 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/pr109.java: Added `println' at end.
+
+2000-03-15 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/pr176.java: New file, for PR gcj/176.
+
+2000-03-15 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.compile/pr172.java: Correct classname to match file name.
+ * libjava.compile/pr174.java: ditto. Remove superfluous main()
+ method.
+ * libjava.compile/PR140.xfail: New file.
+
+2000-03-14 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/PR140.java: New file, for PR gcj/140.
+
+ * libjava.compile/pr172.java: New file, for PR gcj/172.
+
+ * libjava.compile/pr174.java: New file, for PR gcj/174.
+
+2000-03-07 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/PR162.java: Mention `PR162', not `Test', as class
+ name.
+
+2000-03-07 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Test for PR gcj/163:
+ * libjava.lang/PR163.java: New file.
+ * libjava.lang/PR163.xfail: New file.
+
+2000-03-07 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (test_libjava_from_javac): Removed hack for
+ interfaces. Fail if jv-scan reports a parse error.
+
+ Test for PR gcj/162:
+ * libjava.lang/PR162.out: New file.
+ * libjava.lang/PR162.java: New file.
+
+2000-03-06 Tom Tromey <tromey@cygnus.com>
+
+ Test for PR gcj/164:
+ * libjava.compile/PR164.xfail: New file.
+ * libjava.compile/PR164.java: New file.
+
+2000-03-06 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.compile/PR127.java: New file.
+ * libjava.compile/PR127.xfail: New file.
+ PR 127 test case from Joerg Brunsmann.
+
+2000-03-05 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (test_libjava): Document `shouldfail' token.
+ (test_libjava_from_source): Handle `shouldfail' case.
+ (test_libjava_from_javac): Likewise.
+
+ Test for PR libgcj/124:
+ * libjava.compile/PR124.java: New file.
+ * libjava.compile/PR124.xfail: New file.
+
+2000-03-05 Anthony Green <green@redhat.com>
+
+ * libjava.lang/PR141.java: New file.
+ * libjava.lang/PR141.out: New file.
+ For PR java.io/141.
+
+2000-03-05 Anthony Green <green@redhat.com>
+
+ * libjava.compile/PR129_B.java: New file.
+ * libjava.compile/support/PR129_A.java: New file.
+ For PR gcj/129.
+
+2000-03-04 Anthony Green <green@redhat.com>
+
+ * libjava.lang/PR160.java: New file.
+ * libjava.lang/PR160.out: New file.
+
+2000-02-28 Mo DeJong <mdejong@cygnus.com>
+
+ * libjava.compile/static_inner.java: New file.
+
+2000-02-23 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/noclass.c: New file.
+ * libjava.jni/noclass.out: New file.
+ * libjava.jni/noclass.java: New file.
+
+2000-02-18 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/register.java: New file.
+ * libjava.jni/register.c: New file.
+ * libjava.jni/register.out: New file.
+
+2000-02-16 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/calls.c: New file.
+ * libjava.jni/calls.out: New file.
+ * libjava.jni/calls.java: New file.
+
+ * libjava.jni/throwit.java: New file.
+ * libjava.jni/throwit.c: New file.
+ * libjava.jni/throwit.out: New file.
+
+2000-02-15 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/findclass.java: New file
+ * libjava.jni/findclass.c: New file
+ * libjava.jni/findclass.out: New file
+
+2000-02-16 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.lang/InterfaceDispatch.java: New file.
+ * libjava.lang/InterfaceDispatch.out: New file.
+
+2000-02-15 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.jni/virtual.java: New file.
+ * libjava.jni/virtual.c: New file.
+ * libjava.jni/virtual.out: New file.
+ * libjava.jni/final_method.java: New file.
+ * libjava.jni/final_method.c: New file.
+ * libjava.jni/final_method.out: New file.
+ * libjava.jni/overload.java: New file.
+ * libjava.jni/overload.c: New file.
+ * libjava.jni/overload.out: New file.
+ * libjava.jni/simple_int.java: New file.
+ * libjava.jni/simple_int.c: New file.
+ * libjava.jni/simple_int.out: New file.
+ * libjava.jni/invoke.out: New file.
+ * libjava.jni/invoke.c: New file.
+ * libjava.jni/invoke.java: New file.
+
+2000-02-12 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/comment.java: New file.
+
+2000-02-12 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/assignment.java: New file.
+
+2000-02-12 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/inner_data.java: New file.
+
+2000-02-12 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/inner_inherit.java: New file.
+
+2000-02-12 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.lang/inner_interface.out: New file.
+ * libjava.lang/inner_interface.java: New file.
+ * libjava.lang/final_int.out: New file.
+ * libjava.lang/final_int.java: New file.
+ * libjava.lang/final_static_and_friend.out: New file.
+ * libjava.lang/final_static_and_friend.java: New file.
+
+2000-02-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.lang/anonarray3.out: New file.
+ * libjava.lang/anonarray3.java: New file.
+
+2000-02-09 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/inner_priv.java: New file.
+
+2000-02-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.lang/instinit2.out: New file.
+ * libjava.lang/instinit2.java: New file.
+ * libjava.lang/instinit.out: New file.
+ * libjava.lang/instinit.java: New file.
+ * libjava.lang/anonarray2.out: New file.
+ * libjava.lang/anonarray2.java: New file.
+ * libjava.lang/anonarray.out: New file.
+ * libjava.lang/anonarray.java: New file.
+ * libjava.lang/nested_with_ctor.out: New file.
+ * libjava.lang/nested_with_ctor.java: New file.
+ * libjava.lang/anfi.out: New file.
+ * libjava.lang/anfi.java: New file.
+ * libjava.lang/stub.out: New file.
+ * libjava.lang/stub.java: New file.
+
+2000-01-30 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.lang/final_inner.java: New file.
+ * libjava.lang/final_inner.out: Likewise.
+
+2000-01-20 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/BlankFinal.java: New file.
+
+2000-01-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * libjava.lang/anon.java, libjava.lang/anon2.java,
+ libjava.lang/anon3.java, libjava.lang/anon4.java,
+ libjava.lang/direct_read.java, libjava.lang/direct_write.java,
+ libjava.lang/indirect.java, libjava.lang/indirect_read.java,
+ libjava.lang/indirect_write.java, libjava.lang/inner1.java,
+ libjava.lang/inner2.java, libjava.lang/inner3.java,
+ libjava.lang/inner4.java, libjava.lang/inner_array.java,
+ libjava.lang/multiple_finit.java,
+ libjava.lang/private_direct_read.java,
+ libjava.lang/private_direct_write.java,
+ libjava.lang/private_indirect_read.java,
+ libjava.lang/private_indirect_write.java,
+ libjava.lang/search_outer.java, libjava.lang/tmi.java,
+ libjava.lang/tp.java, libjava.lang/update_outer.java: New files.
+
+2000-01-18 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/inner_pub.java: New file.
+
+2000-01-16 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/pr133.out: New file.
+ * libjava.lang/pr133.java: New file.
+
+ * libjava.lang/pr100.xpo: New file.
+ * libjava.lang/pr100.java: New file.
+
+2000-01-16 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/pr93.xpo: New file.
+ * libjava.lang/pr93.java: New file.
+
+2000-01-16 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/lang.exp: Handle regexp matches correctly.
+
+2000-01-16 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/pr83.out: New file.
+ * libjava.lang/pr83.java: New file.
+
+ * libjava.lang/pr109.out: New file.
+ * libjava.lang/pr109.java: New file.
+
+2000-01-11 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/klass.out: New file.
+ * libjava.lang/klass.java: New file.
+
+1999-12-31 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/mauve.exp (mauve_compute_uses): Let user select
+ specific tests to run.
+
+1999-10-19 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.compile/invokeinterface: New directory.
+ * libjava.compile/invokeinterface/Test.java: New file. Test code for
+ PR gcj/71 and PR gcj/72.
+ * libjava.compile/invokeinterface/A.java: New file.
+ * libjava.compile/invokeinterface/B.java: New file.
+
+1999-10-02 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/Case.xfail: Removed. This test should pass now.
+
+ * libjava.compile/compile.exp: Copied from test.exp.
+ * libjava.compile/test.exp: Removed.
+
+ * libjava.lang/lang.exp: Copied from test.exp.
+ * libjava.lang/test.exp: Removed.
+
+1999-10-01 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/PR56.out: New file.
+ * libjava.lang/PR56.java: New file.
+
+1999-09-29 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/PR55.out: New file.
+ * libjava.lang/PR55.java: New file.
+
+1999-08-25 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.toshiba/G19990304_01.out: New file.
+ * libjava.toshiba/G19990304_01.java: New file.
+
+ * libjava.lang/G19990310_01.out: New file.
+ * libjava.lang/G19990310_01.java: New file.
+
+1999-08-17 Tom Tromey <tromey@cygnus.com>
+
+ From Bryce McKinlay:
+ * libjava.lang/Array_2.java: New file.
+ * libjava.lang/Array_2.out: New file.
+
+1999-08-09 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/Primes.java: New file.
+ * libjava.lang/Primes.out: New file.
+
+1999-07-31 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * lib/libjava.exp (bytecompile_file): Use `env(SUN_JAVAC)', that
+ defaults to javac, as Sun-javac compiler or compatible.
+ (libjava_init): Get GCJ from environment if neither GCJ_UNDER_TEST
+ nor TOOL_EXECUTABLE are set. Set `original_ld_library_path' from
+ environment.
+ (libjava_arguments): Prepend `.' and `$srcdir/$subdir' to
+ CLASSPATH, for `support' sources. Search for libgcj.spec in
+ `$objdir/..', by adding -B to GCJ_UNDER_TEST. Append
+ original_ld_library_path to ld_library_path.
+ * libjava.mauve/mauve.exp (test_mauve): Set `env(GCJ)' from
+ GCJ_UNDER_TEST, calculated just like in libjava.exp.
+
+1999-07-14 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/G19990217_02.no-link: New file.
+ * libjava.compile/test.exp: Look for `.no-link' file.
+ * lib/libjava.exp (test_libjava_from_source): Added `no-link'
+ option.
+ (test_libjava_from_javac): Likewise. Also, handle package
+ information from class name when creating class file name.
+
+1999-07-13 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/test.exp: New file.
+ * libjava.lang/err9.out: New file.
+ * libjava.lang/err9.java: New file.
+ * libjava.lang/err8.out: New file.
+ * libjava.lang/err8.java: New file.
+ * libjava.lang/err7.out: New file.
+ * libjava.lang/err7.java: New file.
+ * libjava.lang/err6.out: New file.
+ * libjava.lang/err6.java: New file.
+ * libjava.lang/err5.out: New file.
+ * libjava.lang/err5.java: New file.
+ * libjava.lang/err4.out: New file.
+ * libjava.lang/err4.java: New file.
+ * libjava.lang/err3.out: New file.
+ * libjava.lang/err3.java: New file.
+ * libjava.lang/err2.out: New file.
+ * libjava.lang/err2.java: New file.
+ * libjava.lang/err13.out: New file.
+ * libjava.lang/err13.java: New file.
+ * libjava.lang/err12.out: New file.
+ * libjava.lang/err12.java: New file.
+ * libjava.lang/err11.out: New file.
+ * libjava.lang/err11.java: New file.
+ * libjava.lang/err10.out: New file.
+ * libjava.lang/err10.java: New file.
+ * libjava.lang/err1.out: New file.
+ * libjava.lang/err1.java: New file.
+ * libjava.lang/N19990310_5.out: New file.
+ * libjava.lang/N19990310_5.java: New file.
+ * libjava.lang/N19990310_4.out: New file.
+ * libjava.lang/N19990310_4.java: New file.
+ * libjava.lang/N19990310_3.out: New file.
+ * libjava.lang/N19990310_3.java: New file.
+ * libjava.lang/N19990310_02.out: New file.
+ * libjava.lang/N19990310_02.java: New file.
+ * libjava.lang/G19990303_02.out: New file.
+ * libjava.lang/G19990303_02.java: New file.
+ * libjava.lang/G19990303_01.out: New file.
+ * libjava.lang/G19990303_01.java: New file.
+ * libjava.lang/G19990302_02.out: New file.
+ * libjava.lang/G19990302_02.java: New file.
+ * libjava.lang/G19990301_01.out: New file.
+ * libjava.lang/G19990301_01.java: New file.
+
+ * libjava.compile/N19990317.java: New file.
+ * libjava.compile/N19990310_01.java: New file.
+ * libjava.compile/G19990225_01.java: New file.
+ * libjava.compile/G19990217_02.java: New file.
+ * libjava.compile/G19990217_01.java: New file.
+ * libjava.compile/G19990210_3.java: New file.
+ * libjava.compile/G19990210_2.java: New file.
+ * libjava.compile/G19990210_1.java: New file.
+
+1999-07-06 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Final.xfail: Output fails, not exec.
+
+ * libjava.lang/Final.xfail: New file.
+ * libjava.compile/Case.xfail: New file.
+ * libjava.compile/Where.xfail: New file.
+ * libjava.compile/test.exp: Look for `.xfail' files.
+ * libjava.lang/test.exp: Don't look for `.arg' files.
+ Do look for `.xfail' files.
+ * lib/libjava.exp (test_libjava_from_source): Changed meaning of
+ `exec_args' argument. Handle `xfail-*' arguments.
+ (test_libjava_from_javac): Likewise.
+ (test_libjava): Likewise.
+ (libjava_read_xfail): New proc.
+
+1999-07-05 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * libjava.lang/Final.java: Added.
+ * libjava.lang/Final.out: Added.
+
+1999-07-02 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Finalize_1.out: Removed.
+ * libjava.lang/Finalize_1.java: Removed.
+
+ * libjava.lang/Thread_1.out: Updated.
+ * libjava.lang/Thread_1.java: Don't run exit test.
+
+Thu Jul 1 16:22:19 1999 Anthony Green <green@cygnus.com>
+
+ * libjava.mauve/mauve.exp: Don't stop counting test results
+ prematurely.
+
+1999-06-25 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (test_libjava_from_javac): Fixed typo. Always
+ make class_files a list.
+
+ * lib/libjava.exp (test_libjava_from_javac): Prepend `$objdir/' to
+ class file names.
+
+1999-06-24 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): If `libtool' not found in
+ build tree, just use $GCJ_UNDER_TEST as compiler.
+
+1999-06-23 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): Handle -lzgcj.
+
+1999-05-24 Anthony Green <green@cygnus.com>
+
+ * libjava.lang/Shazam.java: New file.
+ libjava.lang/Shazam.out: New file.
+
+1999-05-12 Andrew Haley <aph@cygnus.com>
+
+ * libjava.lang/Invoke_2.java: New file.
+
+1999-05-03 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): Don't use -nodefaultlibs.
+ (libjava_find_lib): Add `-L' option to find the actual library.
+
+ * libjava.mauve/mauve.exp (test_mauve): Pass `link' to
+ libjava_arguments when linking.
+ (test_mauve_sim): Likewise.
+ * lib/libjava.exp (libjava_arguments): Run `libtool' to link.
+ Don't use `-static'. Added `mode' argument. Use -nodefaultlibs
+ when linking.
+ (test_libjava_from_source): Mention why target_compile failed.
+ Pass `link' to libjava_arguments when linking. Only do `xfails'
+ for tests we would actually have run.
+ (test_libjava_from_javac): Likewise.
+ (libjava_find_lib): Return name of `.la' file.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_find_lib): New proc.
+ (libjava_arguments): Use it. Force static linking.
+
+Thu Apr 22 14:19:35 1999 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/OperatorBenchmark.java: New file.
+
+1999-04-09 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.mauve/mauve.exp (KEYS): Default to libgcj.
+
+1999-04-09 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/plusplus.java: New file.
+ From MoT <Sebastien.Villemot@ens.fr>.
+
+1999-04-06 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/mauve.exp (test_mauve_sim): Reference
+ mauve-libgcj.
+ (test_mauve): Likewise.
+
+1999-03-30 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/mauve.exp: Renamed from test.exp. With the new
+ name it is easier to run just the Mauve tests.
+
+ * libjava.mauve/test.exp (test_mauve): Added gnu/testlet/config to
+ list of files to link in.
+ (test_mauve_sim): Likewise.
+ * libjava.mauve/DejaGNUTestHarness.java (srcdir, tmpdir): New
+ static variables.
+ (DejaGNUTestHarness): Removed argument from constructor.
+ (dejasrcdir): New static variable.
+ (main): Set `dejasrcdir'.
+ (getSourceDirectory): New method.
+
+1999-03-08 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.compile/perc.java: New file.
+
+1999-02-26 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.util/test.exp: Removed.
+
+1999-02-25 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/test.exp: Make sure current directory is correct
+ after tests are run.
+
+ * libjava.mauve/test.exp (test_mauve): Removed extra arg in call
+ to bytecompile_file.
+ (test_mauve_sim): Likewise.
+
+Thu Feb 25 09:21:03 1999 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/euc_comment1.java,
+ libjava.compile/euc_comment2.java,
+ libjava.compile/euc_comment3.java,
+ libjava.compile/euc_comment1.java,
+ libjava.compile/euc_comment2.java,
+ libjava.compile/euc_comment3.java: New files.
+
+ * libjava.compile/Case.java, libjava.compile/support/Case.java:
+ New files.
+
+1999-02-24 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (find_jvscan): New proc.
+ (bytecompile_file): Removed `srcfile_in' argument.
+ (test_libjava_from_javac): Use `jv-scan' program to find name of
+ `main' and name of all generated classes. Compile all generated
+ classes, not just primary class. For no-exec tests, only try to
+ build the .o, not the full executable.
+
+Wed Feb 24 11:22:32 1999 Anthony Green <green@hoser.cygnus.com>
+
+ * libjava.compile/test.exp: Minor fix.
+
+1999-02-23 Anthony Green <green@cygnus.com>
+
+ * libjava.compile/Where.java, libjava.compile/support/Waldo.java,
+ libjava.compile/Twice.java, libjava.compile/Semi.java,
+ libjava.compile/Statics.java, libjava.compile/test.exp,
+ libjava.lang/Synch.java, libjava.lang/Synch.out: New files.
+
+1999-02-16 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (AUTOMAKE_OPTIONS): Added no-installinfo.
+
+Wed Feb 17 19:53:51 1999 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.mauve/test.exp: modified file allows Mauve tests to
+ run on JMR board; simplified script to use same procedure for
+ all testing
+
+1999-02-10 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): Updated to track library
+ renames.
+
+1999-02-07 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/slash.java: New file.
+ * libjava.lang/slash.out: New file.
+
+Mon Feb 1 05:17:40 1999 Anthony Green <green@fencer.cygnus.com>
+
+ * lib/libjava.exp: Test compiling from source as well as from
+ bytecodes.
+
+1999-01-11 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.mauve/test.exp (mauve_compute_uses): Read classes file,
+ not choices file.
+
+ * libjava.mauve/test.exp (test_mauve): Added
+ ResourceNotFoundException to list of harness files to compile.
+ (test_mauve_sim): Likewise.
+
+1998-12-17 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Invoke_1.java: New file.
+
+ * libjava.lang/Thread_1.java (Thread_1): Class now public.
+ * libjava.lang/Array_1.java (Array_1): Class now public.
+
+ * libjava.lang/Throw_1.out: New file.
+ * libjava.lang/Throw_1.java: New file.
+
+1998-12-11 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (libjava_arguments): New proc.
+ (test_libjava): Use it.
+ (bytecompile_file): Added classpath argument.
+ * libjava.mauve/test.exp: New file.
+ * libjava.mauve/DejaGNUTestHarness.java: New file.
+
+1998-12-08 Tom Tromey <tromey@cygnus.com>
+
+ * Various: removed all test files that migrated to Mauve.
+
+1998-12-07 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Array_1.java (main): Removed extraneous
+ getSuperclass call.
+
+1998-11-23 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Finalize_1.java (main): Clear `f' before GC.
+
+1998-10-08 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Thread_1.out: Added missing line.
+
+Fri Oct 2 14:55:46 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Array_1.java: Changed so Cloneable test can run
+ even if clone test itself fails.
+
+ * libjava.lang/Array_1.java: Uncommented calls to getSuperclass.
+ Added test to see if array implements Cloneable.
+
+Thu Oct 1 11:28:06 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Array_1.java: New file.
+ * libjava.lang/Array_1.out: New file.
+
+Thu Oct 1 13:51:00 1998 Anthony Green <green@cygnus.com>
+
+ * testsuite/lib/libjava.exp: Find qthreads library correctly.
+
+Tue Sep 29 16:36:43 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.util/Hashtable_1.java, libjava.util/Hashtable_1.out: Created.
+
+Tue Sep 29 00:40:26 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Thread_1.java (started): New field.
+ (run): Set `started'. Handle all synchronization here.
+ (Thread_1): Initialize `started'.
+ (doit): Just start both threads and let them handle their own
+ synchronization.
+
+ * libjava.lang/Boolean_5.out: Changed to reflect the
+ Boolean_5.java changes.
+ * libjava.lang/Boolean_5.java: Don't replace the system
+ properties, just augment them. Don't print the property object.
+ * libjava.lang/Long_2.out: Changed to reflect Long_2.java
+ changes.
+ * libjava.lang/Long_2.java: Don't replace the system properties,
+ just augment them. Don't print the property object.
+ * libjava.lang/Integer_2.out: Changed to reflect Integer_2.java
+ changes.
+ * libjava.lang/Integer_2.java: Don't replace the system
+ properties, just augment them. Don't print the property object.
+
+Sat Sep 26 15:57:39 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Thread_1.java (main): Catch InterruptedException.
+
+Tue Sep 22 13:45:58 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Thread_1.out: New file.
+ * libjava.lang/Thread_1.java: New file.
+
+Mon Sep 21 14:20:08 1998 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (test_libjava): Use runtest_file_p to see if
+ test should be short-circuited.
+
+Tue Sep 15 13:57:45 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Character_9.java: New file.
+ * libjava.lang/Character_9.out: New file.
+
+Mon Sep 14 12:27:04 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Character_8.out: New file.
+ * libjava.lang/Character_8.java: New file.
+ * libjava.lang/Character_7.out: New file.
+ * libjava.lang/Character_7.java: New file.
+ * libjava.lang/Character_6.out: New file.
+ * libjava.lang/Character_6.java: New file.
+ * libjava.lang/Character_5.out: New file.
+ * libjava.lang/Character_5.java: New file.
+ * libjava.lang/Character_4.out: New file.
+ * libjava.lang/Character_4.java: New file.
+ * libjava.lang/Character_3.out: New file.
+ * libjava.lang/Character_3.java: New file.
+ * libjava.lang/Character_2.out: New file.
+ * libjava.lang/Character_2.java: New file.
+
+Fri Sep 11 10:04:55 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libjava.lang/Character_1.out: New file.
+ * libjava.lang/Character_1.java: New file.
+
+Fri Sep 18 14:43:59 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.lang/Long_1.java, libjava.lang/Long_1.out,
+ libjava.lang/Long_2.java, libjava.lang/Long_2.out: Created.
+
+Fri Sep 18 12:43:52 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.lang/Integer_1.java, libjava.lang/Integer_1.out,
+ libjava.lang/Integer_2.java, libjava.lang/Integer_2.out: Created.
+
+ * libjava.lang/String_2.java, libjava.lang/String_2.out: Use JDK 1.2
+ values for hashCode.
+
+Thu Sep 10 12:44:42 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.lang/String_1.java, libjava.lang/String_1.out,
+ libjava.lang/String_2.java, libjava.lang/String_2.out,
+ libjava.lang/String_3.java, libjava.lang/String_3.out,
+ libjava.lang/String_4.java, libjava.lang/String_4.out,
+ libjava.lang/String_5.java, libjava.lang/String_5.out,
+ libjava.lang/String_6.java, libjava.lang/String_6.out,
+ libjava.lang/String_7.java, libjava.lang/String_7.out,
+ libjava.lang/String_8.java, libjava.lang/String_8.out,
+ libjava.lang/String_9.java, libjava.lang/String_9.out: Created.
+
+Tue Sep 8 13:31:59 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.lang/Byte_1.java, libjava.lang/Byte_1.out,
+ libjava.lang/Short_1.java, libjava.lang/Short_1.out: New files.
+
+Thu Sep 3 15:57:57 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.lang/Boolean_1.java, libjava.lang/Boolean_1.out,
+ libjava.lang/Boolean_2.java, libjava.lang/Boolean_2.out,
+ libjava.lang/Boolean_3.java, libjava.lang/Boolean_3.out,
+ libjava.lang/Boolean_4.java, libjava.lang/Boolean_4.out,
+ libjava.lang/Boolean_5.java, libjava.lang/Boolean_5.out: Created.
+
+Tue Sep 1 12:27:54 1998 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp (bytecompile_file): Don't throw error if byte
+ compilation fails. Added `srcfile_in' argument. Changed return
+ value.
+ (test_libjava): Gracefully handle byte-compilation failure.
+
+ * libjava.lang/System_15.java (main): Typo fix.
+ (System_15): Choose correct class name.
+ (X): Moved into System_15.
+
+ * libjava.lang/System_1.java, libjava.lang/System_1.out,
+ libjava.lang/System_10.java, libjava.lang/System_10.out,
+ libjava.lang/System_11.java, libjava.lang/System_11.out,
+ libjava.lang/System_12.java, libjava.lang/System_12.out,
+ libjava.lang/System_13.java, libjava.lang/System_13.out,
+ libjava.lang/System_14.java, libjava.lang/System_14.out,
+ libjava.lang/System_15.java, libjava.lang/System_15.out,
+ libjava.lang/System_2.java, libjava.lang/System_2.out,
+ libjava.lang/System_3.java, libjava.lang/System_3.out,
+ libjava.lang/System_4.java, libjava.lang/System_4.out,
+ libjava.lang/System_5.java, libjava.lang/System_5.out,
+ libjava.lang/System_6.java, libjava.lang/System_6.out,
+ libjava.lang/System_7.java, libjava.lang/System_7.out,
+ libjava.lang/System_8.java, libjava.lang/System_8.out,
+ libjava.lang/System_9.java, libjava.lang/System_9.out: New files.
+
+ * lib/libjava.exp (test_libjava): Only add -lgc or -lqthreads if
+ library is actually found.
+
+ * lib/libjava.exp (test_libjava): Look for qthreads.
+
+Mon Aug 31 17:49:21 1998 Warren Levy <warrenl@cygnus.com>
+
+ * libjava.util/Random_1.java, libjava.util/Random_1.out,
+ libjava.util/Random_2.java, libjava.util/Random_2.out,
+ libjava.util/Random_3.java, libjava.util/Random_3.out,
+ libjava.util/Random_4.java, libjava.util/Random_4.out,
+ libjava.util/Random_5.java, libjava.util/Random_5.out,
+ libjava.util/Random_6.java, libjava.util/Random_6.out,
+ libjava.util/Random_7.java, libjava.util/Random_7.out,
+ libjava.util/Random_8.java, libjava.util/Random_8.out,
+ libjava.util/test.exp: Created.
+
+Mon Aug 31 16:37:19 1998 Tom Tromey <tromey@cygnus.com>
+
+ * lib/libjava.exp: Changed gjavac to gcj everywhere.
+
+Wed Aug 26 12:20:10 1998 Anthony Green <green@cygnus.com>
+
+ * Makefile.am (EXPECT,RUNTEST): Find expect and runtest
+ correctly.
+ * Makefile.in: Rebuild.
+
+Tue Aug 25 18:43:33 1998 Anthony Green <green@cygnus.com>
+
+ * lib/libjava.exp: Fix CLASSPATH setting.
+
+Tue Aug 25 17:27:37 1998 Anthony Green <green@cygnus.com>
+
+ * ChangeLog, lib/libjava.exp, config/default.exp,
+ libjava.lang/Finalize_1.java, libjava.lang/Finalize_1.out,
+ libjava.lang/Float_1.java, libjava.lang/Float_1.out
+ libjava.lang/test.exp, Makefile.am, Makefile.in: Created.
diff --git a/libjava/testsuite/Makefile.am b/libjava/testsuite/Makefile.am
new file mode 100644
index 000000000..2aebd7c99
--- /dev/null
+++ b/libjava/testsuite/Makefile.am
@@ -0,0 +1,109 @@
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = foreign dejagnu
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
+# Setup the testing framework, if you have one
+EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
+ echo $(top_builddir)/../expect/expect ; \
+ else echo expect ; fi`
+
+RUNTEST = "`if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
+ echo $(top_srcdir)/../dejagnu/runtest ; \
+ else echo runtest; fi` $(AM_RUNTESTFLAGS)"
+
+## Tell dejagnu whether the interpreter is enabled.
+AM_RUNTESTFLAGS = INTERPRETER=$(INTERPRETER)
+
+MYGCJH = gjavah
+
+.PHONY: compile-tests
+
+# We need more things in site.exp, but automake completely controls the
+# creation of that file; there's no way to append to it without messing up
+# the dependency chains. So we overrule automake. This rule is exactly
+# what it would have generated, plus our own additions.
+site.exp: Makefile
+ @echo 'Making a new site.exp file...'
+ @echo '## these variables are automatically generated by make ##' >site.tmp
+ @echo '# Do not edit here. If you wish to override these values' >>site.tmp
+ @echo '# edit the last section' >>site.tmp
+ @echo 'set srcdir $(srcdir)' >>site.tmp
+ @echo "set objdir `pwd`" >>site.tmp
+ @echo 'set build_alias "$(build_alias)"' >>site.tmp
+ @echo 'set build_triplet $(build_triplet)' >>site.tmp
+ @echo 'set host_alias "$(host_alias)"' >>site.tmp
+ @echo 'set host_triplet $(host_triplet)' >>site.tmp
+ @echo 'set target_alias "$(target_alias)"' >>site.tmp
+ @echo 'set target_triplet $(target_triplet)' >>site.tmp
+ @echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ @test ! -f site.exp || \
+ sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+ @-rm -f site.bak
+ @test ! -f site.exp || mv site.exp site.bak
+ @mv site.tmp site.exp
+
+check-am: compile-tests
+
+compile-tests:
+if JAVA_MAINTAINER_MODE
+ for test in `cd $(srcdir) > /dev/null; \
+ find libjava.cni libjava.jni libjava.jvmti libjava.lang \
+ libjava.loader libjava.verify -name \*.java`; do \
+ testjar=$(srcdir)/`echo $$test | sed -e 's/\.java$$/\.jar/'`; \
+ testdep=; \
+ genheader=; \
+ case "$$test" in \
+ libjava.loader/dummy.java) \
+ testjar=$(srcdir)/libjava.loader/dummy.class;; \
+ libjava.loader/MyLoader.java) \
+ continue;; \
+ libjava.loader/*.java) \
+ testdep="libjava.loader/MyLoader.java";; \
+ libjava.jni/register2.java) \
+ ;; \
+ libjava.jni/*.java|libjava.jvmti/interp/*.java) \
+ genheader=-jni;; \
+ libjava.jvmti/*.java|libjava.cni/*.java) \
+ genheader=-cni;; \
+ esac; \
+ if test -f $$testjar; then \
+ if ! test $(srcdir)/$$test -nt $$testjar; then \
+ test -z "$$testdep" && continue; \
+ test $(srcdir)/$$testdep -nt $$testjar || continue; \
+ fi; \
+ fi; \
+ echo Compiling $$test; \
+ testtmpdir=`echo $$test | sed -e 's,/,_,g'`T; \
+ rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \
+ if test -n "$$testdep"; then \
+ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+ $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \
+ -d $$testtmpdir $(srcdir)/$$testdep || exit; \
+ fi; \
+ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+ $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \
+ -d $$testtmpdir $(srcdir)/$$test || exit; \
+ case "$$test" in \
+ libjava.loader/dummy.java) \
+ cp $$testtmpdir/dummy.class $$testjar;; \
+ *) \
+ $(JAR) cf $$testjar \
+ `ls $$testtmpdir/*.class \
+ | sed -e 's,^,-C ,;s,/\([^/]*\.class\)$$, \1,'` || exit ;; \
+ esac; \
+ if test -n "$$genheader"; then \
+ $(MYGCJH) $$genheader $$testtmpdir/*.class \
+ -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \
+ -d $$testtmpdir/ || exit; \
+ mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \
+ fi; \
+ rm -rf $$testtmpdir; \
+ done
+endif
diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in
new file mode 100644
index 000000000..4af895623
--- /dev/null
+++ b/libjava/testsuite/Makefile.in
@@ -0,0 +1,597 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = testsuite
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/libltdl/acinclude.m4 \
+ $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/enable.m4 \
+ $(top_srcdir)/../config/gxx-include-dir.m4 \
+ $(top_srcdir)/../config/iconv.m4 \
+ $(top_srcdir)/../config/lcmessage.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/lib-link.m4 \
+ $(top_srcdir)/../config/lib-prefix.m4 \
+ $(top_srcdir)/../config/lthostflags.m4 \
+ $(top_srcdir)/../config/multi.m4 \
+ $(top_srcdir)/../config/no-executables.m4 \
+ $(top_srcdir)/../config/override.m4 \
+ $(top_srcdir)/../config/tls.m4 \
+ $(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltgcc.m4 \
+ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+ $(top_srcdir)/mingwld.m4 $(top_srcdir)/pkg.m4 \
+ $(top_srcdir)/shlibpath.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/gcj/libgcj-config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DEJATOOL = $(PACKAGE)
+RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ANTLR_JAR = @ANTLR_JAR@
+AR = @AR@
+AS = @AS@
+ATOMICSPEC = @ATOMICSPEC@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKTRACESPEC = @BACKTRACESPEC@
+BUILD_VERSION = @BUILD_VERSION@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKREFSPEC = @CHECKREFSPEC@
+CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIRLTDL = @DIRLTDL@
+DIVIDESPEC = @DIVIDESPEC@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ_BUILD_JAR = @ECJ_BUILD_JAR@
+ECJ_JAR = @ECJ_JAR@
+EGREP = @EGREP@
+EXCEPTIONSPEC = @EXCEPTIONSPEC@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCC_FOR_ECJX = @GCC_FOR_ECJX@
+GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@
+GCDEPS = @GCDEPS@
+GCINCS = @GCINCS@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GCJH = @GCJH@
+GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
+GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
+GCLIBS = @GCLIBS@
+GCSPEC = @GCSPEC@
+GCTESTSPEC = @GCTESTSPEC@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
+IEEESPEC = @IEEESPEC@
+INCLTDL = @INCLTDL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTERPRETER = @INTERPRETER@
+JAR = @JAR@
+JAVA_HOME = @JAVA_HOME@
+JAVA_VERSION = @JAVA_VERSION@
+JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LDLIBICONV = @LDLIBICONV@
+LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
+LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
+LIBART_CFLAGS = @LIBART_CFLAGS@
+LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
+LIBFFI = @LIBFFI@
+LIBFFIINCS = @LIBFFIINCS@
+LIBGCJDEBUG = @LIBGCJDEBUG@
+LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
+LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@
+LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
+LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
+LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
+LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
+LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@
+LIBGCJ_SPEC = @LIBGCJ_SPEC@
+LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@
+LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@
+LIBICONV = @LIBICONV@
+LIBLTDL = @LIBLTDL@
+LIBMATHSPEC = @LIBMATHSPEC@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKE = @MAKE@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM = @PLATFORM@
+RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSDEP_SOURCES = @SYSDEP_SOURCES@
+SYSTEMSPEC = @SYSTEMSPEC@
+SYS_ZLIBS = @SYS_ZLIBS@
+THREADCXXFLAGS = @THREADCXXFLAGS@
+THREADDEPS = @THREADDEPS@
+THREADINCS = @THREADINCS@
+THREADLDFLAGS = @THREADLDFLAGS@
+THREADLIBS = @THREADLIBS@
+THREADSPEC = @THREADSPEC@
+THREADSTARTFILESPEC = @THREADSTARTFILESPEC@
+TOOLKIT = @TOOLKIT@
+UNZIP = @UNZIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ZINCS = @ZINCS@
+ZIP = @ZIP@
+ZLIBS = @ZLIBS@
+ZLIBSPEC = @ZLIBSPEC@
+ZLIBTESTSPEC = @ZLIBTESTSPEC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_GCJ = @ac_ct_GCJ@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_libsubdir = @build_libsubdir@
+build_os = @build_os@
+build_subdir = @build_subdir@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+dbexecdir = @dbexecdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extra_ldflags = @extra_ldflags@
+extra_ldflags_libjava = @extra_ldflags_libjava@
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
+gxx_include_dir = @gxx_include_dir@
+here = @here@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_exeext = @host_exeext@
+host_os = @host_os@
+host_subdir = @host_subdir@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libstdcxx_incdir = @libstdcxx_incdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mkinstalldirs = @mkinstalldirs@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+target_os = @target_os@
+target_subdir = @target_subdir@
+target_vendor = @target_vendor@
+toolexecdir = @toolexecdir@
+toolexeclibdir = @toolexeclibdir@
+toolexecmainlibdir = @toolexecmainlibdir@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign dejagnu
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
+# Setup the testing framework, if you have one
+EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
+ echo $(top_builddir)/../expect/expect ; \
+ else echo expect ; fi`
+
+RUNTEST = "`if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
+ echo $(top_srcdir)/../dejagnu/runtest ; \
+ else echo runtest; fi` $(AM_RUNTESTFLAGS)"
+
+AM_RUNTESTFLAGS = INTERPRETER=$(INTERPRETER)
+MYGCJH = gjavah
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign testsuite/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-DEJAGNU: site.exp
+ srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ EXPECT=$(EXPECT); export EXPECT; \
+ runtest=$(RUNTEST); \
+ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
+ if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
+ then :; else exit_status=1; fi; \
+ done; \
+ else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ fi; \
+ exit $$exit_status
+
+distclean-DEJAGNU:
+ -rm -f site.exp site.bak
+ -l='$(DEJATOOL)'; for tool in $$l; do \
+ rm -f $$tool.sum $$tool.log; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-DEJAGNU distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+ clean-libtool distclean distclean-DEJAGNU distclean-generic \
+ distclean-libtool dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+.PHONY: compile-tests
+
+# We need more things in site.exp, but automake completely controls the
+# creation of that file; there's no way to append to it without messing up
+# the dependency chains. So we overrule automake. This rule is exactly
+# what it would have generated, plus our own additions.
+site.exp: Makefile
+ @echo 'Making a new site.exp file...'
+ @echo '## these variables are automatically generated by make ##' >site.tmp
+ @echo '# Do not edit here. If you wish to override these values' >>site.tmp
+ @echo '# edit the last section' >>site.tmp
+ @echo 'set srcdir $(srcdir)' >>site.tmp
+ @echo "set objdir `pwd`" >>site.tmp
+ @echo 'set build_alias "$(build_alias)"' >>site.tmp
+ @echo 'set build_triplet $(build_triplet)' >>site.tmp
+ @echo 'set host_alias "$(host_alias)"' >>site.tmp
+ @echo 'set host_triplet $(host_triplet)' >>site.tmp
+ @echo 'set target_alias "$(target_alias)"' >>site.tmp
+ @echo 'set target_triplet $(target_triplet)' >>site.tmp
+ @echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ @test ! -f site.exp || \
+ sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+ @-rm -f site.bak
+ @test ! -f site.exp || mv site.exp site.bak
+ @mv site.tmp site.exp
+
+check-am: compile-tests
+
+compile-tests:
+@JAVA_MAINTAINER_MODE_TRUE@ for test in `cd $(srcdir) > /dev/null; \
+@JAVA_MAINTAINER_MODE_TRUE@ find libjava.cni libjava.jni libjava.jvmti libjava.lang \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.loader libjava.verify -name \*.java`; do \
+@JAVA_MAINTAINER_MODE_TRUE@ testjar=$(srcdir)/`echo $$test | sed -e 's/\.java$$/\.jar/'`; \
+@JAVA_MAINTAINER_MODE_TRUE@ testdep=; \
+@JAVA_MAINTAINER_MODE_TRUE@ genheader=; \
+@JAVA_MAINTAINER_MODE_TRUE@ case "$$test" in \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/dummy.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ testjar=$(srcdir)/libjava.loader/dummy.class;; \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/MyLoader.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ continue;; \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ testdep="libjava.loader/MyLoader.java";; \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/register2.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ ;; \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/*.java|libjava.jvmti/interp/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ genheader=-jni;; \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.jvmti/*.java|libjava.cni/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ genheader=-cni;; \
+@JAVA_MAINTAINER_MODE_TRUE@ esac; \
+@JAVA_MAINTAINER_MODE_TRUE@ if test -f $$testjar; then \
+@JAVA_MAINTAINER_MODE_TRUE@ if ! test $(srcdir)/$$test -nt $$testjar; then \
+@JAVA_MAINTAINER_MODE_TRUE@ test -z "$$testdep" && continue; \
+@JAVA_MAINTAINER_MODE_TRUE@ test $(srcdir)/$$testdep -nt $$testjar || continue; \
+@JAVA_MAINTAINER_MODE_TRUE@ fi; \
+@JAVA_MAINTAINER_MODE_TRUE@ fi; \
+@JAVA_MAINTAINER_MODE_TRUE@ echo Compiling $$test; \
+@JAVA_MAINTAINER_MODE_TRUE@ testtmpdir=`echo $$test | sed -e 's,/,_,g'`T; \
+@JAVA_MAINTAINER_MODE_TRUE@ rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \
+@JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$testdep"; then \
+@JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \
+@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$testdep || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@ fi; \
+@JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \
+@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$test || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@ case "$$test" in \
+@JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/dummy.java) \
+@JAVA_MAINTAINER_MODE_TRUE@ cp $$testtmpdir/dummy.class $$testjar;; \
+@JAVA_MAINTAINER_MODE_TRUE@ *) \
+@JAVA_MAINTAINER_MODE_TRUE@ $(JAR) cf $$testjar \
+@JAVA_MAINTAINER_MODE_TRUE@ `ls $$testtmpdir/*.class \
+@JAVA_MAINTAINER_MODE_TRUE@ | sed -e 's,^,-C ,;s,/\([^/]*\.class\)$$, \1,'` || exit ;; \
+@JAVA_MAINTAINER_MODE_TRUE@ esac; \
+@JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$genheader"; then \
+@JAVA_MAINTAINER_MODE_TRUE@ $(MYGCJH) $$genheader $$testtmpdir/*.class \
+@JAVA_MAINTAINER_MODE_TRUE@ -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \
+@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir/ || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@ mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \
+@JAVA_MAINTAINER_MODE_TRUE@ fi; \
+@JAVA_MAINTAINER_MODE_TRUE@ rm -rf $$testtmpdir; \
+@JAVA_MAINTAINER_MODE_TRUE@ done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libjava/testsuite/config/default.exp b/libjava/testsuite/config/default.exp
new file mode 100644
index 000000000..90967cccc
--- /dev/null
+++ b/libjava/testsuite/config/default.exp
@@ -0,0 +1 @@
+load_lib "standard.exp"
diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp
new file mode 100644
index 000000000..b05c56843
--- /dev/null
+++ b/libjava/testsuite/lib/libjava.exp
@@ -0,0 +1,799 @@
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation
+
+proc load_gcc_lib { filename } {
+ global srcdir
+ load_file $srcdir/../../gcc/testsuite/lib/$filename
+}
+
+load_lib libgloss.exp
+load_gcc_lib target-libpath.exp
+
+# GCJ_UNDER_TEST is the compiler under test.
+
+global tmpdir
+
+if ![info exists tmpdir] {
+ set tmpdir "/tmp"
+}
+
+# This is like `prune_warnings', but it also prunes away a warning
+# from the bytecode front end that we don't care about.
+proc libjava_prune_warnings {text} {
+ set text [prune_warnings $text]
+ set tlist [split $text \n]
+ set len [llength $tlist]
+ for {set i [expr {$len - 1}]} {$i >= 2} {incr i -1} {
+ if {[string match "*unreachable bytecode*" [lindex $tlist $i]]} {
+ # Delete this line, all other unreachable warnings and the previous
+ # two lines containing the method and class.
+ set j [expr {$i - 1}]
+ while {[string match "*unreachable bytecode*" [lindex $tlist $j]]} {
+ incr j -1
+ }
+ incr j -1
+ set tlist [lreplace $tlist $j $i]
+ set i $j
+ }
+ }
+ return [join $tlist \n]
+}
+
+# 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
+ return [target_compile $source $destfile $type $options]
+}
+
+# Read an `xfail' file if it exists. Returns a list of xfail tokens.
+proc libjava_read_xfail {file} {
+ if {! [file exists $file]} {
+ return ""
+ }
+ set fd [open $file r]
+ set tokens [string trim [read $fd]]
+ close $fd
+ return $tokens
+}
+
+# Find a particular executable. FIXME: this relies on DejaGnu
+# internals. These should probably be exposed in a better way.
+proc libjava_find_program {prog} {
+ global tool_root_dir
+
+ set file [lookfor_file $tool_root_dir $prog]
+ if { $file == "" } {
+ set file [lookfor_file $tool_root_dir gcc/$prog];
+ }
+ if {$file == ""} {
+ set file $prog
+ }
+ return $file
+}
+
+# Find `gcjh'.
+proc find_gcjh {} {
+ return [libjava_find_program gjavah]
+}
+
+proc find_javac {} {
+ global SUN_JAVAC GCJ_UNDER_TEST env libgcj_jar
+ # If JDK doesn't run on your platform but some other
+ # 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
+ # must create class-files even for classes that have not been
+ # specified in the command line, but that were needed to compile
+ # 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
+ # in the kaffe's default search path.
+ if {![info exists SUN_JAVAC]} {
+ if {[info exists env(SUN_JAVAC)]} {
+ set SUN_JAVAC $env(SUN_JAVAC)
+ } else {
+ set SUN_JAVAC "$GCJ_UNDER_TEST -C -I$libgcj_jar"
+ }
+ }
+ return $SUN_JAVAC
+}
+
+proc bytecompile_file { file objdir {classpath {}} } {
+ global env
+ set dirname [file dirname $file]
+
+ set javac [find_javac]
+ if {$classpath != ""} then {
+ set env(CLASSPATH) $classpath
+ }
+ set here [pwd]
+ cd $dirname
+ send_log "byte compile: $javac -g [list $file] -d $objdir 2>@ stdout\n"
+ if {[catch {
+ set q [eval exec "$javac -g [list $file] -d $objdir 2>@ stdout"]
+ } msg]} then {
+ send_log "couldn't compile $file: $msg\n"
+ set r 0
+ } else {
+ set r 1
+ }
+ cd $here
+ return $r
+}
+
+set libjava_initialized 0
+
+#
+# Build the status wrapper library as needed.
+#
+proc libjava_init { args } {
+ global wrapper_file;
+ global wrap_compile_flags;
+ global libjava_initialized libjava_uses_threads
+ global GCJ_UNDER_TEST
+ global TOOL_EXECUTABLE
+ global env objdir
+ global env libgcj_jar
+ global tool_root_dir
+ global libjava_libgcc_s_path
+ global target_triplet
+ global libjava_version
+
+ # We set LC_ALL and LANG to C so that we get the same error messages as expected.
+ setenv LC_ALL C
+ setenv LANG C
+
+ # Many hosts now default to a non-ASCII C locale, however, so
+ # they can set a charset encoding here if they need.
+ if { [ishost "*-*-cygwin*"] } {
+ setenv LC_ALL C.ASCII
+ setenv LANG C.ASCII
+ }
+
+ if { $libjava_initialized == 1 } { return; }
+
+ if ![info exists GCJ_UNDER_TEST] {
+ if [info exists TOOL_EXECUTABLE] {
+ set GCJ_UNDER_TEST $TOOL_EXECUTABLE;
+ } else {
+ if [info exists env(GCJ)] {
+ set GCJ_UNDER_TEST $env(GCJ)
+ } else {
+ set GCJ_UNDER_TEST "[find_gcj]"
+ }
+ }
+ }
+
+ # Find the libgcj jar file.
+
+ # FIXME: This finds libgcj.spec for the default multilib.
+ # If thread models differ between multilibs, this has to be moved
+ # to libjava_arguments
+ set specdir [libjava_find_spec]
+
+ set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"]
+ regexp " version \[^\n\r\]*" $text version
+ set libjava_version [lindex $version 1]
+
+ verbose "version: $libjava_version"
+
+ set libgcj_jar [glob $objdir/../libgcj-$libjava_version.jar]
+ verbose "jar file is $libgcj_jar"
+
+ # The -B is so we find libgcj.spec.
+ regexp -- "Thread model: (\[^\n\]+)\n" $text ignore model
+ set libjava_uses_threads [expr {! ($model == "no"
+ || $model == "none"
+ || $model == "single")}]
+
+ # Always set encoding used by gcj.
+ append GCJ_UNDER_TEST " --encoding=UTF-8"
+
+ set wrapper_file "";
+ set wrap_compile_flags "";
+ if [target_info exists needs_status_wrapper] {
+ set result [build_wrapper "testglue.o"];
+ if { $result != "" } {
+ set wrapper_file [lindex $result 0];
+ set wrap_compile_flags [lindex $result 1];
+ } else {
+ warning "Status wrapper failed to build."
+ }
+ }
+
+ # Finally, add the gcc build directory so that we can find the
+ # shared libgcc. This, like much of dejagnu, is hideous.
+ set libjava_libgcc_s_path {}
+
+ if { [istarget "*-*-darwin*"] } {
+ set so_extension "dylib"
+ } elseif { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } {
+ set so_extension "dll"
+ } else {
+ set so_extension "so"
+ }
+ set gccdir [lookfor_file $tool_root_dir gcc/libgcc_s.${so_extension}]
+ if {$gccdir != ""} {
+ set gccdir [file dirname $gccdir]
+ lappend libjava_libgcc_s_path $gccdir
+ verbose "libjava_libgcc_s_path = $libjava_libgcc_s_path"
+ set compiler ${gccdir}/xgcc
+ if { [is_remote host] == 0 && [which $compiler] != 0 } {
+ foreach i "[exec $compiler --print-multi-lib]" {
+ set mldir ""
+ regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
+ set mldir [string trimright $mldir "\;@"]
+ if { "$mldir" == "." } {
+ continue
+ }
+ if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.${so_extension}.*]] >= 1 } {
+ lappend libjava_libgcc_s_path "${gccdir}/${mldir}"
+ }
+ }
+ }
+ }
+
+ set libjava_initialized 1
+}
+
+# Find a library. We know where libtool puts the actual libraries,
+# and we look there. The implementation is fairly hacky. We can't
+# compile with -nodefaultlibs, because that will also eliminate the
+# system libraries we need. In order to have gcj still work, it must
+# find the appropriate libraries so we must add -L options for their
+# paths. However we can't simply use those libraries; we still need
+# libtool for linking.
+# Don't return the the lib${name}.la files here, since this causes the
+# libraries to be linked twice: once as lib${name}.so/dylib and another time
+# via gcj's implicit -l${name}. This is both unnecessary and causes the
+# Solaris ld to warn: attempted multiple inclusion of file. This warning
+# is not ignored by the dejagnu framework and cannot be disabled.
+proc libjava_find_lib {dir name} {
+ global base_dir
+ set gp [get_multilibs]
+ foreach extension {so dll dylib sl a} {
+ foreach sub {.libs _libs} {
+ if {$gp != ""} {
+ if {[file exists $gp/$dir/$sub/lib${name}.${extension}]} then {
+ # Just return the `-L' option. The library itself
+ # will be picked up via the spec file.
+ return "-L$gp/$dir/$sub"
+ }
+ }
+ # Just return the `-L' option. The library itself will be
+ # picked up via the spec file.
+ set lib [findfile \
+ $base_dir/../../$dir/$sub/lib${name}.${extension} \
+ "-L$base_dir/../../$dir/$sub" \
+ ""]
+ if {$lib != ""} {
+ return $lib
+ }
+ }
+ }
+ return ""
+}
+
+# Find libgcj.spec. We need to use the file corresponding to the multilib
+# under test since they might differ. Append a trailing slash since this
+# is used with -B.
+proc libjava_find_spec {} {
+ global objdir
+ return "$objdir/../"
+}
+
+# Find `gij'. Return empty string if not found.
+proc libjava_find_gij {} {
+ global base_dir objdir
+
+ set gijdir [lookfor_file [get_multilibs] libjava];
+ # Fall back if get_multilibs fails.
+ if {$gijdir == ""} {
+ set gijdir "$objdir/.."
+ }
+ if {! [file exists $gijdir/gij]} {
+ return ""
+ }
+ return $gijdir/gij
+}
+
+# Remove a bunch of files.
+proc gcj_cleanup {args} {
+ foreach file $args {
+ if {[string match *.o $file]} {
+ verbose "removing [file rootname $file].lo"
+ file delete -force [file rootname $file].lo
+ }
+ file delete -force -- $file
+ verbose "removing $file"
+ }
+ # It is simplest to do this instead of trying to figure out what
+ # bits in .libs ought to be removed.
+ catch {system "rm -rf .libs"}
+}
+
+# Compute arguments needed for compiler. MODE is a libtool mode:
+# either compile or link.
+proc libjava_arguments {{mode compile}} {
+ global base_dir
+ global LIBJAVA
+ global srcdir subdir objdir
+ global TOOL_OPTIONS
+ global GCJ_UNDER_TEST
+ global tmpdir
+ global runtests
+ global env
+ global tool_root_dir
+ global libgcj_jar
+ global libjava_libgcc_s_path
+ global libjava_ld_library_path
+ global ld_library_path
+ global target_triplet
+
+ if [info exists LIBJAVA] {
+ set libjava $LIBJAVA;
+ } else {
+ set libjava [libjava_find_lib libjava gcj]
+ }
+
+ verbose "using LIBJAVA = $libjava" 2
+ set args ""
+
+ # Basically we want to build up a colon separated path list from
+ # the value of $libjava.
+
+ set lpath "."
+ foreach dir [list $libjava] {
+ foreach item [split $dir " "] {
+ switch -glob -- $item {
+ "-L*" {
+ lappend lpath [string range $item 2 end]
+ }
+ }
+ }
+ }
+
+ set lpath [concat $lpath $libjava_libgcc_s_path]
+ verbose "lpath = $lpath ; libgcc_s_path = $libjava_libgcc_s_path"
+ set ld_library_path [join $lpath :]
+ set libjava_ld_library_path "$ld_library_path"
+
+ # That's enough to make things work for the normal case.
+ # If we wanted to handle an arbitrary value of libjava,
+ # then we'd have to do a lot more work.
+
+ set_ld_library_path_env_vars
+ if [info exists env(LD_LIBRARY_PATH)] {
+ verbose "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"
+ }
+
+ # Determine CLASSPATH separator
+ if { [string match "i?86-pc-mingw32*" $target_triplet] } {
+ set sep ";"
+ } else {
+ set sep ":"
+ }
+
+ # Set the CLASSPATH environment variable
+ global env
+ set env(CLASSPATH) \
+ [join [list . $srcdir/$subdir $objdir $libgcj_jar] $sep]
+ verbose "CLASSPATH is $env(CLASSPATH)"
+
+ # Disable all warnings, as ecj is rather chatty.
+ lappend args "additional_flags=-w"
+
+ if {$mode == "link"} {
+ global wrapper_file wrap_compile_flags
+ lappend args "additional_flags=$wrap_compile_flags"
+
+ if { [regexp "linux" $target_triplet] } {
+ lappend args "additional_flags=-specs=libgcj-test.spec"
+ }
+
+ lappend args "libs=$wrapper_file"
+ lappend args "libs=$libjava"
+ lappend args debug
+ }
+
+ if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
+ lappend args "libs=${gluefile}"
+ lappend args "ldflags=$wrap_flags"
+ }
+
+ if [info exists TOOL_OPTIONS] {
+ lappend args "additional_flags=$TOOL_OPTIONS"
+ }
+
+ # Determine libgcj.spec corresponding to multilib under test.
+ set specdir [libjava_find_spec]
+
+ # Search for libtool. We need it to link.
+ set found_compiler 0
+ set d [absolute $objdir]
+ foreach x {. .. ../.. ../../..} {
+ if {[file exists $d/$x/libtool]} then {
+ # We have to run silently to avoid DejaGNU lossage.
+ lappend args \
+ "compiler=$d/$x/libtool --silent --tag=GCJ --mode=$mode $GCJ_UNDER_TEST -B$specdir"
+ set found_compiler 1
+ break
+ }
+ }
+ if {! $found_compiler} {
+ # Append -B$specdir so that we find libgcj.spec before it
+ # is installed.
+ lappend args "compiler=$GCJ_UNDER_TEST -B$specdir"
+ }
+
+ # Avoid libtool wrapper scripts when possible.
+ # but not if libtool warnings results in FAILs
+ if {$mode == "link"} {
+ if {! [istarget "*-*-cygwin*"] && ! [istarget "*-*-mingw*"]
+ && ! [istarget "*-*-darwin*"] } {
+ lappend args "additional_flags=-no-install"
+ }
+ if { [istarget "*-*-darwin*"] } {
+ lappend args "additional_flags=-bind_at_load"
+ lappend args "additional_flags=-multiply_defined suppress"
+ }
+ if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] || [istarget "*-*-darwin2*"] } {
+ lappend args "additional_flags=-Wl,-allow_stack_execute"
+ }
+
+ }
+
+ return $args
+}
+
+# Link a bunch of objects into a program. MAIN is the name of the
+# class holding `main'. Return 0 on failure.
+proc gcj_link {program main files {options {}}} {
+ set arguments [libjava_arguments link]
+ if {[llength $options]} {
+ eval lappend arguments $options
+ }
+ lappend arguments "additional_flags=--main=$main"
+ set x [libjava_prune_warnings \
+ [libjava_tcompile $files $program executable $arguments]]
+ if {$x != ""} {
+ verbose "link failure: $x" 2
+ fail "linking $program"
+ setup_xfail "*-*-*"
+ fail "running $program"
+ return 0
+ }
+
+ pass "linking $program"
+ return 1
+}
+
+# Invoke the program and see what happens. Return 0 on failure.
+proc gcj_invoke {program expectFile ld_library_additions} {
+ global env
+ global libjava_ld_library_path
+ global ld_library_path
+
+ set ld_library_path "$libjava_ld_library_path"
+ if {[llength $ld_library_additions] > 0} {
+ append ld_library_path :[join $ld_library_additions :]
+ }
+
+ set_ld_library_path_env_vars
+ if [info exists env(LD_LIBRARY_PATH)] {
+ verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)"
+ }
+
+ set result [libjava_load ./$program]
+ set status [lindex $result 0]
+ set output [lindex $result 1]
+
+ # Restore setting
+ restore_ld_library_path_env_vars
+
+ if {$status != "pass"} {
+ verbose "got $output"
+ fail "$program run"
+ untested "$program output"
+ return 0
+ }
+
+ set id [open $expectFile r]
+ set expected [read $id]
+ close $id
+
+ if {! [string compare $output $expected]} {
+ pass "$program output"
+ return 1
+ } else {
+ fail "$program output"
+ return 0
+ }
+}
+
+proc exec_gij {jarfile expectFile {ld_library_additions {}} {addl_flags {}}} {
+ global env
+ global libjava_ld_library_path
+ global ld_library_path
+
+ set ld_library_path "$libjava_ld_library_path"
+ if {[llength $ld_library_additions] > 0} {
+ append ld_library_path :[join $ld_library_additions :]
+ }
+
+ set_ld_library_path_env_vars
+ if [info exists env(LD_LIBRARY_PATH)] {
+ verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)"
+ }
+
+ set gij [libjava_find_gij]
+ set classname [file rootname [file tail $jarfile]]
+
+ puts "LD_LIBRARY_PATH=. $gij -cp $jarfile $addl_flags $classname"
+
+ set result [libjava_load $gij "-cp $jarfile $addl_flags $classname"]
+ set status [lindex $result 0]
+ set output [lindex $result 1]
+
+ restore_ld_library_path_env_vars
+
+ if {$status != "pass"} {
+ verbose "got $output"
+ fail "$classname run"
+ untested "$classname output"
+ return 0
+ }
+
+ set id [open $expectFile r]
+ set expected [read $id]
+ close $id
+
+ if {! [string compare $output $expected]} {
+ pass "$classname output"
+ return 1
+ } else {
+ fail "$classname output"
+ return 0
+ }
+}
+
+# Invoke a program and check its output. EXECUTABLE is the program;
+# ARGS are the arguments to the program. Returns 1 if tests passed
+# (or things were left untested), 0 otherwise.
+proc libjava_invoke {errname testName optName executable inpfile resultfile
+ ld_library_additions args} {
+ global env
+ global libjava_ld_library_path
+ global ld_library_path
+
+ set ld_library_path "$libjava_ld_library_path"
+ if {[llength $ld_library_additions] > 0} {
+ append ld_library_path :[join $ld_library_additions :]
+ }
+
+ set_ld_library_path_env_vars
+ if [info exists env(LD_LIBRARY_PATH)] {
+ verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)"
+ }
+
+ upvar $optName opts
+
+ if {[info exists opts(no-exec)]} {
+ if {[info exists opts(need-threads)]} {
+ # This means we wanted to try to run it but we couldn't
+ # because threads aren't supported. So we have to
+ # generate an `untested'.
+ untested "$errname execution - $testName"
+ untested "$errname output - $testName"
+ }
+ return 1
+ }
+
+ send_log "invoke: $executable $args $inpfile\n"
+
+ set result [libjava_load $executable $args "$inpfile"]
+ set status [lindex $result 0]
+ set output [lindex $result 1]
+
+ # Restore LD_LIBRARY_PATH setting.
+ restore_ld_library_path_env_vars
+
+ if {[info exists opts(xfail-exec)]} then {
+ setup_xfail *-*-*
+ }
+ $status "$errname execution - $testName"
+ if { $status != "pass" } {
+ untested "$errname output - $testName"
+ return 0
+ }
+
+ verbose "resultfile is $resultfile"
+ set id [open $resultfile r]
+ set expected ""
+ append expected [read $id]
+ regsub -all "\r" "$output" "" output
+ regsub "\n*$" $expected "" expected
+ regsub "\n*$" $output "" output
+ regsub "^\n*" $expected "" expected
+ regsub "^\n*" $output "" output
+ regsub -all "\[ \t\]\[ \t\]*" $expected " " expected
+ regsub -all "\[ \t\]*\n\n*" $expected "\n" expected
+ regsub -all "\[ \t\]\[ \t\]*" $output " " output
+ regsub -all "\[ \t\]*\n\n*" $output "\n" output
+ verbose "expected is $expected"
+ verbose "actual is $output"
+ set passed 0
+ if {[info exists opts(regexp_match)]} {
+ if [regexp $expected $output] {
+ set passed 1
+ }
+ } else {
+ if { $expected == $output } {
+ set passed 1
+ }
+ }
+ if {[info exists opts(xfail-output)]} {
+ setup_xfail *-*-*
+ }
+ if { $passed == 1 } {
+ pass "$errname output - $testName"
+ } else {
+ fail "$errname output - $testName"
+ }
+ close $id
+
+ return $passed
+}
+
+#
+# Run the test specified by srcfile and resultfile. compile_args and
+# exec_args are options telling this proc how to work.
+#
+proc test_libjava_from_source { options srcfile compile_args inpfile resultfile exec_args } {
+ global base_dir
+ global srcdir subdir objdir
+ global TOOL_OPTIONS
+ global GCJ_UNDER_TEST
+ global tmpdir
+ global runtests
+
+ # Make opts into an array.
+ set opts(_) x
+ unset opts(_)
+ foreach item $exec_args {
+ set opts($item) x
+ }
+
+ # If we need threads and we don't have them then set the `no-exec'
+ # flag. This is case is also handled specially later.
+ if {[info exists opts(need-threads)]} {
+ global libjava_uses_threads
+ if {! $libjava_uses_threads} {
+ set opts(no-exec) x
+ }
+ }
+
+ set errname [file rootname [file tail $srcfile]]
+ if {! [runtest_file_p $runtests $errname]} {
+ return
+ }
+
+ if {[info exists opts(no-link)]} {
+ set mode compile
+ } else {
+ set mode link
+ }
+ set args [libjava_arguments $mode]
+ if {! [info exists opts(no-link)]} {
+ # Add the --main flag
+ lappend args "additional_flags=--main=[file rootname [file tail $srcfile]]"
+ if { $compile_args != "" } {
+ lappend args "additional_flags=$compile_args"
+ }
+ }
+
+ regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out
+ set executable "${objdir}/$out"
+ if {[info exists opts(no-link)]} {
+ append executable ".o"
+ set target object
+ } else {
+ # DOS/win32 targets default to .exe if no suffix is given
+ # We then try to delete a file that doesn't exist. It is
+ # simpler to add the suffix everywhere.
+ append executable ".exe"
+ set target executable
+ }
+ if { $compile_args != "" } {
+ set errname "$errname $compile_args"
+ }
+
+ set removeList [list $executable]
+
+ set x [libjava_prune_warnings \
+ [libjava_tcompile $srcfile "$executable" $target $args]]
+ if {[info exists opts(xfail-gcj)]} {
+ setup_xfail *-*-*
+ }
+ if { $x != "" } {
+ verbose "target_compile failed: $x" 2
+
+ if {[info exists opts(shouldfail)]} {
+ pass "$errname compilation from source"
+ eval gcj_cleanup $removeList
+ return
+ }
+
+ fail "$errname compilation from source"
+ if {[info exists opts(xfail-gcj)]
+ || ! [info exists opts(no-exec)]
+ || [info exists opts(need-threads)]} {
+ untested "$errname execution from source compiled test"
+ untested "$errname output from source compiled test"
+ }
+ return
+ }
+ if {[info exists opts(shouldfail)]} {
+ fail "$errname compilation from source"
+ return
+ }
+ pass "$errname compilation from source"
+
+ # Set up the options the way they are expected by libjava_invoke.
+ if {[info exists opts(xfail-source-output)]} {
+ set opts(xfail-output) x
+ }
+ if {[libjava_invoke $errname "source compiled test" opts $executable \
+ $inpfile $resultfile ""]} {
+ # Everything ok, so clean up.
+ eval gcj_cleanup $removeList
+ }
+}
+
+#
+# Run the test specified by srcfile and resultfile. compile_args and
+# exec_args are options telling this proc how to work.
+# `no-link' don't try to link the program
+# `no-exec' don't try to run the test
+# `xfail-gcj' compilation from source will fail
+# `xfail-javac' compilation with javac will fail
+# `xfail-gcjC' compilation with gcj -C will fail
+# `shouldfail' compilation from source is supposed to fail
+# This is different from xfail, which marks a known
+# failure that we just haven't fixed.
+# A compilation marked this way should fail with any
+# front end.
+# `xfail-byte' compilation from bytecode will fail
+# `xfail-exec' exec will fail
+# `xfail-output'
+# output will be wrong
+# `xfail-byte-output'
+# output will be wrong when compiled from bytecode
+# `xfail-source-output'
+# output will be wrong when compiled from source code
+# `need-threads'
+# test relies on thread support
+#
+proc test_libjava { options srcfile compile_args inpfile resultfile exec_args } {
+ test_libjava_from_source $options $srcfile $compile_args $inpfile $resultfile $exec_args
+
+ # Test BC-ABI compilation.
+ set compile_args_bcabi $compile_args
+ lappend compile_args_bcabi "-findirect-dispatch"
+ test_libjava_from_source $options $srcfile $compile_args_bcabi $inpfile $resultfile $exec_args
+}
+
+#
+# libjava_version -- extract and print the version number of libjavap
+#
+proc default_libjava_version {} {
+}
+
+proc default_libjava_start { } {
+}
+
+# Local Variables:
+# tcl-indent-level:4
+# End:
diff --git a/libjava/testsuite/libjava.cni/PR9577.h b/libjava/testsuite/libjava.cni/PR9577.h
new file mode 100644
index 000000000..a8d6d19ae
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/PR9577.h
@@ -0,0 +1,29 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __PR9577__
+#define __PR9577__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class PR9577;
+}
+
+class PR9577 : public ::java::lang::Object
+{
+
+public:
+ PR9577();
+private:
+ void sayHello(JArray< ::java::lang::String * > *, ::java::lang::Object *);
+public:
+ static void main(JArray< ::java::lang::String * > *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __PR9577__
diff --git a/libjava/testsuite/libjava.cni/PR9577.jar b/libjava/testsuite/libjava.cni/PR9577.jar
new file mode 100644
index 000000000..6e9f5cee7
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/PR9577.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.cni/PR9577.java b/libjava/testsuite/libjava.cni/PR9577.java
new file mode 100644
index 000000000..269739243
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/PR9577.java
@@ -0,0 +1,14 @@
+// Check if a method name is mangled properly in the presence
+// of an array parameter sharing a part of the type name
+// with a subsequent parameter.
+
+public class PR9577
+{
+ private native void sayHello (String[] s, Object o);
+
+ public static void main (String[] args)
+ {
+ PR9577 x = new PR9577( );
+ x.sayHello( null, null);
+ }
+}
diff --git a/libjava/testsuite/libjava.cni/PR9577.out b/libjava/testsuite/libjava.cni/PR9577.out
new file mode 100644
index 000000000..10ddd6d25
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/PR9577.out
@@ -0,0 +1 @@
+Hello!
diff --git a/libjava/testsuite/libjava.cni/cni.exp b/libjava/testsuite/libjava.cni/cni.exp
new file mode 100644
index 000000000..aec16b933
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/cni.exp
@@ -0,0 +1,124 @@
+# Tests for CNI code.
+
+# Compile a single C++ file and produce a .o file. OPTIONS is a list
+# of options to pass to the compiler. Returns 0 on failure, 1 on
+# success.
+proc gcj_cni_compile_cxx_to_o {file {options {}}} {
+ global srcdir subdir
+
+ set name [file rootname [file tail $file]]
+ set oname ${name}.o
+
+ # Find the generated header.
+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers"
+ # Find libgcj headers.
+ lappend options "additional_flags=-I$srcdir/.."
+
+ set x [libjava_prune_warnings \
+ [target_compile $file $oname object $options]]
+ if {$x != ""} {
+ verbose "target_compile failed: $x" 2
+ fail "[file tail $file] compilation"
+ return 0
+ }
+
+ pass "[file tail $file] compilation"
+ return 1
+}
+
+# Build header files given name of .java file. Return 0 on failure.
+proc gcj_cni_build_headers {file} {
+ global libgcj_jar
+
+ set gcjh [find_gcjh]
+
+ # Currently we only build a header file for the main class from the
+ # .java file, and then others on an ad hoc basis.
+ set list {}
+ set main [file rootname [file tail $file]]
+ lappend list $main
+ # ... for instance, an obvious hack.
+ if {$main == "shortfield"} {
+ lappend list shortfieldbase
+ }
+
+ foreach file $list {
+ set cmd "$gcjh -cni -force -classpath .:$libgcj_jar $file"
+ verbose $cmd
+ set x [string trim [libjava_prune_warnings \
+ [lindex [local_exec $cmd "" "" 300] 1]]]
+ if {$x != ""} {
+ verbose "local_exec failed: $x" 2
+ fail "$main header generation"
+ return 0
+ }
+ }
+
+ pass "$main header generation"
+ return 1
+}
+
+# Do all the work for a single CNI test. Return 0 on failure.
+proc gcj_cni_test_one {file} {
+ global runtests
+
+ # The base name. We use it for several purposes.
+ set main [file rootname [file tail $file]]
+ if {! [runtest_file_p $runtests $main]} {
+ # Simply skip it.
+ return 1
+ }
+
+# 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"
+
+# if {! [gcj_cni_build_headers $file]} {
+# # FIXME
+# return 0
+# }
+
+ set cfile [file join [file dirname $file] nat$main.cc]
+ if {! [gcj_cni_compile_cxx_to_o $cfile]} {
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_link $main $main [list $file nat$main.o]]} {
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_invoke $main [file rootname $file].out {}]} {
+ # FIXME
+ return 0
+ }
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] [list $main nat$main.o]
+
+ return 1
+}
+
+# Run the CNI tests.
+proc gcj_cni_run {} {
+ global srcdir subdir
+ global build_triplet host_triplet
+
+ # For now we only test CNI on native builds.
+ if {$build_triplet == $host_triplet} {
+ catch { lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar] } srcfiles
+
+ foreach x $srcfiles {
+ gcj_cni_test_one $x
+ }
+ } else {
+ verbose "CNI tests not run in cross-compilation environment"
+ }
+}
+
+gcj_cni_run
diff --git a/libjava/testsuite/libjava.cni/longfield.h b/libjava/testsuite/libjava.cni/longfield.h
new file mode 100644
index 000000000..51ea17f44
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/longfield.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __longfield__
+#define __longfield__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class longfield;
+}
+
+class longfield : public ::java::lang::Object
+{
+
+public:
+ longfield();
+ virtual void doitc();
+ virtual void doitj();
+ static void main(JArray< ::java::lang::String * > *);
+public: // actually package-private
+ jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) lval;
+ jboolean bval;
+ ::java::lang::String * sval;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __longfield__
diff --git a/libjava/testsuite/libjava.cni/longfield.jar b/libjava/testsuite/libjava.cni/longfield.jar
new file mode 100644
index 000000000..aab946776
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/longfield.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.cni/longfield.java b/libjava/testsuite/libjava.cni/longfield.java
new file mode 100644
index 000000000..917bf953a
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/longfield.java
@@ -0,0 +1,22 @@
+public class longfield
+{
+ long lval = 232300;
+ boolean bval = true;
+ String sval = "maude";
+
+ public native void doitc ();
+
+ public void doitj()
+ {
+ System.out.println(lval);
+ System.out.println(bval);
+ System.out.println(sval);
+ }
+
+ public static void main(String[] args)
+ {
+ longfield f = new longfield();
+ f.doitc();
+ f.doitj();
+ }
+}
diff --git a/libjava/testsuite/libjava.cni/longfield.out b/libjava/testsuite/libjava.cni/longfield.out
new file mode 100644
index 000000000..d041bbbf7
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/longfield.out
@@ -0,0 +1,6 @@
+232300
+true
+maude
+232300
+true
+maude
diff --git a/libjava/testsuite/libjava.cni/natPR9577.cc b/libjava/testsuite/libjava.cni/natPR9577.cc
new file mode 100644
index 000000000..90fafeea3
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/natPR9577.cc
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#include "PR9577.h"
+
+void
+PR9577::sayHello (JArray< ::java::lang::String *> *x, ::java::lang::Object *y)
+ {
+ printf( "Hello!\n");
+ }
diff --git a/libjava/testsuite/libjava.cni/natlongfield.cc b/libjava/testsuite/libjava.cni/natlongfield.cc
new file mode 100644
index 000000000..c16a46c76
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/natlongfield.cc
@@ -0,0 +1,15 @@
+#include <gcj/cni.h>
+
+#include "longfield.h"
+#include <java/lang/System.h>
+#include <java/io/PrintStream.h>
+
+void
+longfield::doitc ()
+{
+ java::io::PrintStream *ps = java::lang::System::out;
+
+ ps->println(lval);
+ ps->println(bval);
+ ps->println(sval);
+}
diff --git a/libjava/testsuite/libjava.cni/natshortfield.cc b/libjava/testsuite/libjava.cni/natshortfield.cc
new file mode 100644
index 000000000..08a7d5c05
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/natshortfield.cc
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include "shortfield.h"
+
+void shortfield::ouch ()
+{
+ printf ("list: %d %d 0x%x\n",
+ modCount,
+ size__,
+ data);
+}
diff --git a/libjava/testsuite/libjava.cni/shortfield.h b/libjava/testsuite/libjava.cni/shortfield.h
new file mode 100644
index 000000000..175a9fd8e
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/shortfield.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __shortfield__
+#define __shortfield__
+
+#pragma interface
+
+#include <shortfieldbase.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class shortfield;
+}
+
+class shortfield : public ::shortfieldbase
+{
+
+public:
+ shortfield();
+public: // actually package-private
+ virtual void ouch();
+public:
+ static void main(JArray< ::java::lang::String * > *);
+public: // actually package-private
+ jshort __attribute__((aligned(__alignof__( ::shortfieldbase)))) size__;
+ jint data;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __shortfield__
diff --git a/libjava/testsuite/libjava.cni/shortfield.jar b/libjava/testsuite/libjava.cni/shortfield.jar
new file mode 100644
index 000000000..f7af1afb7
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/shortfield.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.cni/shortfield.java b/libjava/testsuite/libjava.cni/shortfield.java
new file mode 100644
index 000000000..68b6c5e22
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/shortfield.java
@@ -0,0 +1,21 @@
+class shortfieldbase
+{
+ short modCount;
+}
+
+public class shortfield extends shortfieldbase
+{
+ short size__;
+ int data;
+
+ native void ouch ();
+
+ public static void main (String[] s)
+ {
+ shortfield f = new shortfield();
+ f.modCount = 99;
+ f.size__ = 2;
+ f.data = 0x12345678;
+ f.ouch();
+ }
+}
diff --git a/libjava/testsuite/libjava.cni/shortfield.out b/libjava/testsuite/libjava.cni/shortfield.out
new file mode 100644
index 000000000..06485dbae
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/shortfield.out
@@ -0,0 +1 @@
+list: 99 2 0x12345678
diff --git a/libjava/testsuite/libjava.cni/shortfieldbase.h b/libjava/testsuite/libjava.cni/shortfieldbase.h
new file mode 100644
index 000000000..171ca3d45
--- /dev/null
+++ b/libjava/testsuite/libjava.cni/shortfieldbase.h
@@ -0,0 +1,25 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __shortfieldbase__
+#define __shortfieldbase__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ class shortfieldbase;
+}
+
+class shortfieldbase : public ::java::lang::Object
+{
+
+public: // actually package-private
+ shortfieldbase();
+ jshort __attribute__((aligned(__alignof__( ::java::lang::Object)))) modCount;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __shortfieldbase__
diff --git a/libjava/testsuite/libjava.jar/TestClosureGC.jar b/libjava/testsuite/libjava.jar/TestClosureGC.jar
new file mode 100644
index 000000000..60d948ad5
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/TestClosureGC.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jar/TestClosureGC.java b/libjava/testsuite/libjava.jar/TestClosureGC.java
new file mode 100644
index 000000000..69a325a99
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/TestClosureGC.java
@@ -0,0 +1,116 @@
+/* Verify that libffi closures aren't deallocated too early.
+
+ Copyright (C) 2007 Free Software Foundation, Inc
+ Contributed by Alexandre Oliva <aoliva@redhat.com>
+
+ If libffi closures are released too early, we lose.
+ */
+
+import java.util.HashSet;
+
+public class TestClosureGC {
+ public static String objId (Object obj) {
+ return obj + "/"
+ + Integer.toHexString(obj.getClass().getClassLoader().hashCode());
+ }
+ public static class cld extends java.net.URLClassLoader {
+ static final Object obj = new cl0();
+ public cld () throws Exception {
+ super(new java.net.URL[] { });
+ /* System.out.println (objId (this) + " created"); */
+ }
+ public void finalize () {
+ /* System.out.println (objId (this) + " finalized"); */
+ }
+ public String toString () {
+ return this.getClass().getName() + "@"
+ + Integer.toHexString (hashCode ());
+ }
+ public Class loadClass (String name) throws ClassNotFoundException {
+ try {
+ java.io.InputStream IS = getSystemResourceAsStream
+ (name + ".class");
+ int maxsz = 1024, readsz = 0;
+ byte buf[] = new byte[maxsz];
+ for(;;) {
+ int readnow = IS.read (buf, readsz, maxsz - readsz);
+ if (readnow <= 0)
+ break;
+ readsz += readnow;
+ if (readsz == maxsz) {
+ byte newbuf[] = new byte[maxsz *= 2];
+ System.arraycopy (buf, 0, newbuf, 0, readsz);
+ buf = newbuf;
+ }
+ }
+ return defineClass (name, buf, 0, readsz);
+ } catch (Exception e) {
+ return super.loadClass (name);
+ }
+ }
+ }
+ public static class cl0 {
+ public cl0 () {
+ /* System.out.println (objId (this) + " created"); */
+ }
+ public void finalize () {
+ /* System.out.println (objId (this) + " finalized"); */
+ }
+ }
+ public static class cl1 {
+ final HashSet hs;
+ static final Object obj = new cl0();
+ public cl1 (final HashSet hs) {
+ this.hs = hs;
+ /* System.out.println (objId (this) + " created"); */
+ }
+ public void finalize () {
+ /* System.out.println (objId (this) + " finalized"); */
+ }
+ }
+ public static class cl2 {
+ final HashSet hs;
+ static final Object obj = new cl0();
+ public cl2 (final HashSet hs) {
+ this.hs = hs;
+ /* System.out.println (objId (this) + " created"); */
+ }
+ public void finalize () {
+ /* System.out.println (objId (this) + " finalized"); */
+ hs.add(this);
+ hs.add(new cl0());
+ }
+ }
+ static final HashSet hs = new HashSet();
+ static final Object obj = new cl0();
+ public static void main(String[] argv) throws Exception {
+ {
+ Class[] hscs = { HashSet.class };
+ Object[] hsos = { hs };
+ new cld().loadClass ("TestClosureGC$cl1").
+ getConstructor (hscs).newInstance (hsos);
+ new cld().loadClass ("TestClosureGC$cl2").
+ getConstructor (hscs).newInstance (hsos);
+ new cld().loadClass ("TestClosureGC$cl1").
+ getConstructor (hscs).newInstance (hsos);
+ new cld().loadClass ("TestClosureGC$cl1").
+ getConstructor (hscs).newInstance (hsos);
+ }
+ for (int i = 1; i <= 5; i++) {
+ /* System.out.println ("Will run GC and finalization " + i); */
+ System.gc ();
+ Thread.sleep (100);
+ System.runFinalization ();
+ Thread.sleep (100);
+ if (hs.isEmpty ())
+ continue;
+ java.util.Iterator it = hs.iterator ();
+ while (it.hasNext ()) {
+ Object obj = it.next();
+ /* System.out.println (objId (obj) + " in ht, removing"); */
+ it.remove ();
+ }
+ }
+ System.out.println ("ok");
+ }
+}
diff --git a/libjava/testsuite/libjava.jar/TestClosureGC.out b/libjava/testsuite/libjava.jar/TestClosureGC.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/TestClosureGC.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.jar/TestClosureGC.xfail b/libjava/testsuite/libjava.jar/TestClosureGC.xfail
new file mode 100644
index 000000000..963b35a7c
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/TestClosureGC.xfail
@@ -0,0 +1 @@
+main=TestClosureGC
diff --git a/libjava/testsuite/libjava.jar/jar.exp b/libjava/testsuite/libjava.jar/jar.exp
new file mode 100644
index 000000000..65565832e
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/jar.exp
@@ -0,0 +1,67 @@
+# Tests for .jar files.
+
+# Compile a single .jar file to an executable.
+# Returns 0 on failure.
+proc gcj_jar_link {jarfile mainclass} {
+}
+
+proc gcj_jar_compile_one {jarfile mainclass} {
+ set base [file rootname [file tail $jarfile]]
+ set out [file rootname $jarfile].out
+
+ if {! [gcj_link $base $mainclass [list $jarfile]]} {
+ return
+ }
+
+ gcj_invoke $base $out {}
+}
+
+proc gcj_jar_interpret {jarfile} {
+ global INTERPRETER srcdir
+
+ set gij [libjava_find_gij]
+ # libjava_find_gij will return "" if it couldn't find the
+ # program; in this case we want to skip the test.
+ if {$INTERPRETER != "yes" || $gij == ""} {
+ untested "$jarfile execution - gij test"
+ untested "$jarfile output - gij test"
+ return
+ }
+
+ set opts(_) {}
+ set out [file rootname $jarfile].out
+ libjava_invoke $jarfile "gij test" opts $gij {} $out \
+ "" -jar $jarfile
+}
+
+proc gcj_jar_run {} {
+ global srcdir subdir env
+ foreach jar [lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar]] {
+ set xff [file rootname $jar].xfail
+ set main {}
+ set interp 1
+ foreach item [libjava_read_xfail $xff] {
+ if {[string match main=* $item]} {
+ set main [string range $item 5 end]
+ break
+ } elseif {$item == "no-interpret"} {
+ set interp 0
+ }
+ }
+
+ gcj_jar_compile_one $jar $main
+ if {$interp} {
+ gcj_jar_interpret $jar
+ }
+ }
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] [list $main ]
+
+ # Reset CLASSPATH that we do not look into testsuite/libjava.jar for *.jar
+ # files which do not belong to the libgcj itself.
+ set env(CLASSPATH) ""
+
+ return 1
+}
+
+gcj_jar_run
diff --git a/libjava/testsuite/libjava.jar/simple.jar b/libjava/testsuite/libjava.jar/simple.jar
new file mode 100644
index 000000000..a3359b298
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/simple.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jar/simple.java b/libjava/testsuite/libjava.jar/simple.java
new file mode 100644
index 000000000..848ebe126
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/simple.java
@@ -0,0 +1,7 @@
+public class simple
+{
+ public static void main(String[] args)
+ {
+ System.out.println("hi");
+ }
+}
diff --git a/libjava/testsuite/libjava.jar/simple.out b/libjava/testsuite/libjava.jar/simple.out
new file mode 100644
index 000000000..45b983be3
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/simple.out
@@ -0,0 +1 @@
+hi
diff --git a/libjava/testsuite/libjava.jar/simple.xfail b/libjava/testsuite/libjava.jar/simple.xfail
new file mode 100644
index 000000000..478dfc794
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/simple.xfail
@@ -0,0 +1 @@
+main=simple
diff --git a/libjava/testsuite/libjava.jni/PR15133.c b/libjava/testsuite/libjava.jni/PR15133.c
new file mode 100644
index 000000000..be5a48efa
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR15133.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+#include <jni.h>
+#include "PR15133.h"
+
+JNIEXPORT void JNICALL
+Java_PR15133_printIt (JNIEnv *env, jobject x, jint y)
+{
+ printf ("%d\n", y);
+}
diff --git a/libjava/testsuite/libjava.jni/PR15133.h b/libjava/testsuite/libjava.jni/PR15133.h
new file mode 100644
index 000000000..af9f8f8a3
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR15133.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __PR15133__
+#define __PR15133__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_PR15133_printIt (JNIEnv *env, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PR15133__ */
diff --git a/libjava/testsuite/libjava.jni/PR15133.jar b/libjava/testsuite/libjava.jni/PR15133.jar
new file mode 100644
index 000000000..ad76705df
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR15133.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/PR15133.java b/libjava/testsuite/libjava.jni/PR15133.java
new file mode 100644
index 000000000..90435765b
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR15133.java
@@ -0,0 +1,14 @@
+/* Test case for PR java/15133 */
+public class PR15133
+{
+ public void printIt (String dummy) { }
+
+ public native void printIt (int num);
+
+ public static void main (String[] args)
+ {
+ System.loadLibrary ("PR15133");
+
+ new PR15133( ).printIt( 1729);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/PR15133.out b/libjava/testsuite/libjava.jni/PR15133.out
new file mode 100644
index 000000000..32bb421c6
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR15133.out
@@ -0,0 +1 @@
+1729
diff --git a/libjava/testsuite/libjava.jni/PR18116.c b/libjava/testsuite/libjava.jni/PR18116.c
new file mode 100644
index 000000000..bcd14331e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.c
@@ -0,0 +1,35 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <PR18116.h>
+
+// The purpose of this test is to ensure that signatures with non-top
+// level class arguments work.
+
+static jint
+some_random_name (JNIEnv *env, jclass k, jobject v)
+{
+ return 555;
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad (JavaVM *vm, void *nothing)
+{
+ JNIEnv *env;
+ JNINativeMethod meth;
+ jclass k;
+ jint r;
+
+ r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2);
+ assert (r == JNI_OK);
+ k = (*env)->FindClass (env, "PR18116");
+ assert (k != NULL);
+
+ meth.name = "doit";
+ meth.signature = "(Ljava/lang/String;)I";
+ meth.fnPtr = some_random_name;
+
+ r = (*env)->RegisterNatives (env, k, &meth, 1);
+ assert (r == JNI_OK);
+
+ return JNI_VERSION_1_2;
+}
diff --git a/libjava/testsuite/libjava.jni/PR18116.h b/libjava/testsuite/libjava.jni/PR18116.h
new file mode 100644
index 000000000..56fc648be
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __PR18116__
+#define __PR18116__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_PR18116_doit (JNIEnv *env, jclass, jstring);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PR18116__ */
diff --git a/libjava/testsuite/libjava.jni/PR18116.jar b/libjava/testsuite/libjava.jni/PR18116.jar
new file mode 100644
index 000000000..b9a0034ba
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/PR18116.java b/libjava/testsuite/libjava.jni/PR18116.java
new file mode 100644
index 000000000..d582132b6
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.java
@@ -0,0 +1,16 @@
+// PR18116.java - Test RegisterNatives with more complex signatures.
+
+public class PR18116
+{
+ static
+ {
+ System.loadLibrary ("PR18116");
+ }
+
+ public static native int doit (java.lang.String s);
+
+ public static void main (String[] args)
+ {
+ System.out.println (doit ("Hello World!"));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/PR18116.out b/libjava/testsuite/libjava.jni/PR18116.out
new file mode 100644
index 000000000..3749383de
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.out
@@ -0,0 +1 @@
+555
diff --git a/libjava/testsuite/libjava.jni/PR28178.c b/libjava/testsuite/libjava.jni/PR28178.c
new file mode 100644
index 000000000..17e730a1c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR28178.c
@@ -0,0 +1,10 @@
+#include <PR28178.h>
+
+void
+Java_PR28178_m (JNIEnv *env, jclass ignore)
+{
+ (*env)->DeleteLocalRef(env, NULL);
+ (*env)->DeleteGlobalRef(env, NULL);
+}
+
+
diff --git a/libjava/testsuite/libjava.jni/PR28178.h b/libjava/testsuite/libjava.jni/PR28178.h
new file mode 100644
index 000000000..e686439ec
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR28178.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __PR28178__
+#define __PR28178__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_PR28178_m (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PR28178__ */
diff --git a/libjava/testsuite/libjava.jni/PR28178.jar b/libjava/testsuite/libjava.jni/PR28178.jar
new file mode 100644
index 000000000..0c9082bb9
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR28178.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/PR28178.java b/libjava/testsuite/libjava.jni/PR28178.java
new file mode 100644
index 000000000..f8d7b904c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR28178.java
@@ -0,0 +1,15 @@
+// Regression test for PR 28178.
+
+public class PR28178
+{
+ static {
+ System.loadLibrary("PR28178");
+ }
+
+ public static native void m();
+
+ public static void main(String[] args)
+ {
+ m();
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/PR28178.out b/libjava/testsuite/libjava.jni/PR28178.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR28178.out
diff --git a/libjava/testsuite/libjava.jni/bytebuffer.c b/libjava/testsuite/libjava.jni/bytebuffer.c
new file mode 100644
index 000000000..146c6a844
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/bytebuffer.c
@@ -0,0 +1,62 @@
+#include "bytebuffer.h"
+
+static void
+test_buffer (JNIEnv *env, jobject buffer, const char *name)
+{
+ void *tmp = (*env)->GetDirectBufferAddress (env, buffer);
+
+ if (tmp == NULL)
+ printf ("PASS: address of %s\n", name);
+ else
+ printf ("FAIL: address of %s\n", name);
+
+ int tmplen = (*env)->GetDirectBufferCapacity (env, buffer);
+
+ if (tmplen == -1)
+ printf ("PASS: length of %s\n", name);
+ else
+ printf ("FAIL: length of %s\n", name);
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testByteBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.ByteBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testCharBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.CharBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testDoubleBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.DoubleBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testFloatBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.FloatBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testIntBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.IntBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testLongBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.LongBuffer");
+}
+
+JNIEXPORT void JNICALL
+Java_bytebuffer_testShortBuffer (JNIEnv *env, jclass k, jobject buffer)
+{
+ test_buffer (env, buffer, "java.nio.ShortBuffer");
+}
+
diff --git a/libjava/testsuite/libjava.jni/bytebuffer.h b/libjava/testsuite/libjava.jni/bytebuffer.h
new file mode 100644
index 000000000..33b5c3aa0
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/bytebuffer.h
@@ -0,0 +1,25 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __bytebuffer__
+#define __bytebuffer__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_bytebuffer_testByteBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testCharBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testDoubleBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testFloatBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testIntBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testLongBuffer (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_bytebuffer_testShortBuffer (JNIEnv *env, jclass, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bytebuffer__ */
diff --git a/libjava/testsuite/libjava.jni/bytebuffer.jar b/libjava/testsuite/libjava.jni/bytebuffer.jar
new file mode 100644
index 000000000..d0ca6d7e9
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/bytebuffer.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/bytebuffer.java b/libjava/testsuite/libjava.jni/bytebuffer.java
new file mode 100644
index 000000000..0e541123f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/bytebuffer.java
@@ -0,0 +1,38 @@
+// Test to make sure JNI implementation catches exceptions.
+
+import java.nio.*;
+
+public class bytebuffer
+{
+ static
+ {
+ System.loadLibrary("bytebuffer");
+ }
+
+ public static native void testByteBuffer(ByteBuffer bb);
+ public static native void testCharBuffer(CharBuffer b);
+ public static native void testDoubleBuffer(DoubleBuffer b);
+ public static native void testFloatBuffer(FloatBuffer b);
+ public static native void testIntBuffer(IntBuffer b);
+ public static native void testLongBuffer(LongBuffer b);
+ public static native void testShortBuffer(ShortBuffer b);
+
+ public static void main(String[] args)
+ {
+ ByteBuffer bb = ByteBuffer.allocate(1024);
+ testByteBuffer(bb);
+ testCharBuffer(bb.asCharBuffer());
+ testDoubleBuffer(bb.asDoubleBuffer());
+ testFloatBuffer(bb.asFloatBuffer());
+ testIntBuffer(bb.asIntBuffer());
+ testLongBuffer(bb.asLongBuffer());
+ testShortBuffer(bb.asShortBuffer());
+
+ testCharBuffer(CharBuffer.allocate(1024));
+ testDoubleBuffer(DoubleBuffer.allocate(1024));
+ testFloatBuffer(FloatBuffer.allocate(1024));
+ testIntBuffer(IntBuffer.allocate(1024));
+ testLongBuffer(LongBuffer.allocate(1024));
+ testShortBuffer(ShortBuffer.allocate(1024));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/bytebuffer.out b/libjava/testsuite/libjava.jni/bytebuffer.out
new file mode 100644
index 000000000..5af92e206
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/bytebuffer.out
@@ -0,0 +1,26 @@
+PASS: address of java.nio.ByteBuffer
+PASS: length of java.nio.ByteBuffer
+PASS: address of java.nio.CharBuffer
+PASS: length of java.nio.CharBuffer
+PASS: address of java.nio.DoubleBuffer
+PASS: length of java.nio.DoubleBuffer
+PASS: address of java.nio.FloatBuffer
+PASS: length of java.nio.FloatBuffer
+PASS: address of java.nio.IntBuffer
+PASS: length of java.nio.IntBuffer
+PASS: address of java.nio.LongBuffer
+PASS: length of java.nio.LongBuffer
+PASS: address of java.nio.ShortBuffer
+PASS: length of java.nio.ShortBuffer
+PASS: address of java.nio.CharBuffer
+PASS: length of java.nio.CharBuffer
+PASS: address of java.nio.DoubleBuffer
+PASS: length of java.nio.DoubleBuffer
+PASS: address of java.nio.FloatBuffer
+PASS: length of java.nio.FloatBuffer
+PASS: address of java.nio.IntBuffer
+PASS: length of java.nio.IntBuffer
+PASS: address of java.nio.LongBuffer
+PASS: length of java.nio.LongBuffer
+PASS: address of java.nio.ShortBuffer
+PASS: length of java.nio.ShortBuffer
diff --git a/libjava/testsuite/libjava.jni/calls.c b/libjava/testsuite/libjava.jni/calls.c
new file mode 100644
index 000000000..709e55d13
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/calls.c
@@ -0,0 +1,75 @@
+#include <stdio.h>
+#include <calls.h>
+
+JNIEXPORT jint JNICALL
+Java_calls_docall (JNIEnv *env, jobject _this)
+{
+ jmethodID method;
+ jclass klass, super;
+
+ jbyte b;
+ jshort s;
+ jchar c;
+ jint i;
+ jlong l;
+ jfloat f;
+ jdouble d;
+
+ jvalue val;
+
+ jint fails = 0;
+
+ klass = (*env)->GetObjectClass (env, _this);
+ super = (*env)->GetSuperclass (env, klass);
+
+ method = (*env)->GetMethodID (env, klass, "byte_f", "()B");
+ b = (*env)->CallByteMethod (env, _this, method);
+ if (b != 23)
+ ++fails;
+
+ method = (*env)->GetMethodID (env, klass, "char_f", "(I)C");
+ val.i = 10;
+ c = (*env)->CallCharMethodA (env, _this, method, &val);
+ if (c != ('a' + 10))
+ ++fails;
+
+ method = (*env)->GetMethodID (env, super, "int_f", "()I");
+ i = (*env)->CallNonvirtualIntMethod (env, _this, super, method);
+ if (i != 27)
+ ++fails;
+
+ i = (*env)->CallIntMethod (env, _this, method);
+ if (i != 1023)
+ ++fails;
+
+ method = (*env)->GetStaticMethodID (env, klass, "long_f", "(J)J");
+ l = (*env)->CallStaticLongMethod (env, klass, method, (jlong) 10);
+ if (l != 2033)
+ ++fails;
+
+ method = (*env)->GetStaticMethodID (env, klass, "longpb_f", "(BJBJBJ)J");
+ l = (*env)->CallStaticLongMethod (env, klass, method, (jbyte) 13, (jlong) 3,
+ (jbyte) 13, (jlong) 3, (jbyte) 13, (jlong) 4);
+ if (l != 3033)
+ ++fails;
+
+ method = (*env)->GetMethodID (env, klass, "void_f", "()V");
+ (*env)->CallVoidMethod (env, _this, method);
+
+ method = (*env)->GetStaticMethodID (env, klass, "short_f", "()S");
+ s = (*env)->CallStaticShortMethod (env, klass, method);
+ if (s != 2)
+ ++fails;
+
+ method = (*env)->GetMethodID (env, klass, "double_f", "()D");
+ d = (*env)->CallDoubleMethod (env, _this, method);
+ if (d != -1.0)
+ ++fails;
+
+ method = (*env)->GetMethodID (env, klass, "float_f", "()F");
+ f = (*env)->CallFloatMethod (env, _this, method);
+ if (f != 1.0)
+ ++fails;
+
+ return fails;
+}
diff --git a/libjava/testsuite/libjava.jni/calls.h b/libjava/testsuite/libjava.jni/calls.h
new file mode 100644
index 000000000..64b967095
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/calls.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __calls__
+#define __calls__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_calls_docall (JNIEnv *env, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __calls__ */
diff --git a/libjava/testsuite/libjava.jni/calls.jar b/libjava/testsuite/libjava.jni/calls.jar
new file mode 100644
index 000000000..3a188ea49
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/calls.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/calls.java b/libjava/testsuite/libjava.jni/calls.java
new file mode 100644
index 000000000..19c33be2a
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/calls.java
@@ -0,0 +1,72 @@
+// Test a bunch of different calls.
+
+class base
+{
+ public int int_f ()
+ {
+ return 27;
+ }
+}
+
+public class calls extends base
+{
+ static
+ {
+ System.loadLibrary ("calls");
+ }
+
+ public native int docall ();
+
+ public byte byte_f ()
+ {
+ return 23;
+ }
+
+ public char char_f (int z)
+ {
+ return (char) ('a' + z);
+ }
+
+ public int int_f ()
+ {
+ return 1023;
+ }
+
+ public static long long_f (long q)
+ {
+ return q + 2023;
+ }
+
+ public static long longpb_f (byte b1, long q1, byte b2, long q2,
+ byte b3, long q3)
+ {
+ return q1 + q2 + q3 + 3023;
+ }
+
+ public void void_f ()
+ {
+ System.out.println ("void");
+ }
+
+ public static short short_f ()
+ {
+ return 2;
+ }
+
+ public double double_f ()
+ {
+ return -1.0;
+ }
+
+ public float float_f ()
+ {
+ return (float) 1.0;
+ }
+
+ public static void main (String[] args)
+ {
+ calls c = new calls ();
+ if (c.docall () != 0)
+ System.out.println ("fail");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/calls.out b/libjava/testsuite/libjava.jni/calls.out
new file mode 100644
index 000000000..cbab1f6b6
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/calls.out
@@ -0,0 +1 @@
+void
diff --git a/libjava/testsuite/libjava.jni/cxxtest.cc b/libjava/testsuite/libjava.jni/cxxtest.cc
new file mode 100644
index 000000000..577273bb5
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/cxxtest.cc
@@ -0,0 +1,24 @@
+#include <jni.h>
+#include <cxxtest.h>
+
+jobjectArray
+Java_cxxtest_fetch (JNIEnv *env, jobject _this)
+{
+ jclass cls;
+ jfieldID fid;
+ jobjectArray obj;
+
+ cls = env->GetObjectClass (_this);
+ if (! cls)
+ return 0;
+
+ fid = env->GetFieldID (cls, "F", "[Ljava/lang/Object;");
+ if (! fid)
+ return 0;
+
+ obj = reinterpret_cast<jobjectArray> (env->GetObjectField (_this, fid));
+
+ return obj;
+}
+
+
diff --git a/libjava/testsuite/libjava.jni/cxxtest.h b/libjava/testsuite/libjava.jni/cxxtest.h
new file mode 100644
index 000000000..d903636f4
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/cxxtest.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __cxxtest__
+#define __cxxtest__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jobjectArray JNICALL Java_cxxtest_fetch (JNIEnv *env, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __cxxtest__ */
diff --git a/libjava/testsuite/libjava.jni/cxxtest.jar b/libjava/testsuite/libjava.jni/cxxtest.jar
new file mode 100644
index 000000000..5a9a0d772
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/cxxtest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/cxxtest.java b/libjava/testsuite/libjava.jni/cxxtest.java
new file mode 100644
index 000000000..b1c3bb945
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/cxxtest.java
@@ -0,0 +1,25 @@
+// Test for array field lookup.
+
+public class cxxtest
+{
+ // A field for us to look up.
+ public Object[] F = new Object[7];
+
+ public native Object[] fetch ();
+
+ public void doit ()
+ {
+ System.out.println (F == fetch ());
+ }
+
+ public static void main (String[] args)
+ {
+ cxxtest q = new cxxtest ();
+ q.doit ();
+ }
+
+ static
+ {
+ System.loadLibrary ("cxxtest");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/cxxtest.out b/libjava/testsuite/libjava.jni/cxxtest.out
new file mode 100644
index 000000000..27ba77dda
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/cxxtest.out
@@ -0,0 +1 @@
+true
diff --git a/libjava/testsuite/libjava.jni/directbuffer.c b/libjava/testsuite/libjava.jni/directbuffer.c
new file mode 100644
index 000000000..3d32aba01
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/directbuffer.c
@@ -0,0 +1,75 @@
+#include <stdlib.h>
+
+#include "directbuffer.h"
+
+#define BUFFER_SIZE 1024
+
+static void *address;
+
+JNIEXPORT jobject JNICALL
+Java_directbuffer_createDirectByteBuffer (JNIEnv *env, jclass k)
+{
+ address = malloc (BUFFER_SIZE);
+ return (*env)->NewDirectByteBuffer (env, address, 1024);
+}
+
+static void
+test_buffer (JNIEnv *env, jobject buffer, const char *name, int len)
+{
+ void *tmp = (*env)->GetDirectBufferAddress (env, buffer);
+
+ if (address == tmp)
+ printf ("PASS: address of %s\n", name);
+ else
+ printf ("FAIL: address of %s\n", name);
+
+ int tmplen = (*env)->GetDirectBufferCapacity (env, buffer);
+
+ if (len == tmplen)
+ printf ("PASS: length of %s\n", name);
+ else
+ printf ("FAIL: length of %s\n", name);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testDirectByteBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "direct java.nio.ByteBuffer", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testCharBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.CharBuffer view", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testDoubleBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.DoubleBuffer view", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testFloatBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.FloatBuffer view", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testIntBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.IntBuffer view", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testLongBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.LongBuffer view", len);
+}
+
+JNIEXPORT void JNICALL
+Java_directbuffer_testShortBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
+{
+ test_buffer (env, buffer, "java.nio.ShortBuffer view", len);
+}
+
diff --git a/libjava/testsuite/libjava.jni/directbuffer.h b/libjava/testsuite/libjava.jni/directbuffer.h
new file mode 100644
index 000000000..6d5c65276
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/directbuffer.h
@@ -0,0 +1,26 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __directbuffer__
+#define __directbuffer__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jobject JNICALL Java_directbuffer_createDirectByteBuffer (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL Java_directbuffer_testDirectByteBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testCharBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testDoubleBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testFloatBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testIntBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testLongBuffer (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_directbuffer_testShortBuffer (JNIEnv *env, jclass, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __directbuffer__ */
diff --git a/libjava/testsuite/libjava.jni/directbuffer.jar b/libjava/testsuite/libjava.jni/directbuffer.jar
new file mode 100644
index 000000000..f1630dad8
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/directbuffer.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/directbuffer.java b/libjava/testsuite/libjava.jni/directbuffer.java
new file mode 100644
index 000000000..ee844b901
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/directbuffer.java
@@ -0,0 +1,40 @@
+// Test to make sure JNI implementation catches exceptions.
+
+import java.nio.*;
+
+public class directbuffer
+{
+ static
+ {
+ System.loadLibrary("directbuffer");
+ }
+
+ public static native ByteBuffer createDirectByteBuffer();
+
+ public static native void testDirectByteBuffer(ByteBuffer bb, int len);
+ public static native void testCharBuffer(CharBuffer b, int len);
+ public static native void testDoubleBuffer(DoubleBuffer b, int len);
+ public static native void testFloatBuffer(FloatBuffer b, int len);
+ public static native void testIntBuffer(IntBuffer b, int len);
+ public static native void testLongBuffer(LongBuffer b, int len);
+ public static native void testShortBuffer(ShortBuffer b, int len);
+
+ public static void main(String[] args)
+ {
+ ByteBuffer bb = createDirectByteBuffer();
+ CharBuffer cb = bb.asCharBuffer();
+ DoubleBuffer db = bb.asDoubleBuffer();
+ FloatBuffer fb = bb.asFloatBuffer();
+ IntBuffer ib = bb.asIntBuffer();
+ LongBuffer lb = bb.asLongBuffer();
+ ShortBuffer sb = bb.asShortBuffer();
+
+ testDirectByteBuffer(bb, 1024);
+ testCharBuffer(cb, 512);
+ testDoubleBuffer(db, 128);
+ testFloatBuffer(fb, 256);
+ testIntBuffer(ib, 256);
+ testLongBuffer(lb, 128);
+ testShortBuffer(sb, 512);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/directbuffer.out b/libjava/testsuite/libjava.jni/directbuffer.out
new file mode 100644
index 000000000..c1404b9f2
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/directbuffer.out
@@ -0,0 +1,14 @@
+PASS: address of direct java.nio.ByteBuffer
+PASS: length of direct java.nio.ByteBuffer
+PASS: address of java.nio.CharBuffer view
+PASS: length of java.nio.CharBuffer view
+PASS: address of java.nio.DoubleBuffer view
+PASS: length of java.nio.DoubleBuffer view
+PASS: address of java.nio.FloatBuffer view
+PASS: length of java.nio.FloatBuffer view
+PASS: address of java.nio.IntBuffer view
+PASS: length of java.nio.IntBuffer view
+PASS: address of java.nio.LongBuffer view
+PASS: length of java.nio.LongBuffer view
+PASS: address of java.nio.ShortBuffer view
+PASS: length of java.nio.ShortBuffer view
diff --git a/libjava/testsuite/libjava.jni/field.c b/libjava/testsuite/libjava.jni/field.c
new file mode 100644
index 000000000..bce0cc896
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/field.c
@@ -0,0 +1,24 @@
+#include <jni.h>
+#include <field.h>
+
+JNIEXPORT jobjectArray JNICALL
+Java_field_fetch (JNIEnv *env, jobject this)
+{
+ jclass cls;
+ jfieldID fid;
+ jobjectArray obj;
+
+ cls = (*env)->GetObjectClass (env, this);
+ if (! cls)
+ return 0;
+
+ fid = (*env)->GetFieldID (env, cls, "F", "[Ljava/lang/Object;");
+ if (! fid)
+ return 0;
+
+ obj = (*env)->GetObjectField (env, this, fid);
+
+ return obj;
+}
+
+
diff --git a/libjava/testsuite/libjava.jni/field.h b/libjava/testsuite/libjava.jni/field.h
new file mode 100644
index 000000000..fd1597aae
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/field.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __field__
+#define __field__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jobjectArray JNICALL Java_field_fetch (JNIEnv *env, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __field__ */
diff --git a/libjava/testsuite/libjava.jni/field.jar b/libjava/testsuite/libjava.jni/field.jar
new file mode 100644
index 000000000..3f636e842
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/field.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/field.java b/libjava/testsuite/libjava.jni/field.java
new file mode 100644
index 000000000..bd0f7492e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/field.java
@@ -0,0 +1,25 @@
+// Test for array field lookup.
+
+public class field
+{
+ // A field for us to look up.
+ public Object[] F = new Object[7];
+
+ public native Object[] fetch ();
+
+ public void doit ()
+ {
+ System.out.println (F == fetch ());
+ }
+
+ public static void main (String[] args)
+ {
+ field q = new field ();
+ q.doit ();
+ }
+
+ static
+ {
+ System.loadLibrary ("field");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/field.out b/libjava/testsuite/libjava.jni/field.out
new file mode 100644
index 000000000..27ba77dda
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/field.out
@@ -0,0 +1 @@
+true
diff --git a/libjava/testsuite/libjava.jni/final_method.c b/libjava/testsuite/libjava.jni/final_method.c
new file mode 100644
index 000000000..76d5ae528
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/final_method.c
@@ -0,0 +1,7 @@
+#include <final_method.h>
+
+JNIEXPORT jstring JNICALL
+Java_final_1method_meth (JNIEnv *env, jobject thisv)
+{
+ return (*env)->NewStringUTF (env, "zardoz has spoken");
+}
diff --git a/libjava/testsuite/libjava.jni/final_method.h b/libjava/testsuite/libjava.jni/final_method.h
new file mode 100644
index 000000000..dbb823549
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/final_method.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __final_1method__
+#define __final_1method__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jstring JNICALL Java_final_1method_meth (JNIEnv *env, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __final_1method__ */
diff --git a/libjava/testsuite/libjava.jni/final_method.jar b/libjava/testsuite/libjava.jni/final_method.jar
new file mode 100644
index 000000000..a5f4b63f3
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/final_method.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/final_method.java b/libjava/testsuite/libjava.jni/final_method.java
new file mode 100644
index 000000000..dcb684e08
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/final_method.java
@@ -0,0 +1,17 @@
+// Minimal test a non-static final method.
+
+public class final_method
+{
+ static
+ {
+ System.loadLibrary ("final_method");
+ }
+
+ public final native String meth ();
+
+ public static void main (String[] args)
+ {
+ final_method fm = new final_method ();
+ System.out.println (fm.meth ());
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/final_method.out b/libjava/testsuite/libjava.jni/final_method.out
new file mode 100644
index 000000000..d93c9b558
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/final_method.out
@@ -0,0 +1 @@
+zardoz has spoken
diff --git a/libjava/testsuite/libjava.jni/findclass.c b/libjava/testsuite/libjava.jni/findclass.c
new file mode 100644
index 000000000..1a58a55fe
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass.c
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+
+#include <findclass.h>
+
+JNIEXPORT jclass JNICALL
+Java_findclass_doit (JNIEnv *env, jclass klass, jstring name)
+{
+ const char *buf = (*env)->GetStringUTFChars (env, name, NULL);
+ jclass k = (*env)->FindClass (env, buf);
+ (*env)->ReleaseStringUTFChars (env, name, buf);
+ return k;
+}
diff --git a/libjava/testsuite/libjava.jni/findclass.h b/libjava/testsuite/libjava.jni/findclass.h
new file mode 100644
index 000000000..d0d301e93
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __findclass__
+#define __findclass__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jclass JNICALL Java_findclass_doit (JNIEnv *env, jclass, jstring);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __findclass__ */
diff --git a/libjava/testsuite/libjava.jni/findclass.jar b/libjava/testsuite/libjava.jni/findclass.jar
new file mode 100644
index 000000000..03fe860f7
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/findclass.java b/libjava/testsuite/libjava.jni/findclass.java
new file mode 100644
index 000000000..b857538e6
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass.java
@@ -0,0 +1,16 @@
+// Test FindClass part of JNI.
+
+public class findclass
+{
+ static
+ {
+ System.loadLibrary ("findclass");
+ }
+
+ public static native Class doit (String name);
+
+ public static void main (String[] args)
+ {
+ System.out.println ("" + doit ("java/lang/String"));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/findclass.out b/libjava/testsuite/libjava.jni/findclass.out
new file mode 100644
index 000000000..124026a2e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass.out
@@ -0,0 +1 @@
+class java.lang.String
diff --git a/libjava/testsuite/libjava.jni/findclass2.c b/libjava/testsuite/libjava.jni/findclass2.c
new file mode 100644
index 000000000..634aea710
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+
+#include <findclass2.h>
+
+JNIEXPORT void JNICALL
+Java_findclass2_searchClass (JNIEnv *env, jclass klass)
+{
+ (*env)->FindClass (env, "findclass2$inner");
+}
diff --git a/libjava/testsuite/libjava.jni/findclass2.h b/libjava/testsuite/libjava.jni/findclass2.h
new file mode 100644
index 000000000..65d074644
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __findclass2__
+#define __findclass2__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_findclass2_searchClass (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __findclass2__ */
diff --git a/libjava/testsuite/libjava.jni/findclass2.jar b/libjava/testsuite/libjava.jni/findclass2.jar
new file mode 100644
index 000000000..05f867dce
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/findclass2.java b/libjava/testsuite/libjava.jni/findclass2.java
new file mode 100644
index 000000000..f7c0996e1
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.java
@@ -0,0 +1,24 @@
+// Test that FindClass initializes the class.
+
+public class findclass2
+{
+ public static class inner
+ {
+ static
+ {
+ System.out.println("hello");
+ }
+ }
+
+ public static native void searchClass();
+
+ static
+ {
+ System.loadLibrary("findclass2");
+ }
+
+ public static void main(String[] args)
+ {
+ searchClass();
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/findclass2.out b/libjava/testsuite/libjava.jni/findclass2.out
new file mode 100644
index 000000000..ce0136250
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.out
@@ -0,0 +1 @@
+hello
diff --git a/libjava/testsuite/libjava.jni/iface.c b/libjava/testsuite/libjava.jni/iface.c
new file mode 100644
index 000000000..6d33dc01f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/iface.c
@@ -0,0 +1,40 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iface.h>
+
+void check (JNIEnv *);
+
+void check(JNIEnv *env)
+{
+ if ((*env)->ExceptionCheck(env) != JNI_FALSE)
+ {
+ fprintf(stderr, "UNEXPECTED EXCEPTION\n");
+ exit(-1);
+ }
+}
+
+void
+Java_iface_doCalls (JNIEnv *env, jobject self, jobject other)
+{
+ jclass iface_class, comparable_class;
+ jmethodID iface_meth, comparable_meth;
+ jvalue args[1];
+
+ iface_class = (*env)->FindClass(env, "iface");
+ check (env);
+ comparable_class = (*env)->FindClass (env, "mycomp");
+ check (env);
+
+ iface_meth = (*env)->GetMethodID (env, iface_class, "compareTo",
+ "(Ljava/lang/Object;)I");
+ check (env);
+ comparable_meth = (*env)->GetMethodID (env, comparable_class, "compareTo",
+ "(Ljava/lang/Object;)I");
+ check (env);
+
+ args[0].l = other;
+ (*env)->CallObjectMethodA (env, self, iface_meth, args);
+ check (env);
+ (*env)->CallObjectMethodA (env, self, comparable_meth, args);
+ check (env);
+}
diff --git a/libjava/testsuite/libjava.jni/iface.h b/libjava/testsuite/libjava.jni/iface.h
new file mode 100644
index 000000000..58680dd90
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/iface.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __iface__
+#define __iface__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_iface_doCalls (JNIEnv *env, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __iface__ */
diff --git a/libjava/testsuite/libjava.jni/iface.jar b/libjava/testsuite/libjava.jni/iface.jar
new file mode 100644
index 000000000..0a9a1af3c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/iface.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/iface.java b/libjava/testsuite/libjava.jni/iface.java
new file mode 100644
index 000000000..c878ae362
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/iface.java
@@ -0,0 +1,27 @@
+// JNI calls via an interface method were broken in a couple releases.
+
+interface mycomp
+{
+ int compareTo(Object x);
+}
+
+public class iface implements mycomp
+{
+ static
+ {
+ System.loadLibrary("iface");
+ }
+
+ public int compareTo (Object x)
+ {
+ System.out.println ("hi maude");
+ return 3;
+ }
+
+ public native void doCalls(Object x);
+
+ public static void main (String[] args)
+ {
+ new iface().doCalls(args);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/iface.out b/libjava/testsuite/libjava.jni/iface.out
new file mode 100644
index 000000000..4eb3a1b43
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/iface.out
@@ -0,0 +1,2 @@
+hi maude
+hi maude
diff --git a/libjava/testsuite/libjava.jni/init$NativeClass.h b/libjava/testsuite/libjava.jni/init$NativeClass.h
new file mode 100644
index 000000000..0ae6d4cc4
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init$NativeClass.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __init_00024NativeClass__
+#define __init_00024NativeClass__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_init_00024NativeClass_printHello (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __init_00024NativeClass__ */
diff --git a/libjava/testsuite/libjava.jni/init.c b/libjava/testsuite/libjava.jni/init.c
new file mode 100644
index 000000000..458d6d789
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init.c
@@ -0,0 +1,8 @@
+#include <jni.h>
+#include <init$NativeClass.h>
+
+JNIEXPORT void JNICALL
+Java_init_00024NativeClass_printHello(JNIEnv *env, jclass cl)
+{
+ printf("hello\n");
+}
diff --git a/libjava/testsuite/libjava.jni/init.h b/libjava/testsuite/libjava.jni/init.h
new file mode 100644
index 000000000..4ad329871
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init.h
@@ -0,0 +1,18 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __init__
+#define __init__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __init__ */
diff --git a/libjava/testsuite/libjava.jni/init.jar b/libjava/testsuite/libjava.jni/init.jar
new file mode 100644
index 000000000..1bf20ac98
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/init.java b/libjava/testsuite/libjava.jni/init.java
new file mode 100644
index 000000000..3303d319e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init.java
@@ -0,0 +1,26 @@
+// Regression test for JNI and static initializers.
+
+public class init
+{
+ public static class NativeClass
+ {
+ static
+ {
+ System.out.println("static initializer 2");
+ System.loadLibrary("init"); // if it's here, this app doesn't work
+ }
+
+ public static native void printHello();
+ }
+
+ static
+ {
+ System.out.println("static initializer 1");
+ }
+
+ public static void main(String[] args)
+ {
+ //System.loadLibrary("test"); // if it's here, this app works
+ NativeClass.printHello();
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/init.out b/libjava/testsuite/libjava.jni/init.out
new file mode 100644
index 000000000..4e62d1ffe
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/init.out
@@ -0,0 +1,3 @@
+static initializer 1
+static initializer 2
+hello
diff --git a/libjava/testsuite/libjava.jni/invocation/PR16923.c b/libjava/testsuite/libjava.jni/invocation/PR16923.c
new file mode 100644
index 000000000..881738b61
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invocation/PR16923.c
@@ -0,0 +1,43 @@
+#include <assert.h>
+#include <jni.h>
+
+union env_union
+{
+ void *void_env;
+ JNIEnv *jni_env;
+};
+
+int
+main (int argc, const char** argv)
+{
+ union env_union tmp;
+ JNIEnv* env;
+ JavaVM* jvm;
+ JavaVMInitArgs vm_args;
+ JavaVMOption options[1];
+ jclass class_id;
+ jmethodID method_id;
+ jint result;
+
+ options[0].optionString = "-DPR16923=optionReceived";
+
+ vm_args.version = JNI_VERSION_1_2;
+ vm_args.ignoreUnrecognized = JNI_TRUE;
+ vm_args.options = options;
+ vm_args.nOptions = 1;
+
+ result = JNI_CreateJavaVM (&jvm, &tmp.void_env, &vm_args);
+ assert (result >= 0);
+
+ env = tmp.jni_env;
+
+ class_id = (*env)->FindClass (env, "PR16923");
+ assert (class_id);
+
+ method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V");
+ assert (method_id);
+
+ (*env)->CallStaticVoidMethod (env, class_id, method_id, NULL);
+
+ return 0;
+}
diff --git a/libjava/testsuite/libjava.jni/invocation/PR16923.jar b/libjava/testsuite/libjava.jni/invocation/PR16923.jar
new file mode 100644
index 000000000..a1a7b8804
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invocation/PR16923.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/invocation/PR16923.java b/libjava/testsuite/libjava.jni/invocation/PR16923.java
new file mode 100644
index 000000000..efda4bd75
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invocation/PR16923.java
@@ -0,0 +1,7 @@
+public class PR16923
+{
+ public static void printIt ()
+ {
+ System.out.println (System.getProperty ("PR16923"));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/invocation/PR16923.out b/libjava/testsuite/libjava.jni/invocation/PR16923.out
new file mode 100644
index 000000000..58bf3fe19
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invocation/PR16923.out
@@ -0,0 +1 @@
+optionReceived
diff --git a/libjava/testsuite/libjava.jni/invoke.c b/libjava/testsuite/libjava.jni/invoke.c
new file mode 100644
index 000000000..c2b78d239
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invoke.c
@@ -0,0 +1,7 @@
+#include <invoke.h>
+
+JNIEXPORT jint JNICALL
+Java_invoke_val (JNIEnv *env, jclass klass)
+{
+ return 23;
+}
diff --git a/libjava/testsuite/libjava.jni/invoke.h b/libjava/testsuite/libjava.jni/invoke.h
new file mode 100644
index 000000000..553c598d7
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invoke.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __invoke__
+#define __invoke__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_invoke_val (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __invoke__ */
diff --git a/libjava/testsuite/libjava.jni/invoke.jar b/libjava/testsuite/libjava.jni/invoke.jar
new file mode 100644
index 000000000..dd0579740
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invoke.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/invoke.java b/libjava/testsuite/libjava.jni/invoke.java
new file mode 100644
index 000000000..91c9d3747
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invoke.java
@@ -0,0 +1,18 @@
+// Test to make sure the minimal invocation works.
+
+public class invoke
+{
+ public static native int val ();
+
+ static
+ {
+ System.out.println ("trying...");
+ System.loadLibrary ("invoke");
+ System.out.println ("loaded");
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (val ());
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/invoke.out b/libjava/testsuite/libjava.jni/invoke.out
new file mode 100644
index 000000000..f59a6d2e4
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/invoke.out
@@ -0,0 +1,3 @@
+trying...
+loaded
+23
diff --git a/libjava/testsuite/libjava.jni/jni.exp b/libjava/testsuite/libjava.jni/jni.exp
new file mode 100644
index 000000000..c84d86f2f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jni.exp
@@ -0,0 +1,404 @@
+# Tests for JNI code.
+
+# Compile a single C file and produce a .so file. OPTIONS is a list
+# of options to pass to the compiler. Returns 0 on failure, 1 on
+# success.
+proc gcj_jni_compile_c_to_so {file {options {}}} {
+ global srcdir subdir
+ global host_triplet
+ verbose "options: $options"
+ set options_cxx $options
+ set options ""
+
+# Apple uses a different extension for shared/dynamic libraries
+# so we check against powerpc-apple-darwin and set them to
+# dylib.
+# HP-UX uses sl, so we check this too, otherwise we take so.
+
+ if { [istarget "*-*-darwin*"] } {
+ set so_extension "dylib"
+ set so_flag "-dynamiclib"
+ } elseif { [istarget "hppa*-hp-hpux*"] } {
+ set so_extension "sl"
+ set so_flag "-shared"
+ } elseif { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } {
+ set so_extension "dll"
+ set so_flag "-shared"
+ } else {
+ set so_extension "so"
+ set so_flag "-shared"
+ }
+ set filename [file tail $file]
+ set name [file rootname $filename]
+ set soname lib${name}.${so_extension}
+
+ if { [istarget "*arm-*eabi*"] } {
+ lappend options "additional_flags=-fexceptions"
+ }
+
+ lappend options "additional_flags=${so_flag} -fPIC"
+ # Find the generated header.
+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers"
+
+ # Ensure that the generated header has correct prototypes.
+ set cfile [file rootname $file].c
+ if { [file exists $cfile]} {
+ # This option is only valid for C sources.
+ lappend options "additional_flags=-Wmissing-prototypes"
+ }
+
+ # Find jni.h and jni_md.h.
+ lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include"
+
+ # Append C++ options
+ lappend options "additional_flags=$options_cxx"
+
+ set x [libjava_prune_warnings \
+ [target_compile $file $soname executable $options]]
+ if {$x != ""} {
+ verbose "target_compile failed: $x" 2
+ fail "$filename compilation"
+ return 0
+ }
+
+ pass "$filename compilation"
+ return 1
+}
+
+# Build a header file from a .class file. Return 0 on failure.
+proc gcj_jni_build_header {file} {
+ global libgcj_jar
+
+ set gcjh [find_gcjh]
+ set file [file rootname $file]
+
+ set cmd "$gcjh -jni -force -classpath .:$libgcj_jar $file"
+ verbose $cmd
+
+ set x [string trim [libjava_prune_warnings \
+ [lindex [local_exec $cmd "" "" 300] 1]]]
+ if {$x != ""} {
+ verbose "local_exec failed: $x" 2
+ fail "$file header generation"
+ return 0
+ }
+
+ pass "$file header generation"
+ return 1
+}
+
+# Do all the work for a single JNI test. Return 0 on failure.
+proc gcj_jni_test_one {file} {
+ global runtests
+ global host_triplet
+ global INTERPRETER
+
+# Apple uses a different extension for shared/dynamic libraries
+# so we check against powerpc-apple-darwin and set them to
+# dylib.
+# HP-UX uses sl, so we check this too, otherwise we take so.
+
+ if { [istarget "*-*-darwin*"] } {
+ set so_extension "dylib"
+ } elseif { [istarget "hppa*-hp-hpux*"] } {
+ set so_extension "sl"
+ } elseif { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } {
+ set so_extension "dll"
+ } else {
+ set so_extension "so"
+ }
+
+ # The base name. We use it for several purposes.
+ set main [file rootname [file tail $file]]
+ if {! [runtest_file_p $runtests $main]
+ || $main == "pr29812" || $main == "pr29812_injar"} {
+ # Simply skip it.
+ return 1
+ }
+
+# 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 bytefile [file rootname [file tail $file]].class
+# if {! [gcj_jni_build_header $bytefile]} {
+# # FIXME
+# return 0
+# }
+
+ set cfile [file rootname $file].c
+ set cxxflags ""
+ set cxxldlibflags {}
+ # If there is no `.c' file, assume there is a `.cc' file.
+ if {! [file exists $cfile]} {
+ set cfile [file rootname $file].cc
+
+ set cxxflaglist {}
+ foreach arg [split [libjava_find_lib libstdc++-v3/src stdc++] " "] {
+ switch -glob -- $arg {
+ "-L*" {
+ set arg [string range $arg 2 end]
+ lappend cxxldlibflags $arg
+ # Strip the `.libs' directory; we link with libtool which
+ # doesn't need it.
+ set arg "-L[file dirname $arg]"
+ }
+ }
+ lappend cxxflaglist $arg
+ # In case the libstdc++ is not installed yet, we pass the build
+ # directory of it to the cxxflaglist.
+ lappend cxxflaglist "-L$cxxldlibflags"
+ }
+
+ # If you're building the compiler with --prefix set to a place
+ # where it's not yet installed, then the linker won't be able to
+ # find the libgcc used by libffi.dylib. We could pass the
+ # -dylib_file option, but that's complicated, and it's much easier
+ # to just make the linker find libgcc using -L options.
+ if { [istarget "*-*-darwin*"] } {
+ lappend cxxflaglist "-shared-libgcc -lstdc++"
+ } else {
+ lappend cxxflaglist "-lstdc++"
+ }
+
+ # ARM C++ emits an ABI warning for varargs.
+ if { [istarget "arm*"] } {
+ lappend cxxflaglist "-Wno-abi"
+ }
+
+ set cxxflags [join $cxxflaglist]
+ }
+
+ if {! [gcj_jni_compile_c_to_so $cfile $cxxflags]} {
+ # FIXME
+ return 0
+ }
+
+ set args [list "additional_flags=-fjni"]
+ if {! [gcj_link $main $main $file $args]} {
+ # FIXME
+ return 0
+ }
+
+ set resultfile [file rootname $file].out
+
+ if {! [gcj_invoke $main $resultfile $cxxldlibflags]} {
+ # FIXME
+ return 0
+ }
+
+ # We purposely ignore errors here; we still want to run the other
+ # appropriate tests.
+ set errname [file rootname [file tail $file]]
+ set gij [libjava_find_gij]
+ # libjava_find_gij will return "" if it couldn't find the
+ # program; in this case we want to skip the test.
+ # If the libraries are not installed yet, we have to pass them via
+ # cxxldlibflags to libjava_invoke.
+ if {$INTERPRETER == "yes" && $gij != ""} {
+ libjava_invoke $errname "gij test" opts $gij \
+ "" $resultfile $cxxldlibflags \
+ -classpath $file $main
+ }
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] \
+ [list $main lib${main}.${so_extension}]
+
+ return 1
+}
+
+# Compile a single C file and produce a binary. OPTIONS is a list of
+# options to pass to the compiler. Returns 0 on failure, 1 on
+# success.
+proc gcj_jni_invocation_compile_c_to_binary {file {options {}}} {
+ global srcdir subdir
+ global host_triplet
+ verbose "options: $options"
+ set options_cxx $options
+ set options ""
+
+ set filename [file tail $file]
+ set name [file rootname $filename]
+
+ # Set some darwin specific options
+ if { [istarget "*-*-darwin*"] } {
+ lappend options "additional_flags= -bind_at_load -multiply_defined suppress"
+ }
+ # Find the generated header.
+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
+
+ # Find jni.h and jni_md.h.
+ lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -fdollars-in-identifiers"
+
+ # Append C++ options
+ lappend options "additional_flags=$options_cxx"
+
+ set x [libjava_prune_warnings \
+ [target_compile $file $name executable $options]]
+ if {$x != ""} {
+ verbose "target_compile failed: $x" 2
+ fail "$filename compilation"
+ return 0
+ }
+
+ pass "$filename compilation"
+ return 1
+}
+
+proc gcj_jni_get_cxxflags_invocation {} {
+ global libiconv
+ global LIBJAVA
+ if {$libiconv == ""} {
+ set libiconv "-liconv"
+ }
+ if [info exists LIBJAVA] {
+ set libjava $LIBJAVA;
+ } else {
+ set libjava [libjava_find_lib libjava gcj]
+ }
+ set cxxflags "$libjava -ljvm"
+
+ # Darwin needs -liconv linked, otherwise we get some unresolved.
+ # If you're building the compiler with --prefix set to a place
+ # where it's not yet installed, then the linker won't be able to
+ # find the libgcc used by libffi.dylib. We could pass the
+ # -dylib_file option, but that's complicated, and it's much easier
+ # to just make the linker find libgcc using -L options.
+ # Similar logic applies to libgcj.
+ if { [istarget "*-*-darwin*"] } {
+ eval lappend cxxflags "-shared-libgcc -lgcj $libiconv"
+ }
+
+ # Make sure libgcc unwinder is used on 64-bit Solaris 10+/x86 rather than
+ # the libc one.
+ if { [istarget "*-*-solaris*"] } {
+ lappend cxxflags "-shared-libgcc"
+ }
+
+ # Tru64 UNIX needs -liconv linked explicitly since gcc does the linking.
+ if { [istarget "alpha*-dec-osf*"] } {
+ lappend cxxflags $libiconv
+ }
+
+ return $cxxflags
+}
+
+# Do all the work for a single invocation API test. Return 0 on
+# failure.
+proc gcj_jni_invocation_test_one {file} {
+ global env
+ global runtests
+ global host_triplet
+ global INTERPRETER
+
+ # The base name. We use it for several purposes.
+ set main [file rootname [file tail $file]]
+ if {! [runtest_file_p $runtests $main]} {
+ # Simply skip it.
+ return 1
+ }
+
+# 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 cfile [file rootname $file].c
+
+ set cxxflags [gcj_jni_get_cxxflags_invocation]
+ if {! [gcj_jni_invocation_compile_c_to_binary $cfile $cxxflags]} {
+ # FIXME
+ return 0
+ }
+
+ set resultfile [file rootname $file].out
+
+ set env(CLASSPATH) $file
+ verbose "CLASSPATH = $env(CLASSPATH)"
+ if {! [gcj_invoke $main $resultfile ""]} {
+ unset env(CLASSPATH)
+ # FIXME
+ return 0
+ }
+ unset env(CLASSPATH)
+
+ # We purposely ignore errors here; we still want to run the other
+ # appropriate tests.
+ set errname [file rootname [file tail $file]]
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] \
+ [list $main]
+
+ return 1
+}
+
+proc gcj_jni_pr29812 {} {
+ global srcdir subdir
+ global INTERPRETER runtests
+
+ # Set up a global we need.
+ libjava_arguments
+
+ set b ${srcdir}/${subdir}
+
+ if {! [runtest_file_p $runtests pr29812]} {
+ # Simply skip it.
+ return 1
+ }
+
+ if {! [gcj_jni_compile_c_to_so $b/pr29812.c ""]} {
+ return 0
+ }
+ if {! [gcj_jni_compile_c_to_so $b/pr29812_injar.c ""]} {
+ return 0
+ }
+
+ set gij [libjava_find_gij]
+ if {$INTERPRETER == "yes" && $gij != ""} {
+ if {! [libjava_invoke pr29812 "gij test" opts $gij \
+ "" $b/pr29812.out "" \
+ -classpath $b/pr29812.jar pr29812 $b/pr29812_injar.jar]} {
+ return 0
+ }
+ }
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- *pr29812*]
+}
+
+# Run the JNI tests.
+proc gcj_jni_run {} {
+ global srcdir subdir
+ global build_triplet host_triplet
+
+ # For now we only test JNI on native builds.
+ if {$build_triplet == $host_triplet} {
+ catch { lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar] } srcfiles
+
+ foreach x $srcfiles {
+ gcj_jni_test_one $x
+ }
+
+ # Run JNI invocation API tests
+ catch { lsort [glob -nocomplain ${srcdir}/${subdir}/invocation/*.jar] } srcfiles
+
+ foreach x $srcfiles {
+ gcj_jni_invocation_test_one $x
+ }
+
+ gcj_jni_pr29812
+ } else {
+ verbose "JNI tests not run in cross-compilation environment"
+ }
+}
+
+gcj_jni_run
diff --git a/libjava/testsuite/libjava.jni/jniutf.c b/libjava/testsuite/libjava.jni/jniutf.c
new file mode 100644
index 000000000..1ccc7ea93
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jniutf.c
@@ -0,0 +1,10 @@
+#include <jniutf.h>
+
+JNIEXPORT void JNICALL
+Java_jniutf_printString (JNIEnv *env, jobject obj, jstring str)
+{
+ const char *cstr;
+
+ cstr = (*env)->GetStringUTFChars (env, str, NULL);
+ (*env)->ReleaseStringUTFChars (env, str, cstr);
+}
diff --git a/libjava/testsuite/libjava.jni/jniutf.h b/libjava/testsuite/libjava.jni/jniutf.h
new file mode 100644
index 000000000..b58db2e32
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jniutf.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __jniutf__
+#define __jniutf__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_jniutf_printString (JNIEnv *env, jobject, jstring);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __jniutf__ */
diff --git a/libjava/testsuite/libjava.jni/jniutf.jar b/libjava/testsuite/libjava.jni/jniutf.jar
new file mode 100644
index 000000000..764808c4f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jniutf.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/jniutf.java b/libjava/testsuite/libjava.jni/jniutf.java
new file mode 100644
index 000000000..e03e16e29
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jniutf.java
@@ -0,0 +1,16 @@
+public class jniutf
+{
+ native void printString (String str);
+
+ static
+ {
+ System.loadLibrary ("jniutf");
+ }
+
+ public static void main (String[] args)
+ {
+
+ String s1 = new String("\u3040\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B");
+ new jniutf().printString (s1);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/jniutf.out b/libjava/testsuite/libjava.jni/jniutf.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/jniutf.out
diff --git a/libjava/testsuite/libjava.jni/martin.c b/libjava/testsuite/libjava.jni/martin.c
new file mode 100644
index 000000000..0fbb8d0aa
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.c
@@ -0,0 +1,43 @@
+#include <jni.h>
+#include "martin.h"
+#include <stdio.h>
+
+JNIEXPORT void JNICALL
+Java_martin_myNative(JNIEnv* env, jobject this, jstring s)
+{
+ jclass cls;
+ jfieldID fid;
+ jobject obj;
+ jmethodID mid;
+
+ printf("From C\n");
+ fflush(stdout);
+
+ cls = (*env)->FindClass(env, "java/lang/System");
+ if (cls == 0) {
+ printf("java/lang/System lookup failed\n");
+ return;
+ }
+ fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;");
+ if (fid == 0) {
+ printf("java/lang/System::out lookup failed\n");
+ return;
+ }
+ obj = (*env)->GetStaticObjectField(env, cls, fid);
+ if (obj == 0) {
+ printf("GetStaticObjectField call failed\n");
+ return;
+ }
+ cls = (*env)->GetObjectClass(env, obj);
+ if (cls == 0) {
+ printf("GetObjectClass(out) failed\n");
+ return;
+ }
+ mid = (*env)->GetMethodID(env, cls, "println", "(Ljava/lang/String;)V");
+ if (mid == 0) {
+ printf("println method lookup failed\n");
+ return;
+ }
+ (*env)->CallVoidMethod(env, obj, mid, s);
+}
+
diff --git a/libjava/testsuite/libjava.jni/martin.h b/libjava/testsuite/libjava.jni/martin.h
new file mode 100644
index 000000000..73b6a062e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __martin__
+#define __martin__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_martin_myNative (JNIEnv *env, jobject, jstring);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __martin__ */
diff --git a/libjava/testsuite/libjava.jni/martin.jar b/libjava/testsuite/libjava.jni/martin.jar
new file mode 100644
index 000000000..a0293a75f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/martin.java b/libjava/testsuite/libjava.jni/martin.java
new file mode 100644
index 000000000..b866a605c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.java
@@ -0,0 +1,21 @@
+// Test case from Martin Kahlert <martin.kahlert@infineon.com>
+
+public class martin {
+ public native void myNative(String s);
+
+ public void myJava(String s) {
+ s = s + ", Java";
+ System.out.println(s);
+ }
+
+ public static void main(String args[]) {
+ martin x = new martin();
+ x.myJava("Hello");
+ x.myNative("Hello, Java (from C)");
+ x.myJava("Goodbye");
+ }
+
+ static {
+ System.loadLibrary("martin");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/martin.out b/libjava/testsuite/libjava.jni/martin.out
new file mode 100644
index 000000000..a25bc6c28
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.out
@@ -0,0 +1,4 @@
+Hello, Java
+From C
+Hello, Java (from C)
+Goodbye, Java
diff --git a/libjava/testsuite/libjava.jni/noclass.c b/libjava/testsuite/libjava.jni/noclass.c
new file mode 100644
index 000000000..87c649c30
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/noclass.c
@@ -0,0 +1,9 @@
+#include <noclass.h>
+
+JNIEXPORT void JNICALL
+Java_noclass_find_1it (JNIEnv *env, jclass k)
+{
+ /* We cause an exception by asking for a class we know does not
+ exist. */
+ k = (*env)->FindClass (env, "java/lang/Sarcophagus");
+}
diff --git a/libjava/testsuite/libjava.jni/noclass.h b/libjava/testsuite/libjava.jni/noclass.h
new file mode 100644
index 000000000..67869a916
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/noclass.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __noclass__
+#define __noclass__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_noclass_find_1it (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __noclass__ */
diff --git a/libjava/testsuite/libjava.jni/noclass.jar b/libjava/testsuite/libjava.jni/noclass.jar
new file mode 100644
index 000000000..969aa950f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/noclass.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/noclass.java b/libjava/testsuite/libjava.jni/noclass.java
new file mode 100644
index 000000000..7e0b8c34c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/noclass.java
@@ -0,0 +1,25 @@
+// Test to make sure JNI implementation catches exceptions.
+
+public class noclass
+{
+ static
+ {
+ System.loadLibrary ("noclass");
+ }
+
+ public static native void find_it ();
+
+ public static void main (String[] args)
+ {
+ try
+ {
+ find_it ();
+ }
+ catch (Throwable _)
+ {
+ // If find_it() causes a crash, or doesn't throw an exception,
+ // we won't be running this next line.
+ System.out.println ("Ok");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/noclass.out b/libjava/testsuite/libjava.jni/noclass.out
new file mode 100644
index 000000000..7326d9603
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/noclass.out
@@ -0,0 +1 @@
+Ok
diff --git a/libjava/testsuite/libjava.jni/overload.c b/libjava/testsuite/libjava.jni/overload.c
new file mode 100644
index 000000000..4e7a2d928
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/overload.c
@@ -0,0 +1,16 @@
+#include <overload.h>
+
+JNIEXPORT jint JNICALL
+Java_overload_over__I (JNIEnv *env, jclass klass, jint val)
+{
+ return val;
+}
+
+
+JNIEXPORT jint JNICALL
+Java_overload_over__II (JNIEnv *env, jclass klass, jint one, jint two)
+{
+ return one + two;
+}
+
+
diff --git a/libjava/testsuite/libjava.jni/overload.h b/libjava/testsuite/libjava.jni/overload.h
new file mode 100644
index 000000000..7b717cd09
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/overload.h
@@ -0,0 +1,20 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __overload__
+#define __overload__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_overload_over__I (JNIEnv *env, jclass, jint);
+JNIEXPORT jint JNICALL Java_overload_over__II (JNIEnv *env, jclass, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __overload__ */
diff --git a/libjava/testsuite/libjava.jni/overload.jar b/libjava/testsuite/libjava.jni/overload.jar
new file mode 100644
index 000000000..430d3d665
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/overload.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/overload.java b/libjava/testsuite/libjava.jni/overload.java
new file mode 100644
index 000000000..c2e6037a5
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/overload.java
@@ -0,0 +1,18 @@
+// Test to make sure overloaded functions with long names work.
+
+public class overload
+{
+ static
+ {
+ System.loadLibrary ("overload");
+ }
+
+ public static native int over (int one);
+ public static native int over (int one, int two);
+
+ public static void main (String[] args)
+ {
+ System.out.println (over (1));
+ System.out.println (over (1, 2));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/overload.out b/libjava/testsuite/libjava.jni/overload.out
new file mode 100644
index 000000000..2b2f2e1b9
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/overload.out
@@ -0,0 +1,2 @@
+1
+3
diff --git a/libjava/testsuite/libjava.jni/pr11951.c b/libjava/testsuite/libjava.jni/pr11951.c
new file mode 100644
index 000000000..4c8ab63f1
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr11951.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <pr11951.h>
+
+JNIEXPORT void JNICALL
+Java_pr11951_nmethod (JNIEnv *env, jclass myclass)
+{
+ jmethodID method;
+ jobject r;
+
+ method = (*env)->GetStaticMethodID (env, myclass, "dosomething",
+ "()Ljava/lang/Object;");
+ r = (*env)->CallStaticObjectMethod (env, myclass, method);
+ printf ("%d\n", r == NULL);
+
+ (*env)->ExceptionClear (env);
+}
diff --git a/libjava/testsuite/libjava.jni/pr11951.h b/libjava/testsuite/libjava.jni/pr11951.h
new file mode 100644
index 000000000..caeefdb85
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr11951.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __pr11951__
+#define __pr11951__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_pr11951_nmethod (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __pr11951__ */
diff --git a/libjava/testsuite/libjava.jni/pr11951.jar b/libjava/testsuite/libjava.jni/pr11951.jar
new file mode 100644
index 000000000..adea29fe7
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr11951.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/pr11951.java b/libjava/testsuite/libjava.jni/pr11951.java
new file mode 100644
index 000000000..e481503ab
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr11951.java
@@ -0,0 +1,18 @@
+public class pr11951
+{
+ public static Object dosomething()
+ {
+ throw new Error();
+ }
+
+ public static native void nmethod();
+
+ public static void main(String[] args)
+ {
+ nmethod();
+ }
+
+ static {
+ System.loadLibrary("pr11951");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/pr11951.out b/libjava/testsuite/libjava.jni/pr11951.out
new file mode 100644
index 000000000..d00491fd7
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr11951.out
@@ -0,0 +1 @@
+1
diff --git a/libjava/testsuite/libjava.jni/pr18278.c b/libjava/testsuite/libjava.jni/pr18278.c
new file mode 100644
index 000000000..7ca73a430
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.c
@@ -0,0 +1,10 @@
+#include <jni.h>
+#include <stdio.h>
+
+#include "pr18278.h"
+
+jobject Java_pr18278_weakRef(JNIEnv *env, jclass cls, jobject data)
+{
+ jobject r = (* env)->NewWeakGlobalRef(env, data);
+ return r;
+}
diff --git a/libjava/testsuite/libjava.jni/pr18278.h b/libjava/testsuite/libjava.jni/pr18278.h
new file mode 100644
index 000000000..4003fef37
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __pr18278__
+#define __pr18278__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jobject JNICALL Java_pr18278_weakRef (JNIEnv *env, jclass, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __pr18278__ */
diff --git a/libjava/testsuite/libjava.jni/pr18278.jar b/libjava/testsuite/libjava.jni/pr18278.jar
new file mode 100644
index 000000000..c1bf1489a
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/pr18278.java b/libjava/testsuite/libjava.jni/pr18278.java
new file mode 100644
index 000000000..8a39ddebf
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.java
@@ -0,0 +1,13 @@
+public class pr18278 {
+ public pr18278() {}
+
+ public static void main(String[] args) {
+ System.loadLibrary("pr18278");
+ String bob = "Bob";
+ Object o = weakRef("Bob");
+ System.out.println(o);
+ System.out.println(bob == o);
+ }
+
+ static native Object weakRef(Object o);
+}
diff --git a/libjava/testsuite/libjava.jni/pr18278.out b/libjava/testsuite/libjava.jni/pr18278.out
new file mode 100644
index 000000000..e01142a4a
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.out
@@ -0,0 +1,2 @@
+Bob
+true
diff --git a/libjava/testsuite/libjava.jni/pr23739.c b/libjava/testsuite/libjava.jni/pr23739.c
new file mode 100644
index 000000000..0f6bfbefe
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr23739.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include "pr23739.h"
+
+JNIEXPORT void JNICALL
+Java_pr23739_checkOrder (JNIEnv *env, jclass cls, jclass clazz1, jclass clazz2)
+{
+ printf ("B extends A\n");
+ printf ("isAssignableFrom (A, B): %d\n",
+ (*env)->IsAssignableFrom (env, clazz1, clazz2));
+ printf ("isAssignableFrom (B, A): %d\n",
+ (*env)->IsAssignableFrom (env, clazz2, clazz1));
+}
diff --git a/libjava/testsuite/libjava.jni/pr23739.h b/libjava/testsuite/libjava.jni/pr23739.h
new file mode 100644
index 000000000..70f228c8c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr23739.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __pr23739__
+#define __pr23739__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_pr23739_checkOrder (JNIEnv *env, jclass, jclass, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __pr23739__ */
diff --git a/libjava/testsuite/libjava.jni/pr23739.jar b/libjava/testsuite/libjava.jni/pr23739.jar
new file mode 100644
index 000000000..d8370461b
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr23739.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/pr23739.java b/libjava/testsuite/libjava.jni/pr23739.java
new file mode 100644
index 000000000..b2e54c548
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr23739.java
@@ -0,0 +1,22 @@
+public class pr23739
+{
+ static
+ {
+ System.loadLibrary ("pr23739");
+ }
+
+ public static class A
+ {
+ }
+
+ public static class B extends A
+ {
+ }
+
+ static native void checkOrder (Class clazz1, Class clazz2);
+
+ public static void main (String[] args)
+ {
+ checkOrder (A.class, B.class);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/pr23739.out b/libjava/testsuite/libjava.jni/pr23739.out
new file mode 100644
index 000000000..3e94564c2
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr23739.out
@@ -0,0 +1,3 @@
+B extends A
+isAssignableFrom (A, B): 0
+isAssignableFrom (B, A): 1
diff --git a/libjava/testsuite/libjava.jni/pr29812.c b/libjava/testsuite/libjava.jni/pr29812.c
new file mode 100644
index 000000000..809d5ed2e
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812.c
@@ -0,0 +1,7 @@
+#include <pr29812.h>
+
+void
+Java_pr29812_baseN (JNIEnv *env, jclass barf)
+{
+ /* nothing */
+}
diff --git a/libjava/testsuite/libjava.jni/pr29812.h b/libjava/testsuite/libjava.jni/pr29812.h
new file mode 100644
index 000000000..70d199938
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __pr29812__
+#define __pr29812__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_pr29812_baseN (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __pr29812__ */
diff --git a/libjava/testsuite/libjava.jni/pr29812.jar b/libjava/testsuite/libjava.jni/pr29812.jar
new file mode 100644
index 000000000..c3cf6aba0
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/pr29812.java b/libjava/testsuite/libjava.jni/pr29812.java
new file mode 100644
index 000000000..4dde744be
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812.java
@@ -0,0 +1,25 @@
+import java.io.File;
+import java.net.*;
+import java.lang.reflect.Method;
+
+public class pr29812
+{
+ static {
+ System.loadLibrary("pr29812");
+ }
+
+ public static native void baseN();
+
+ public static void main(String[] args) throws Throwable
+ {
+ // Make sure JNI environment is initialized.
+ baseN();
+
+ File jar = new File(args[0]);
+ URL u = jar.toURL();
+ URLClassLoader uc = new URLClassLoader(new URL[] { u });
+ Class k = uc.loadClass("pr29812_injar");
+ Method m = k.getMethod("doit", (Class[]) null);
+ m.invoke(null, (Object[]) null);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/pr29812.out b/libjava/testsuite/libjava.jni/pr29812.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812.out
diff --git a/libjava/testsuite/libjava.jni/pr29812_injar.c b/libjava/testsuite/libjava.jni/pr29812_injar.c
new file mode 100644
index 000000000..5b045ce72
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812_injar.c
@@ -0,0 +1,26 @@
+
+#include <stdlib.h>
+#include <assert.h>
+#include <pr29812_injar.h>
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad (JavaVM *vm, void *nothing)
+{
+ JNIEnv *env;
+ jint r;
+ jclass k;
+
+ r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2);
+ assert (r == JNI_OK);
+ k = (*env)->FindClass (env, "pr29812_injar$inner");
+ assert (k != NULL);
+
+ return JNI_VERSION_1_2;
+}
+
+void
+Java_pr29812_1injar_doit (JNIEnv *env, jclass b)
+{
+ jclass k = (*env)->FindClass(env, "pr29812_injar$inner");
+ assert (k != NULL);
+}
diff --git a/libjava/testsuite/libjava.jni/pr29812_injar.h b/libjava/testsuite/libjava.jni/pr29812_injar.h
new file mode 100644
index 000000000..40f74ff39
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812_injar.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __pr29812_1injar__
+#define __pr29812_1injar__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_pr29812_1injar_doit (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __pr29812_1injar__ */
diff --git a/libjava/testsuite/libjava.jni/pr29812_injar.jar b/libjava/testsuite/libjava.jni/pr29812_injar.jar
new file mode 100644
index 000000000..438dc0063
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812_injar.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/pr29812_injar.java b/libjava/testsuite/libjava.jni/pr29812_injar.java
new file mode 100644
index 000000000..9dc32a3cd
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr29812_injar.java
@@ -0,0 +1,12 @@
+public class pr29812_injar
+{
+ public class inner
+ {
+ }
+
+ static {
+ System.loadLibrary("pr29812_injar");
+ }
+
+ public static native void doit();
+}
diff --git a/libjava/testsuite/libjava.jni/register.c b/libjava/testsuite/libjava.jni/register.c
new file mode 100644
index 000000000..049090242
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register.c
@@ -0,0 +1,32 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <register.h>
+
+static jint
+some_random_name (JNIEnv *env, jclass k, jint v)
+{
+ return v - 1;
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad (JavaVM *vm, void *nothing)
+{
+ JNIEnv *env;
+ JNINativeMethod meth;
+ jclass k;
+ jint r;
+
+ r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2);
+ assert (r == JNI_OK);
+ k = (*env)->FindClass (env, "register");
+ assert (k != NULL);
+
+ meth.name = "doit";
+ meth.signature = "(I)I";
+ meth.fnPtr = some_random_name;
+
+ r = (*env)->RegisterNatives (env, k, &meth, 1);
+ assert (r == JNI_OK);
+
+ return JNI_VERSION_1_2;
+}
diff --git a/libjava/testsuite/libjava.jni/register.h b/libjava/testsuite/libjava.jni/register.h
new file mode 100644
index 000000000..85b606be8
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __register__
+#define __register__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_register_doit (JNIEnv *env, jclass, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __register__ */
diff --git a/libjava/testsuite/libjava.jni/register.jar b/libjava/testsuite/libjava.jni/register.jar
new file mode 100644
index 000000000..e8682e1a0
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/register.java b/libjava/testsuite/libjava.jni/register.java
new file mode 100644
index 000000000..0c0cbf628
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register.java
@@ -0,0 +1,16 @@
+// register.java - Test RegisterNatives.
+
+public class register
+{
+ static
+ {
+ System.loadLibrary ("register");
+ }
+
+ public static native int doit (int z);
+
+ public static void main (String[] args)
+ {
+ System.out.println (doit (24));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/register.out b/libjava/testsuite/libjava.jni/register.out
new file mode 100644
index 000000000..409940768
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register.out
@@ -0,0 +1 @@
+23
diff --git a/libjava/testsuite/libjava.jni/register2.c b/libjava/testsuite/libjava.jni/register2.c
new file mode 100644
index 000000000..318e4d8f4
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register2.c
@@ -0,0 +1,48 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <jni.h>
+
+static int
+twentythree (JNIEnv *env, jclass k)
+{
+ return 23;
+}
+
+static int
+oneninetyseven (JNIEnv *env, jclass k)
+{
+ return 197;
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad (JavaVM *vm, void *nothing)
+{
+ JNIEnv *env;
+ JNINativeMethod meth;
+ jclass k;
+ jint r;
+
+ r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2);
+ assert (r == JNI_OK);
+ k = (*env)->FindClass (env, "register2$I1");
+ assert (k != NULL);
+
+ meth.name = "doit";
+ meth.signature = "()I";
+ meth.fnPtr = twentythree;
+
+ r = (*env)->RegisterNatives (env, k, &meth, 1);
+ assert (r == JNI_OK);
+
+ k = (*env)->FindClass (env, "register2$I2");
+ assert (k != NULL);
+
+ meth.name = "doit";
+ meth.signature = "()I";
+ meth.fnPtr = oneninetyseven;
+
+ r = (*env)->RegisterNatives (env, k, &meth, 1);
+ assert (r == JNI_OK);
+
+ return JNI_VERSION_1_2;
+}
diff --git a/libjava/testsuite/libjava.jni/register2.jar b/libjava/testsuite/libjava.jni/register2.jar
new file mode 100644
index 000000000..807524cdc
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/register2.java b/libjava/testsuite/libjava.jni/register2.java
new file mode 100644
index 000000000..2d6c56a3b
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register2.java
@@ -0,0 +1,27 @@
+// Another test of RegisterNatives.
+// We neglected to track the class name in our internal hash table.
+// This is a regression test for the fix.
+
+public class register2
+{
+ static
+ {
+ System.loadLibrary ("register2");
+ }
+
+ static class I1
+ {
+ public static native int doit ();
+ }
+
+ static class I2
+ {
+ public static native int doit ();
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (new I1().doit());
+ System.out.println (new I2().doit());
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/register2.out b/libjava/testsuite/libjava.jni/register2.out
new file mode 100644
index 000000000..5b90358a2
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/register2.out
@@ -0,0 +1,2 @@
+23
+197
diff --git a/libjava/testsuite/libjava.jni/simple_int.c b/libjava/testsuite/libjava.jni/simple_int.c
new file mode 100644
index 000000000..a7c64b0cd
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/simple_int.c
@@ -0,0 +1,7 @@
+#include <simple_int.h>
+
+JNIEXPORT jint JNICALL
+Java_simple_1int_nat (JNIEnv *env, jclass klass, jint val)
+{
+ return 2 * val;
+}
diff --git a/libjava/testsuite/libjava.jni/simple_int.h b/libjava/testsuite/libjava.jni/simple_int.h
new file mode 100644
index 000000000..b0b9b579a
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/simple_int.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __simple_1int__
+#define __simple_1int__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_simple_1int_nat (JNIEnv *env, jclass, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __simple_1int__ */
diff --git a/libjava/testsuite/libjava.jni/simple_int.jar b/libjava/testsuite/libjava.jni/simple_int.jar
new file mode 100644
index 000000000..1f0bdc67c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/simple_int.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/simple_int.java b/libjava/testsuite/libjava.jni/simple_int.java
new file mode 100644
index 000000000..6306c4e93
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/simple_int.java
@@ -0,0 +1,16 @@
+// Test a simple static function with an `int' argument.
+
+public class simple_int
+{
+ public static native int nat (int z);
+
+ static
+ {
+ System.loadLibrary ("simple_int");
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (nat (23));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/simple_int.out b/libjava/testsuite/libjava.jni/simple_int.out
new file mode 100644
index 000000000..9e5feb525
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/simple_int.out
@@ -0,0 +1 @@
+46
diff --git a/libjava/testsuite/libjava.jni/throwit.c b/libjava/testsuite/libjava.jni/throwit.c
new file mode 100644
index 000000000..34a3ca076
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/throwit.c
@@ -0,0 +1,25 @@
+#include <stdlib.h>
+#include <throwit.h>
+
+JNIEXPORT void JNICALL
+Java_throwit_throwit (JNIEnv *env, jclass klass, jstring name,
+ jboolean is_new)
+{
+ const char *buf = (*env)->GetStringUTFChars (env, name, NULL);
+ jclass k = (*env)->FindClass (env, buf);
+ (*env)->ReleaseStringUTFChars (env, name, buf);
+
+ if (k == NULL || (*env)->ExceptionCheck (env))
+ return;
+
+ if (is_new)
+ (*env)->ThrowNew (env, k, "the word is zardoz");
+ else
+ {
+ jmethodID id = (*env)->GetMethodID (env, k, "<init>",
+ "(Ljava.lang.String;)V");
+ jstring z = (*env)->NewStringUTF (env, "zardoz is the word");
+ jobject obj = (*env)->NewObject (env, k, id, z);
+ (*env)->Throw (env, obj);
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/throwit.h b/libjava/testsuite/libjava.jni/throwit.h
new file mode 100644
index 000000000..97c7223f7
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/throwit.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __throwit__
+#define __throwit__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_throwit_throwit (JNIEnv *env, jclass, jstring, jboolean);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __throwit__ */
diff --git a/libjava/testsuite/libjava.jni/throwit.jar b/libjava/testsuite/libjava.jni/throwit.jar
new file mode 100644
index 000000000..9fc43b9d8
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/throwit.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/throwit.java b/libjava/testsuite/libjava.jni/throwit.java
new file mode 100644
index 000000000..459622d39
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/throwit.java
@@ -0,0 +1,33 @@
+// Test to see if throw works.
+
+public class throwit
+{
+ static
+ {
+ System.loadLibrary ("throwit");
+ }
+
+ public static native void throwit (String name, boolean is_new);
+
+ public static void main (String[] args)
+ {
+ try
+ {
+ throwit ("java/lang/UnknownError", false);
+ }
+ catch (Throwable x)
+ {
+ System.out.println (x.getClass ());
+ System.out.println (x.getMessage ());
+ }
+ try
+ {
+ throwit ("java/lang/Throwable", true);
+ }
+ catch (Throwable x)
+ {
+ System.out.println (x.getClass ());
+ System.out.println (x.getMessage ());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/throwit.out b/libjava/testsuite/libjava.jni/throwit.out
new file mode 100644
index 000000000..c50b7a9ab
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/throwit.out
@@ -0,0 +1,4 @@
+class java.lang.UnknownError
+zardoz is the word
+class java.lang.Throwable
+the word is zardoz
diff --git a/libjava/testsuite/libjava.jni/virtual.c b/libjava/testsuite/libjava.jni/virtual.c
new file mode 100644
index 000000000..024697083
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/virtual.c
@@ -0,0 +1,7 @@
+#include <virtual.h>
+
+JNIEXPORT jboolean JNICALL
+Java_virtual_equals (JNIEnv *env, jobject thisv, jobject other)
+{
+ return JNI_FALSE;
+}
diff --git a/libjava/testsuite/libjava.jni/virtual.h b/libjava/testsuite/libjava.jni/virtual.h
new file mode 100644
index 000000000..7d9ef8246
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/virtual.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __virtual__
+#define __virtual__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jboolean JNICALL Java_virtual_equals (JNIEnv *env, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __virtual__ */
diff --git a/libjava/testsuite/libjava.jni/virtual.jar b/libjava/testsuite/libjava.jni/virtual.jar
new file mode 100644
index 000000000..dd4090b9b
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/virtual.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/virtual.java b/libjava/testsuite/libjava.jni/virtual.java
new file mode 100644
index 000000000..496389ce5
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/virtual.java
@@ -0,0 +1,17 @@
+// Minimal test of a virtual method.
+
+public class virtual
+{
+ static
+ {
+ System.loadLibrary ("virtual");
+ }
+
+ public native boolean equals (Object obj);
+
+ public static void main (String[] args)
+ {
+ Object v = new virtual ();
+ System.out.println (v.equals (v));
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/virtual.out b/libjava/testsuite/libjava.jni/virtual.out
new file mode 100644
index 000000000..c508d5366
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/virtual.out
@@ -0,0 +1 @@
+false
diff --git a/libjava/testsuite/libjava.jvmti/dummyagent.c b/libjava/testsuite/libjava.jvmti/dummyagent.c
new file mode 100644
index 000000000..96541b98a
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/dummyagent.c
@@ -0,0 +1,10 @@
+#include <jvmti.h>
+
+JNIEXPORT jint JNICALL
+Agent_OnLoad (JavaVM *vm, char *options, void *reserved)
+{
+ // nothing -- this is just a stub to get JVMTI properly
+ // initialized
+ return 0;
+}
+
diff --git a/libjava/testsuite/libjava.jvmti/events.h b/libjava/testsuite/libjava.jvmti/events.h
new file mode 100644
index 000000000..2f81b63fe
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/events.h
@@ -0,0 +1,27 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __events__
+#define __events__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class events;
+}
+
+class events : public ::java::lang::Object
+{
+
+public:
+ events();
+ static void do_events_tests();
+ static void main(JArray< ::java::lang::String * > *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __events__
diff --git a/libjava/testsuite/libjava.jvmti/events.jar b/libjava/testsuite/libjava.jvmti/events.jar
new file mode 100644
index 000000000..48a69dc7e
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/events.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/events.java b/libjava/testsuite/libjava.jvmti/events.java
new file mode 100644
index 000000000..05deeeb23
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/events.java
@@ -0,0 +1,12 @@
+// Test JVMTI event notifications
+
+public class events
+{
+ public static native void do_events_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI event notification tests");
+ do_events_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/events.out b/libjava/testsuite/libjava.jvmti/events.out
new file mode 100644
index 000000000..7b51cafe8
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/events.out
@@ -0,0 +1,59 @@
+JVMTI event notification tests
+- enable tests -
+created JVMTI environment #0
+created JVMTI environment #1
+created JVMTI environment #2
+setting callbacks for envs
+RequestedEvents:
+enable VM_INIT for env0, env1, env2
+RequestedEvents: VMInit,
+enable VM_DEATH for env1,env2
+RequestedEvents: VMInit,VMDeath,
+enable THREAD_END for env2
+RequestedEvents: VMInit,VMDeath,ThreadEnd,
+disposing of env1
+RequestedEvents: VMInit,VMDeath,ThreadEnd,
+disposing of env0
+RequestedEvents: VMInit,VMDeath,ThreadEnd,
+disable VMInit in env2
+RequestedEvents: VMDeath,ThreadEnd,
+clear VMDeath callback in env2
+RequestedEvents: ThreadEnd,
+sending VMInit
+sending ThreadEnd
+ThreadEndCB jni_env=0x5678 thread=0x1234
+sending VMDeath
+disposing of env2
+RequestedEvents:
+- callback arg tests -
+RequestedEvents: VMInit,VMDeath,ThreadStart,ThreadEnd,ClassFileLoadHook,ClassLoad,ClassPrepare,VMStart,Exception,ExceptionCatch,SingleStep,FramePop,Breakpoint,FieldAccess,FieldModification,MethodEntry,MethodExit,NativeMethodBind,CompiledMethodLoad,CompiledMethodUnload,DynamicCodeGenerated,DataDumpRequest,MonitorWait,MonitorWaited,MonitorContendedEnter,MonitorContendedEntered,GarbageCollectionStart,GarbageCollectionFinish,ObjectFree,VMObjectAlloc,
+VMInitCB jni_env=0x1 thread=0x2
+VMDeathCB jni_env=0x1
+ThreadStartCB jni_env=0x1 thread=0x2
+ThreadEndCB jni_env=0x1 thread=0x2
+ClassFileLoadHookCB jni_env=0x1 class_being_redefined=0x2 loader=0x3 name=4 protection_domain=0x5 class_data_len=6 class_data=0x7 new_class_data_len=0x8 new_class_data=0x9
+ClassLoadCB jni_env=0x1 thread=0x2 klass=0x3
+ClassPrepareCB jni_env=0x1 thread=0x2 klass=0x3
+VMStartCB jni_env=0x1
+ExceptionCB jni_env=0x1 thread=0x2 method=0x3 location=0x4 exception=0x5 catch_method=0x6 catch_location=0x7
+ExceptionCatchCB jni_env=0x1 thread=0x2 method=0x3 location=0x4 exception=0x5
+SingleStepCB jni_env=0x1 thread=0x2 method=0x3 location=0x4
+FramePopCB jni_env=0x1 thread=0x2 method=0x3 was_pooped_by_exception=1
+BreakpointCB jni_env=0x1 thread=0x2 method=0x3 location=0x4
+FieldAccessCB jni_env=0x1 thread=0x2 method=0x3 location=0x4 field_klass=0x5 object=0x6 field=0x7
+FieldModificationCB jni_env=0x1 thread=0x2 method=0x3 location=0x4 field_klass=0x5 object=0x6 field=0x7 signature_type=8 new_value=0x9
+MethodEntryCB jni_env=0x1 thread=0x2 method=0x3
+MethodExitCB jni_env=0x1 thread=0x2 method=0x3 was_popped_by_exception=1 return_value=5
+NativeMethodBindCB jni_env=0x1 thread=0x2 method=0x3 address=0x4 new_address_ptr=0x5
+CompiledMethodLoadCB method=0x1 code_size=0x2 code_addr=0x3 map_length=4 map=0x5 compile_info=0x6
+CompiledMethodUnloadCB method=0x1 code_addr=0x2
+DynamicCodeGeneratedCB name=1 address=0x2 length=3
+DataDumpRequestCB
+MonitorWaitCB jni_env=0x1 thread=0x2 object=0x3 timeout=4
+MonitorWaitedCB jni_env=0x1 thread=0x2 object=0x3 timed_out=1
+MonitorContendedEnterCB jni_env=0x1 thread=0x2 object=0x3
+MonitorContendedEnteredCB jni_env=0x1 thread=0x2 object=0x3
+GarbageCollectionStartCB
+GarbageCollectionFinishCB
+ObjectFreeCB tag=1
+VMObjectAllocCB jni_env=0x1 thread=0x2 object=0x3 object_klass=0x4 size=5
diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.h b/libjava/testsuite/libjava.jvmti/getallthreads.h
new file mode 100644
index 000000000..7579892f3
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getallthreads.h
@@ -0,0 +1,35 @@
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __getallthreads__
+#define __getallthreads__
+
+#pragma interface
+
+#include <java/lang/Thread.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class getallthreads;
+}
+
+class getallthreads : public ::java::lang::Thread
+{
+public:
+ getallthreads ();
+ static void do_getallthreads_tests ();
+ virtual void run ();
+ virtual void natPlaceholder ();
+ virtual void natRunner ();
+ virtual void placeholder ();
+ virtual void runner ();
+ static void main (JArray< ::java::lang::String *> *);
+ static jint thread_num;
+ static ::java::util::ArrayList *threads;
+ jint __attribute__((aligned(__alignof__( ::java::lang::Thread )))) ex_frames;
+ jboolean done;
+
+ static ::java::lang::Class class$;
+};
+
+#endif /* __getallthreads__ */
diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.jar b/libjava/testsuite/libjava.jvmti/getallthreads.jar
new file mode 100644
index 000000000..3e59ccdc3
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getallthreads.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.java b/libjava/testsuite/libjava.jvmti/getallthreads.java
new file mode 100644
index 000000000..00be3a75c
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getallthreads.java
@@ -0,0 +1,80 @@
+// Test JVMTI GetAllThreads
+
+import java.util.ArrayList;
+
+public class getallthreads extends Thread
+{
+ public static int thread_num;
+ public static ArrayList threads;
+
+ public int ex_frames;
+ public boolean done = false;
+
+ public static native void do_getallthreads_tests ();
+
+ public void run ()
+ {
+ ex_frames = thread_num;
+ thread_num++;
+
+ if (ex_frames > 0)
+ {
+ if ((ex_frames % 2) == 0)
+ placeholder ();
+ else
+ natPlaceholder ();
+ }
+ else
+ runner ();
+ }
+
+ public native void natPlaceholder ();
+ public native void natRunner ();
+
+ public void placeholder ()
+ {
+ ex_frames--;
+
+ if (ex_frames > 0)
+ {
+ if ((thread_num % 2) == 0)
+ placeholder ();
+ else
+ natPlaceholder ();
+ }
+ else
+ runner ();
+ }
+
+ public void runner ()
+ {
+ done = true;
+ while (done)
+ yield ();
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI GetAllThreads tests");
+ threads = new ArrayList (20);
+
+ getallthreads t;
+
+ for (int i = 0; i < 20; i++)
+ {
+ t = new getallthreads ();
+ threads.add (t);
+ t.start ();
+ while (!t.done)
+ yield ();
+ }
+
+ do_getallthreads_tests ();
+
+ for (int i = 0; i < 20; i++)
+ {
+ t = (getallthreads) threads.get(i);
+ t.done = false;
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.out b/libjava/testsuite/libjava.jvmti/getallthreads.out
new file mode 100644
index 000000000..8e05c4a4b
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getallthreads.out
@@ -0,0 +1,23 @@
+JVMTI GetAllThreads tests
+Found thread 1
+Found thread 2
+Found thread 3
+Found thread 4
+Found thread 5
+Found thread 6
+Found thread 7
+Found thread 8
+Found thread 9
+Found thread 10
+Found thread 11
+Found thread 12
+Found thread 13
+Found thread 14
+Found thread 15
+Found thread 16
+Found thread 17
+Found thread 18
+Found thread 19
+Found thread 20
+Found thread 21
+Found thread 22
diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.h b/libjava/testsuite/libjava.jvmti/geterrorname.h
new file mode 100644
index 000000000..957e1c23b
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/geterrorname.h
@@ -0,0 +1,27 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __geterrorname__
+#define __geterrorname__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class geterrorname;
+}
+
+class geterrorname : public ::java::lang::Object
+{
+
+public:
+ geterrorname();
+ static void do_errorname_tests();
+ static void main(JArray< ::java::lang::String * > *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __geterrorname__
diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.jar b/libjava/testsuite/libjava.jvmti/geterrorname.jar
new file mode 100644
index 000000000..a0c5ae052
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/geterrorname.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.java b/libjava/testsuite/libjava.jvmti/geterrorname.java
new file mode 100644
index 000000000..b809b22d6
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/geterrorname.java
@@ -0,0 +1,12 @@
+// Test JVMTI GetErrorName
+
+public class geterrorname
+{
+ public static native void do_errorname_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI GetErrorName tests");
+ do_errorname_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.out b/libjava/testsuite/libjava.jvmti/geterrorname.out
new file mode 100644
index 000000000..3b993d3b6
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/geterrorname.out
@@ -0,0 +1,49 @@
+JVMTI GetErrorName tests
+none
+null pointer
+out of memory
+access denied
+wrong phase
+internal error
+unattached thread
+invalid environment
+invalid priority
+thread not suspended
+thread suspended
+thread not alive
+class not prepared
+no more frames
+opaque frame
+duplicate
+not found
+not monitor owner
+interrupted
+unmodifiable class
+not available
+absent information
+invalid event type
+native method
+invalid thread
+invalid thread group
+invalid object
+invalid class
+invalid method ID
+invalid location
+invalid field ID
+type mismatch
+invalid slot
+invalid monitor
+invalid class format
+circular class definition
+unsupported redefinition: method added
+unsupported redefinition: schema changed
+invalid type state
+fails verification
+unsupported redefinition: hierarchy changed
+unsupported redefinition: method deleted
+unsupported version
+names do not match
+unsupported redefinition: class modifiers changed
+unsupported redefinition: method modifiers changed
+must possess capability
+illegal argument
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.h b/libjava/testsuite/libjava.jvmti/getmethodname.h
new file mode 100644
index 000000000..e66898f33
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.h
@@ -0,0 +1,27 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __getmethodname__
+#define __getmethodname__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ class getmethodname;
+}
+
+class getmethodname : public ::java::lang::Object
+{
+
+public:
+ getmethodname();
+ static void do_getmethodname_tests();
+ static void main(JArray< ::java::lang::String * > *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __getmethodname__
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.jar b/libjava/testsuite/libjava.jvmti/getmethodname.jar
new file mode 100644
index 000000000..833629122
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.java b/libjava/testsuite/libjava.jvmti/getmethodname.java
new file mode 100644
index 000000000..a0e00a98c
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.java
@@ -0,0 +1,10 @@
+public class getmethodname
+{
+ public static native void do_getmethodname_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI GetMethodName tests");
+ do_getmethodname_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.out b/libjava/testsuite/libjava.jvmti/getmethodname.out
new file mode 100644
index 000000000..3f1a9ca14
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.out
@@ -0,0 +1,59 @@
+JVMTI GetMethodName tests
+null jmethodID: invalid method ID
+GetClassMethods: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+name=clone, signature=()Ljava.lang.Object;, generic=null
+names match
+signatures match
+generic not yet
+name=equals, signature=(Ljava.lang.Object;)Z, generic=null
+names match
+signatures match
+generic not yet
+name=finalize, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=getClass, signature=()Ljava.lang.Class;, generic=null
+names match
+signatures match
+generic not yet
+name=hashCode, signature=()I, generic=null
+names match
+signatures match
+generic not yet
+name=notify, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=notifyAll, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=toString, signature=()Ljava.lang.String;, generic=null
+names match
+signatures match
+generic not yet
diff --git a/libjava/testsuite/libjava.jvmti/interp/getargssize.h b/libjava/testsuite/libjava.jvmti/interp/getargssize.h
new file mode 100644
index 000000000..e1e176761
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getargssize.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __getargssize__
+#define __getargssize__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_getargssize_do_1getargssize_1tests (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __getargssize__ */
diff --git a/libjava/testsuite/libjava.jvmti/interp/getargssize.jar b/libjava/testsuite/libjava.jvmti/interp/getargssize.jar
new file mode 100644
index 000000000..4b92216fc
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getargssize.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/interp/getargssize.java b/libjava/testsuite/libjava.jvmti/interp/getargssize.java
new file mode 100644
index 000000000..f5a2f25ca
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getargssize.java
@@ -0,0 +1,36 @@
+public class getargssize
+{
+ static
+ {
+ System.loadLibrary("natgetargssize");
+ }
+
+ public int aMethod (float fone, int ione)
+ {
+ return 0;
+ }
+
+ public long bMethod (long lone, double done, int ione)
+ {
+ return 0;
+ }
+
+ public static boolean cMethod ()
+ {
+ return false;
+ }
+
+ public static Object dMethod (Object op)
+ {
+ return op;
+ }
+
+ public static native int do_getargssize_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI getargssize Interpreted Test");
+
+ do_getargssize_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/interp/getargssize.out b/libjava/testsuite/libjava.jvmti/interp/getargssize.out
new file mode 100644
index 000000000..cd9106623
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getargssize.out
@@ -0,0 +1,5 @@
+JVMTI getargssize Interpreted Test
+Method 0 requires 3 slots for its arguments
+Method 1 requires 6 slots for its arguments
+Method 2 requires 0 slots for its arguments
+Method 3 requires 1 slots for its arguments
diff --git a/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.h b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.h
new file mode 100644
index 000000000..8d4cb3bed
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __getlocalvartable__
+#define __getlocalvartable__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jint JNICALL Java_getlocalvartable_do_1getlocalvartable_1tests (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __getlocalvartable__ */
diff --git a/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.jar b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.jar
new file mode 100644
index 000000000..9fffb928d
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.java b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.java
new file mode 100644
index 000000000..e0f3b31b8
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.java
@@ -0,0 +1,63 @@
+public class getlocalvartable
+{
+ public boolean done = false;
+
+ // num_frames is the number of frames > the original run () call so if
+ // num_frames = 1, the thread will have 2 frames, the original Thread.run
+ // call, plus one additional
+ public int num_frames, thread_num;
+
+ public static int num_threads = 1;
+
+ static
+ {
+ System.loadLibrary("natgetlocalvartable");
+ }
+
+ public double aMethod (float pone, float ptwo)
+ {
+ float fone, ftwo;
+ double done, dtwo;
+
+ fone = pone;
+ ftwo = 2 * ptwo;
+
+ done = 5 * fone;
+ dtwo = 6 * ftwo;
+
+ return done + dtwo;
+ }
+
+ public long bMethod (int ipone, int iptwo)
+ {
+ int ione, itwo;
+ long lone, ltwo;
+
+ ione = ipone;
+ itwo = 5 * iptwo;
+
+ lone = ione;
+ ltwo = 8 * itwo;
+
+ return lone + ltwo;
+ }
+
+ public Object cMethod (Object op)
+ {
+ Object oone, otwo;
+ oone = op;
+ otwo = oone;
+ oone = null;
+
+ return otwo;
+ }
+
+ public static native int do_getlocalvartable_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI getlocalvartable Interpreted Test");
+
+ do_getlocalvartable_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.out b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.out
new file mode 100644
index 000000000..46c551318
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getlocalvartable.out
@@ -0,0 +1,109 @@
+JVMTI getlocalvartable Interpreted Test
+Slot: 0
+ Name: this
+ Sig: Lgetlocalvartable;
+ Gen Sig: Lgetlocalvartable;
+ Start Loc: 0
+ Length: 29
+Slot: 1
+ Name: pone
+ Sig: F
+ Gen Sig: F
+ Start Loc: 0
+ Length: 29
+Slot: 2
+ Name: ptwo
+ Sig: F
+ Gen Sig: F
+ Start Loc: 0
+ Length: 29
+Slot: 3
+ Name: fone
+ Sig: F
+ Gen Sig: F
+ Start Loc: 2
+ Length: 27
+Slot: 4
+ Name: ftwo
+ Sig: F
+ Gen Sig: F
+ Start Loc: 7
+ Length: 22
+Slot: 5
+ Name: done
+ Sig: D
+ Gen Sig: D
+ Start Loc: 14
+ Length: 15
+Slot: 7
+ Name: dtwo
+ Sig: D
+ Gen Sig: D
+ Start Loc: 22
+ Length: 7
+Slot: 0
+ Name: this
+ Sig: Lgetlocalvartable;
+ Gen Sig: Lgetlocalvartable;
+ Start Loc: 0
+ Length: 26
+Slot: 1
+ Name: ipone
+ Sig: I
+ Gen Sig: I
+ Start Loc: 0
+ Length: 26
+Slot: 2
+ Name: iptwo
+ Sig: I
+ Gen Sig: I
+ Start Loc: 0
+ Length: 26
+Slot: 3
+ Name: ione
+ Sig: I
+ Gen Sig: I
+ Start Loc: 2
+ Length: 24
+Slot: 4
+ Name: itwo
+ Sig: I
+ Gen Sig: I
+ Start Loc: 7
+ Length: 19
+Slot: 5
+ Name: lone
+ Sig: J
+ Gen Sig: J
+ Start Loc: 11
+ Length: 15
+Slot: 7
+ Name: ltwo
+ Sig: J
+ Gen Sig: J
+ Start Loc: 19
+ Length: 7
+Slot: 0
+ Name: this
+ Sig: Lgetlocalvartable;
+ Gen Sig: Lgetlocalvartable;
+ Start Loc: 0
+ Length: 9
+Slot: 1
+ Name: op
+ Sig: Ljava/lang/Object;
+ Gen Sig: Ljava/lang/Object;
+ Start Loc: 0
+ Length: 9
+Slot: 2
+ Name: oone
+ Sig: Ljava/lang/Object;
+ Gen Sig: Ljava/lang/Object;
+ Start Loc: 2
+ Length: 7
+Slot: 3
+ Name: otwo
+ Sig: Ljava/lang/Object;
+ Gen Sig: Ljava/lang/Object;
+ Start Loc: 4
+ Length: 5
diff --git a/libjava/testsuite/libjava.jvmti/interp/getstacktrace.h b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.h
new file mode 100644
index 000000000..6e5e8774e
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __getstacktrace__
+#define __getstacktrace__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_getstacktrace_natPlaceholder (JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_getstacktrace_natRunner (JNIEnv *env, jobject);
+JNIEXPORT jint JNICALL Java_getstacktrace_do_1getstacktrace_1tests (JNIEnv *env, jclass, jobjectArray);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __getstacktrace__ */
diff --git a/libjava/testsuite/libjava.jvmti/interp/getstacktrace.jar b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.jar
new file mode 100644
index 000000000..14b084a4d
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jvmti/interp/getstacktrace.java b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.java
new file mode 100644
index 000000000..21a21f0fb
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.java
@@ -0,0 +1,88 @@
+public class getstacktrace
+ extends Thread
+{
+ public boolean done = false;
+
+ // num_frames is the number of frames > the original run () call so if
+ // num_frames = 1, the thread will have 2 frames, the original Thread.run
+ // call, plus one additional
+ public int num_frames, thread_num;
+
+ public static int num_threads = 1;
+
+ static
+ {
+ System.loadLibrary("natgetstacktrace");
+ }
+
+ public void run ()
+ {
+ thread_num = num_threads++;
+ num_frames = thread_num;
+
+ if (num_frames <= 1)
+ {
+ natRunner ();
+ }
+ else
+ {
+ if (thread_num % 2 == 0)
+ natPlaceholder ();
+ else
+ placeholder ();
+ }
+ }
+
+ public void placeholder ()
+ {
+ num_frames--;
+ if (num_frames <= 1)
+ {
+ if (thread_num % 2 == 1)
+ natRunner ();
+ else
+ runner ();
+ }
+ else
+ {
+ if (thread_num % 2 == 0)
+ natPlaceholder ();
+ else
+ placeholder ();
+ }
+ }
+
+ public void runner ()
+ {
+ done = true;
+ while (done)
+ yield ();
+ }
+
+ public native void natPlaceholder ();
+ public native void natRunner ();
+
+ public static native int do_getstacktrace_tests (Thread[] threads);
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI GetStackTrace Interpreted Test");
+
+ getstacktrace[] threads = new getstacktrace[10];
+
+ for (int i = 0; i < threads.length; i++)
+ {
+ threads[i] = new getstacktrace ();
+ threads[i].start ();
+ while (!threads[i].done)
+ yield ();
+ }
+
+ do_getstacktrace_tests (threads);
+
+ for (int i = 0; i < threads.length; i++)
+ {
+ threads[i].done = false;
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/interp/getstacktrace.out b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.out
new file mode 100644
index 000000000..5134e6eab
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/getstacktrace.out
@@ -0,0 +1,76 @@
+JVMTI GetStackTrace Interpreted Test
+Thread has 2 frames
+Frame 0 is native
+Frame 1 is interpreted
+Thread has 3 frames
+Frame 0 is interpreted
+Frame 1 is native
+Frame 2 is interpreted
+Thread has 4 frames
+Frame 0 is native
+Frame 1 is interpreted
+Frame 2 is interpreted
+Frame 3 is interpreted
+Thread has 5 frames
+Frame 0 is interpreted
+Frame 1 is native
+Frame 2 is native
+Frame 3 is native
+Frame 4 is interpreted
+Thread has 6 frames
+Frame 0 is native
+Frame 1 is interpreted
+Frame 2 is interpreted
+Frame 3 is interpreted
+Frame 4 is interpreted
+Frame 5 is interpreted
+Thread has 7 frames
+Frame 0 is interpreted
+Frame 1 is native
+Frame 2 is native
+Frame 3 is native
+Frame 4 is native
+Frame 5 is native
+Frame 6 is interpreted
+Thread has 8 frames
+Frame 0 is native
+Frame 1 is interpreted
+Frame 2 is interpreted
+Frame 3 is interpreted
+Frame 4 is interpreted
+Frame 5 is interpreted
+Frame 6 is interpreted
+Frame 7 is interpreted
+Thread has 9 frames
+Frame 0 is interpreted
+Frame 1 is native
+Frame 2 is native
+Frame 3 is native
+Frame 4 is native
+Frame 5 is native
+Frame 6 is native
+Frame 7 is native
+Frame 8 is interpreted
+Thread has 10 frames
+Frame 0 is native
+Frame 1 is interpreted
+Frame 2 is interpreted
+Frame 3 is interpreted
+Frame 4 is interpreted
+Frame 5 is interpreted
+Frame 6 is interpreted
+Frame 7 is interpreted
+Frame 8 is interpreted
+Frame 9 is interpreted
+Thread has 11 frames
+Frame 0 is interpreted
+Frame 1 is native
+Frame 2 is native
+Frame 3 is native
+Frame 4 is native
+Frame 5 is native
+Frame 6 is native
+Frame 7 is native
+Frame 8 is native
+Frame 9 is native
+Frame 10 is interpreted
diff --git a/libjava/testsuite/libjava.jvmti/interp/natgetargssize.cc b/libjava/testsuite/libjava.jvmti/interp/natgetargssize.cc
new file mode 100644
index 000000000..326b5a68c
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/natgetargssize.cc
@@ -0,0 +1,58 @@
+#include <jni.h>
+
+#include <jvmti.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "getargssize.h"
+
+JNIEXPORT jint JNICALL Java_getargssize_do_1getargssize_1tests
+(JNIEnv *env, jclass klass)
+{
+ JavaVM *vm;
+ jint err = env->GetJavaVM (&vm);
+ if (err < 0)
+ {
+ fprintf (stderr, "error getting VM\n");
+ exit (1);
+ }
+
+ jvmtiEnv *jvmti = NULL;
+ vm->GetEnv ((void **) &jvmti, JVMTI_VERSION_1_0);
+
+ if (jvmti == NULL)
+ {
+ fprintf (stderr, "error getting jvmti environment\n");
+ exit (1);
+ }
+
+ jint args_size;
+
+ jvmtiError jerr;
+
+ jmethodID meth_ids[4];
+
+ meth_ids[0] = env->GetMethodID (klass, "aMethod", "(FI)I");
+ meth_ids[1] = env->GetMethodID (klass, "bMethod", "(JDI)J");
+ meth_ids[2] = env->GetStaticMethodID (klass, "cMethod", "()Z");
+ meth_ids[3] = env->GetStaticMethodID (klass, "dMethod",
+ "(Ljava/lang/Object;)Ljava/lang/Object;");
+ for (int i = 0; i < 4; i++)
+ {
+ jerr = jvmti->GetArgumentsSize (meth_ids[i], &args_size);
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ char *error_name;
+ jvmti->GetErrorName (jerr, &error_name);
+ fprintf (stderr, "JVMTI Error: %s\n", error_name);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (error_name));
+ }
+ else
+ {
+ printf ("Method %d requires %d slots for its arguments\n", i,
+ args_size);
+ }
+ }
+
+ return 0;
+}
diff --git a/libjava/testsuite/libjava.jvmti/interp/natgetlocalvartable.cc b/libjava/testsuite/libjava.jvmti/interp/natgetlocalvartable.cc
new file mode 100644
index 000000000..8899bac3b
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/natgetlocalvartable.cc
@@ -0,0 +1,70 @@
+#include <jni.h>
+
+#include <jvmti.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "getlocalvartable.h"
+
+JNIEXPORT jint JNICALL Java_getlocalvartable_do_1getlocalvartable_1tests
+(JNIEnv *env, jclass klass)
+{
+ JavaVM *vm;
+ jint err = env->GetJavaVM (&vm);
+ if (err < 0)
+ {
+ fprintf (stderr, "error getting VM\n");
+ exit (1);
+ }
+
+ jvmtiEnv *jvmti = NULL;
+ vm->GetEnv ((void **) &jvmti, JVMTI_VERSION_1_0);
+
+ if (jvmti == NULL)
+ {
+ fprintf (stderr, "error getting jvmti environment\n");
+ exit (1);
+ }
+
+ jint entrys;
+ jvmtiLocalVariableEntry *var_table;
+
+ jvmtiError jerr;
+
+ jmethodID meth_ids[3];
+
+ meth_ids[0] = env->GetMethodID (klass, "aMethod", "(FF)D");
+ meth_ids[1] = env->GetMethodID (klass, "bMethod", "(II)J");
+ meth_ids[2] = env->GetMethodID (klass, "cMethod",
+ "(Ljava/lang/Object;)Ljava/lang/Object;");
+ for (int i = 0; i < 3; i++)
+ {
+ jerr = jvmti->GetLocalVariableTable (meth_ids[i], &entrys, &var_table);
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ char *error_name;
+ jvmti->GetErrorName (jerr, &error_name);
+ fprintf (stderr, "JVMTI Error: %s\n", error_name);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (error_name));
+ }
+ else
+ {
+ for (int j = 0; j < entrys; j++)
+ {
+ printf ("Slot: %d\n", static_cast<int> (var_table[j].slot));
+ printf (" Name: %s\n", var_table[j].name);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (var_table[j].name));
+ printf (" Sig: %s\n", var_table[j].signature);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (var_table[j].signature));
+ printf (" Gen Sig: %s\n", var_table[j].generic_signature);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (var_table[j].generic_signature));
+ printf (" Start Loc: %ld\n", static_cast<long> (var_table[j].start_location));
+ printf (" Length: %d\n", static_cast<int> (var_table[j].length));
+ }
+
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (var_table));
+ }
+ }
+
+ return 0;
+}
diff --git a/libjava/testsuite/libjava.jvmti/interp/natgetstacktrace.cc b/libjava/testsuite/libjava.jvmti/interp/natgetstacktrace.cc
new file mode 100644
index 000000000..cfd7c48c0
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/interp/natgetstacktrace.cc
@@ -0,0 +1,144 @@
+#include <jni.h>
+
+#include <jvmti.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <unistd.h>
+
+#include "getstacktrace.h"
+
+void
+printStackTrace (jvmtiFrameInfo *frames, jint frame_cnt)
+{
+ printf ("Thread has %d frames\n", static_cast<int> (frame_cnt));
+
+ for (int i = 0; i < frame_cnt; i++)
+ {
+ jmethodID method = frames[i].method;
+ jlocation location = frames[i].location;
+
+ if (location == -1)
+ {
+ printf ("Frame %d is native\n", i);
+ }
+ else
+ {
+ printf ("Frame %d is interpreted\n", i);
+ }
+ }
+}
+
+
+JNIEXPORT void JNICALL Java_getstacktrace_natPlaceholder (JNIEnv *env, jobject obj)
+{
+ jclass klass = env->GetObjectClass (obj);
+ jfieldID done_id = env->GetFieldID (klass, "done", "Z");
+ jfieldID num_frames_id = env->GetFieldID (klass, "num_frames", "I");
+ jfieldID thread_num_id = env->GetFieldID (klass, "thread_num", "I");
+
+ // num_frames--
+ jint n_frames = env->GetIntField (obj, num_frames_id);
+ n_frames--;
+ env->SetIntField (obj, num_frames_id, n_frames);
+
+ jint t_num = env->GetIntField (obj, thread_num_id);
+
+ if (n_frames <= 1)
+ {
+ if (t_num % 2 == 1)
+ {
+ jmethodID natRunner_id = env->GetMethodID (klass, "natRunner", "()V");
+ env->CallVoidMethod (obj, natRunner_id);
+ }
+ else
+ {
+ jmethodID runner_id = env->GetMethodID (klass, "runner", "()V");
+ env->CallVoidMethod (obj, runner_id);
+ }
+ }
+ else
+ {
+ if (t_num % 2 == 0)
+ {
+ jmethodID natPlaceholder_id = env->GetMethodID (klass,
+ "natPlaceholder",
+ "()V");
+ env->CallVoidMethod (obj, natPlaceholder_id);
+ }
+ else
+ {
+ jmethodID placeholder_id = env->GetMethodID (klass, "placeholder",
+ "()V");
+ env->CallVoidMethod (obj, placeholder_id);
+ }
+ }
+}
+
+JNIEXPORT void JNICALL Java_getstacktrace_natRunner (JNIEnv *env, jobject obj)
+{
+ jclass klass = env->GetObjectClass (obj);
+ jfieldID done_id = env->GetFieldID (klass, "done", "Z");
+
+
+ jboolean done;
+ done = true;
+ env->SetBooleanField (obj, done_id, done);
+
+ do
+ {
+ done = env->GetBooleanField (obj, done_id);
+ if (done == false)
+ break;
+ usleep (40);
+ }
+ while (done != false);
+}
+
+JNIEXPORT jint JNICALL Java_getstacktrace_do_1getstacktrace_1tests
+(JNIEnv *env, jclass klass, jobjectArray thr_arr)
+{
+ JavaVM *vm;
+ jint err = env->GetJavaVM (&vm);
+ if (err < 0)
+ {
+ fprintf (stderr, "error getting VM\n");
+ exit (1);
+ }
+
+ jvmtiEnv *jvmti = NULL;
+ vm->GetEnv ((void **) &jvmti, JVMTI_VERSION_1_0);
+
+ if (jvmti == NULL)
+ {
+ fprintf (stderr, "error getting jvmti environment\n");
+ exit (1);
+ }
+
+ jint frame_cnt;
+ jvmtiFrameInfo frames[30];
+
+ jvmtiError jerr;
+ jthread thr;
+
+ jsize num_threads = env->GetArrayLength (thr_arr);
+
+ for (int i = 0; i < num_threads; i++)
+ {
+ thr = reinterpret_cast<jthread>
+ (env->GetObjectArrayElement (thr_arr, static_cast<jsize> (i)));
+ fflush (stdout);
+ jerr = jvmti->GetStackTrace (thr, 0, 30, frames, &frame_cnt);
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ char *error_name;
+ jvmti->GetErrorName (jerr, &error_name);
+ fprintf (stderr, "JVMTI Error: %s\n", error_name);
+ jvmti->Deallocate (reinterpret_cast<unsigned char *> (error_name));
+ }
+ else
+ {
+ printStackTrace (frames, frame_cnt);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/jvmti-interp.exp b/libjava/testsuite/libjava.jvmti/jvmti-interp.exp
new file mode 100644
index 000000000..fd660f351
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/jvmti-interp.exp
@@ -0,0 +1,188 @@
+# Interpreted Tests for JVMTI code.
+# These tests are used to test JVMTI functions in a purley interpreted setting
+# This file compiles the JNI code into a shared object, then invokes gij to run
+# the test.
+
+
+# Compile a single C file and produce a .so file. OPTIONS is a list
+# of options to pass to the compiler. Returns 0 on failure, 1 on
+# success.
+proc gcj_jni_compile_c_to_so {file {options {}}} {
+ global srcdir subdir
+ global host_triplet
+ verbose "options: $options"
+ set options_cxx $options
+ set options ""
+
+# Apple uses a different extension for shared/dynamic libraries
+# so we check against powerpc-apple-darwin and set them to
+# dylib.
+# HP-UX uses sl, so we check this too, otherwise we take so.
+
+ if { [istarget "*-*-darwin*"] } {
+ set so_extension "dylib"
+ set so_flag "-dynamiclib"
+ } elseif { [istarget "hppa*-hp-hpux*"] } {
+ set so_extension "sl"
+ set so_flag "-shared"
+ } elseif { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } {
+ set so_extension "dll"
+ set so_flag "-shared"
+ } else {
+ set so_extension "so"
+ set so_flag "-shared"
+ }
+
+ # ARM C++ emits an ABI warning for varargs.
+ if { [istarget "arm*"] } {
+ lappend options "additional_flags=-Wno-abi"
+ }
+ # Tru64 UNIX requires <pthread.h> to be compiled with -pthread.
+ if { [istarget "alpha*-dec-osf*"] } {
+ lappend options "additional_flags=-pthread"
+ }
+
+ set filename [file tail $file]
+ set name [file rootname $filename]
+ set soname lib${name}.${so_extension}
+
+ lappend options "additional_flags=${so_flag} -fPIC"
+ # Find the generated header.
+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
+
+ # Ensure that the generated header has correct prototypes.
+ set cfile [file rootname $file].c
+ if { [file exists $cfile] } {
+ # This option is only valid for C sources.
+ lappend options "additional_flags=-Wmissing-prototypes"
+ }
+
+ # Find jni.h and jni_md.h.
+ lappend options "additional_flags=-I$srcdir/../include \
+ -I$srcdir/../classpath/include -fdollars-in-identifiers"
+
+ # Append C++ options
+ lappend options "additional_flags=$options_cxx"
+
+ set x [libjava_prune_warnings \
+ [target_compile $file $soname executable $options]]
+ if {$x != ""} {
+ verbose "target_compile failed: $x" 2
+ fail "$filename compilation"
+ return 0
+ }
+
+ pass "$filename compilation"
+ return 1
+}
+
+# Do all the work for a single JVMTI test. Return 0 on failure.
+proc gij_jvmti_test_one {file} {
+ global runtests
+
+ # The base name. We use it for several purposes.
+ set main [file rootname [file tail $file]]
+ if {! [runtest_file_p $runtests $main] } {
+ # Simply skip it.
+ return 1
+ }
+
+# 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"
+
+# if {! [gcj_jvmti_build_headers $file] } {
+# # FIXME
+# return 0
+# }
+
+ set cfile [file join [file dirname $file] nat$main.c]
+ set cxxflags ""
+ set cxxldlibflags {}
+ # If there is no `.c' file, assume there is a `.cc' file.
+ if {! [file exists $cfile] } {
+ set cfile [file join [file dirname $file] nat$main.cc]
+
+ set cxxflaglist {}
+ foreach arg [split [libjava_find_lib libstdc++-v3/src stdc++] " "] {
+ switch -glob -- $arg {
+ "-L*" {
+ set arg [string range $arg 2 end]
+ lappend cxxldlibflags $arg
+ # Strip the `.libs' directory; we link with libtool which
+ # doesn't need it.
+ set arg "-L[file dirname $arg]"
+ }
+ }
+
+ lappend cxxflaglist $arg
+ # In case the libstdc++ is not installed yet, we pass the build
+ # directory of it to the cxxflaglist.
+ lappend cxxflaglist "-L$cxxldlibflags"
+ }
+ # If you're building the compiler with --prefix set to a place
+ # where it's not yet installed, then the linker won't be able to
+ # find the libgcc used by libgcj.dylib/libstdc++.dylib. We could pass
+ # the -dylib_file option, but that's complicated, and it's much easier
+ # to just make the linker find libgcc using -L options.
+ if { [istarget "*-*-darwin*"] } {
+ lappend cxxflaglist "-shared-libgcc -lstdc++"
+ } else {
+ lappend cxxflaglist "-lstdc++"
+ }
+ set cxxflags [join $cxxflaglist]
+ }
+
+ if {! [gcj_jni_compile_c_to_so $cfile $cxxflags] } {
+ # FIXME
+ return 0
+ }
+
+ libjava_arguments
+
+ set jarfile [file join [file dirname $file] $main.jar]
+ set gij_flags {-agentlib:dummyagent}
+ if {! [exec_gij $jarfile [file rootname $file].out $cxxldlibflags $gij_flags] } {
+ return 0
+ }
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] \
+ [list $main.class libnat$main.so]
+
+ return 1
+}
+
+# Run the JVMTI tests.
+proc gij_jvmti_run {} {
+ global srcdir subdir
+ global build_triplet host_triplet
+
+ # For now we only test JVMTI on native builds.
+ if {$build_triplet == $host_triplet} {
+
+ # Build our dummy JVMTI agent library
+ if {![gcj_jni_compile_c_to_so [file join $srcdir $subdir dummyagent.c]]} {
+ fail "compiling dummy JVMTI agent"
+ } else {
+ pass "compiling dummy JVMTI agent"
+
+ catch {lsort [glob -nocomplain ${srcdir}/${subdir}/interp/*.jar]} \
+ srcfiles
+
+ foreach x $srcfiles {
+ gij_jvmti_test_one $x
+ }
+
+ gcj_cleanup libdummyagent.so
+ }
+ } else {
+ verbose "JVMTI tests not run in cross-compilation environment"
+ }
+}
+
+gij_jvmti_run
diff --git a/libjava/testsuite/libjava.jvmti/jvmti.exp b/libjava/testsuite/libjava.jvmti/jvmti.exp
new file mode 100644
index 000000000..2d939852e
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/jvmti.exp
@@ -0,0 +1,126 @@
+# Tests for JVMTI code.
+
+# Compile a single C++ file and produce a .o file. OPTIONS is a list
+# of options to pass to the compiler. Returns 0 on failure, 1 on
+# success.
+proc gcj_jvmti_compile_cxx_to_o {file {options {}}} {
+ global srcdir
+ global objdir
+
+ set name [file rootname [file tail $file]]
+ set oname ${name}.o
+
+ # Find the generated header.
+ lappend options "additional_flags=-g -I. -I.. -fdollars-in-identifiers"
+ # Find libgcj headers.
+ lappend options "additional_flags=-I$srcdir/.."
+ # Find jvmti.h, jvmti_md.h, jvmti-int.h, jvm.h requirements
+ lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -I$objdir/../include -I$objdir/../../boehm-gc/include "
+ # ARM C++ emits an ABI warning for varargs.
+ if { [istarget "arm*"] } {
+ lappend options "additional_flags=-Wno-abi"
+ }
+ # Tru64 UNIX requires <pthread.h> to be compiled with -pthread.
+ if { [istarget "alpha*-dec-osf*"] } {
+ lappend options "additional_flags=-pthread"
+ }
+
+ set x [libjava_prune_warnings \
+ [target_compile $file $oname object $options]]
+ if {$x != ""} {
+ verbose "target_compile failed: $x" 2
+ fail "[file tail $file] compilation"
+ return 0
+ }
+
+ pass "[file tail $file] compilation"
+ return 1
+}
+
+# Build header files given name of .java file. Return 0 on failure.
+proc gcj_jvmti_build_headers {file} {
+ global libgcj_jar
+
+ set gcjh [find_gcjh]
+
+ # Currently we only build a header file for the main class from the
+ # .java file. If we need more than this, we'll have to figure
+ # something out.
+ set file [file rootname [file tail $file]]
+
+ set x [string trim [libjava_prune_warnings \
+ [lindex [local_exec "$gcjh -cni -force -classpath .:$libgcj_jar $file" "" "" 300] 1]]]
+ if {$x != ""} {
+ verbose "local_exec failed: $x" 2
+ fail "$file header generation"
+ return 0
+ }
+
+ pass "$file header generation"
+ return 1
+}
+
+# Do all the work for a single JVMTI test. Return 0 on failure.
+proc gcj_jvmti_test_one {file} {
+ global runtests
+
+ # The base name. We use it for several purposes.
+ set main [file rootname [file tail $file]]
+ if {! [runtest_file_p $runtests $main]} {
+ # Simply skip it.
+ return 1
+ }
+
+# 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"
+
+# if {! [gcj_jvmti_build_headers $file]} {
+# # FIXME
+# return 0
+# }
+
+ set cfile [file join [file dirname $file] nat$main.cc]
+ if {! [gcj_jvmti_compile_cxx_to_o $cfile]} {
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_link $main $main [list $file nat$main.o]]} {
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_invoke $main [file rootname $file].out {}]} {
+ # FIXME
+ return 0
+ }
+
+ # When we succeed we remove all our clutter.
+ eval gcj_cleanup [glob -nocomplain -- ${main}.*] [list $main nat$main.o]
+
+ return 1
+}
+
+# Run the JVMTI tests.
+proc gcj_jvmti_run {} {
+ global srcdir subdir
+ global build_triplet host_triplet
+
+ # For now we only test JVMTI on native builds.
+ if {$build_triplet == $host_triplet} {
+ catch { lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar] } srcfiles
+
+ foreach x $srcfiles {
+ gcj_jvmti_test_one $x
+ }
+ } else {
+ verbose "JVMTI tests not run in cross-compilation environment"
+ }
+}
+
+gcj_jvmti_run
diff --git a/libjava/testsuite/libjava.jvmti/natevents.cc b/libjava/testsuite/libjava.jvmti/natevents.cc
new file mode 100644
index 000000000..71c6489d8
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/natevents.cc
@@ -0,0 +1,578 @@
+#include <gcj/cni.h>
+
+#include <jvm.h>
+#include <jvmti.h>
+#include <stdio.h>
+
+#include "jvmti-int.h"
+#include "events.h"
+
+void
+print_events ()
+{
+#define DO(X) \
+ do \
+ { \
+ if (JVMTI_REQUESTED_EVENT (X)) \
+ printf (#X ","); \
+ } \
+ while (0)
+
+ printf ("RequestedEvents: ");
+ DO (VMInit);
+ DO (VMDeath);
+ DO (ThreadStart);
+ DO (ThreadEnd);
+ DO (ClassFileLoadHook);
+ DO (ClassLoad);
+ DO (ClassPrepare);
+ DO (VMStart);
+ DO (Exception);
+ DO (ExceptionCatch);
+ DO (SingleStep);
+ DO (FramePop);
+ DO (Breakpoint);
+ DO (FieldAccess);
+ DO (FieldModification);
+ DO (MethodEntry);
+ DO (MethodExit);
+ DO (NativeMethodBind);
+ DO (CompiledMethodLoad);
+ DO (CompiledMethodUnload);
+ DO (DynamicCodeGenerated);
+ DO (DataDumpRequest);
+ DO (MonitorWait);
+ DO (MonitorWaited);
+ DO (MonitorContendedEnter);
+ DO (MonitorContendedEntered);
+ DO (GarbageCollectionStart);
+ DO (GarbageCollectionFinish);
+ DO (ObjectFree);
+ DO (VMObjectAlloc);
+ printf ("\n");
+#undef DO
+}
+
+static void
+VMInitCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread)
+{
+ printf ("VMInitCB jni_env=%#llx thread=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread);
+}
+
+static void
+VMDeathCB (jvmtiEnv *env, JNIEnv *jni_env)
+{
+ printf ("VMDeathCB jni_env=%#llx\n", (unsigned long long) jni_env);
+}
+
+static void
+ThreadStartCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread)
+{
+ printf ("ThreadStartCB jni_env=%#llx thread=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread);
+}
+
+static void
+ThreadEndCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread)
+{
+ printf ("ThreadEndCB jni_env=%#llx thread=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread);
+}
+
+static void
+ClassFileLoadHookCB (jvmtiEnv *env, JNIEnv *jni_env,
+ jclass class_being_redefined, jobject loader,
+ const char *name, jobject protection_domain,
+ jint class_data_len, const unsigned char *class_data,
+ jint *new_class_data_len, unsigned char **new_class_data)
+{
+ printf ("ClassFileLoadHookCB jni_env=%#llx class_being_redefined=%#llx"
+ " loader=%#llx", (unsigned long long) jni_env, (unsigned long long)
+ class_being_redefined, (unsigned long long) loader);
+ printf (" name=%s protection_domain=%#llx class_data_len=%d class_data=%#llx",
+ name, (unsigned long long) protection_domain, (int) class_data_len,
+ (unsigned long long) class_data);
+ printf (" new_class_data_len=%#llx new_class_data=%#llx\n",
+ (unsigned long long) new_class_data_len, (unsigned long long)
+ new_class_data);
+}
+
+static void
+ClassLoadCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jclass klass)
+{
+ printf ("ClassLoadCB jni_env=%#llx thread=%#llx klass=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) klass);
+}
+
+static void
+ClassPrepareCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jclass klass)
+{
+ printf ("ClassPrepareCB jni_env=%#llx thread=%#llx klass=%#llx\n",
+ (unsigned long long)jni_env, (unsigned long long) thread,
+ (unsigned long long) klass);
+}
+
+static void
+VMStartCB (jvmtiEnv *env, JNIEnv *jni_env)
+{
+ printf ("VMStartCB jni_env=%#llx\n", (unsigned long long) jni_env);
+}
+
+static void
+ExceptionCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jmethodID method,
+ jlocation location, jobject exception, jmethodID catch_method,
+ jlocation catch_location)
+{
+ printf ("ExceptionCB jni_env=%#llx thread=%#llx method=%#llx location=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method, (unsigned long long) location);
+ printf (" exception=%#llx catch_method=%#llx catch_location=%#llx\n",
+ (unsigned long long) exception, (unsigned long long) catch_method,
+ (unsigned long long) catch_location);
+}
+
+static void
+ExceptionCatchCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method, jlocation location, jobject exception)
+{
+ printf ("ExceptionCatchCB jni_env=%#llx thread=%#llx method=%#llx"
+ " location=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method, (unsigned long long) location);
+ printf (" exception=%#llx\n", (unsigned long long) exception);
+}
+
+static void
+SingleStepCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jmethodID method,
+ jlocation location)
+{
+ printf ("SingleStepCB jni_env=%#llx thread=%#llx method=%#llx"
+ " location=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method, (unsigned long long) location);
+}
+
+static void
+FramePopCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jmethodID method,
+ jboolean was_popped_by_exception)
+{
+ printf ("FramePopCB jni_env=%#llx thread=%#llx method=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method);
+ printf (" was_pooped_by_exception=%d\n", (was_popped_by_exception ?
+ 1 : 0));
+}
+
+static void
+BreakpointCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jmethodID method,
+ jlocation location)
+{
+ printf ("BreakpointCB jni_env=%#llx thread=%#llx method=%#llx"
+ " location=%#llx\n", (unsigned long long) jni_env,
+ (unsigned long long) thread, (unsigned long long) method,
+ (unsigned long long) location);
+}
+
+static void
+FieldAccessCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method, jlocation location, jclass field_klass,
+ jobject object, jfieldID field)
+{
+ printf ("FieldAccessCB jni_env=%#llx thread=%#llx method=%#llx"
+ " location=%#llx", (unsigned long long) jni_env, (unsigned long long)
+ thread, (unsigned long long) method, (unsigned long long) location);
+ printf (" field_klass=%#llx object=%#llx field=%#llx\n", (unsigned long long)
+ field_klass, (unsigned long long) object, (unsigned long long) field);
+}
+
+static void
+FieldModificationCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method, jlocation location, jclass field_klass,
+ jobject object, jfieldID field, char signature_type,
+ jvalue new_value)
+
+{
+ printf ("FieldModificationCB jni_env=%#llx thread=%#llx method=%#llx"
+ " location=%#llx", (unsigned long long) jni_env, (unsigned long long)
+ thread, (unsigned long long) method, (unsigned long long) location);
+ printf (" field_klass=%#llx object=%#llx field=%#llx signature_type=%c",
+ (unsigned long long) field_klass, (unsigned long long) object,
+ (unsigned long long) field, signature_type);
+ printf (" new_value=%#llx\n", (unsigned long long) new_value.l);
+}
+
+static void
+MethodEntryCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method)
+{
+ printf ("MethodEntryCB jni_env=%#llx thread=%#llx method=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method);
+}
+
+static void
+MethodExitCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method, jboolean was_popped_by_exception,
+ jvalue return_value)
+{
+ printf ("MethodExitCB jni_env=%#llx thread=%#llx method=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method);
+ printf (" was_popped_by_exception=%d return_value=%d\n",
+ (was_popped_by_exception) ? 1 : 0, (int) return_value.i);
+}
+
+static void
+NativeMethodBindCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jmethodID method, void *address, void **new_address_ptr)
+{
+ printf ("NativeMethodBindCB jni_env=%#llx thread=%#llx method=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) method);
+ printf (" address=%#llx new_address_ptr=%#llx\n", (unsigned long long)
+ address, (unsigned long long) new_address_ptr);
+}
+
+static void
+CompiledMethodLoadCB (jvmtiEnv *env, jmethodID method, jint code_size,
+ const void *code_addr, jint map_length,
+ const jvmtiAddrLocationMap *map,
+ const void *compile_info)
+{
+ printf ("CompiledMethodLoadCB method=%#llx code_size=%#llx code_addr=%#llx",
+ (unsigned long long) method, (unsigned long long) code_size,
+ (unsigned long long) code_addr);
+ printf (" map_length=%d map=%#llx compile_info=%#llx\n", (int) map_length,
+ (unsigned long long) map, (unsigned long long) compile_info);
+}
+
+static void
+CompiledMethodUnloadCB (jvmtiEnv *env, jmethodID method, const void *code_addr)
+{
+ printf ("CompiledMethodUnloadCB method=%#llx code_addr=%#llx\n",
+ (unsigned long long) method, (unsigned long long) code_addr);
+}
+
+static void
+DynamicCodeGeneratedCB (jvmtiEnv *env, const char *name, const void *address,
+ jint length)
+{
+ printf ("DynamicCodeGeneratedCB name=%s address=%#llx length=%d\n", name,
+ (unsigned long long) address, (int) length);
+}
+
+static void
+DataDumpRequestCB (jvmtiEnv *env)
+{
+ printf ("DataDumpRequestCB\n");
+}
+
+static void
+MonitorWaitCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread, jobject object,
+ jlong timeout)
+{
+ printf ("MonitorWaitCB jni_env=%#llx thread=%#llx object=%#llx timeout=%ld\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) object, (long) timeout);
+}
+
+static void
+MonitorWaitedCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jobject object, jboolean timed_out)
+{
+ printf ("MonitorWaitedCB jni_env=%#llx thread=%#llx object=%#llx"
+ " timed_out=%d\n", (unsigned long long) jni_env, (unsigned long long)
+ thread, (unsigned long long) object, (timed_out) ? 1 : 0);
+}
+
+static void
+MonitorContendedEnterCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jobject object)
+{
+ printf ("MonitorContendedEnterCB jni_env=%#llx thread=%#llx object=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) object);
+}
+
+static void
+MonitorContendedEnteredCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jobject object)
+{
+ printf ("MonitorContendedEnteredCB jni_env=%#llx thread=%#llx object=%#llx\n",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) object);
+}
+
+static void
+GarbageCollectionStartCB (jvmtiEnv *env)
+{
+ printf ("GarbageCollectionStartCB\n");
+}
+
+static void
+GarbageCollectionFinishCB (jvmtiEnv *env)
+{
+ printf ("GarbageCollectionFinishCB\n");
+}
+
+static void
+ObjectFreeCB (jvmtiEnv *env, jlong tag)
+{
+ printf ("ObjectFreeCB tag=%ld\n", (long) tag);
+}
+
+static void
+VMObjectAllocCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread,
+ jobject object, jclass object_klass, jlong size)
+{
+ printf ("VMObjectAllocCB jni_env=%#llx thread=%#llx object=%#llx",
+ (unsigned long long) jni_env, (unsigned long long) thread,
+ (unsigned long long) object);
+ printf (" object_klass=%#llx size=%ld\n", (unsigned long long) object_klass,
+ (long) size);
+}
+
+static void
+do_enable_tests ()
+{
+ printf ("- enable tests -\n");
+ JavaVM *vm = _Jv_GetJavaVM ();
+ jvmtiEnv *env[3];
+ int i;
+ for (i = 0; i < 3; ++i)
+ {
+ vm->GetEnv (reinterpret_cast<void **> (&env[i]), JVMTI_VERSION_1_0);
+ printf ("created JVMTI environment #%d\n", i);
+ }
+
+ jvmtiEventCallbacks callbacks;
+ memset (&callbacks, 0, sizeof (jvmtiEventCallbacks));
+
+ printf ("setting callbacks for envs\n");
+ callbacks.VMInit = VMInitCB;
+ env[0]->SetEventCallbacks (&callbacks, sizeof (callbacks));
+ callbacks.VMDeath = VMDeathCB;
+ env[1]->SetEventCallbacks (&callbacks, sizeof (callbacks));
+ callbacks.ThreadEnd = ThreadEndCB;
+ env[2]->SetEventCallbacks (&callbacks, sizeof (callbacks));
+ print_events ();
+
+ printf ("enable VM_INIT for env0, env1, env2\n");
+ env[0]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_VM_INIT, NULL);
+ env[1]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_VM_INIT, NULL);
+ env[2]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_VM_INIT, NULL);
+ print_events ();
+
+ printf ("enable VM_DEATH for env1,env2\n");
+ env[1]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH, NULL);
+ env[2]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH, NULL);
+ print_events ();
+
+ /* Used to use a non-NULL event thread, but that causes problems
+ when SetEventNotificationMode tries to validate the thread. */
+ printf ("enable THREAD_END for env2\n");
+ env[2]->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_THREAD_END,
+ NULL);
+ print_events ();
+
+ printf ("disposing of env1\n");
+ env[1]->DisposeEnvironment ();
+ print_events ();
+
+ printf ("disposing of env0\n");
+ env[0]->DisposeEnvironment ();
+ print_events ();
+
+ printf ("disable VMInit in env2\n");
+ env[2]->SetEventNotificationMode (JVMTI_DISABLE, JVMTI_EVENT_VM_INIT, NULL);
+ print_events ();
+
+ printf ("clear VMDeath callback in env2\n");
+ callbacks.VMDeath = NULL;
+ env[2]->SetEventCallbacks (&callbacks, sizeof (callbacks));
+ print_events ();
+
+ printf ("sending VMInit\n");
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_INIT, (jthread) 0x1234,
+ (JNIEnv *) 0x5678);
+
+ printf ("sending ThreadEnd\n");
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_THREAD_END, (jthread) 0x1234,
+ (JNIEnv *) 0x5678);
+
+ /* See comment above re: SetEventNotificationMode and validity
+ checking
+ printf ("sending ThreadEnd (no match)\n");
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_THREAD_END, (jthread) 0x4321,
+ (JNIEnv *) 0x5678);
+ */
+
+ printf ("sending VMDeath\n");
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_DEATH, (jthread) NULL,
+ (JNIEnv *) 0x5678);
+
+ printf ("disposing of env2\n");
+ env[2]->DisposeEnvironment ();
+ print_events ();
+}
+
+static void
+do_callback_arg_tests ()
+{
+ printf ("- callback arg tests -\n");
+ JavaVM *vm = _Jv_GetJavaVM ();
+ jvmtiEnv *env;
+ vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
+
+ // Define all the callbacks
+#define DEFINE(Event) callbacks.Event = Event ## CB;
+ jvmtiEventCallbacks callbacks;
+ DEFINE(VMInit);
+ DEFINE(VMDeath);
+ DEFINE(ThreadStart);
+ DEFINE(ThreadEnd);
+ DEFINE(ClassFileLoadHook);
+ DEFINE(ClassLoad);
+ DEFINE(ClassPrepare);
+ DEFINE(VMStart);
+ DEFINE(Exception);
+ DEFINE(ExceptionCatch);
+ DEFINE(SingleStep);
+ DEFINE(FramePop);
+ DEFINE(Breakpoint);
+ DEFINE(FieldAccess);
+ DEFINE(FieldModification);
+ DEFINE(MethodEntry);
+ DEFINE(MethodExit);
+ DEFINE(NativeMethodBind);
+ DEFINE(CompiledMethodLoad);
+ DEFINE(CompiledMethodUnload);
+ DEFINE(DynamicCodeGenerated);
+ DEFINE(DataDumpRequest);
+ DEFINE(MonitorWait);
+ DEFINE(MonitorWaited);
+ DEFINE(MonitorContendedEnter);
+ DEFINE(MonitorContendedEntered);
+ DEFINE(GarbageCollectionStart);
+ DEFINE(GarbageCollectionFinish);
+ DEFINE(ObjectFree);
+ DEFINE(VMObjectAlloc);
+#undef DEFINE
+ env->SetEventCallbacks (&callbacks, sizeof (callbacks));
+
+ // Enable all the callbacks
+#define ENABLE(Event) \
+ env->SetEventNotificationMode (JVMTI_ENABLE, JVMTI_EVENT_ ## Event, NULL)
+ ENABLE (VM_INIT);
+ ENABLE (VM_DEATH);
+ ENABLE (THREAD_START);
+ ENABLE (THREAD_END);
+ ENABLE (CLASS_FILE_LOAD_HOOK);
+ ENABLE (CLASS_LOAD);
+ ENABLE (CLASS_PREPARE);
+ ENABLE (VM_START);
+ ENABLE (EXCEPTION);
+ ENABLE (EXCEPTION_CATCH);
+ ENABLE (SINGLE_STEP);
+ ENABLE (FRAME_POP);
+ ENABLE (BREAKPOINT);
+ ENABLE (FIELD_ACCESS);
+ ENABLE (FIELD_MODIFICATION);
+ ENABLE (METHOD_ENTRY);
+ ENABLE (METHOD_EXIT);
+ ENABLE (NATIVE_METHOD_BIND);
+ ENABLE (COMPILED_METHOD_LOAD);
+ ENABLE (COMPILED_METHOD_UNLOAD);
+ ENABLE (DYNAMIC_CODE_GENERATED);
+ ENABLE (DATA_DUMP_REQUEST);
+ ENABLE (MONITOR_WAIT);
+ ENABLE (MONITOR_WAITED);
+ ENABLE (MONITOR_CONTENDED_ENTER);
+ ENABLE (MONITOR_CONTENDED_ENTERED);
+ ENABLE (GARBAGE_COLLECTION_START);
+ ENABLE (GARBAGE_COLLECTION_FINISH);
+ ENABLE (OBJECT_FREE);
+ ENABLE (VM_OBJECT_ALLOC);
+
+ // All events should now be enabled.
+ print_events ();
+
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_INIT, (jthread) 0x2, (JNIEnv *) 0x1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_DEATH, (jthread) 0x2, (JNIEnv *) 0x1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_THREAD_START, (jthread) 0x2,
+ (JNIEnv *) 0x1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_THREAD_END, (jthread) 0x2,
+ (JNIEnv *) 0x1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, (jthread) 0xb00,
+ (JNIEnv *) 0x1, (jclass) 0x2, (jobject) 0x3,
+ "4", (jobject) 0x5, (jint) 6,
+ (const unsigned char *) 0x7, (jint *) 0x8,
+ (unsigned char **) 0x9);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_CLASS_LOAD, (jthread) 0x2, (JNIEnv *) 0x1,
+ (jclass) 0x3);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_CLASS_PREPARE, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jclass) 0x3);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_START, (jthread) 0xb00, (JNIEnv *) 0x1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_EXCEPTION, (jthread) 0x2, (JNIEnv *) 0x1,
+ (jmethodID) 0x3, (jlocation) 0x4, (jobject) 0x5,
+ (jmethodID) 0x6, (jlocation) 0x7);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_EXCEPTION_CATCH, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3, (jlocation) 0x4,
+ (jobject) 0x5);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_SINGLE_STEP, (jthread) 0x2, (JNIEnv *) 0x1,
+ (jmethodID) 0x3, (jlocation) 0x4);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_FRAME_POP, (jthread) 0x2, (JNIEnv *) 0x1,
+ (jmethodID) 0x3, 4);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_BREAKPOINT, (jthread) 0x2, (JNIEnv *) 0x1,
+ (jmethodID) 0x3, (jlocation) 0x4);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_FIELD_ACCESS, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3, (jlocation) 0x4,
+ (jclass) 0x5, (jobject) 0x6, (jfieldID) 0x7);
+ jvalue value;
+ value.l = (jobject) 0x9;
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_FIELD_MODIFICATION, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3, (jlocation) 0x4,
+ (jclass) 0x5, (jobject) 0x6, (jfieldID) 0x7,
+ (int) '8', value);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_METHOD_ENTRY, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3);
+ jvalue value2;
+ value2.i = 5;
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_METHOD_EXIT, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3, 4, value2);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_NATIVE_METHOD_BIND, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jmethodID) 0x3, (void *) 0x4,
+ (void **) 0x5);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_COMPILED_METHOD_LOAD, (jthread) 0xb00,
+ (jmethodID) 0x1, (jint) 2, (const void *) 0x3,
+ (jint) 4, (const jvmtiAddrLocationMap *) 0x5,
+ (const void *) 0x6);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_COMPILED_METHOD_UNLOAD, (jthread) 0xb00,
+ (jmethodID) 0x1, (const void *) 0x2);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_DYNAMIC_CODE_GENERATED, (jthread) 0xb00,
+ "1", (const void *) 0x2, (jint) 3);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_DATA_DUMP_REQUEST, (jthread) 0xb00);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_MONITOR_WAIT, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jobject) 0x3, (jlong) 4);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_MONITOR_WAITED, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jobject) 0x3, (int) 4);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_MONITOR_CONTENDED_ENTER, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jobject) 0x3);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_MONITOR_CONTENDED_ENTERED, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jobject) 0x3);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_GARBAGE_COLLECTION_START, (jthread) 0xb00);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_GARBAGE_COLLECTION_FINISH, (jthread) 0xb00);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_OBJECT_FREE, (jthread) 0xb00, (jlong) 1);
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_VM_OBJECT_ALLOC, (jthread) 0x2,
+ (JNIEnv *) 0x1, (jobject) 0x3, (jclass) 0x4,
+ (jlong) 5);
+}
+
+void
+events::do_events_tests ()
+{
+ do_enable_tests ();
+ do_callback_arg_tests ();
+}
diff --git a/libjava/testsuite/libjava.jvmti/natgetallthreads.cc b/libjava/testsuite/libjava.jvmti/natgetallthreads.cc
new file mode 100644
index 000000000..9c4d69cde
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/natgetallthreads.cc
@@ -0,0 +1,55 @@
+#include <gcj/cni.h>
+
+#include <jvm.h>
+#include <jvmti.h>
+#include <stdio.h>
+
+#include "jvmti-int.h"
+#include "getallthreads.h"
+
+void
+getallthreads::natPlaceholder ()
+{
+ ex_frames--;
+
+ if (ex_frames > 0)
+ {
+ if ((getallthreads::thread_num % 2) == 0)
+ placeholder ();
+ else
+ natPlaceholder ();
+ }
+ else
+ natRunner ();
+}
+
+void
+getallthreads::natRunner ()
+{
+ done = true;
+ while (done)
+ yield ();
+}
+
+void
+getallthreads::do_getallthreads_tests ()
+{
+ jvmtiEnv *env;
+ JavaVM *vm = _Jv_GetJavaVM ();
+ vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
+
+ jint num_threads;
+ jthread *thread_arr;
+
+ jvmtiError jerr = env->GetAllThreads (&num_threads, &thread_arr);
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ printf ("Test Failed, JVMTI Error!\n");
+ return;
+ }
+ env->Deallocate (reinterpret_cast<unsigned char *> (thread_arr));
+
+ for (int i = 0; i < num_threads; i++)
+ printf ("Found thread %d\n", i+1 );
+}
+
diff --git a/libjava/testsuite/libjava.jvmti/natgeterrorname.cc b/libjava/testsuite/libjava.jvmti/natgeterrorname.cc
new file mode 100644
index 000000000..46e2590ae
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/natgeterrorname.cc
@@ -0,0 +1,76 @@
+#include <gcj/cni.h>
+
+#include <jvm.h>
+#include <jvmti.h>
+#include <stdio.h>
+
+#include "jvmti-int.h"
+#include "geterrorname.h"
+
+static void
+get_error (jvmtiEnv *env, jvmtiError err)
+{
+ char *s;
+ env->GetErrorName (err, &s);
+ printf ("%s\n", s);
+ env->Deallocate (reinterpret_cast<unsigned char *> (s));
+}
+
+void
+geterrorname::do_errorname_tests ()
+{
+ jvmtiEnv *env;
+ JavaVM *vm = _Jv_GetJavaVM ();
+ vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
+
+ get_error (env, JVMTI_ERROR_NONE);
+ get_error (env, JVMTI_ERROR_NULL_POINTER);
+ get_error (env, JVMTI_ERROR_OUT_OF_MEMORY);
+ get_error (env, JVMTI_ERROR_ACCESS_DENIED);
+ get_error (env, JVMTI_ERROR_WRONG_PHASE);
+ get_error (env, JVMTI_ERROR_INTERNAL);
+ get_error (env, JVMTI_ERROR_UNATTACHED_THREAD);
+ get_error (env, JVMTI_ERROR_INVALID_ENVIRONMENT);
+ get_error (env, JVMTI_ERROR_INVALID_PRIORITY);
+ get_error (env, JVMTI_ERROR_THREAD_NOT_SUSPENDED);
+ get_error (env, JVMTI_ERROR_THREAD_SUSPENDED);
+ get_error (env, JVMTI_ERROR_THREAD_NOT_ALIVE);
+ get_error (env, JVMTI_ERROR_CLASS_NOT_PREPARED);
+ get_error (env, JVMTI_ERROR_NO_MORE_FRAMES);
+ get_error (env, JVMTI_ERROR_OPAQUE_FRAME);
+ get_error (env, JVMTI_ERROR_DUPLICATE);
+ get_error (env, JVMTI_ERROR_NOT_FOUND);
+ get_error (env, JVMTI_ERROR_NOT_MONITOR_OWNER);
+ get_error (env, JVMTI_ERROR_INTERRUPT);
+ get_error (env, JVMTI_ERROR_UNMODIFIABLE_CLASS);
+ get_error (env, JVMTI_ERROR_NOT_AVAILABLE);
+ get_error (env, JVMTI_ERROR_ABSENT_INFORMATION);
+ get_error (env, JVMTI_ERROR_INVALID_EVENT_TYPE);
+ get_error (env, JVMTI_ERROR_NATIVE_METHOD);
+ get_error (env, JVMTI_ERROR_INVALID_THREAD);
+ get_error (env, JVMTI_ERROR_INVALID_THREAD_GROUP);
+ get_error (env, JVMTI_ERROR_INVALID_OBJECT);
+ get_error (env, JVMTI_ERROR_INVALID_CLASS);
+ get_error (env, JVMTI_ERROR_INVALID_METHODID);
+ get_error (env, JVMTI_ERROR_INVALID_LOCATION);
+ get_error (env, JVMTI_ERROR_INVALID_FIELDID);
+ get_error (env, JVMTI_ERROR_TYPE_MISMATCH);
+ get_error (env, JVMTI_ERROR_INVALID_SLOT);
+ get_error (env, JVMTI_ERROR_INVALID_MONITOR);
+ get_error (env, JVMTI_ERROR_INVALID_CLASS_FORMAT);
+ get_error (env, JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION);
+ get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED);
+ get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED);
+ get_error (env, JVMTI_ERROR_INVALID_TYPESTATE);
+ get_error (env, JVMTI_ERROR_FAILS_VERIFICATION);
+ get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED);
+ get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED);
+ get_error (env, JVMTI_ERROR_UNSUPPORTED_VERSION);
+ get_error (env, JVMTI_ERROR_NAMES_DONT_MATCH);
+ get_error (env,
+ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED);
+ get_error (env,
+ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED);
+ get_error (env, JVMTI_ERROR_MUST_POSSESS_CAPABILITY);
+ get_error (env, JVMTI_ERROR_ILLEGAL_ARGUMENT);
+}
diff --git a/libjava/testsuite/libjava.jvmti/natgetmethodname.cc b/libjava/testsuite/libjava.jvmti/natgetmethodname.cc
new file mode 100644
index 000000000..3d759d58d
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/natgetmethodname.cc
@@ -0,0 +1,116 @@
+#include <gcj/cni.h>
+
+#include <jvm.h>
+#include <jvmti.h>
+#include <stdio.h>
+
+#include <java/lang/Object.h>
+
+#include "getmethodname.h"
+
+static void
+print_error (jvmtiEnv *env, const char *msg, jvmtiError err)
+{
+ char *error_msg;
+ env->GetErrorName (err, &error_msg);
+ printf ("%s: %s\n", msg, error_msg);
+ env->Deallocate (reinterpret_cast<unsigned char *> (error_msg));
+}
+
+#define NUM_METHODS 8
+static const char *function_names[] = { "clone",
+ "equals",
+ "finalize",
+ "getClass",
+ "hashCode",
+ "notify",
+ "notifyAll",
+ "toString" };
+static int
+function_index (const char *name)
+{
+ for (int i = 0; i < NUM_METHODS; ++i)
+ {
+ if (strcmp (function_names[i], name) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+void
+getmethodname::do_getmethodname_tests ()
+{
+ jvmtiEnv *env;
+ JavaVM *vm = _Jv_GetJavaVM ();
+ vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
+
+ jvmtiError err;
+ err = env->GetMethodName (reinterpret_cast<jmethodID> (NULL),
+ reinterpret_cast<char **> (NULL),
+ reinterpret_cast<char **> (NULL),
+ reinterpret_cast<char **> (NULL));
+ print_error (env, "null jmethodID", err);
+
+ jint count;
+ jmethodID *methods;
+ err = env->GetClassMethods (&java::lang::Object::class$, &count, &methods);
+ print_error (env, "GetClassMethods", err);
+
+ char *names[NUM_METHODS], *solo_names[NUM_METHODS];
+ char *signatures[NUM_METHODS], *solo_signatures[NUM_METHODS];
+ char *generics[NUM_METHODS], *solo_generics[NUM_METHODS];
+
+ for (jint i = 0; i < count; ++i)
+ {
+ char *name, *n;
+ char *signature, *s;
+ char *generic, *g;
+ err = env->GetMethodName (methods[i], &name, &signature, &generic);
+
+ int idx = -1;
+ if (err != JVMTI_ERROR_NONE)
+ {
+ print_error (env, "GetMethodName - all fields", err);
+ continue;
+ }
+
+ idx = function_index (name);
+ if (idx == -1)
+ continue;
+
+ names[idx] = name;
+ signatures[idx] = signature;
+ generics[idx] = generic;
+
+ err = env->GetMethodName (methods[i], &n, NULL, NULL);
+ print_error (env, "GetMethodName - name", err);
+ solo_names[idx] = n;
+
+ err = env->GetMethodName (methods[i], NULL, &s, NULL);
+ print_error (env, "GetMethodName - signature", err);
+ solo_signatures[idx] = s;
+
+ err = env->GetMethodName (methods[i], NULL, NULL, &g);
+ print_error (env, "GetMethodName - generic", err);
+ solo_generics[idx] = g;
+ }
+
+#define WRAP(X) ((X) == NULL ? "null" : (X))
+#define MATCH(X,Y) (strcmp ((X),(Y)) == 0 ? "match" : "do not match")
+ for (int i = 0; i < NUM_METHODS; ++i)
+ {
+ printf ("name=%s, signature=%s, generic=%s\n",
+ WRAP (names[i]), WRAP (signatures[i]), WRAP (generics[i]));
+ printf ("names %s\n", MATCH (solo_names[i], names[i]));
+ printf ("signatures %s\n", MATCH (solo_signatures[i], signatures[i]));
+ printf ("generic %s\n", "not yet");
+
+ env->Deallocate (reinterpret_cast<unsigned char *> (names[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_names[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (signatures[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_signatures[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (generics[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_generics[i]));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/ArrayStore.jar b/libjava/testsuite/libjava.lang/ArrayStore.jar
new file mode 100644
index 000000000..7c10d1212
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/ArrayStore.java b/libjava/testsuite/libjava.lang/ArrayStore.java
new file mode 100644
index 000000000..9afac71c2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore.java
@@ -0,0 +1,52 @@
+public class ArrayStore
+{
+ public static void main(String[] args)
+ {
+ ArrayStore s = new ArrayStore();
+
+ /* Check that bounds check takes precedence over array store check. */
+ try
+ {
+ s.a(new String[1]);
+ }
+ catch (Exception x)
+ {
+ System.out.println (x.getClass().getName());
+ }
+
+ try
+ {
+ s.a(new String[2]);
+ }
+ catch (Exception x)
+ {
+ System.out.println (x.getClass().getName());
+ }
+
+ /* Check that += operator on String[] element works and throws bounds
+ exception. */
+ try
+ {
+ s.b(new String[1]);
+ }
+ catch (Exception x)
+ {
+ System.out.println (x.getClass().getName());
+ }
+
+ String[] sb = new String[2];
+ sb[1] = "foo";
+ s.b(sb);
+ System.out.println (sb[1]);
+ }
+
+ void a(Object[] oa)
+ {
+ oa[1] = new Integer(2);
+ }
+
+ void b(String[] sa)
+ {
+ sa[1] += "bar";
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/ArrayStore.out b/libjava/testsuite/libjava.lang/ArrayStore.out
new file mode 100644
index 000000000..b22379de2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore.out
@@ -0,0 +1,4 @@
+java.lang.ArrayIndexOutOfBoundsException
+java.lang.ArrayStoreException
+java.lang.ArrayIndexOutOfBoundsException
+foobar
diff --git a/libjava/testsuite/libjava.lang/ArrayStore.xfail b/libjava/testsuite/libjava.lang/ArrayStore.xfail
new file mode 100644
index 000000000..7728fd25d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore.xfail
@@ -0,0 +1 @@
+xfail-byte-output
diff --git a/libjava/testsuite/libjava.lang/ArrayStore2.jar b/libjava/testsuite/libjava.lang/ArrayStore2.jar
new file mode 100644
index 000000000..833a23264
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/ArrayStore2.java b/libjava/testsuite/libjava.lang/ArrayStore2.java
new file mode 100644
index 000000000..1364d39b4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore2.java
@@ -0,0 +1,31 @@
+public class ArrayStore2
+{
+ public static void main(String[] args)
+ {
+ new ArrayStore2().a(new Object[2], 3);
+ }
+
+ void a(Object[] oa, int i)
+ {
+ try
+ {
+ oa[index()] = obj();
+ }
+ catch (Exception x)
+ {
+ System.out.println (x.getClass().getName());
+ }
+ }
+
+ int index()
+ {
+ System.out.println ("index");
+ return 3;
+ }
+
+ Object obj()
+ {
+ System.out.println ("rhs");
+ return new Object();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/ArrayStore2.out b/libjava/testsuite/libjava.lang/ArrayStore2.out
new file mode 100644
index 000000000..89dddb244
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ArrayStore2.out
@@ -0,0 +1,3 @@
+index
+rhs
+java.lang.ArrayIndexOutOfBoundsException
diff --git a/libjava/testsuite/libjava.lang/Array_1.jar b/libjava/testsuite/libjava.lang/Array_1.jar
new file mode 100644
index 000000000..c97b13ae0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Array_1.java b/libjava/testsuite/libjava.lang/Array_1.java
new file mode 100644
index 000000000..1fcf04eeb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_1.java
@@ -0,0 +1,18 @@
+// Test of array stuff. Technically this probably isn't in java.lang.
+
+public class Array_1
+{
+ public static void main (String[] args)
+ {
+ int x[][] = { { 1, 2}, null };
+
+ System.out.println(Cloneable.class.isInstance(x));
+
+ // This example is from the Java Spec book.
+ int y[][] = (int[][]) x.clone();
+ System.out.println(x == y);
+ System.out.println(x[0] == y[0] && x[1] == y[1]);
+
+ System.out.println(x.getClass().getSuperclass());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Array_1.out b/libjava/testsuite/libjava.lang/Array_1.out
new file mode 100644
index 000000000..3cc754d2e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_1.out
@@ -0,0 +1,4 @@
+true
+false
+true
+class java.lang.Object
diff --git a/libjava/testsuite/libjava.lang/Array_2.jar b/libjava/testsuite/libjava.lang/Array_2.jar
new file mode 100644
index 000000000..8713ba7fc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Array_2.java b/libjava/testsuite/libjava.lang/Array_2.java
new file mode 100644
index 000000000..b406c47d6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_2.java
@@ -0,0 +1,14 @@
+// Test to make sure multidimensional arrays work.
+// From Bryce McKinlay
+
+public class Array_2
+{
+ static final int a = 10, b = 15;
+
+ public static void main(String args[])
+ {
+ int[][] foo = new int [a][b];
+ System.out.println(foo.length);
+ System.out.println(foo[a-1].length);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Array_2.out b/libjava/testsuite/libjava.lang/Array_2.out
new file mode 100644
index 000000000..349103a87
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_2.out
@@ -0,0 +1,2 @@
+10
+15
diff --git a/libjava/testsuite/libjava.lang/Array_3.jar b/libjava/testsuite/libjava.lang/Array_3.jar
new file mode 100644
index 000000000..c907e6529
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Array_3.java b/libjava/testsuite/libjava.lang/Array_3.java
new file mode 100644
index 000000000..e94549a0f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_3.java
@@ -0,0 +1,91 @@
+// Test to make sure null arrays throw the right execption
+
+public class Array_3
+{
+ static Object foo ()
+ {
+ return null;
+ }
+
+ static int[] bar ()
+ {
+ return null;
+ }
+
+ static int baz ()
+ {
+ int[] x = (int[])null;
+ int nn = x.length;
+ return 5;
+ }
+
+ public static void main(String args[])
+ {
+ boolean ok = false;
+ int nn = 0;
+
+ try
+ {
+ int[] x = (int[])foo();
+ nn = x.length;
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ if (!ok)
+ throw new RuntimeException("test failed:1");
+
+ ok = false;
+ try
+ {
+ int[] x = bar();
+ nn = x.length;
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ if (!ok)
+ throw new RuntimeException("test failed:2");
+
+ ok = false;
+ try
+ {
+ int[] x = bar();
+ nn = x[0];
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+
+ if (!ok || nn != 0)
+ throw new RuntimeException("test failed:3");
+
+ ok = false;
+ try
+ {
+ int[] x = (int[])null;
+ nn = x.length;
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ if (!ok)
+ throw new RuntimeException("test failed:4");
+
+ ok = false;
+ try
+ {
+ nn = baz ();
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ if (!ok)
+ throw new RuntimeException("test failed:5");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Array_3.out b/libjava/testsuite/libjava.lang/Array_3.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Array_3.out
diff --git a/libjava/testsuite/libjava.lang/Class_1.jar b/libjava/testsuite/libjava.lang/Class_1.jar
new file mode 100644
index 000000000..675609425
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Class_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Class_1.java b/libjava/testsuite/libjava.lang/Class_1.java
new file mode 100644
index 000000000..58df6beac
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Class_1.java
@@ -0,0 +1,46 @@
+class C {}
+class D extends C implements I {}
+interface I {}
+interface J extends I {}
+
+public class Class_1
+{
+ static void printIsAssignableFrom(Class a, Class b, boolean c)
+ {
+ // The field 'c' can be viewed to see the expected value.
+ System.out.println(a.isAssignableFrom(b));
+ }
+
+ public static void main (String arg[])
+ {
+ System.out.println("Testing class `Class_1'...");
+ printIsAssignableFrom(C.class, Object.class, false);
+ printIsAssignableFrom(C.class, C.class, true);
+ printIsAssignableFrom(C.class, D.class, true);
+ printIsAssignableFrom(D.class, C.class, false);
+
+ printIsAssignableFrom(Object.class, int[].class, true);
+ printIsAssignableFrom(int[].class, int[].class, true);
+ printIsAssignableFrom(C[].class, D.class, false);
+ printIsAssignableFrom(C[].class, D[].class, true);
+ printIsAssignableFrom(C[].class, C[][].class, false);
+
+ printIsAssignableFrom(Object.class, I.class, true);
+ printIsAssignableFrom(I.class, I.class, true);
+ printIsAssignableFrom(D.class, I.class, false);
+ printIsAssignableFrom(I.class, D.class, true);
+
+ printIsAssignableFrom(D.class, J.class, false);
+ printIsAssignableFrom(J.class, D.class, false);
+
+ printIsAssignableFrom(I.class, J.class, true);
+ printIsAssignableFrom(J.class, J.class, true);
+ printIsAssignableFrom(J.class, I.class, false);
+
+ // Returns true iff both Class objects are equal.
+ printIsAssignableFrom(long.class, long.class, true);
+
+ // Does not work for primitive types in general.
+ printIsAssignableFrom(long.class, int.class, false);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Class_1.out b/libjava/testsuite/libjava.lang/Class_1.out
new file mode 100644
index 000000000..531b94f06
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Class_1.out
@@ -0,0 +1,21 @@
+Testing class `Class_1'...
+false
+true
+true
+false
+true
+true
+false
+true
+false
+true
+true
+false
+true
+false
+false
+true
+true
+false
+true
+false
diff --git a/libjava/testsuite/libjava.lang/CompareNaN.jar b/libjava/testsuite/libjava.lang/CompareNaN.jar
new file mode 100644
index 000000000..c6b8db44d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/CompareNaN.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/CompareNaN.java b/libjava/testsuite/libjava.lang/CompareNaN.java
new file mode 100644
index 000000000..77a6d6aa8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/CompareNaN.java
@@ -0,0 +1,15 @@
+/*
+ * JLS 4.2.3 specifies that (x op y) must be false if either x or y
+ * is NaN and op is one of <, >, <=, >=, or ==.
+ *
+ * Some targets may need specific options wired into libgcj.spec
+ * to pass this test. For example, alpha-linux requires -mieee
+ * to prevent an unrecoverable fp trap.
+ */
+
+public class CompareNaN {
+ public static void main(String[] args) {
+ double x = Double.NaN;
+ System.out.println(x == x);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/CompareNaN.out b/libjava/testsuite/libjava.lang/CompareNaN.out
new file mode 100644
index 000000000..c508d5366
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/CompareNaN.out
@@ -0,0 +1 @@
+false
diff --git a/libjava/testsuite/libjava.lang/Divide_1.jar b/libjava/testsuite/libjava.lang/Divide_1.jar
new file mode 100644
index 000000000..4add13c21
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Divide_1.java b/libjava/testsuite/libjava.lang/Divide_1.java
new file mode 100644
index 000000000..50db00935
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_1.java
@@ -0,0 +1,203 @@
+public class Divide_1
+{
+ static int b = Integer.parseInt ("-1");
+ int b1 = Integer.parseInt ("-1");
+ static int zero = Integer.parseInt ("0");
+
+ void probe_1 ()
+ {
+ try {
+ int a = Integer.parseInt ("-80000000", 16);
+ int c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("-80000000", 16);
+ int c = a/-1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("-80000000", 16);
+ int c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("-80000000", 16);
+ int c = a%b1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("-80000000", 16);
+ int c = a%-1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("8000", 16);
+ int b = Integer.parseInt ("0", 16);
+ int c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = Integer.parseInt ("8000", 16);
+ int b = Integer.parseInt ("0", 16);
+ int c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = Long.parseLong ("-8000000000000000", 16);
+ long c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = Long.parseLong ("-8000000000000000", 16);
+ long c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = Long.parseLong ("8000", 16);
+ long b = Long.parseLong ("0", 16);
+ long c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = Long.parseLong ("8000", 16);
+ long b = Long.parseLong ("0", 16);
+ long c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+ }
+
+ void probe_2 ()
+ {
+ try {
+ int a = -0x80000000;
+ int c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = -0x80000000;
+ int c = a/-1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = -0x80000000;
+ int c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = -0x80000000;
+ int c = a%b1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = -0x80000000;
+ int c = a%-1;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = 0x8000;
+ int b = 0;
+ int c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ int a = 0x8000;
+ int b = 0;
+ int c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = -0x7fffffffffffffffL - 1;
+ long c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = -0x7fffffffffffffffL - 1;
+ long c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = 0x8000;
+ long b = 0;
+ long c = a/b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+
+ try {
+ long a = 0x8000;
+ long b = 0;
+ long c = a%b;
+ System.out.println (c);
+ } catch (Exception _) {
+ System.out.println (_);
+ }
+ }
+
+ public static void main (String[] args)
+ {
+ Divide_1 d = new Divide_1 ();
+ d.probe_1 ();
+ d.probe_2 ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Divide_1.out b/libjava/testsuite/libjava.lang/Divide_1.out
new file mode 100644
index 000000000..be5d07c72
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_1.out
@@ -0,0 +1,22 @@
+-2147483648
+-2147483648
+0
+0
+0
+java.lang.ArithmeticException: / by zero
+java.lang.ArithmeticException: / by zero
+-9223372036854775808
+0
+java.lang.ArithmeticException: / by zero
+java.lang.ArithmeticException: / by zero
+-2147483648
+-2147483648
+0
+0
+0
+java.lang.ArithmeticException: / by zero
+java.lang.ArithmeticException: / by zero
+-9223372036854775808
+0
+java.lang.ArithmeticException: / by zero
+java.lang.ArithmeticException: / by zero
diff --git a/libjava/testsuite/libjava.lang/Divide_2.jar b/libjava/testsuite/libjava.lang/Divide_2.jar
new file mode 100644
index 000000000..f16e8e6fc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Divide_2.java b/libjava/testsuite/libjava.lang/Divide_2.java
new file mode 100644
index 000000000..6f2bac81c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_2.java
@@ -0,0 +1,20 @@
+public class Divide_2
+{
+ static void poo()
+ {
+ int n = 4/0;
+ }
+ public static void main(String[] argv)
+ {
+ try
+ {
+ poo();
+ }
+ catch (ArithmeticException _)
+ {
+ return;
+ }
+
+ throw new RuntimeException();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Divide_2.out b/libjava/testsuite/libjava.lang/Divide_2.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Divide_2.out
diff --git a/libjava/testsuite/libjava.lang/EvaluationOrder.jar b/libjava/testsuite/libjava.lang/EvaluationOrder.jar
new file mode 100644
index 000000000..f122c7223
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/EvaluationOrder.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/EvaluationOrder.java b/libjava/testsuite/libjava.lang/EvaluationOrder.java
new file mode 100644
index 000000000..7c09bbb9c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/EvaluationOrder.java
@@ -0,0 +1,22 @@
+public class EvaluationOrder
+ {
+ private static int first (int x, int y)
+ {
+ return x;
+ }
+
+ public static void main (String[] args)
+ {
+ int l = args.length;
+
+ /* This should print:
+ 0
+ 0
+ 1
+ */
+ System.out.println (l);
+ System.out.println (first (l, ++l));
+ System.out.println (l);
+ }
+ }
+
diff --git a/libjava/testsuite/libjava.lang/EvaluationOrder.out b/libjava/testsuite/libjava.lang/EvaluationOrder.out
new file mode 100644
index 000000000..bb5ee5c21
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/EvaluationOrder.out
@@ -0,0 +1,3 @@
+0
+0
+1
diff --git a/libjava/testsuite/libjava.lang/ExtraClassLoader.jar b/libjava/testsuite/libjava.lang/ExtraClassLoader.jar
new file mode 100644
index 000000000..0230f87ca
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ExtraClassLoader.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/ExtraClassLoader.java b/libjava/testsuite/libjava.lang/ExtraClassLoader.java
new file mode 100644
index 000000000..6b0297cc8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ExtraClassLoader.java
@@ -0,0 +1,36 @@
+// PR java/18036
+
+public class ExtraClassLoader extends ClassLoader
+{
+ public static void main(String args[]) throws Exception
+ {
+ ClassLoader loader = new ExtraClassLoader();
+ Class c = Class.forName("C", false, loader);
+ Object o = c.newInstance();
+ System.out.println(o.getClass() == c);
+ System.out.println(c.getClassLoader() == loader);
+ }
+
+ public Class findClass(String name) throws ClassNotFoundException
+ {
+ return defineClass("C", Cbytes, 0, Cbytes.length);
+ }
+
+ /*
+ * Generated by compiling the following program with gcj -C C.java:
+ *
+ * public class C
+ * {
+ * public C() throws ClassNotFoundException
+ * {
+ * System.out.println(getClass() == Class.forName("C"));
+ * }
+ * }
+ *
+ * And then processing the byte code as follows:
+ * od -w1000 -An -td1 C.class | sed "s/\ \+/,/g"
+ */
+ private static byte[] Cbytes = new byte[] {
+-54,-2,-70,-66,0,3,0,45,0,39,1,0,1,67,7,0,1,1,0,16,106,97,118,97,47,108,97,110,103,47,79,98,106,101,99,116,7,0,3,1,0,6,60,105,110,105,116,62,1,0,3,40,41,86,1,0,4,67,111,100,101,12,0,5,0,6,10,0,4,0,8,1,0,16,106,97,118,97,47,108,97,110,103,47,83,121,115,116,101,109,7,0,10,1,0,3,111,117,116,1,0,21,76,106,97,118,97,47,105,111,47,80,114,105,110,116,83,116,114,101,97,109,59,12,0,12,0,13,9,0,11,0,14,1,0,8,103,101,116,67,108,97,115,115,1,0,19,40,41,76,106,97,118,97,47,108,97,110,103,47,67,108,97,115,115,59,12,0,16,0,17,10,0,4,0,18,8,0,1,1,0,15,106,97,118,97,47,108,97,110,103,47,67,108,97,115,115,7,0,21,1,0,7,102,111,114,78,97,109,101,1,0,37,40,76,106,97,118,97,47,108,97,110,103,47,83,116,114,105,110,103,59,41,76,106,97,118,97,47,108,97,110,103,47,67,108,97,115,115,59,12,0,23,0,24,10,0,22,0,25,1,0,19,106,97,118,97,47,105,111,47,80,114,105,110,116,83,116,114,101,97,109,7,0,27,1,0,7,112,114,105,110,116,108,110,1,0,4,40,90,41,86,12,0,29,0,30,10,0,28,0,31,1,0,15,76,105,110,101,78,117,109,98,101,114,84,97,98,108,101,1,0,10,69,120,99,101,112,116,105,111,110,115,1,0,32,106,97,118,97,47,108,97,110,103,47,67,108,97,115,115,78,111,116,70,111,117,110,100,69,120,99,101,112,116,105,111,110,7,0,35,1,0,10,83,111,117,114,99,101,70,105,108,101,1,0,6,67,46,106,97,118,97,0,33,0,2,0,4,0,0,0,0,0,1,0,1,0,5,0,6,0,2,0,7,0,0,0,52,0,3,0,1,0,0,0,28,42,-73,0,9,-78,0,15,42,-74,0,19,18,20,-72,0,26,-90,0,7,4,-89,0,4,3,-74,0,32,-79,0,0,0,1,0,33,0,0,0,6,0,1,0,4,0,5,0,34,0,0,0,4,0,1,0,36,0,1,0,37,0,0,0,2,0,38
+ };
+}
diff --git a/libjava/testsuite/libjava.lang/ExtraClassLoader.out b/libjava/testsuite/libjava.lang/ExtraClassLoader.out
new file mode 100644
index 000000000..b979d62f4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ExtraClassLoader.out
@@ -0,0 +1,3 @@
+true
+true
+true
diff --git a/libjava/testsuite/libjava.lang/FileHandleGcTest.jar b/libjava/testsuite/libjava.lang/FileHandleGcTest.jar
new file mode 100644
index 000000000..b3fc4bd3c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/FileHandleGcTest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/FileHandleGcTest.java b/libjava/testsuite/libjava.lang/FileHandleGcTest.java
new file mode 100644
index 000000000..8405ead31
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/FileHandleGcTest.java
@@ -0,0 +1,24 @@
+// Make sure that file handles are garbage collected.
+import java.io.*;
+public class FileHandleGcTest
+{
+ static void kill () throws FileNotFoundException
+ {
+ for (int i = 0; i < 65536; i++)
+ {
+ FileInputStream f = new FileInputStream ("/dev/null");
+ }
+ }
+
+ public static void
+ main (String argv [])
+ {
+ try
+ {
+ kill ();
+ }
+ catch (FileNotFoundException _)
+ {
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/FileHandleGcTest.out b/libjava/testsuite/libjava.lang/FileHandleGcTest.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/FileHandleGcTest.out
diff --git a/libjava/testsuite/libjava.lang/Final.jar b/libjava/testsuite/libjava.lang/Final.jar
new file mode 100644
index 000000000..5c64878e3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Final.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Final.java b/libjava/testsuite/libjava.lang/Final.java
new file mode 100644
index 000000000..1b22096c3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Final.java
@@ -0,0 +1,20 @@
+public final class Final
+{
+ public static void main(String args[])
+ {
+ Final f = null;
+ try
+ {
+ f.doSomething();
+ }
+ catch (NullPointerException x)
+ {
+ System.out.println("NullPointerException - ok");
+ }
+ }
+
+ void doSomething()
+ {
+ System.out.println("This should not happen");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Final.out b/libjava/testsuite/libjava.lang/Final.out
new file mode 100644
index 000000000..2e513123d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Final.out
@@ -0,0 +1 @@
+NullPointerException - ok
diff --git a/libjava/testsuite/libjava.lang/Float_1.jar b/libjava/testsuite/libjava.lang/Float_1.jar
new file mode 100644
index 000000000..20a6ff00d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Float_1.java b/libjava/testsuite/libjava.lang/Float_1.java
new file mode 100644
index 000000000..cb147ee8a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_1.java
@@ -0,0 +1,52 @@
+/*
+
+Date: 25 Aug 1998 16:04:00 -0000
+From: Andrew Haley <aph@pasanda.cygnus.co.uk>
+To: java-project@cygnus.com
+Subject: Help: vtable problem?
+
+My little program:
+
+-----------------------------------------------------------------------
+import java.lang.*;
+
+ public class widget
+ {
+ public static void main (String argv[])
+ {
+ int test = Float.floatToIntBits((float)2.0);
+ String s = Integer.toHexString(test);
+
+ System.out.print (s+"\n");
+ }
+
+ }
+-----------------------------------------------------------------------
+prints out
+
+40000000
+
+with Sun's interpreter, but prints out
+
+true
+
+when compiled with gcj; PrintStream dispatches a string arg as a
+boolean rather than as a String. I've tried to rebuild everything.
+
+?
+
+Thanks,
+Andrew.
+
+*/
+
+public class Float_1
+{
+ public static void main (String argv[])
+ {
+ int test = Float.floatToIntBits((float)2.0);
+ String s = Integer.toHexString(test);
+
+ System.out.print (s+"\n");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Float_1.out b/libjava/testsuite/libjava.lang/Float_1.out
new file mode 100644
index 000000000..52f3f6a74
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_1.out
@@ -0,0 +1 @@
+40000000
diff --git a/libjava/testsuite/libjava.lang/Float_2.jar b/libjava/testsuite/libjava.lang/Float_2.jar
new file mode 100644
index 000000000..e3ee41335
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Float_2.java b/libjava/testsuite/libjava.lang/Float_2.java
new file mode 100644
index 000000000..5d019533d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_2.java
@@ -0,0 +1,138 @@
+// Test floating-point to integer conversion. We do this twice, once
+// with literal conversions that can be optimized away and once using
+// a static field that can't.
+
+public class Float_2
+{
+ public static double zero = 0.0;
+
+ public static void main (String argv[])
+ {
+ {
+ int itest = (int)(float)(0.0/0.0);
+ if (itest != 0)
+ System.err.println ("literal inf error 1: " + itest);
+ }
+ {
+ int itest = (int)(0.0/0.0);
+ if (itest != 0)
+ System.err.println ("literal inf error 2" + itest);
+ }
+ {
+ long ltest = (long)(0.0/0.0);
+ if (ltest != 0)
+ System.err.println ("literal inf error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(0.0/0.0);
+ if (ltest != 0)
+ System.err.println ("literal inf error 4" + ltest);
+ }
+
+ {
+ int itest = (int)(float)(1.0/0.0);
+ if (itest != Integer.MAX_VALUE)
+ System.err.println ("literal max error 1: " + itest);
+ }
+ {
+ int itest = (int)(1.0/0.0);
+ if (itest != Integer.MAX_VALUE)
+ System.err.println ("literal max error 2" + itest);
+ }
+ {
+ long ltest = (long)(1.0/0.0);
+ if (ltest != Long.MAX_VALUE)
+ System.err.println ("literal max error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(1.0/0.0);
+ if (ltest != Long.MAX_VALUE)
+ System.err.println ("literal max error 4" + ltest);
+ }
+
+ {
+ int itest = (int)(float)(-1.0/0.0);
+ if (itest != Integer.MIN_VALUE)
+ System.err.println ("literal min error 1: " + itest);
+ }
+ {
+ int itest = (int)(-1.0/0.0);
+ if (itest != Integer.MIN_VALUE)
+ System.err.println ("literal min error 2" + itest);
+ }
+ {
+ long ltest = (long)(-1.0/0.0);
+ if (ltest != Long.MIN_VALUE)
+ System.err.println ("literal min error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(-1.0/0.0);
+ if (ltest != Long.MIN_VALUE)
+ System.err.println ("literal min error 4" + ltest);
+ }
+
+ {
+ int itest = (int)(float)(zero/zero);
+ if (itest != 0)
+ System.err.println ("calc inf error 1: " + itest);
+ }
+ {
+ int itest = (int)(zero/zero);
+ if (itest != 0)
+ System.err.println ("calc inf error 2" + itest);
+ }
+ {
+ long ltest = (long)(zero/zero);
+ if (ltest != 0)
+ System.err.println ("calc inf error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(zero/zero);
+ if (ltest != 0)
+ System.err.println ("calc inf error 4" + ltest);
+ }
+
+ {
+ int itest = (int)(float)(1.0/zero);
+ if (itest != Integer.MAX_VALUE)
+ System.err.println ("calc max error 1: " + itest);
+ }
+ {
+ int itest = (int)(1.0/zero);
+ if (itest != Integer.MAX_VALUE)
+ System.err.println ("calc max error 2" + itest);
+ }
+ {
+ long ltest = (long)(1.0/zero);
+ if (ltest != Long.MAX_VALUE)
+ System.err.println ("calc max error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(1.0/zero);
+ if (ltest != Long.MAX_VALUE)
+ System.err.println ("calc max error 4" + ltest);
+ }
+
+ {
+ int itest = (int)(float)(-1.0/zero);
+ if (itest != Integer.MIN_VALUE)
+ System.err.println ("calc min error 1: " + itest);
+ }
+ {
+ int itest = (int)(-1.0/zero);
+ if (itest != Integer.MIN_VALUE)
+ System.err.println ("calc min error 2" + itest);
+ }
+ {
+ long ltest = (long)(-1.0/zero);
+ if (ltest != Long.MIN_VALUE)
+ System.err.println ("calc min error 3" + ltest);
+ }
+ {
+ long ltest = (long)(float)(-1.0/zero);
+ if (ltest != Long.MIN_VALUE)
+ System.err.println ("calc min error 4" + ltest);
+ }
+
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Float_2.out b/libjava/testsuite/libjava.lang/Float_2.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Float_2.out
diff --git a/libjava/testsuite/libjava.lang/G19990301_01.jar b/libjava/testsuite/libjava.lang/G19990301_01.jar
new file mode 100644
index 000000000..fd33638c1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990301_01.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990301_01.java b/libjava/testsuite/libjava.lang/G19990301_01.java
new file mode 100644
index 000000000..abd38cef4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990301_01.java
@@ -0,0 +1,12 @@
+public class G19990301_01 {
+ public static void main(String args[]) {
+ foo pd = new foo();
+ System.out.println ("Pass 1");
+ pd.s = "test";
+ System.out.println ("Pass 2");
+ }
+}
+class foo {
+ static String s = "test";
+}
+
diff --git a/libjava/testsuite/libjava.lang/G19990301_01.out b/libjava/testsuite/libjava.lang/G19990301_01.out
new file mode 100644
index 000000000..337175ef7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990301_01.out
@@ -0,0 +1,2 @@
+Pass 1
+Pass 2
diff --git a/libjava/testsuite/libjava.lang/G19990302_02.jar b/libjava/testsuite/libjava.lang/G19990302_02.jar
new file mode 100644
index 000000000..bc4f2692a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990302_02.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990302_02.java b/libjava/testsuite/libjava.lang/G19990302_02.java
new file mode 100644
index 000000000..ecf6f295e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990302_02.java
@@ -0,0 +1,15 @@
+public class G19990302_02 {
+ public static void main(String args[]) {
+ try {
+ Object[] arrayObj = new String[3];
+ String[] arrayStr = new String[3];
+ System.out.println ("Pass 1");
+ arrayObj[0] = arrayStr; // String object <-- String array object
+ System.out.println ("Pass 2");
+ } catch (ArrayStoreException e) {
+ System.out.println ("ArrayStoreException");
+ }
+ System.out.println ("Pass 3");
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/G19990302_02.out b/libjava/testsuite/libjava.lang/G19990302_02.out
new file mode 100644
index 000000000..c254b310e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990302_02.out
@@ -0,0 +1,3 @@
+Pass 1
+ArrayStoreException
+Pass 3
diff --git a/libjava/testsuite/libjava.lang/G19990303_01.jar b/libjava/testsuite/libjava.lang/G19990303_01.jar
new file mode 100644
index 000000000..b3e194103
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_01.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990303_01.java b/libjava/testsuite/libjava.lang/G19990303_01.java
new file mode 100644
index 000000000..fc3ca5528
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_01.java
@@ -0,0 +1,19 @@
+public class G19990303_01
+{
+ public static void main (String[] args)
+ {
+ try
+ {
+ Object[] ar = new String[3];
+ String[] as = new String[3];
+ System.out.println("1");
+ ar[0] = as;
+ System.out.println("2");
+ }
+ catch (Exception _)
+ {
+ System.out.println("X");
+ }
+ System.out.println("3");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/G19990303_01.out b/libjava/testsuite/libjava.lang/G19990303_01.out
new file mode 100644
index 000000000..f081db642
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_01.out
@@ -0,0 +1,3 @@
+1
+X
+3
diff --git a/libjava/testsuite/libjava.lang/G19990303_02.jar b/libjava/testsuite/libjava.lang/G19990303_02.jar
new file mode 100644
index 000000000..e5ef15c3c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_02.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990303_02.java b/libjava/testsuite/libjava.lang/G19990303_02.java
new file mode 100644
index 000000000..19c8e305e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_02.java
@@ -0,0 +1,19 @@
+public class G19990303_02
+{
+ public static void main (String[] args)
+ {
+ int i = -1;
+ try
+ {
+ System.out.println ("Pass 1");
+ int[][][] arrayInt = new int[i][1][1];
+ int ii = arrayInt[i - 1][0][0];
+ System.out.println ("Pass 2");
+ }
+ catch (NegativeArraySizeException e)
+ {
+ System.out.println ("Pass NegativeArraySizeException");
+ }
+ System.out.println ("Pass 3");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/G19990303_02.out b/libjava/testsuite/libjava.lang/G19990303_02.out
new file mode 100644
index 000000000..940225527
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990303_02.out
@@ -0,0 +1,3 @@
+Pass 1
+Pass NegativeArraySizeException
+Pass 3
diff --git a/libjava/testsuite/libjava.lang/G19990304_01.jar b/libjava/testsuite/libjava.lang/G19990304_01.jar
new file mode 100644
index 000000000..1cf234a85
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990304_01.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990304_01.java b/libjava/testsuite/libjava.lang/G19990304_01.java
new file mode 100644
index 000000000..f937089e1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990304_01.java
@@ -0,0 +1,18 @@
+public class G19990304_01
+{
+ public static void main (String[] args)
+ {
+ Object[] arrayObj = new String[3];
+ String[] arrayStr = new String[3];
+ try
+ {
+ System.out.println ("pass 1");
+ arrayObj[0] = arrayStr;
+ }
+ catch (RuntimeException e)
+ {
+ System.out.println ("RuntimeException");
+ }
+ System.out.println ("pass 2");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/G19990304_01.out b/libjava/testsuite/libjava.lang/G19990304_01.out
new file mode 100644
index 000000000..6fe123eea
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990304_01.out
@@ -0,0 +1,3 @@
+pass 1
+RuntimeException
+pass 2
diff --git a/libjava/testsuite/libjava.lang/G19990310_01.jar b/libjava/testsuite/libjava.lang/G19990310_01.jar
new file mode 100644
index 000000000..e689e43b1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990310_01.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/G19990310_01.java b/libjava/testsuite/libjava.lang/G19990310_01.java
new file mode 100644
index 000000000..72caece57
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990310_01.java
@@ -0,0 +1,21 @@
+public class G19990310_01
+{
+ public static void main (String[] args)
+ {
+ int i = 0;
+ try
+ {
+ System.out.println ("pass 1");
+ i++;
+ }
+ finally
+ {
+ System.out.println ("pass 2");
+ i++;
+ }
+ if (i == 2)
+ System.out.println ("OK");
+ else
+ System.out.println ("NG i = " + i);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/G19990310_01.out b/libjava/testsuite/libjava.lang/G19990310_01.out
new file mode 100644
index 000000000..36a538b4a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/G19990310_01.out
@@ -0,0 +1,3 @@
+pass 1
+pass 2
+OK
diff --git a/libjava/testsuite/libjava.lang/II.jar b/libjava/testsuite/libjava.lang/II.jar
new file mode 100644
index 000000000..22d15cd4e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/II.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/II.java b/libjava/testsuite/libjava.lang/II.java
new file mode 100644
index 000000000..2791366ee
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/II.java
@@ -0,0 +1,16 @@
+public class II {
+ {
+ System.out.println("ii");
+ }
+ public II()
+ {
+ }
+ public II(int x)
+ {
+ this();
+ }
+ public static void main(String[] args)
+ {
+ new II(0);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/II.out b/libjava/testsuite/libjava.lang/II.out
new file mode 100644
index 000000000..9352d8c22
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/II.out
@@ -0,0 +1 @@
+ii
diff --git a/libjava/testsuite/libjava.lang/InterfaceDispatch.jar b/libjava/testsuite/libjava.lang/InterfaceDispatch.jar
new file mode 100644
index 000000000..1f87ec30c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InterfaceDispatch.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/InterfaceDispatch.java b/libjava/testsuite/libjava.lang/InterfaceDispatch.java
new file mode 100644
index 000000000..17f5c4694
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InterfaceDispatch.java
@@ -0,0 +1,403 @@
+/* Test interface dispatch, type checking (instanceof), and casting. */
+
+interface IA
+{
+ String a();
+}
+
+interface IB extends IA
+{
+ String b();
+}
+
+interface IC extends IB
+{
+ void c();
+ int d();
+ IB e(int i);
+}
+
+interface ID
+{
+ String z();
+ String a();
+}
+
+class CA
+{
+ String a()
+ {
+ return "CA a()";
+ }
+}
+
+class CB implements IB
+{
+ public String a()
+ {
+ return "CB a()";
+ }
+
+ public String b()
+ {
+ return "CB b()";
+ }
+}
+
+class CC extends CB
+{
+ public int d()
+ {
+ return 99;
+ }
+}
+
+class CD extends CC implements IC
+{
+ public String a()
+ {
+ return "CD a()";
+ }
+
+ public void c()
+ {
+ System.out.println("CD c()");
+ }
+
+ public int d()
+ {
+ return 6;
+ }
+
+ public IB e(int i)
+ {
+ if (i == 1)
+ return new CB();
+ else
+ return new CD();
+ }
+}
+
+class CE extends CB implements IB, ID
+{
+ public String a()
+ {
+ return ("CE a()");
+ }
+
+ public String b()
+ {
+ return ("CE b()");
+ }
+
+ public String z()
+ {
+ return("CE z()");
+ }
+}
+
+
+public class InterfaceDispatch
+{
+ public static void main(String args[])
+ {
+ new InterfaceDispatch();
+ }
+
+ public InterfaceDispatch()
+ {
+ /* _Jv_InstanceOf */
+
+ /* Object instanceof CLASS */
+ Object obj = new CA();
+
+ if (obj instanceof CA)
+ {
+ System.out.println ("ok 1");
+ }
+ else
+ {
+ System.out.println ("FAIL 1");
+ }
+
+ obj = new CD();
+
+ if (!(obj instanceof CA))
+ {
+ System.out.println ("ok 2a");
+ }
+ else
+ {
+ System.out.println ("FAIL 2a");
+ }
+
+ if (obj instanceof CB)
+ {
+ System.out.println ("ok 2b");
+ }
+ else
+ {
+ System.out.println ("FAIL 2b");
+ }
+
+
+ /* Object instanceof INTERFACE */
+ obj = new CB();
+
+ if (!(obj instanceof IC))
+ {
+ System.out.println("ok 3");
+ }
+ else
+ {
+ System.out.println ("FAIL 3");
+ }
+
+ if (obj instanceof IB)
+ {
+ System.out.println("ok 4");
+ }
+ else
+ {
+ System.out.println ("FAIL 4");
+ }
+
+ /* InterfaceRef instanceof INTERFACE */
+
+ IA ia = new CB();
+
+ if (ia instanceof IB)
+ {
+ System.out.println("ok 5");
+ }
+ else
+ {
+ System.out.println ("FAIL 5");
+ }
+
+
+ if (!(ia instanceof IC))
+ {
+ System.out.println("ok 6");
+ }
+ else
+ {
+ System.out.println ("FAIL 6");
+ }
+
+ /* InterfaceRef instanceof CLASS */
+
+ if (ia instanceof CB)
+ {
+ System.out.println("ok 7");
+ }
+ else
+ {
+ System.out.println ("FAIL 7");
+ }
+
+
+ if (!(ia instanceof CD))
+ {
+ System.out.println("ok 8");
+ }
+ else
+ {
+ System.out.println ("FAIL 8");
+ }
+
+
+ /* _Jv_CheckCast */
+ Object obj_ca = new CA();
+ Object obj_cc = new CC();
+
+ IA ia2;
+
+ try
+ {
+ ia2 = (IA) obj_cc;
+ System.out.println("ok 9");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("FAIL 9");
+ }
+
+ CD cd;
+
+ try
+ {
+ cd = (CD) obj_ca;
+ System.out.println("FAIL 10");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("ok 10");
+ }
+
+ IA ia3;
+
+ try
+ {
+ ia3 = (IB) obj_ca;
+ System.out.println("FAIL 11");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("ok 11");
+ }
+
+ /* _Jv_LookupInterfaceMethod */
+ Object obj_cb = new CB();
+
+ IB ib = (IB) obj_cb;
+ ib.b();
+ if (ib.a().equalsIgnoreCase("CB a()"))
+ System.out.println("ok 12");
+ else
+ System.out.println("FAIL 12");
+
+ IC ic = new CD();
+ if (ic.a().equalsIgnoreCase("CD a()"))
+ System.out.println("ok 13");
+ else
+ System.out.println("FAIL 13");
+
+ if (ic.d() == 6)
+ System.out.println("ok 14");
+ else
+ System.out.println("FAIL 14");
+
+ Object ce = new CE();
+
+ ib = (IB) ce;
+ ID id = (ID) ce;
+
+ if (ib.b().equals("CE b()") && id.a().equals("CE a()"))
+ System.out.println("ok 15");
+ else
+ System.out.println("FAIL 15");
+
+ String t = ((ID)ce).z();
+
+ if (t.equalsIgnoreCase("CE z()"))
+ System.out.println("ok 16");
+ else
+ System.out.println("FAIL 16");
+
+ /* Array types */
+
+ Object[] obj_a = new CC[10];
+ try
+ {
+ CB[] ca_a = (CB[]) obj_a;
+ System.out.println("ok 17");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("FAIL 17");
+ }
+
+ if (obj_a instanceof IB[])
+ {
+ System.out.println("ok 18");
+ }
+ else
+ {
+ System.out.println("FAIL 18");
+ }
+
+ IB[] ib_a = new CD[5];
+ try
+ {
+ CD[] cd_a = (CD[]) ib_a;
+ System.out.println("ok 19");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("FAIL 19");
+ }
+
+ CA[] ca_a;
+
+ try
+ {
+ ca_a = (CA[]) ib_a;
+ System.out.println("FAIL 20");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("ok 20");
+ }
+
+
+ /* Primitive types */
+
+ short[] short_a = new short[100];
+
+ try
+ {
+ obj = short_a;
+ System.out.println("ok 21");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("FAIL 21");
+ }
+
+ try
+ {
+ short[] short_b = (short[]) obj;
+ System.out.println("ok 22");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("FAIL 22");
+ }
+
+ int[] short_b;
+
+ try
+ {
+ short_b = (int[]) obj;
+ System.out.println("FAIL 23");
+ }
+ catch (ClassCastException x)
+ {
+ System.out.println("ok 23");
+ }
+
+ Object obj1 = new int[25];
+
+ if (obj1 instanceof short[])
+ {
+ System.out.println("FAIL 24");
+ }
+ else
+ {
+ System.out.println("ok 24");
+ }
+
+ if (obj1 instanceof int[])
+ {
+ System.out.println("ok 25");
+ }
+ else
+ {
+ System.out.println("FAIL 25");
+ }
+
+ /* null assignment */
+
+ CA obj_ca2 = null;
+
+ if (obj_ca2 instanceof CA)
+ {
+ System.out.println("FAIL 26");
+ }
+ else
+ {
+ System.out.println("ok 26");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/InterfaceDispatch.out b/libjava/testsuite/libjava.lang/InterfaceDispatch.out
new file mode 100644
index 000000000..1582e3afa
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InterfaceDispatch.out
@@ -0,0 +1,27 @@
+ok 1
+ok 2a
+ok 2b
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+ok 13
+ok 14
+ok 15
+ok 16
+ok 17
+ok 18
+ok 19
+ok 20
+ok 21
+ok 22
+ok 23
+ok 24
+ok 25
+ok 26
diff --git a/libjava/testsuite/libjava.lang/InvokeInterface.jar b/libjava/testsuite/libjava.lang/InvokeInterface.jar
new file mode 100644
index 000000000..55a923a68
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeInterface.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/InvokeInterface.java b/libjava/testsuite/libjava.lang/InvokeInterface.java
new file mode 100644
index 000000000..6f4dc617d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeInterface.java
@@ -0,0 +1,55 @@
+import java.lang.reflect.*;
+
+interface one
+{
+ int n(int N);
+}
+
+interface two
+{
+ int nn(int N);
+}
+
+interface three
+{
+ int nnn(int N);
+}
+
+class arse implements one, two
+{
+ public int n(int N) { return N; }
+ public int nn(int N) { return N*2; }
+}
+
+class arsey implements two, one, three
+{
+ public int n(int N) { return N*4; }
+ public int nn(int N) { return N*8; }
+ public int nnn(int N) { return N*16; }
+}
+
+public class InvokeInterface extends arse
+{
+ int f ()
+ {
+ return flunk.nn(1);
+ }
+ static two flunk = new arse();
+ static three flunkey = new arsey();
+ public static void main(String[] s) throws Throwable
+ {
+ Class[] argtypes = {Integer.TYPE};
+ Method m = two.class.getMethod("nn", argtypes);
+ Object[] args = {new Integer(1)};
+ System.out.println(flunk.nn(1));
+ System.out.println(m.invoke(new arse(), args));
+ m = arse.class.getMethod("nn", argtypes);
+ System.out.println(m.invoke(new arse(), args));
+ m = two.class.getMethod("nn", argtypes);
+ System.out.println(m.invoke(new arsey(), args));
+ m = three.class.getMethod("nnn", argtypes);
+ System.out.println(m.invoke(new arsey(), args));
+ m = arsey.class.getMethod("nnn", argtypes);
+ System.out.println(m.invoke(new arsey(), args));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/InvokeInterface.out b/libjava/testsuite/libjava.lang/InvokeInterface.out
new file mode 100644
index 000000000..803d02666
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeInterface.out
@@ -0,0 +1,6 @@
+2
+2
+2
+8
+16
+16
diff --git a/libjava/testsuite/libjava.lang/InvokeReturn.jar b/libjava/testsuite/libjava.lang/InvokeReturn.jar
new file mode 100644
index 000000000..a64e0d587
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeReturn.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/InvokeReturn.java b/libjava/testsuite/libjava.lang/InvokeReturn.java
new file mode 100644
index 000000000..9263dbe40
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeReturn.java
@@ -0,0 +1,80 @@
+import java.lang.reflect.Method;
+
+// Test return values of Method.invoke.
+public class InvokeReturn {
+ public boolean bTrue() {
+ return true;
+ }
+
+ public boolean bFalse() {
+ return false;
+ }
+
+ public char cc() {
+ return 'c';
+ }
+
+ public short s5() {
+ return (short)5;
+ }
+
+ public int i6() {
+ return 6;
+ }
+
+ public long l7() {
+ return (long)7;
+ }
+
+ public float f8() {
+ return (float)8.0;
+ }
+
+ public double d9() {
+ return 9.0;
+ }
+
+ public static void main(String[] args) {
+ try {
+ Object o = new InvokeReturn();
+ Method m;
+
+ // test boolean result
+ m = o.getClass().getDeclaredMethod("bTrue", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ m = o.getClass().getDeclaredMethod("bFalse", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test char result
+ m = o.getClass().getDeclaredMethod("cc", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test short result
+ m = o.getClass().getDeclaredMethod("s5", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test int result
+ m = o.getClass().getDeclaredMethod("i6", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test long result
+ m = o.getClass().getDeclaredMethod("l7", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test float result
+ m = o.getClass().getDeclaredMethod("f8", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+
+ // test double result
+ m = o.getClass().getDeclaredMethod("d9", new Class[0]);
+ System.out.println(m.invoke(o, new Object[0]));
+ } catch (UnsupportedOperationException e) {
+ // We get this on targets which don't support reflection (no
+ // libffi port yet). We might as well fake PASSes.
+ System.out.println("true\nfalse\nc\n5\n6\n7\n8.0\n9.0");
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/InvokeReturn.out b/libjava/testsuite/libjava.lang/InvokeReturn.out
new file mode 100644
index 000000000..01f864364
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/InvokeReturn.out
@@ -0,0 +1,8 @@
+true
+false
+c
+5
+6
+7
+8.0
+9.0
diff --git a/libjava/testsuite/libjava.lang/Invoke_1.jar b/libjava/testsuite/libjava.lang/Invoke_1.jar
new file mode 100644
index 000000000..6d43ecbba
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Invoke_1.java b/libjava/testsuite/libjava.lang/Invoke_1.java
new file mode 100644
index 000000000..bc4678301
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_1.java
@@ -0,0 +1,27 @@
+// Test of failing method invocation.
+
+public class Invoke_1
+{
+ public void call_me ()
+ {
+ System.out.println ("no");
+ }
+
+ public static Invoke_1 get_i ()
+ {
+ return null;
+ }
+
+ public static void main (String[] args)
+ {
+ Invoke_1 i = get_i ();
+ try
+ {
+ i.call_me ();
+ }
+ catch (NullPointerException ok)
+ {
+ System.out.println ("ok");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Invoke_1.out b/libjava/testsuite/libjava.lang/Invoke_1.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_1.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Invoke_2.jar b/libjava/testsuite/libjava.lang/Invoke_2.jar
new file mode 100644
index 000000000..ac8882cab
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Invoke_2.java b/libjava/testsuite/libjava.lang/Invoke_2.java
new file mode 100644
index 000000000..a2d1407b3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_2.java
@@ -0,0 +1,20 @@
+public class Invoke_2
+{
+ static int s;
+
+ public static void foo (int a, int b)
+ {
+ System.out.println(a + " " + b);
+ }
+
+ public static void main(String[] args) {
+ foo (bar(), s);
+ }
+
+ public static int bar()
+ {
+ s = 33;
+ return 99;
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/Invoke_2.out b/libjava/testsuite/libjava.lang/Invoke_2.out
new file mode 100644
index 000000000..39501553b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Invoke_2.out
@@ -0,0 +1 @@
+99 33
diff --git a/libjava/testsuite/libjava.lang/KeepInline.jar b/libjava/testsuite/libjava.lang/KeepInline.jar
new file mode 100644
index 000000000..754becf5f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/KeepInline.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/KeepInline.java b/libjava/testsuite/libjava.lang/KeepInline.java
new file mode 100644
index 000000000..8c2672dd0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/KeepInline.java
@@ -0,0 +1,18 @@
+// Demonstrate that private methods can be reflected even if they are
+// not referenced at compile-time (i.e. -fkeep-inline-functions works).
+import java.lang.reflect.Method;
+public class KeepInline {
+ private void example() {
+ System.out.println("example");
+ }
+ public static void main(String[] args) {
+ try {
+ KeepInline pr = new KeepInline();
+ Method[] meths = pr.getClass().getDeclaredMethods();
+ for (int n = 0; n < meths.length; n++)
+ System.out.println(meths[n]);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/KeepInline.out b/libjava/testsuite/libjava.lang/KeepInline.out
new file mode 100644
index 000000000..fb96ce4db
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/KeepInline.out
@@ -0,0 +1,2 @@
+private void KeepInline.example()
+public static void KeepInline.main(java.lang.String[])
diff --git a/libjava/testsuite/libjava.lang/LargeFile.jar b/libjava/testsuite/libjava.lang/LargeFile.jar
new file mode 100644
index 000000000..245fa484f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/LargeFile.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/LargeFile.java b/libjava/testsuite/libjava.lang/LargeFile.java
new file mode 100644
index 000000000..1bb8aec8c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/LargeFile.java
@@ -0,0 +1,36 @@
+/* Test to ensure files >= 2^31 bytes are supported. */
+
+import java.io.*;
+
+public class LargeFile
+{
+ public static void main(String[] args) throws IOException
+ {
+ File file = new File("LargeFile.tmp");
+
+ try
+ {
+ RandomAccessFile rfile = new RandomAccessFile(file, "rw");
+
+ long pos = (long) Math.pow(2, 31);
+
+ rfile.seek(pos);
+ rfile.write('O');
+ rfile.write('K');
+ rfile.close();
+
+ // Re-open, read byte back using FileInputStream and clean up.
+
+ FileInputStream fis = new FileInputStream(file);
+ fis.skip(pos);
+ System.out.print((char) fis.read());
+ System.out.println((char) fis.read());
+ fis.close();
+ }
+ finally
+ {
+ if (file.exists())
+ file.delete();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/LargeFile.out b/libjava/testsuite/libjava.lang/LargeFile.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/LargeFile.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/MathBuiltin.jar b/libjava/testsuite/libjava.lang/MathBuiltin.jar
new file mode 100644
index 000000000..4cefc678b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/MathBuiltin.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/MathBuiltin.java b/libjava/testsuite/libjava.lang/MathBuiltin.java
new file mode 100644
index 000000000..275a08660
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/MathBuiltin.java
@@ -0,0 +1,91 @@
+class MathBuiltin
+{
+ static double abs(double x)
+ {
+ return Math.abs(x);
+ }
+
+ static double acos(double x)
+ {
+ return Math.acos(x);
+ }
+
+ static double asin(double x)
+ {
+ return Math.asin(x);
+ }
+
+ static double atan(double x)
+ {
+ return Math.atan(x);
+ }
+
+ static double atan2(double x, double y)
+ {
+ return Math.atan2(x,y);
+ }
+
+ static double ceil(double x)
+ {
+ return Math.ceil(x);
+ }
+
+ static double cos(double x)
+ {
+ return Math.cos(x);
+ }
+
+ static double exp(double x)
+ {
+ return Math.exp(x);
+ }
+
+ static double floor(double x)
+ {
+ return Math.floor(x);
+ }
+
+ static double log(double x)
+ {
+ return Math.log(x);
+ }
+
+ static double max(double x, double y)
+ {
+ return Math.max(x,y);
+ }
+
+ static double min(double x, double y)
+ {
+ return Math.min(x,y);
+ }
+
+ static double pow(double x, double y)
+ {
+ return Math.pow(x,y);
+ }
+
+ static double sin(double x)
+ {
+ return Math.sin(x);
+ }
+
+ static double sqrt(double x)
+ {
+ return Math.sqrt(x);
+ }
+
+ static double tan(double x)
+ {
+ return Math.tan(x);
+ }
+
+ public static void main(String argv[])
+ {
+ double sum = abs (1.0) + acos (1.0) + asin (1.0) + atan (1.0)
+ + atan2 (1.0, 1.0) + ceil (1.0) + cos (1.0) + exp (1.0)
+ + floor (1.0) + log(1.0) + max(1.0, 1.0) + min (1.0, 1.0)
+ + pow (1.0, 1.0) + sin (1.0) + sqrt(1.0) + tan(1.0);
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/MathBuiltin.out b/libjava/testsuite/libjava.lang/MathBuiltin.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/MathBuiltin.out
diff --git a/libjava/testsuite/libjava.lang/Matrix4f.jar b/libjava/testsuite/libjava.lang/Matrix4f.jar
new file mode 100644
index 000000000..eaa7241e7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Matrix4f.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Matrix4f.java b/libjava/testsuite/libjava.lang/Matrix4f.java
new file mode 100644
index 000000000..dd8829cf4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Matrix4f.java
@@ -0,0 +1,129 @@
+/*
+* Instance initializers are now turned into a new function instinit$ and called
+* from the ctor. SAVE_EXPRs can't be easily shared.
+*
+* Contributed by Adam King <aking@dreammechanics.com>
+*
+*/
+
+public class Matrix4f
+{
+ public float m00;
+ public float m01;
+ public float m02;
+ public float m03;
+ public float m10;
+ public float m11;
+ public float m12;
+ public float m13;
+ public float m20;
+ public float m21;
+ public float m22;
+ public float m23;
+ public float m30;
+ public float m31;
+ public float m32;
+ public float m33;
+
+ private float scale;
+
+ static boolean initialized;
+ static Matrix4f xmat;
+ static Matrix4f ymat;
+ static Matrix4f zmat;
+ static Matrix4f tempMatrix1;
+ static Matrix4f tempMatrix2;
+
+ {
+ if( !initialized )
+ {
+ System.out.println ("not initialized");
+ initialized = true;
+ xmat = new Matrix4f();
+ ymat = new Matrix4f();
+ zmat = new Matrix4f();
+ tempMatrix1 = new Matrix4f();
+ tempMatrix2 = new Matrix4f();
+ }
+ else { System.out.println ("initialized"); }
+
+ }
+
+ public Matrix4f()
+ {
+ m00 = 1;
+ m01 = 0;
+ m02 = 0;
+ m03 = 0;
+ m10 = 0;
+ m11 = 1;
+ m12 = 0;
+ m13 = 0;
+ m20 = 0;
+ m21 = 0;
+ m22 = 1;
+ m23 = 0;
+ m30 = 0;
+ m31 = 0;
+ m32 = 0;
+ m33 = 1;
+ }
+
+ public Matrix4f( float v[] )
+ {
+ m00 = v[0];
+ m01 = v[1];
+ m02 = v[2];
+ m03 = v[3];
+ m10 = v[4];
+ m11 = v[5];
+ m12 = v[6];
+ m13 = v[7];
+ m20 = v[8];
+ m21 = v[9];
+ m22 = v[10];
+ m23 = v[11];
+ m30 = v[12];
+ m31 = v[13];
+ m32 = v[14];
+ m33 = v[15];
+ }
+
+ public Matrix4f( float m00, float m01, float m02, float m03,
+ float m10, float m11, float m12, float m13,
+ float m20, float m21, float m22, float m23,
+ float m30, float m31, float m32, float m33 )
+ {
+ this.m00 = m00;
+ this.m01 = m01;
+ this.m02 = m02;
+ this.m03 = m03;
+ this.m10 = m10;
+ this.m11 = m11;
+ this.m12 = m12;
+ this.m13 = m13;
+ this.m20 = m20;
+ this.m21 = m21;
+ this.m22 = m22;
+ this.m23 = m23;
+ this.m30 = m30;
+ this.m31 = m31;
+ this.m32 = m32;
+ this.m33 = m33;
+ }
+
+ public static void main( String[] args )
+ {
+ System.out.println( "Test main..." );
+ new Matrix4f ();
+ new Matrix4f (0,0,0,0,
+ 0,0,0,0,
+ 0,0,0,0,
+ 0,0,0,0);
+ new Matrix4f (new float [] {0,0,0,0,
+ 0,0,0,0,
+ 0,0,0,0,
+ 0,0,0,0});
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/Matrix4f.out b/libjava/testsuite/libjava.lang/Matrix4f.out
new file mode 100644
index 000000000..eda916426
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Matrix4f.out
@@ -0,0 +1,9 @@
+Test main...
+not initialized
+initialized
+initialized
+initialized
+initialized
+initialized
+initialized
+initialized
diff --git a/libjava/testsuite/libjava.lang/N19990310_02.jar b/libjava/testsuite/libjava.lang/N19990310_02.jar
new file mode 100644
index 000000000..49e97e420
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_02.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/N19990310_02.java b/libjava/testsuite/libjava.lang/N19990310_02.java
new file mode 100644
index 000000000..0c5bd03e9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_02.java
@@ -0,0 +1,22 @@
+/*--------------------------------------------------------------------------*/
+/* Name : N19990310_02 */
+/* : */
+/* Cause : Array value calculation in for,while,do while loop is not */
+/* : correct */
+/* : */
+/* Message : NG:[3]-->[2] */
+/*--------------------------------------------------------------------------*/
+
+public class N19990310_02 {
+ public static void main(String[] args) {
+ int y[] = {2};
+ for ( int i = 0; i < 1; i++ ) {
+ y[i] += 1;
+ if ( y[i] != 3 ) {
+ System.out.println("NG:[3]-->[" +y[i]+ "]");
+ }
+ else
+ System.out.println("OK");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/N19990310_02.out b/libjava/testsuite/libjava.lang/N19990310_02.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_02.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/N19990310_3.jar b/libjava/testsuite/libjava.lang/N19990310_3.jar
new file mode 100644
index 000000000..a096693aa
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/N19990310_3.java b/libjava/testsuite/libjava.lang/N19990310_3.java
new file mode 100644
index 000000000..b6dfac287
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_3.java
@@ -0,0 +1,24 @@
+/*--------------------------------------------------------------------------*/
+/* Name : N19990310_3 */
+/* : */
+/* Cause : Evaluation order miss, when make integer array. */
+/* : */
+/* Message : NG:[4]-->[1] */
+/*--------------------------------------------------------------------------*/
+
+public class N19990310_3 {
+ public static void main(String[] args) {
+
+ int x = 4;
+
+ int ary[][] = new int[x][x=1];
+
+ if ( ary.length == 4 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG:[4]-->[" +ary.length+ "]");
+ }
+ }
+}
+
+
diff --git a/libjava/testsuite/libjava.lang/N19990310_3.out b/libjava/testsuite/libjava.lang/N19990310_3.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_3.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/N19990310_4.jar b/libjava/testsuite/libjava.lang/N19990310_4.jar
new file mode 100644
index 000000000..b21f47452
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_4.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/N19990310_4.java b/libjava/testsuite/libjava.lang/N19990310_4.java
new file mode 100644
index 000000000..ad89a505b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_4.java
@@ -0,0 +1,27 @@
+/*--------------------------------------------------------------------------*/
+/* Name : N19990310_4.java */
+/* : */
+/* Cause : assignment operator makes error in char,byte,short variable */
+/* : */
+/* Message : In class `N19990310_4': */
+/* : In method `main(java.lang.String[])': */
+/* : Incompatible type for `='. Explicit cast needed to convert `*/
+/* : `int' to `char'. */
+/* : x += (x = 3); */
+/* : ^ */
+/* : 1 error */
+/*--------------------------------------------------------------------------*/
+
+public class N19990310_4 {
+ public static void main(String[] args) {
+ char x = 9;
+
+ x += (x = 3);
+ if ( x == 12 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/N19990310_4.out b/libjava/testsuite/libjava.lang/N19990310_4.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_4.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/N19990310_5.jar b/libjava/testsuite/libjava.lang/N19990310_5.jar
new file mode 100644
index 000000000..d944000c8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_5.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/N19990310_5.java b/libjava/testsuite/libjava.lang/N19990310_5.java
new file mode 100644
index 000000000..61ccc5b9f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_5.java
@@ -0,0 +1,29 @@
+/*--------------------------------------------------------------------------*/
+/* Name : N19990310_5.java */
+/* : */
+/* Cause : A assignment operator makes error in char,byte,short array */
+/* : element */
+/* : */
+/* Message : In class `N19990310_5': */
+/* : In method `main(java.lang.String[])': */
+/* : Incompatible type for `='. Explicit cast needed to convert `*/
+/* : `int' to `char'. */
+/* : a[0] += (a[0] = 3); */
+/* : ^ */
+/* : 1 error */
+/*--------------------------------------------------------------------------*/
+
+public class N19990310_5 {
+ public static void main(String[] args) {
+ char[] a = {9};
+ a[0] += (a[0] = 3);
+
+ if ( a[0] == 12 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG");
+ }
+ }
+}
+
+
diff --git a/libjava/testsuite/libjava.lang/N19990310_5.out b/libjava/testsuite/libjava.lang/N19990310_5.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/N19990310_5.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/Overflow.jar b/libjava/testsuite/libjava.lang/Overflow.jar
new file mode 100644
index 000000000..4bfda6b7c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Overflow.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Overflow.java b/libjava/testsuite/libjava.lang/Overflow.java
new file mode 100644
index 000000000..312e9cb20
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Overflow.java
@@ -0,0 +1,16 @@
+class Overflow
+{
+ static int test(int x)
+ {
+ return (2*x)/2;
+ }
+
+ public static void main(String argv[])
+ {
+ int x = Integer.MAX_VALUE;
+
+ if (test(x) == x)
+ throw new RuntimeException ();
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/Overflow.out b/libjava/testsuite/libjava.lang/Overflow.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Overflow.out
diff --git a/libjava/testsuite/libjava.lang/PR12350.jar b/libjava/testsuite/libjava.lang/PR12350.jar
new file mode 100644
index 000000000..8d655c2b1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12350.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR12350.java b/libjava/testsuite/libjava.lang/PR12350.java
new file mode 100644
index 000000000..ded8856cf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12350.java
@@ -0,0 +1,20 @@
+public class PR12350
+{
+ static public void main (String[] ignored) throws Throwable
+ {
+ StringBuffer b = new StringBuffer ("Good string. More than 16 chars.");
+
+ // Should cause sharing.
+ String s = b.toString();
+
+ // Take a char by char unshared copy of s.
+ String t = new String (s.toCharArray());
+
+ b.substring (0, 4); // BUG: Clears shared flag.
+ b.replace (0, 4, "Bad "); // Modifies shared data.
+
+ System.out.println (s);
+ assert s.equals (t);
+ }
+
+}
diff --git a/libjava/testsuite/libjava.lang/PR12350.out b/libjava/testsuite/libjava.lang/PR12350.out
new file mode 100644
index 000000000..61dc0a637
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12350.out
@@ -0,0 +1 @@
+Good string. More than 16 chars.
diff --git a/libjava/testsuite/libjava.lang/PR12416.jar b/libjava/testsuite/libjava.lang/PR12416.jar
new file mode 100644
index 000000000..823500854
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12416.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR12416.java b/libjava/testsuite/libjava.lang/PR12416.java
new file mode 100644
index 000000000..157d4e695
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12416.java
@@ -0,0 +1,22 @@
+interface A
+{
+ int a = 0;
+}
+interface B extends A
+{
+}
+interface C extends A
+{
+}
+
+public class PR12416 implements B, C
+{
+ static public void main (String[] unused)
+ {
+ java.lang.reflect.Field[] fields = PR12416.class.getFields();
+
+ for (int i = 0; i != fields.length; ++i) {
+ System.out.println (fields[i]);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR12416.out b/libjava/testsuite/libjava.lang/PR12416.out
new file mode 100644
index 000000000..6a0ed8b88
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12416.out
@@ -0,0 +1 @@
+public static final int A.a
diff --git a/libjava/testsuite/libjava.lang/PR12656.jar b/libjava/testsuite/libjava.lang/PR12656.jar
new file mode 100644
index 000000000..c54e92d78
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12656.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR12656.java b/libjava/testsuite/libjava.lang/PR12656.java
new file mode 100644
index 000000000..2a817f03c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12656.java
@@ -0,0 +1,11 @@
+class PR12656_base
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Maude");
+ }
+}
+
+public class PR12656 extends PR12656_base
+{
+}
diff --git a/libjava/testsuite/libjava.lang/PR12656.out b/libjava/testsuite/libjava.lang/PR12656.out
new file mode 100644
index 000000000..86a4a374d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12656.out
@@ -0,0 +1 @@
+Maude
diff --git a/libjava/testsuite/libjava.lang/PR12915.jar b/libjava/testsuite/libjava.lang/PR12915.jar
new file mode 100644
index 000000000..29ce9c05f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12915.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR12915.java b/libjava/testsuite/libjava.lang/PR12915.java
new file mode 100644
index 000000000..3a155f6e1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12915.java
@@ -0,0 +1,6 @@
+public class PR12915 {
+ public static void main(String[] args)
+ {
+ System.out.println(((String) null) + "");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR12915.out b/libjava/testsuite/libjava.lang/PR12915.out
new file mode 100644
index 000000000..19765bd50
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR12915.out
@@ -0,0 +1 @@
+null
diff --git a/libjava/testsuite/libjava.lang/PR141.jar b/libjava/testsuite/libjava.lang/PR141.jar
new file mode 100644
index 000000000..c7b962945
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR141.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR141.java b/libjava/testsuite/libjava.lang/PR141.java
new file mode 100644
index 000000000..c3314f2af
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR141.java
@@ -0,0 +1,41 @@
+import java.io.IOException;
+import java.io.StreamTokenizer;
+import java.io.StringReader;
+
+public class PR141 {
+ public static void test(String str) throws IOException {
+ StringReader reader = new StringReader(str);
+ StreamTokenizer st = new StreamTokenizer(reader);
+ int t = 0;
+
+ do {
+ t = st.nextToken();
+
+ switch (t) {
+ case StreamTokenizer.TT_WORD:
+ System.out.println("[TT_WORD]: " + st.sval);
+ break;
+ case StreamTokenizer.TT_NUMBER:
+ System.out.println("[TT_NUMBER]: " + st.nval);
+ break;
+ case StreamTokenizer.TT_EOL:
+ System.out.println("[TT_EOL]");
+ break;
+ case StreamTokenizer.TT_EOF:
+ System.out.println("[TT_EOF]");
+ break;
+ default:
+ System.out.println((char)t);
+ break;
+ }
+ } while (t != StreamTokenizer.TT_EOF);
+ }
+
+ public static void main(String[] args) {
+ try {
+ test("(a).(b)");
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR141.out b/libjava/testsuite/libjava.lang/PR141.out
new file mode 100644
index 000000000..37cb87c6d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR141.out
@@ -0,0 +1,8 @@
+(
+[TT_WORD]: a
+)
+[TT_NUMBER]: 0.0
+(
+[TT_WORD]: b
+)
+[TT_EOF]
diff --git a/libjava/testsuite/libjava.lang/PR160.jar b/libjava/testsuite/libjava.lang/PR160.jar
new file mode 100644
index 000000000..f1fed747e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR160.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR160.java b/libjava/testsuite/libjava.lang/PR160.java
new file mode 100644
index 000000000..77526ef52
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR160.java
@@ -0,0 +1,34 @@
+public class PR160
+{
+ static final int len = 100;
+
+ public static void main(String args[])
+ {
+
+ double[] a = new double[len];
+ double[] b = new double[len];
+
+ for (int i = 0; i < len ; i++)
+ {
+ a[i] = 0.65;
+ }
+
+ System.arraycopy(a, 0, b, 0, len);
+
+ boolean errors = false;
+
+ for (int i = 0; i < len ; i++)
+ {
+ if (a[i] != b[i])
+ {
+ System.out.println("ERROR! " + a[i] + " != "
+ + b[i] + " at index " + i);
+ errors = true;
+ }
+ }
+
+ if (!errors)
+ System.out.println("ok");
+
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR160.out b/libjava/testsuite/libjava.lang/PR160.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR160.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/PR162.jar b/libjava/testsuite/libjava.lang/PR162.jar
new file mode 100644
index 000000000..69acecc9d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR162.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR162.java b/libjava/testsuite/libjava.lang/PR162.java
new file mode 100644
index 000000000..ffabce0e0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR162.java
@@ -0,0 +1,29 @@
+interface I
+{
+ int i = 1, ii = PR162.out ("ii", 2);
+}
+
+interface J extends I
+{
+ int j = PR162.out ("j", 3), jj = PR162.out ("jj", 4);
+}
+
+interface K extends J
+{
+ int k = PR162.out ("k", 5);
+}
+
+public class PR162
+{
+ public static void main (String[] args)
+ {
+ System.out.println (J.i);
+ System.out.println (K.j);
+ }
+
+ public static int out (String s, int i)
+ {
+ System.out.println (s + "=" + i);
+ return i;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR162.out b/libjava/testsuite/libjava.lang/PR162.out
new file mode 100644
index 000000000..6510a2d59
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR162.out
@@ -0,0 +1,4 @@
+1
+j=3
+jj=4
+3
diff --git a/libjava/testsuite/libjava.lang/PR16867.jar b/libjava/testsuite/libjava.lang/PR16867.jar
new file mode 100644
index 000000000..a1c46c4e7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR16867.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR16867.java b/libjava/testsuite/libjava.lang/PR16867.java
new file mode 100644
index 000000000..686289230
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR16867.java
@@ -0,0 +1,17 @@
+/* SSA-DCE was removing the initialization of the temporary object
+ in getFoo because it wasn't realizing that the pointer was needed
+ outside of it. */
+
+public class PR16867
+{
+ public static Object[] getFoo()
+ {
+ return new Object[] {"OK"};
+ }
+
+ public static void main(String[] args)
+ {
+ Object[] a = getFoo();
+ System.out.println(a[0]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR16867.out b/libjava/testsuite/libjava.lang/PR16867.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR16867.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/PR18699.jar b/libjava/testsuite/libjava.lang/PR18699.jar
new file mode 100644
index 000000000..c16dc755b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR18699.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR18699.java b/libjava/testsuite/libjava.lang/PR18699.java
new file mode 100644
index 000000000..6f81e10d9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR18699.java
@@ -0,0 +1,36 @@
+// Test for thread-local allocation problems.
+
+import java.util.HashMap;
+import java.util.Observable;
+import java.util.Observer;
+
+class PR18699 extends Observable implements Runnable, Observer {
+
+ public static void main(String[] args) throws InterruptedException {
+ PR18699 PR18699_1 = new PR18699();
+ PR18699 PR18699_2 = new PR18699();
+ PR18699_1.addObserver(PR18699_2);
+ PR18699_2.addObserver(PR18699_1);
+ new Thread(PR18699_1).start();
+ new Thread(PR18699_2).start();
+ }
+
+ public void run() {
+ int c = 0;
+ String s = "";
+ while (++c < 50) {
+ this.setChanged();
+ s = "";
+ for (int i = 0; i < 200; i++)
+ s += String.valueOf(i);
+ this.notifyObservers(s);
+ }
+ }
+
+ HashMap map = new HashMap();
+
+ public void update(Observable o, Object obj)
+ {
+ map.put(o, obj);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR18699.out b/libjava/testsuite/libjava.lang/PR18699.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR18699.out
diff --git a/libjava/testsuite/libjava.lang/PR19870.jar b/libjava/testsuite/libjava.lang/PR19870.jar
new file mode 100644
index 000000000..13255d8a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR19870.java b/libjava/testsuite/libjava.lang/PR19870.java
new file mode 100644
index 000000000..f9e6bc318
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870.java
@@ -0,0 +1,44 @@
+// PR19870: Test static field access across nested class boundaries.
+//
+public class PR19870
+{
+ private static int x = 123;
+
+ static class Foo
+ {
+ private static int junk = 1000;
+
+ static void snafu( )
+ {
+ System.out.println( x);
+ x = 456;
+ System.out.println( PR19870.x);
+ PR19870.x = 789;
+ System.out.println( PR19870.x);
+
+ System.out.println( Bar.junk);
+ }
+ }
+
+ static class Bar
+ {
+ private static int junk = 1984;
+
+ static void snafu( )
+ {
+ System.out.println( Foo.junk);
+ Foo.junk = 2000;
+ System.out.println( Foo.junk);
+ }
+ }
+
+ public static void main( String[] args)
+ {
+ Foo.snafu( );
+ Bar.snafu( );
+
+ System.out.println( Foo.junk);
+ Foo.junk = 3000;
+ System.out.println( Foo.junk);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR19870.out b/libjava/testsuite/libjava.lang/PR19870.out
new file mode 100644
index 000000000..ab58915f5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870.out
@@ -0,0 +1,8 @@
+123
+456
+789
+1984
+1000
+2000
+2000
+3000
diff --git a/libjava/testsuite/libjava.lang/PR19870_2.jar b/libjava/testsuite/libjava.lang/PR19870_2.jar
new file mode 100644
index 000000000..05daaf98e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR19870_2.java b/libjava/testsuite/libjava.lang/PR19870_2.java
new file mode 100644
index 000000000..4dd7c7fa9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870_2.java
@@ -0,0 +1,39 @@
+// PR19870: Test synthetic accessor generation for private static methods
+// accessed across nested class boundaries.
+public class PR19870_2
+{
+ static class A
+ {
+ private static void foo( )
+ {
+ System.out.println( "1");
+ }
+
+ private static void bar( int x)
+ {
+ System.out.println( x);
+ snafu( );
+ PR19870_2.snafu( );
+ }
+ }
+
+ static class B
+ {
+ private static void foo( )
+ {
+ A.foo( );
+ }
+ }
+
+ private static void snafu( )
+ {
+ System.out.println( "3");
+ }
+
+ public static void main( String[] args)
+ {
+ A.foo( );
+ A.bar( 2);
+ B.foo( );
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR19870_2.out b/libjava/testsuite/libjava.lang/PR19870_2.out
new file mode 100644
index 000000000..bab394589
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19870_2.out
@@ -0,0 +1,5 @@
+1
+2
+3
+3
+1
diff --git a/libjava/testsuite/libjava.lang/PR19921.jar b/libjava/testsuite/libjava.lang/PR19921.jar
new file mode 100644
index 000000000..515f3bf6f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19921.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR19921.java b/libjava/testsuite/libjava.lang/PR19921.java
new file mode 100644
index 000000000..0758d661d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19921.java
@@ -0,0 +1,11 @@
+interface I {
+ void f(Object x);
+}
+
+class PR19921 {
+ static void g(I i) {
+ // gcj used to create invalid bytecode for this.
+ i.f(new Object[1][1]);
+ }
+ public static void main(String[] args) { }
+}
diff --git a/libjava/testsuite/libjava.lang/PR19921.out b/libjava/testsuite/libjava.lang/PR19921.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR19921.out
diff --git a/libjava/testsuite/libjava.lang/PR20056.jar b/libjava/testsuite/libjava.lang/PR20056.jar
new file mode 100644
index 000000000..2bd6d54e5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR20056.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR20056.java b/libjava/testsuite/libjava.lang/PR20056.java
new file mode 100644
index 000000000..f73eb7f04
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR20056.java
@@ -0,0 +1,13 @@
+public class PR20056 {
+ int x;
+ PR20056(int x) {}
+ PR20056(PR20056 f) {
+ // The verifier rejected the generated code in this case.
+ this(f.x = 0);
+ }
+
+ public static void main(String[] args)
+ {
+ System.out.println("maude");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR20056.out b/libjava/testsuite/libjava.lang/PR20056.out
new file mode 100644
index 000000000..b3668c4d4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR20056.out
@@ -0,0 +1 @@
+maude
diff --git a/libjava/testsuite/libjava.lang/PR218.jar b/libjava/testsuite/libjava.lang/PR218.jar
new file mode 100644
index 000000000..764740409
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR218.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR218.java b/libjava/testsuite/libjava.lang/PR218.java
new file mode 100644
index 000000000..14486dfad
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR218.java
@@ -0,0 +1,28 @@
+// Bug in gcj 20000427: Java executables can abort trying to access a null
+// pointer in a leaf function.
+
+public class PR218
+{
+ private int i = 5;
+
+ public static void main(String[] args)
+ {
+ try
+ {
+ new PR218().foo(null);
+ }
+ catch (NullPointerException x)
+ {
+ System.out.println(x);
+ }
+ }
+
+ void foo(PR218 e)
+ {
+ e.i += 4;
+ };
+}
+
+// Expected output:
+//
+// java.lang.NullPointerException
diff --git a/libjava/testsuite/libjava.lang/PR218.out b/libjava/testsuite/libjava.lang/PR218.out
new file mode 100644
index 000000000..7a72d865c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR218.out
@@ -0,0 +1 @@
+java.lang.NullPointerException
diff --git a/libjava/testsuite/libjava.lang/PR242.jar b/libjava/testsuite/libjava.lang/PR242.jar
new file mode 100644
index 000000000..41b7fe137
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR242.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR242.java b/libjava/testsuite/libjava.lang/PR242.java
new file mode 100644
index 000000000..6f74b4620
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR242.java
@@ -0,0 +1,36 @@
+class Base
+{
+ int someNum()
+ {
+ System.out.println ("ok");
+ return 0;
+ }
+}
+
+public class PR242 extends Base
+{
+ public static void main(String args[])
+ {
+ new PR242();
+ }
+
+ PR242()
+ {
+ new Inner().a();
+ }
+
+ class Inner
+ {
+ public int dummy()
+ {
+ System.out.println ("wrong method called!!");
+ return -1;
+ }
+
+ public void a()
+ {
+ System.out.println ("...");
+ System.out.println (someNum());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR242.out b/libjava/testsuite/libjava.lang/PR242.out
new file mode 100644
index 000000000..98b7db396
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR242.out
@@ -0,0 +1,3 @@
+...
+ok
+0
diff --git a/libjava/testsuite/libjava.lang/PR25535.jar b/libjava/testsuite/libjava.lang/PR25535.jar
new file mode 100644
index 000000000..924c256a6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR25535.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR25535.java b/libjava/testsuite/libjava.lang/PR25535.java
new file mode 100644
index 000000000..05f4d080d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR25535.java
@@ -0,0 +1,5 @@
+public class PR25535 {
+ public static void main(String[] args) {
+ System.out.println(javax.rmi.CORBA.Stub.class);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR25535.out b/libjava/testsuite/libjava.lang/PR25535.out
new file mode 100644
index 000000000..2659d2f7a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR25535.out
@@ -0,0 +1 @@
+class javax.rmi.CORBA.Stub
diff --git a/libjava/testsuite/libjava.lang/PR260.jar b/libjava/testsuite/libjava.lang/PR260.jar
new file mode 100644
index 000000000..a0ca13254
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR260.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR260.java b/libjava/testsuite/libjava.lang/PR260.java
new file mode 100644
index 000000000..7bd49eb90
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR260.java
@@ -0,0 +1,15 @@
+class A
+{
+ static
+ {
+ System.out.println ("A initialized");
+ }
+}
+
+public class PR260
+{
+ public static void main(String args[])
+ {
+ Class klass = A.class;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR260.out b/libjava/testsuite/libjava.lang/PR260.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR260.out
diff --git a/libjava/testsuite/libjava.lang/PR26858.jar b/libjava/testsuite/libjava.lang/PR26858.jar
new file mode 100644
index 000000000..c9b3abbe5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR26858.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR26858.java b/libjava/testsuite/libjava.lang/PR26858.java
new file mode 100644
index 000000000..5e9daadba
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR26858.java
@@ -0,0 +1,2075 @@
+public class PR26858
+{
+ public long f0000; public long f0001; public long f0002; public long f0003;
+ public long f0004; public long f0005; public long f0006; public long f0007;
+ public long f0008; public long f0009; public long f0010; public long f0011;
+ public long f0012; public long f0013; public long f0014; public long f0015;
+ public long f0016; public long f0017; public long f0018; public long f0019;
+ public long f0020; public long f0021; public long f0022; public long f0023;
+ public long f0024; public long f0025; public long f0026; public long f0027;
+ public long f0028; public long f0029; public long f0030; public long f0031;
+ public long f0032; public long f0033; public long f0034; public long f0035;
+ public long f0036; public long f0037; public long f0038; public long f0039;
+ public long f0040; public long f0041; public long f0042; public long f0043;
+ public long f0044; public long f0045; public long f0046; public long f0047;
+ public long f0048; public long f0049; public long f0050; public long f0051;
+ public long f0052; public long f0053; public long f0054; public long f0055;
+ public long f0056; public long f0057; public long f0058; public long f0059;
+ public long f0060; public long f0061; public long f0062; public long f0063;
+ public long f0064; public long f0065; public long f0066; public long f0067;
+ public long f0068; public long f0069; public long f0070; public long f0071;
+ public long f0072; public long f0073; public long f0074; public long f0075;
+ public long f0076; public long f0077; public long f0078; public long f0079;
+ public long f0080; public long f0081; public long f0082; public long f0083;
+ public long f0084; public long f0085; public long f0086; public long f0087;
+ public long f0088; public long f0089; public long f0090; public long f0091;
+ public long f0092; public long f0093; public long f0094; public long f0095;
+ public long f0096; public long f0097; public long f0098; public long f0099;
+ public long f0100; public long f0101; public long f0102; public long f0103;
+ public long f0104; public long f0105; public long f0106; public long f0107;
+ public long f0108; public long f0109; public long f0110; public long f0111;
+ public long f0112; public long f0113; public long f0114; public long f0115;
+ public long f0116; public long f0117; public long f0118; public long f0119;
+ public long f0120; public long f0121; public long f0122; public long f0123;
+ public long f0124; public long f0125; public long f0126; public long f0127;
+ public long f0128; public long f0129; public long f0130; public long f0131;
+ public long f0132; public long f0133; public long f0134; public long f0135;
+ public long f0136; public long f0137; public long f0138; public long f0139;
+ public long f0140; public long f0141; public long f0142; public long f0143;
+ public long f0144; public long f0145; public long f0146; public long f0147;
+ public long f0148; public long f0149; public long f0150; public long f0151;
+ public long f0152; public long f0153; public long f0154; public long f0155;
+ public long f0156; public long f0157; public long f0158; public long f0159;
+ public long f0160; public long f0161; public long f0162; public long f0163;
+ public long f0164; public long f0165; public long f0166; public long f0167;
+ public long f0168; public long f0169; public long f0170; public long f0171;
+ public long f0172; public long f0173; public long f0174; public long f0175;
+ public long f0176; public long f0177; public long f0178; public long f0179;
+ public long f0180; public long f0181; public long f0182; public long f0183;
+ public long f0184; public long f0185; public long f0186; public long f0187;
+ public long f0188; public long f0189; public long f0190; public long f0191;
+ public long f0192; public long f0193; public long f0194; public long f0195;
+ public long f0196; public long f0197; public long f0198; public long f0199;
+ public long f0200; public long f0201; public long f0202; public long f0203;
+ public long f0204; public long f0205; public long f0206; public long f0207;
+ public long f0208; public long f0209; public long f0210; public long f0211;
+ public long f0212; public long f0213; public long f0214; public long f0215;
+ public long f0216; public long f0217; public long f0218; public long f0219;
+ public long f0220; public long f0221; public long f0222; public long f0223;
+ public long f0224; public long f0225; public long f0226; public long f0227;
+ public long f0228; public long f0229; public long f0230; public long f0231;
+ public long f0232; public long f0233; public long f0234; public long f0235;
+ public long f0236; public long f0237; public long f0238; public long f0239;
+ public long f0240; public long f0241; public long f0242; public long f0243;
+ public long f0244; public long f0245; public long f0246; public long f0247;
+ public long f0248; public long f0249; public long f0250; public long f0251;
+ public long f0252; public long f0253; public long f0254; public long f0255;
+ public long f0256; public long f0257; public long f0258; public long f0259;
+ public long f0260; public long f0261; public long f0262; public long f0263;
+ public long f0264; public long f0265; public long f0266; public long f0267;
+ public long f0268; public long f0269; public long f0270; public long f0271;
+ public long f0272; public long f0273; public long f0274; public long f0275;
+ public long f0276; public long f0277; public long f0278; public long f0279;
+ public long f0280; public long f0281; public long f0282; public long f0283;
+ public long f0284; public long f0285; public long f0286; public long f0287;
+ public long f0288; public long f0289; public long f0290; public long f0291;
+ public long f0292; public long f0293; public long f0294; public long f0295;
+ public long f0296; public long f0297; public long f0298; public long f0299;
+ public long f0300; public long f0301; public long f0302; public long f0303;
+ public long f0304; public long f0305; public long f0306; public long f0307;
+ public long f0308; public long f0309; public long f0310; public long f0311;
+ public long f0312; public long f0313; public long f0314; public long f0315;
+ public long f0316; public long f0317; public long f0318; public long f0319;
+ public long f0320; public long f0321; public long f0322; public long f0323;
+ public long f0324; public long f0325; public long f0326; public long f0327;
+ public long f0328; public long f0329; public long f0330; public long f0331;
+ public long f0332; public long f0333; public long f0334; public long f0335;
+ public long f0336; public long f0337; public long f0338; public long f0339;
+ public long f0340; public long f0341; public long f0342; public long f0343;
+ public long f0344; public long f0345; public long f0346; public long f0347;
+ public long f0348; public long f0349; public long f0350; public long f0351;
+ public long f0352; public long f0353; public long f0354; public long f0355;
+ public long f0356; public long f0357; public long f0358; public long f0359;
+ public long f0360; public long f0361; public long f0362; public long f0363;
+ public long f0364; public long f0365; public long f0366; public long f0367;
+ public long f0368; public long f0369; public long f0370; public long f0371;
+ public long f0372; public long f0373; public long f0374; public long f0375;
+ public long f0376; public long f0377; public long f0378; public long f0379;
+ public long f0380; public long f0381; public long f0382; public long f0383;
+ public long f0384; public long f0385; public long f0386; public long f0387;
+ public long f0388; public long f0389; public long f0390; public long f0391;
+ public long f0392; public long f0393; public long f0394; public long f0395;
+ public long f0396; public long f0397; public long f0398; public long f0399;
+ public long f0400; public long f0401; public long f0402; public long f0403;
+ public long f0404; public long f0405; public long f0406; public long f0407;
+ public long f0408; public long f0409; public long f0410; public long f0411;
+ public long f0412; public long f0413; public long f0414; public long f0415;
+ public long f0416; public long f0417; public long f0418; public long f0419;
+ public long f0420; public long f0421; public long f0422; public long f0423;
+ public long f0424; public long f0425; public long f0426; public long f0427;
+ public long f0428; public long f0429; public long f0430; public long f0431;
+ public long f0432; public long f0433; public long f0434; public long f0435;
+ public long f0436; public long f0437; public long f0438; public long f0439;
+ public long f0440; public long f0441; public long f0442; public long f0443;
+ public long f0444; public long f0445; public long f0446; public long f0447;
+ public long f0448; public long f0449; public long f0450; public long f0451;
+ public long f0452; public long f0453; public long f0454; public long f0455;
+ public long f0456; public long f0457; public long f0458; public long f0459;
+ public long f0460; public long f0461; public long f0462; public long f0463;
+ public long f0464; public long f0465; public long f0466; public long f0467;
+ public long f0468; public long f0469; public long f0470; public long f0471;
+ public long f0472; public long f0473; public long f0474; public long f0475;
+ public long f0476; public long f0477; public long f0478; public long f0479;
+ public long f0480; public long f0481; public long f0482; public long f0483;
+ public long f0484; public long f0485; public long f0486; public long f0487;
+ public long f0488; public long f0489; public long f0490; public long f0491;
+ public long f0492; public long f0493; public long f0494; public long f0495;
+ public long f0496; public long f0497; public long f0498; public long f0499;
+ public long f0500; public long f0501; public long f0502; public long f0503;
+ public long f0504; public long f0505; public long f0506; public long f0507;
+ public long f0508; public long f0509; public long f0510; public long f0511;
+ public long f0512; public long f0513; public long f0514; public long f0515;
+ public long f0516; public long f0517; public long f0518; public long f0519;
+ public long f0520; public long f0521; public long f0522; public long f0523;
+ public long f0524; public long f0525; public long f0526; public long f0527;
+ public long f0528; public long f0529; public long f0530; public long f0531;
+ public long f0532; public long f0533; public long f0534; public long f0535;
+ public long f0536; public long f0537; public long f0538; public long f0539;
+ public long f0540; public long f0541; public long f0542; public long f0543;
+ public long f0544; public long f0545; public long f0546; public long f0547;
+ public long f0548; public long f0549; public long f0550; public long f0551;
+ public long f0552; public long f0553; public long f0554; public long f0555;
+ public long f0556; public long f0557; public long f0558; public long f0559;
+ public long f0560; public long f0561; public long f0562; public long f0563;
+ public long f0564; public long f0565; public long f0566; public long f0567;
+ public long f0568; public long f0569; public long f0570; public long f0571;
+ public long f0572; public long f0573; public long f0574; public long f0575;
+ public long f0576; public long f0577; public long f0578; public long f0579;
+ public long f0580; public long f0581; public long f0582; public long f0583;
+ public long f0584; public long f0585; public long f0586; public long f0587;
+ public long f0588; public long f0589; public long f0590; public long f0591;
+ public long f0592; public long f0593; public long f0594; public long f0595;
+ public long f0596; public long f0597; public long f0598; public long f0599;
+ public long f0600; public long f0601; public long f0602; public long f0603;
+ public long f0604; public long f0605; public long f0606; public long f0607;
+ public long f0608; public long f0609; public long f0610; public long f0611;
+ public long f0612; public long f0613; public long f0614; public long f0615;
+ public long f0616; public long f0617; public long f0618; public long f0619;
+ public long f0620; public long f0621; public long f0622; public long f0623;
+ public long f0624; public long f0625; public long f0626; public long f0627;
+ public long f0628; public long f0629; public long f0630; public long f0631;
+ public long f0632; public long f0633; public long f0634; public long f0635;
+ public long f0636; public long f0637; public long f0638; public long f0639;
+ public long f0640; public long f0641; public long f0642; public long f0643;
+ public long f0644; public long f0645; public long f0646; public long f0647;
+ public long f0648; public long f0649; public long f0650; public long f0651;
+ public long f0652; public long f0653; public long f0654; public long f0655;
+ public long f0656; public long f0657; public long f0658; public long f0659;
+ public long f0660; public long f0661; public long f0662; public long f0663;
+ public long f0664; public long f0665; public long f0666; public long f0667;
+ public long f0668; public long f0669; public long f0670; public long f0671;
+ public long f0672; public long f0673; public long f0674; public long f0675;
+ public long f0676; public long f0677; public long f0678; public long f0679;
+ public long f0680; public long f0681; public long f0682; public long f0683;
+ public long f0684; public long f0685; public long f0686; public long f0687;
+ public long f0688; public long f0689; public long f0690; public long f0691;
+ public long f0692; public long f0693; public long f0694; public long f0695;
+ public long f0696; public long f0697; public long f0698; public long f0699;
+ public long f0700; public long f0701; public long f0702; public long f0703;
+ public long f0704; public long f0705; public long f0706; public long f0707;
+ public long f0708; public long f0709; public long f0710; public long f0711;
+ public long f0712; public long f0713; public long f0714; public long f0715;
+ public long f0716; public long f0717; public long f0718; public long f0719;
+ public long f0720; public long f0721; public long f0722; public long f0723;
+ public long f0724; public long f0725; public long f0726; public long f0727;
+ public long f0728; public long f0729; public long f0730; public long f0731;
+ public long f0732; public long f0733; public long f0734; public long f0735;
+ public long f0736; public long f0737; public long f0738; public long f0739;
+ public long f0740; public long f0741; public long f0742; public long f0743;
+ public long f0744; public long f0745; public long f0746; public long f0747;
+ public long f0748; public long f0749; public long f0750; public long f0751;
+ public long f0752; public long f0753; public long f0754; public long f0755;
+ public long f0756; public long f0757; public long f0758; public long f0759;
+ public long f0760; public long f0761; public long f0762; public long f0763;
+ public long f0764; public long f0765; public long f0766; public long f0767;
+ public long f0768; public long f0769; public long f0770; public long f0771;
+ public long f0772; public long f0773; public long f0774; public long f0775;
+ public long f0776; public long f0777; public long f0778; public long f0779;
+ public long f0780; public long f0781; public long f0782; public long f0783;
+ public long f0784; public long f0785; public long f0786; public long f0787;
+ public long f0788; public long f0789; public long f0790; public long f0791;
+ public long f0792; public long f0793; public long f0794; public long f0795;
+ public long f0796; public long f0797; public long f0798; public long f0799;
+ public long f0800; public long f0801; public long f0802; public long f0803;
+ public long f0804; public long f0805; public long f0806; public long f0807;
+ public long f0808; public long f0809; public long f0810; public long f0811;
+ public long f0812; public long f0813; public long f0814; public long f0815;
+ public long f0816; public long f0817; public long f0818; public long f0819;
+ public long f0820; public long f0821; public long f0822; public long f0823;
+ public long f0824; public long f0825; public long f0826; public long f0827;
+ public long f0828; public long f0829; public long f0830; public long f0831;
+ public long f0832; public long f0833; public long f0834; public long f0835;
+ public long f0836; public long f0837; public long f0838; public long f0839;
+ public long f0840; public long f0841; public long f0842; public long f0843;
+ public long f0844; public long f0845; public long f0846; public long f0847;
+ public long f0848; public long f0849; public long f0850; public long f0851;
+ public long f0852; public long f0853; public long f0854; public long f0855;
+ public long f0856; public long f0857; public long f0858; public long f0859;
+ public long f0860; public long f0861; public long f0862; public long f0863;
+ public long f0864; public long f0865; public long f0866; public long f0867;
+ public long f0868; public long f0869; public long f0870; public long f0871;
+ public long f0872; public long f0873; public long f0874; public long f0875;
+ public long f0876; public long f0877; public long f0878; public long f0879;
+ public long f0880; public long f0881; public long f0882; public long f0883;
+ public long f0884; public long f0885; public long f0886; public long f0887;
+ public long f0888; public long f0889; public long f0890; public long f0891;
+ public long f0892; public long f0893; public long f0894; public long f0895;
+ public long f0896; public long f0897; public long f0898; public long f0899;
+ public long f0900; public long f0901; public long f0902; public long f0903;
+ public long f0904; public long f0905; public long f0906; public long f0907;
+ public long f0908; public long f0909; public long f0910; public long f0911;
+ public long f0912; public long f0913; public long f0914; public long f0915;
+ public long f0916; public long f0917; public long f0918; public long f0919;
+ public long f0920; public long f0921; public long f0922; public long f0923;
+ public long f0924; public long f0925; public long f0926; public long f0927;
+ public long f0928; public long f0929; public long f0930; public long f0931;
+ public long f0932; public long f0933; public long f0934; public long f0935;
+ public long f0936; public long f0937; public long f0938; public long f0939;
+ public long f0940; public long f0941; public long f0942; public long f0943;
+ public long f0944; public long f0945; public long f0946; public long f0947;
+ public long f0948; public long f0949; public long f0950; public long f0951;
+ public long f0952; public long f0953; public long f0954; public long f0955;
+ public long f0956; public long f0957; public long f0958; public long f0959;
+ public long f0960; public long f0961; public long f0962; public long f0963;
+ public long f0964; public long f0965; public long f0966; public long f0967;
+ public long f0968; public long f0969; public long f0970; public long f0971;
+ public long f0972; public long f0973; public long f0974; public long f0975;
+ public long f0976; public long f0977; public long f0978; public long f0979;
+ public long f0980; public long f0981; public long f0982; public long f0983;
+ public long f0984; public long f0985; public long f0986; public long f0987;
+ public long f0988; public long f0989; public long f0990; public long f0991;
+ public long f0992; public long f0993; public long f0994; public long f0995;
+ public long f0996; public long f0997; public long f0998; public long f0999;
+ public long f1000; public long f1001; public long f1002; public long f1003;
+ public long f1004; public long f1005; public long f1006; public long f1007;
+ public long f1008; public long f1009; public long f1010; public long f1011;
+ public long f1012; public long f1013; public long f1014; public long f1015;
+ public long f1016; public long f1017; public long f1018; public long f1019;
+ public long f1020; public long f1021; public long f1022; public long f1023;
+ public long f1024; public long f1025; public long f1026; public long f1027;
+ public long f1028; public long f1029; public long f1030; public long f1031;
+ public long f1032; public long f1033; public long f1034; public long f1035;
+ public long f1036; public long f1037; public long f1038; public long f1039;
+ public long f1040; public long f1041; public long f1042; public long f1043;
+ public long f1044; public long f1045; public long f1046; public long f1047;
+ public long f1048; public long f1049; public long f1050; public long f1051;
+ public long f1052; public long f1053; public long f1054; public long f1055;
+ public long f1056; public long f1057; public long f1058; public long f1059;
+ public long f1060; public long f1061; public long f1062; public long f1063;
+ public long f1064; public long f1065; public long f1066; public long f1067;
+ public long f1068; public long f1069; public long f1070; public long f1071;
+ public long f1072; public long f1073; public long f1074; public long f1075;
+ public long f1076; public long f1077; public long f1078; public long f1079;
+ public long f1080; public long f1081; public long f1082; public long f1083;
+ public long f1084; public long f1085; public long f1086; public long f1087;
+ public long f1088; public long f1089; public long f1090; public long f1091;
+ public long f1092; public long f1093; public long f1094; public long f1095;
+ public long f1096; public long f1097; public long f1098; public long f1099;
+ public long f1100; public long f1101; public long f1102; public long f1103;
+ public long f1104; public long f1105; public long f1106; public long f1107;
+ public long f1108; public long f1109; public long f1110; public long f1111;
+ public long f1112; public long f1113; public long f1114; public long f1115;
+ public long f1116; public long f1117; public long f1118; public long f1119;
+ public long f1120; public long f1121; public long f1122; public long f1123;
+ public long f1124; public long f1125; public long f1126; public long f1127;
+ public long f1128; public long f1129; public long f1130; public long f1131;
+ public long f1132; public long f1133; public long f1134; public long f1135;
+ public long f1136; public long f1137; public long f1138; public long f1139;
+ public long f1140; public long f1141; public long f1142; public long f1143;
+ public long f1144; public long f1145; public long f1146; public long f1147;
+ public long f1148; public long f1149; public long f1150; public long f1151;
+ public long f1152; public long f1153; public long f1154; public long f1155;
+ public long f1156; public long f1157; public long f1158; public long f1159;
+ public long f1160; public long f1161; public long f1162; public long f1163;
+ public long f1164; public long f1165; public long f1166; public long f1167;
+ public long f1168; public long f1169; public long f1170; public long f1171;
+ public long f1172; public long f1173; public long f1174; public long f1175;
+ public long f1176; public long f1177; public long f1178; public long f1179;
+ public long f1180; public long f1181; public long f1182; public long f1183;
+ public long f1184; public long f1185; public long f1186; public long f1187;
+ public long f1188; public long f1189; public long f1190; public long f1191;
+ public long f1192; public long f1193; public long f1194; public long f1195;
+ public long f1196; public long f1197; public long f1198; public long f1199;
+ public long f1200; public long f1201; public long f1202; public long f1203;
+ public long f1204; public long f1205; public long f1206; public long f1207;
+ public long f1208; public long f1209; public long f1210; public long f1211;
+ public long f1212; public long f1213; public long f1214; public long f1215;
+ public long f1216; public long f1217; public long f1218; public long f1219;
+ public long f1220; public long f1221; public long f1222; public long f1223;
+ public long f1224; public long f1225; public long f1226; public long f1227;
+ public long f1228; public long f1229; public long f1230; public long f1231;
+ public long f1232; public long f1233; public long f1234; public long f1235;
+ public long f1236; public long f1237; public long f1238; public long f1239;
+ public long f1240; public long f1241; public long f1242; public long f1243;
+ public long f1244; public long f1245; public long f1246; public long f1247;
+ public long f1248; public long f1249; public long f1250; public long f1251;
+ public long f1252; public long f1253; public long f1254; public long f1255;
+ public long f1256; public long f1257; public long f1258; public long f1259;
+ public long f1260; public long f1261; public long f1262; public long f1263;
+ public long f1264; public long f1265; public long f1266; public long f1267;
+ public long f1268; public long f1269; public long f1270; public long f1271;
+ public long f1272; public long f1273; public long f1274; public long f1275;
+ public long f1276; public long f1277; public long f1278; public long f1279;
+ public long f1280; public long f1281; public long f1282; public long f1283;
+ public long f1284; public long f1285; public long f1286; public long f1287;
+ public long f1288; public long f1289; public long f1290; public long f1291;
+ public long f1292; public long f1293; public long f1294; public long f1295;
+ public long f1296; public long f1297; public long f1298; public long f1299;
+ public long f1300; public long f1301; public long f1302; public long f1303;
+ public long f1304; public long f1305; public long f1306; public long f1307;
+ public long f1308; public long f1309; public long f1310; public long f1311;
+ public long f1312; public long f1313; public long f1314; public long f1315;
+ public long f1316; public long f1317; public long f1318; public long f1319;
+ public long f1320; public long f1321; public long f1322; public long f1323;
+ public long f1324; public long f1325; public long f1326; public long f1327;
+ public long f1328; public long f1329; public long f1330; public long f1331;
+ public long f1332; public long f1333; public long f1334; public long f1335;
+ public long f1336; public long f1337; public long f1338; public long f1339;
+ public long f1340; public long f1341; public long f1342; public long f1343;
+ public long f1344; public long f1345; public long f1346; public long f1347;
+ public long f1348; public long f1349; public long f1350; public long f1351;
+ public long f1352; public long f1353; public long f1354; public long f1355;
+ public long f1356; public long f1357; public long f1358; public long f1359;
+ public long f1360; public long f1361; public long f1362; public long f1363;
+ public long f1364; public long f1365; public long f1366; public long f1367;
+ public long f1368; public long f1369; public long f1370; public long f1371;
+ public long f1372; public long f1373; public long f1374; public long f1375;
+ public long f1376; public long f1377; public long f1378; public long f1379;
+ public long f1380; public long f1381; public long f1382; public long f1383;
+ public long f1384; public long f1385; public long f1386; public long f1387;
+ public long f1388; public long f1389; public long f1390; public long f1391;
+ public long f1392; public long f1393; public long f1394; public long f1395;
+ public long f1396; public long f1397; public long f1398; public long f1399;
+ public long f1400; public long f1401; public long f1402; public long f1403;
+ public long f1404; public long f1405; public long f1406; public long f1407;
+ public long f1408; public long f1409; public long f1410; public long f1411;
+ public long f1412; public long f1413; public long f1414; public long f1415;
+ public long f1416; public long f1417; public long f1418; public long f1419;
+ public long f1420; public long f1421; public long f1422; public long f1423;
+ public long f1424; public long f1425; public long f1426; public long f1427;
+ public long f1428; public long f1429; public long f1430; public long f1431;
+ public long f1432; public long f1433; public long f1434; public long f1435;
+ public long f1436; public long f1437; public long f1438; public long f1439;
+ public long f1440; public long f1441; public long f1442; public long f1443;
+ public long f1444; public long f1445; public long f1446; public long f1447;
+ public long f1448; public long f1449; public long f1450; public long f1451;
+ public long f1452; public long f1453; public long f1454; public long f1455;
+ public long f1456; public long f1457; public long f1458; public long f1459;
+ public long f1460; public long f1461; public long f1462; public long f1463;
+ public long f1464; public long f1465; public long f1466; public long f1467;
+ public long f1468; public long f1469; public long f1470; public long f1471;
+ public long f1472; public long f1473; public long f1474; public long f1475;
+ public long f1476; public long f1477; public long f1478; public long f1479;
+ public long f1480; public long f1481; public long f1482; public long f1483;
+ public long f1484; public long f1485; public long f1486; public long f1487;
+ public long f1488; public long f1489; public long f1490; public long f1491;
+ public long f1492; public long f1493; public long f1494; public long f1495;
+ public long f1496; public long f1497; public long f1498; public long f1499;
+ public long f1500; public long f1501; public long f1502; public long f1503;
+ public long f1504; public long f1505; public long f1506; public long f1507;
+ public long f1508; public long f1509; public long f1510; public long f1511;
+ public long f1512; public long f1513; public long f1514; public long f1515;
+ public long f1516; public long f1517; public long f1518; public long f1519;
+ public long f1520; public long f1521; public long f1522; public long f1523;
+ public long f1524; public long f1525; public long f1526; public long f1527;
+ public long f1528; public long f1529; public long f1530; public long f1531;
+ public long f1532; public long f1533; public long f1534; public long f1535;
+ public long f1536; public long f1537; public long f1538; public long f1539;
+ public long f1540; public long f1541; public long f1542; public long f1543;
+ public long f1544; public long f1545; public long f1546; public long f1547;
+ public long f1548; public long f1549; public long f1550; public long f1551;
+ public long f1552; public long f1553; public long f1554; public long f1555;
+ public long f1556; public long f1557; public long f1558; public long f1559;
+ public long f1560; public long f1561; public long f1562; public long f1563;
+ public long f1564; public long f1565; public long f1566; public long f1567;
+ public long f1568; public long f1569; public long f1570; public long f1571;
+ public long f1572; public long f1573; public long f1574; public long f1575;
+ public long f1576; public long f1577; public long f1578; public long f1579;
+ public long f1580; public long f1581; public long f1582; public long f1583;
+ public long f1584; public long f1585; public long f1586; public long f1587;
+ public long f1588; public long f1589; public long f1590; public long f1591;
+ public long f1592; public long f1593; public long f1594; public long f1595;
+ public long f1596; public long f1597; public long f1598; public long f1599;
+ public long f1600; public long f1601; public long f1602; public long f1603;
+ public long f1604; public long f1605; public long f1606; public long f1607;
+ public long f1608; public long f1609; public long f1610; public long f1611;
+ public long f1612; public long f1613; public long f1614; public long f1615;
+ public long f1616; public long f1617; public long f1618; public long f1619;
+ public long f1620; public long f1621; public long f1622; public long f1623;
+ public long f1624; public long f1625; public long f1626; public long f1627;
+ public long f1628; public long f1629; public long f1630; public long f1631;
+ public long f1632; public long f1633; public long f1634; public long f1635;
+ public long f1636; public long f1637; public long f1638; public long f1639;
+ public long f1640; public long f1641; public long f1642; public long f1643;
+ public long f1644; public long f1645; public long f1646; public long f1647;
+ public long f1648; public long f1649; public long f1650; public long f1651;
+ public long f1652; public long f1653; public long f1654; public long f1655;
+ public long f1656; public long f1657; public long f1658; public long f1659;
+ public long f1660; public long f1661; public long f1662; public long f1663;
+ public long f1664; public long f1665; public long f1666; public long f1667;
+ public long f1668; public long f1669; public long f1670; public long f1671;
+ public long f1672; public long f1673; public long f1674; public long f1675;
+ public long f1676; public long f1677; public long f1678; public long f1679;
+ public long f1680; public long f1681; public long f1682; public long f1683;
+ public long f1684; public long f1685; public long f1686; public long f1687;
+ public long f1688; public long f1689; public long f1690; public long f1691;
+ public long f1692; public long f1693; public long f1694; public long f1695;
+ public long f1696; public long f1697; public long f1698; public long f1699;
+ public long f1700; public long f1701; public long f1702; public long f1703;
+ public long f1704; public long f1705; public long f1706; public long f1707;
+ public long f1708; public long f1709; public long f1710; public long f1711;
+ public long f1712; public long f1713; public long f1714; public long f1715;
+ public long f1716; public long f1717; public long f1718; public long f1719;
+ public long f1720; public long f1721; public long f1722; public long f1723;
+ public long f1724; public long f1725; public long f1726; public long f1727;
+ public long f1728; public long f1729; public long f1730; public long f1731;
+ public long f1732; public long f1733; public long f1734; public long f1735;
+ public long f1736; public long f1737; public long f1738; public long f1739;
+ public long f1740; public long f1741; public long f1742; public long f1743;
+ public long f1744; public long f1745; public long f1746; public long f1747;
+ public long f1748; public long f1749; public long f1750; public long f1751;
+ public long f1752; public long f1753; public long f1754; public long f1755;
+ public long f1756; public long f1757; public long f1758; public long f1759;
+ public long f1760; public long f1761; public long f1762; public long f1763;
+ public long f1764; public long f1765; public long f1766; public long f1767;
+ public long f1768; public long f1769; public long f1770; public long f1771;
+ public long f1772; public long f1773; public long f1774; public long f1775;
+ public long f1776; public long f1777; public long f1778; public long f1779;
+ public long f1780; public long f1781; public long f1782; public long f1783;
+ public long f1784; public long f1785; public long f1786; public long f1787;
+ public long f1788; public long f1789; public long f1790; public long f1791;
+ public long f1792; public long f1793; public long f1794; public long f1795;
+ public long f1796; public long f1797; public long f1798; public long f1799;
+ public long f1800; public long f1801; public long f1802; public long f1803;
+ public long f1804; public long f1805; public long f1806; public long f1807;
+ public long f1808; public long f1809; public long f1810; public long f1811;
+ public long f1812; public long f1813; public long f1814; public long f1815;
+ public long f1816; public long f1817; public long f1818; public long f1819;
+ public long f1820; public long f1821; public long f1822; public long f1823;
+ public long f1824; public long f1825; public long f1826; public long f1827;
+ public long f1828; public long f1829; public long f1830; public long f1831;
+ public long f1832; public long f1833; public long f1834; public long f1835;
+ public long f1836; public long f1837; public long f1838; public long f1839;
+ public long f1840; public long f1841; public long f1842; public long f1843;
+ public long f1844; public long f1845; public long f1846; public long f1847;
+ public long f1848; public long f1849; public long f1850; public long f1851;
+ public long f1852; public long f1853; public long f1854; public long f1855;
+ public long f1856; public long f1857; public long f1858; public long f1859;
+ public long f1860; public long f1861; public long f1862; public long f1863;
+ public long f1864; public long f1865; public long f1866; public long f1867;
+ public long f1868; public long f1869; public long f1870; public long f1871;
+ public long f1872; public long f1873; public long f1874; public long f1875;
+ public long f1876; public long f1877; public long f1878; public long f1879;
+ public long f1880; public long f1881; public long f1882; public long f1883;
+ public long f1884; public long f1885; public long f1886; public long f1887;
+ public long f1888; public long f1889; public long f1890; public long f1891;
+ public long f1892; public long f1893; public long f1894; public long f1895;
+ public long f1896; public long f1897; public long f1898; public long f1899;
+ public long f1900; public long f1901; public long f1902; public long f1903;
+ public long f1904; public long f1905; public long f1906; public long f1907;
+ public long f1908; public long f1909; public long f1910; public long f1911;
+ public long f1912; public long f1913; public long f1914; public long f1915;
+ public long f1916; public long f1917; public long f1918; public long f1919;
+ public long f1920; public long f1921; public long f1922; public long f1923;
+ public long f1924; public long f1925; public long f1926; public long f1927;
+ public long f1928; public long f1929; public long f1930; public long f1931;
+ public long f1932; public long f1933; public long f1934; public long f1935;
+ public long f1936; public long f1937; public long f1938; public long f1939;
+ public long f1940; public long f1941; public long f1942; public long f1943;
+ public long f1944; public long f1945; public long f1946; public long f1947;
+ public long f1948; public long f1949; public long f1950; public long f1951;
+ public long f1952; public long f1953; public long f1954; public long f1955;
+ public long f1956; public long f1957; public long f1958; public long f1959;
+ public long f1960; public long f1961; public long f1962; public long f1963;
+ public long f1964; public long f1965; public long f1966; public long f1967;
+ public long f1968; public long f1969; public long f1970; public long f1971;
+ public long f1972; public long f1973; public long f1974; public long f1975;
+ public long f1976; public long f1977; public long f1978; public long f1979;
+ public long f1980; public long f1981; public long f1982; public long f1983;
+ public long f1984; public long f1985; public long f1986; public long f1987;
+ public long f1988; public long f1989; public long f1990; public long f1991;
+ public long f1992; public long f1993; public long f1994; public long f1995;
+ public long f1996; public long f1997; public long f1998; public long f1999;
+ public long f2000; public long f2001; public long f2002; public long f2003;
+ public long f2004; public long f2005; public long f2006; public long f2007;
+ public long f2008; public long f2009; public long f2010; public long f2011;
+ public long f2012; public long f2013; public long f2014; public long f2015;
+ public long f2016; public long f2017; public long f2018; public long f2019;
+ public long f2020; public long f2021; public long f2022; public long f2023;
+ public long f2024; public long f2025; public long f2026; public long f2027;
+ public long f2028; public long f2029; public long f2030; public long f2031;
+ public long f2032; public long f2033; public long f2034; public long f2035;
+ public long f2036; public long f2037; public long f2038; public long f2039;
+ public long f2040; public long f2041; public long f2042; public long f2043;
+ public long f2044; public long f2045; public long f2046; public long f2047;
+ public long f2048; public long f2049; public long f2050; public long f2051;
+ public long f2052; public long f2053; public long f2054; public long f2055;
+ public long f2056; public long f2057; public long f2058; public long f2059;
+ public long f2060; public long f2061; public long f2062; public long f2063;
+ public long f2064; public long f2065; public long f2066; public long f2067;
+ public long f2068; public long f2069; public long f2070; public long f2071;
+ public long f2072; public long f2073; public long f2074; public long f2075;
+ public long f2076; public long f2077; public long f2078; public long f2079;
+ public long f2080; public long f2081; public long f2082; public long f2083;
+ public long f2084; public long f2085; public long f2086; public long f2087;
+ public long f2088; public long f2089; public long f2090; public long f2091;
+ public long f2092; public long f2093; public long f2094; public long f2095;
+ public long f2096; public long f2097; public long f2098; public long f2099;
+ public long f2100; public long f2101; public long f2102; public long f2103;
+ public long f2104; public long f2105; public long f2106; public long f2107;
+ public long f2108; public long f2109; public long f2110; public long f2111;
+ public long f2112; public long f2113; public long f2114; public long f2115;
+ public long f2116; public long f2117; public long f2118; public long f2119;
+ public long f2120; public long f2121; public long f2122; public long f2123;
+ public long f2124; public long f2125; public long f2126; public long f2127;
+ public long f2128; public long f2129; public long f2130; public long f2131;
+ public long f2132; public long f2133; public long f2134; public long f2135;
+ public long f2136; public long f2137; public long f2138; public long f2139;
+ public long f2140; public long f2141; public long f2142; public long f2143;
+ public long f2144; public long f2145; public long f2146; public long f2147;
+ public long f2148; public long f2149; public long f2150; public long f2151;
+ public long f2152; public long f2153; public long f2154; public long f2155;
+ public long f2156; public long f2157; public long f2158; public long f2159;
+ public long f2160; public long f2161; public long f2162; public long f2163;
+ public long f2164; public long f2165; public long f2166; public long f2167;
+ public long f2168; public long f2169; public long f2170; public long f2171;
+ public long f2172; public long f2173; public long f2174; public long f2175;
+ public long f2176; public long f2177; public long f2178; public long f2179;
+ public long f2180; public long f2181; public long f2182; public long f2183;
+ public long f2184; public long f2185; public long f2186; public long f2187;
+ public long f2188; public long f2189; public long f2190; public long f2191;
+ public long f2192; public long f2193; public long f2194; public long f2195;
+ public long f2196; public long f2197; public long f2198; public long f2199;
+ public long f2200; public long f2201; public long f2202; public long f2203;
+ public long f2204; public long f2205; public long f2206; public long f2207;
+ public long f2208; public long f2209; public long f2210; public long f2211;
+ public long f2212; public long f2213; public long f2214; public long f2215;
+ public long f2216; public long f2217; public long f2218; public long f2219;
+ public long f2220; public long f2221; public long f2222; public long f2223;
+ public long f2224; public long f2225; public long f2226; public long f2227;
+ public long f2228; public long f2229; public long f2230; public long f2231;
+ public long f2232; public long f2233; public long f2234; public long f2235;
+ public long f2236; public long f2237; public long f2238; public long f2239;
+ public long f2240; public long f2241; public long f2242; public long f2243;
+ public long f2244; public long f2245; public long f2246; public long f2247;
+ public long f2248; public long f2249; public long f2250; public long f2251;
+ public long f2252; public long f2253; public long f2254; public long f2255;
+ public long f2256; public long f2257; public long f2258; public long f2259;
+ public long f2260; public long f2261; public long f2262; public long f2263;
+ public long f2264; public long f2265; public long f2266; public long f2267;
+ public long f2268; public long f2269; public long f2270; public long f2271;
+ public long f2272; public long f2273; public long f2274; public long f2275;
+ public long f2276; public long f2277; public long f2278; public long f2279;
+ public long f2280; public long f2281; public long f2282; public long f2283;
+ public long f2284; public long f2285; public long f2286; public long f2287;
+ public long f2288; public long f2289; public long f2290; public long f2291;
+ public long f2292; public long f2293; public long f2294; public long f2295;
+ public long f2296; public long f2297; public long f2298; public long f2299;
+ public long f2300; public long f2301; public long f2302; public long f2303;
+ public long f2304; public long f2305; public long f2306; public long f2307;
+ public long f2308; public long f2309; public long f2310; public long f2311;
+ public long f2312; public long f2313; public long f2314; public long f2315;
+ public long f2316; public long f2317; public long f2318; public long f2319;
+ public long f2320; public long f2321; public long f2322; public long f2323;
+ public long f2324; public long f2325; public long f2326; public long f2327;
+ public long f2328; public long f2329; public long f2330; public long f2331;
+ public long f2332; public long f2333; public long f2334; public long f2335;
+ public long f2336; public long f2337; public long f2338; public long f2339;
+ public long f2340; public long f2341; public long f2342; public long f2343;
+ public long f2344; public long f2345; public long f2346; public long f2347;
+ public long f2348; public long f2349; public long f2350; public long f2351;
+ public long f2352; public long f2353; public long f2354; public long f2355;
+ public long f2356; public long f2357; public long f2358; public long f2359;
+ public long f2360; public long f2361; public long f2362; public long f2363;
+ public long f2364; public long f2365; public long f2366; public long f2367;
+ public long f2368; public long f2369; public long f2370; public long f2371;
+ public long f2372; public long f2373; public long f2374; public long f2375;
+ public long f2376; public long f2377; public long f2378; public long f2379;
+ public long f2380; public long f2381; public long f2382; public long f2383;
+ public long f2384; public long f2385; public long f2386; public long f2387;
+ public long f2388; public long f2389; public long f2390; public long f2391;
+ public long f2392; public long f2393; public long f2394; public long f2395;
+ public long f2396; public long f2397; public long f2398; public long f2399;
+ public long f2400; public long f2401; public long f2402; public long f2403;
+ public long f2404; public long f2405; public long f2406; public long f2407;
+ public long f2408; public long f2409; public long f2410; public long f2411;
+ public long f2412; public long f2413; public long f2414; public long f2415;
+ public long f2416; public long f2417; public long f2418; public long f2419;
+ public long f2420; public long f2421; public long f2422; public long f2423;
+ public long f2424; public long f2425; public long f2426; public long f2427;
+ public long f2428; public long f2429; public long f2430; public long f2431;
+ public long f2432; public long f2433; public long f2434; public long f2435;
+ public long f2436; public long f2437; public long f2438; public long f2439;
+ public long f2440; public long f2441; public long f2442; public long f2443;
+ public long f2444; public long f2445; public long f2446; public long f2447;
+ public long f2448; public long f2449; public long f2450; public long f2451;
+ public long f2452; public long f2453; public long f2454; public long f2455;
+ public long f2456; public long f2457; public long f2458; public long f2459;
+ public long f2460; public long f2461; public long f2462; public long f2463;
+ public long f2464; public long f2465; public long f2466; public long f2467;
+ public long f2468; public long f2469; public long f2470; public long f2471;
+ public long f2472; public long f2473; public long f2474; public long f2475;
+ public long f2476; public long f2477; public long f2478; public long f2479;
+ public long f2480; public long f2481; public long f2482; public long f2483;
+ public long f2484; public long f2485; public long f2486; public long f2487;
+ public long f2488; public long f2489; public long f2490; public long f2491;
+ public long f2492; public long f2493; public long f2494; public long f2495;
+ public long f2496; public long f2497; public long f2498; public long f2499;
+ public long f2500; public long f2501; public long f2502; public long f2503;
+ public long f2504; public long f2505; public long f2506; public long f2507;
+ public long f2508; public long f2509; public long f2510; public long f2511;
+ public long f2512; public long f2513; public long f2514; public long f2515;
+ public long f2516; public long f2517; public long f2518; public long f2519;
+ public long f2520; public long f2521; public long f2522; public long f2523;
+ public long f2524; public long f2525; public long f2526; public long f2527;
+ public long f2528; public long f2529; public long f2530; public long f2531;
+ public long f2532; public long f2533; public long f2534; public long f2535;
+ public long f2536; public long f2537; public long f2538; public long f2539;
+ public long f2540; public long f2541; public long f2542; public long f2543;
+ public long f2544; public long f2545; public long f2546; public long f2547;
+ public long f2548; public long f2549; public long f2550; public long f2551;
+ public long f2552; public long f2553; public long f2554; public long f2555;
+ public long f2556; public long f2557; public long f2558; public long f2559;
+ public long f2560; public long f2561; public long f2562; public long f2563;
+ public long f2564; public long f2565; public long f2566; public long f2567;
+ public long f2568; public long f2569; public long f2570; public long f2571;
+ public long f2572; public long f2573; public long f2574; public long f2575;
+ public long f2576; public long f2577; public long f2578; public long f2579;
+ public long f2580; public long f2581; public long f2582; public long f2583;
+ public long f2584; public long f2585; public long f2586; public long f2587;
+ public long f2588; public long f2589; public long f2590; public long f2591;
+ public long f2592; public long f2593; public long f2594; public long f2595;
+ public long f2596; public long f2597; public long f2598; public long f2599;
+ public long f2600; public long f2601; public long f2602; public long f2603;
+ public long f2604; public long f2605; public long f2606; public long f2607;
+ public long f2608; public long f2609; public long f2610; public long f2611;
+ public long f2612; public long f2613; public long f2614; public long f2615;
+ public long f2616; public long f2617; public long f2618; public long f2619;
+ public long f2620; public long f2621; public long f2622; public long f2623;
+ public long f2624; public long f2625; public long f2626; public long f2627;
+ public long f2628; public long f2629; public long f2630; public long f2631;
+ public long f2632; public long f2633; public long f2634; public long f2635;
+ public long f2636; public long f2637; public long f2638; public long f2639;
+ public long f2640; public long f2641; public long f2642; public long f2643;
+ public long f2644; public long f2645; public long f2646; public long f2647;
+ public long f2648; public long f2649; public long f2650; public long f2651;
+ public long f2652; public long f2653; public long f2654; public long f2655;
+ public long f2656; public long f2657; public long f2658; public long f2659;
+ public long f2660; public long f2661; public long f2662; public long f2663;
+ public long f2664; public long f2665; public long f2666; public long f2667;
+ public long f2668; public long f2669; public long f2670; public long f2671;
+ public long f2672; public long f2673; public long f2674; public long f2675;
+ public long f2676; public long f2677; public long f2678; public long f2679;
+ public long f2680; public long f2681; public long f2682; public long f2683;
+ public long f2684; public long f2685; public long f2686; public long f2687;
+ public long f2688; public long f2689; public long f2690; public long f2691;
+ public long f2692; public long f2693; public long f2694; public long f2695;
+ public long f2696; public long f2697; public long f2698; public long f2699;
+ public long f2700; public long f2701; public long f2702; public long f2703;
+ public long f2704; public long f2705; public long f2706; public long f2707;
+ public long f2708; public long f2709; public long f2710; public long f2711;
+ public long f2712; public long f2713; public long f2714; public long f2715;
+ public long f2716; public long f2717; public long f2718; public long f2719;
+ public long f2720; public long f2721; public long f2722; public long f2723;
+ public long f2724; public long f2725; public long f2726; public long f2727;
+ public long f2728; public long f2729; public long f2730; public long f2731;
+ public long f2732; public long f2733; public long f2734; public long f2735;
+ public long f2736; public long f2737; public long f2738; public long f2739;
+ public long f2740; public long f2741; public long f2742; public long f2743;
+ public long f2744; public long f2745; public long f2746; public long f2747;
+ public long f2748; public long f2749; public long f2750; public long f2751;
+ public long f2752; public long f2753; public long f2754; public long f2755;
+ public long f2756; public long f2757; public long f2758; public long f2759;
+ public long f2760; public long f2761; public long f2762; public long f2763;
+ public long f2764; public long f2765; public long f2766; public long f2767;
+ public long f2768; public long f2769; public long f2770; public long f2771;
+ public long f2772; public long f2773; public long f2774; public long f2775;
+ public long f2776; public long f2777; public long f2778; public long f2779;
+ public long f2780; public long f2781; public long f2782; public long f2783;
+ public long f2784; public long f2785; public long f2786; public long f2787;
+ public long f2788; public long f2789; public long f2790; public long f2791;
+ public long f2792; public long f2793; public long f2794; public long f2795;
+ public long f2796; public long f2797; public long f2798; public long f2799;
+ public long f2800; public long f2801; public long f2802; public long f2803;
+ public long f2804; public long f2805; public long f2806; public long f2807;
+ public long f2808; public long f2809; public long f2810; public long f2811;
+ public long f2812; public long f2813; public long f2814; public long f2815;
+ public long f2816; public long f2817; public long f2818; public long f2819;
+ public long f2820; public long f2821; public long f2822; public long f2823;
+ public long f2824; public long f2825; public long f2826; public long f2827;
+ public long f2828; public long f2829; public long f2830; public long f2831;
+ public long f2832; public long f2833; public long f2834; public long f2835;
+ public long f2836; public long f2837; public long f2838; public long f2839;
+ public long f2840; public long f2841; public long f2842; public long f2843;
+ public long f2844; public long f2845; public long f2846; public long f2847;
+ public long f2848; public long f2849; public long f2850; public long f2851;
+ public long f2852; public long f2853; public long f2854; public long f2855;
+ public long f2856; public long f2857; public long f2858; public long f2859;
+ public long f2860; public long f2861; public long f2862; public long f2863;
+ public long f2864; public long f2865; public long f2866; public long f2867;
+ public long f2868; public long f2869; public long f2870; public long f2871;
+ public long f2872; public long f2873; public long f2874; public long f2875;
+ public long f2876; public long f2877; public long f2878; public long f2879;
+ public long f2880; public long f2881; public long f2882; public long f2883;
+ public long f2884; public long f2885; public long f2886; public long f2887;
+ public long f2888; public long f2889; public long f2890; public long f2891;
+ public long f2892; public long f2893; public long f2894; public long f2895;
+ public long f2896; public long f2897; public long f2898; public long f2899;
+ public long f2900; public long f2901; public long f2902; public long f2903;
+ public long f2904; public long f2905; public long f2906; public long f2907;
+ public long f2908; public long f2909; public long f2910; public long f2911;
+ public long f2912; public long f2913; public long f2914; public long f2915;
+ public long f2916; public long f2917; public long f2918; public long f2919;
+ public long f2920; public long f2921; public long f2922; public long f2923;
+ public long f2924; public long f2925; public long f2926; public long f2927;
+ public long f2928; public long f2929; public long f2930; public long f2931;
+ public long f2932; public long f2933; public long f2934; public long f2935;
+ public long f2936; public long f2937; public long f2938; public long f2939;
+ public long f2940; public long f2941; public long f2942; public long f2943;
+ public long f2944; public long f2945; public long f2946; public long f2947;
+ public long f2948; public long f2949; public long f2950; public long f2951;
+ public long f2952; public long f2953; public long f2954; public long f2955;
+ public long f2956; public long f2957; public long f2958; public long f2959;
+ public long f2960; public long f2961; public long f2962; public long f2963;
+ public long f2964; public long f2965; public long f2966; public long f2967;
+ public long f2968; public long f2969; public long f2970; public long f2971;
+ public long f2972; public long f2973; public long f2974; public long f2975;
+ public long f2976; public long f2977; public long f2978; public long f2979;
+ public long f2980; public long f2981; public long f2982; public long f2983;
+ public long f2984; public long f2985; public long f2986; public long f2987;
+ public long f2988; public long f2989; public long f2990; public long f2991;
+ public long f2992; public long f2993; public long f2994; public long f2995;
+ public long f2996; public long f2997; public long f2998; public long f2999;
+ public long f3000; public long f3001; public long f3002; public long f3003;
+ public long f3004; public long f3005; public long f3006; public long f3007;
+ public long f3008; public long f3009; public long f3010; public long f3011;
+ public long f3012; public long f3013; public long f3014; public long f3015;
+ public long f3016; public long f3017; public long f3018; public long f3019;
+ public long f3020; public long f3021; public long f3022; public long f3023;
+ public long f3024; public long f3025; public long f3026; public long f3027;
+ public long f3028; public long f3029; public long f3030; public long f3031;
+ public long f3032; public long f3033; public long f3034; public long f3035;
+ public long f3036; public long f3037; public long f3038; public long f3039;
+ public long f3040; public long f3041; public long f3042; public long f3043;
+ public long f3044; public long f3045; public long f3046; public long f3047;
+ public long f3048; public long f3049; public long f3050; public long f3051;
+ public long f3052; public long f3053; public long f3054; public long f3055;
+ public long f3056; public long f3057; public long f3058; public long f3059;
+ public long f3060; public long f3061; public long f3062; public long f3063;
+ public long f3064; public long f3065; public long f3066; public long f3067;
+ public long f3068; public long f3069; public long f3070; public long f3071;
+ public long f3072; public long f3073; public long f3074; public long f3075;
+ public long f3076; public long f3077; public long f3078; public long f3079;
+ public long f3080; public long f3081; public long f3082; public long f3083;
+ public long f3084; public long f3085; public long f3086; public long f3087;
+ public long f3088; public long f3089; public long f3090; public long f3091;
+ public long f3092; public long f3093; public long f3094; public long f3095;
+ public long f3096; public long f3097; public long f3098; public long f3099;
+ public long f3100; public long f3101; public long f3102; public long f3103;
+ public long f3104; public long f3105; public long f3106; public long f3107;
+ public long f3108; public long f3109; public long f3110; public long f3111;
+ public long f3112; public long f3113; public long f3114; public long f3115;
+ public long f3116; public long f3117; public long f3118; public long f3119;
+ public long f3120; public long f3121; public long f3122; public long f3123;
+ public long f3124; public long f3125; public long f3126; public long f3127;
+ public long f3128; public long f3129; public long f3130; public long f3131;
+ public long f3132; public long f3133; public long f3134; public long f3135;
+ public long f3136; public long f3137; public long f3138; public long f3139;
+ public long f3140; public long f3141; public long f3142; public long f3143;
+ public long f3144; public long f3145; public long f3146; public long f3147;
+ public long f3148; public long f3149; public long f3150; public long f3151;
+ public long f3152; public long f3153; public long f3154; public long f3155;
+ public long f3156; public long f3157; public long f3158; public long f3159;
+ public long f3160; public long f3161; public long f3162; public long f3163;
+ public long f3164; public long f3165; public long f3166; public long f3167;
+ public long f3168; public long f3169; public long f3170; public long f3171;
+ public long f3172; public long f3173; public long f3174; public long f3175;
+ public long f3176; public long f3177; public long f3178; public long f3179;
+ public long f3180; public long f3181; public long f3182; public long f3183;
+ public long f3184; public long f3185; public long f3186; public long f3187;
+ public long f3188; public long f3189; public long f3190; public long f3191;
+ public long f3192; public long f3193; public long f3194; public long f3195;
+ public long f3196; public long f3197; public long f3198; public long f3199;
+ public long f3200; public long f3201; public long f3202; public long f3203;
+ public long f3204; public long f3205; public long f3206; public long f3207;
+ public long f3208; public long f3209; public long f3210; public long f3211;
+ public long f3212; public long f3213; public long f3214; public long f3215;
+ public long f3216; public long f3217; public long f3218; public long f3219;
+ public long f3220; public long f3221; public long f3222; public long f3223;
+ public long f3224; public long f3225; public long f3226; public long f3227;
+ public long f3228; public long f3229; public long f3230; public long f3231;
+ public long f3232; public long f3233; public long f3234; public long f3235;
+ public long f3236; public long f3237; public long f3238; public long f3239;
+ public long f3240; public long f3241; public long f3242; public long f3243;
+ public long f3244; public long f3245; public long f3246; public long f3247;
+ public long f3248; public long f3249; public long f3250; public long f3251;
+ public long f3252; public long f3253; public long f3254; public long f3255;
+ public long f3256; public long f3257; public long f3258; public long f3259;
+ public long f3260; public long f3261; public long f3262; public long f3263;
+ public long f3264; public long f3265; public long f3266; public long f3267;
+ public long f3268; public long f3269; public long f3270; public long f3271;
+ public long f3272; public long f3273; public long f3274; public long f3275;
+ public long f3276; public long f3277; public long f3278; public long f3279;
+ public long f3280; public long f3281; public long f3282; public long f3283;
+ public long f3284; public long f3285; public long f3286; public long f3287;
+ public long f3288; public long f3289; public long f3290; public long f3291;
+ public long f3292; public long f3293; public long f3294; public long f3295;
+ public long f3296; public long f3297; public long f3298; public long f3299;
+ public long f3300; public long f3301; public long f3302; public long f3303;
+ public long f3304; public long f3305; public long f3306; public long f3307;
+ public long f3308; public long f3309; public long f3310; public long f3311;
+ public long f3312; public long f3313; public long f3314; public long f3315;
+ public long f3316; public long f3317; public long f3318; public long f3319;
+ public long f3320; public long f3321; public long f3322; public long f3323;
+ public long f3324; public long f3325; public long f3326; public long f3327;
+ public long f3328; public long f3329; public long f3330; public long f3331;
+ public long f3332; public long f3333; public long f3334; public long f3335;
+ public long f3336; public long f3337; public long f3338; public long f3339;
+ public long f3340; public long f3341; public long f3342; public long f3343;
+ public long f3344; public long f3345; public long f3346; public long f3347;
+ public long f3348; public long f3349; public long f3350; public long f3351;
+ public long f3352; public long f3353; public long f3354; public long f3355;
+ public long f3356; public long f3357; public long f3358; public long f3359;
+ public long f3360; public long f3361; public long f3362; public long f3363;
+ public long f3364; public long f3365; public long f3366; public long f3367;
+ public long f3368; public long f3369; public long f3370; public long f3371;
+ public long f3372; public long f3373; public long f3374; public long f3375;
+ public long f3376; public long f3377; public long f3378; public long f3379;
+ public long f3380; public long f3381; public long f3382; public long f3383;
+ public long f3384; public long f3385; public long f3386; public long f3387;
+ public long f3388; public long f3389; public long f3390; public long f3391;
+ public long f3392; public long f3393; public long f3394; public long f3395;
+ public long f3396; public long f3397; public long f3398; public long f3399;
+ public long f3400; public long f3401; public long f3402; public long f3403;
+ public long f3404; public long f3405; public long f3406; public long f3407;
+ public long f3408; public long f3409; public long f3410; public long f3411;
+ public long f3412; public long f3413; public long f3414; public long f3415;
+ public long f3416; public long f3417; public long f3418; public long f3419;
+ public long f3420; public long f3421; public long f3422; public long f3423;
+ public long f3424; public long f3425; public long f3426; public long f3427;
+ public long f3428; public long f3429; public long f3430; public long f3431;
+ public long f3432; public long f3433; public long f3434; public long f3435;
+ public long f3436; public long f3437; public long f3438; public long f3439;
+ public long f3440; public long f3441; public long f3442; public long f3443;
+ public long f3444; public long f3445; public long f3446; public long f3447;
+ public long f3448; public long f3449; public long f3450; public long f3451;
+ public long f3452; public long f3453; public long f3454; public long f3455;
+ public long f3456; public long f3457; public long f3458; public long f3459;
+ public long f3460; public long f3461; public long f3462; public long f3463;
+ public long f3464; public long f3465; public long f3466; public long f3467;
+ public long f3468; public long f3469; public long f3470; public long f3471;
+ public long f3472; public long f3473; public long f3474; public long f3475;
+ public long f3476; public long f3477; public long f3478; public long f3479;
+ public long f3480; public long f3481; public long f3482; public long f3483;
+ public long f3484; public long f3485; public long f3486; public long f3487;
+ public long f3488; public long f3489; public long f3490; public long f3491;
+ public long f3492; public long f3493; public long f3494; public long f3495;
+ public long f3496; public long f3497; public long f3498; public long f3499;
+ public long f3500; public long f3501; public long f3502; public long f3503;
+ public long f3504; public long f3505; public long f3506; public long f3507;
+ public long f3508; public long f3509; public long f3510; public long f3511;
+ public long f3512; public long f3513; public long f3514; public long f3515;
+ public long f3516; public long f3517; public long f3518; public long f3519;
+ public long f3520; public long f3521; public long f3522; public long f3523;
+ public long f3524; public long f3525; public long f3526; public long f3527;
+ public long f3528; public long f3529; public long f3530; public long f3531;
+ public long f3532; public long f3533; public long f3534; public long f3535;
+ public long f3536; public long f3537; public long f3538; public long f3539;
+ public long f3540; public long f3541; public long f3542; public long f3543;
+ public long f3544; public long f3545; public long f3546; public long f3547;
+ public long f3548; public long f3549; public long f3550; public long f3551;
+ public long f3552; public long f3553; public long f3554; public long f3555;
+ public long f3556; public long f3557; public long f3558; public long f3559;
+ public long f3560; public long f3561; public long f3562; public long f3563;
+ public long f3564; public long f3565; public long f3566; public long f3567;
+ public long f3568; public long f3569; public long f3570; public long f3571;
+ public long f3572; public long f3573; public long f3574; public long f3575;
+ public long f3576; public long f3577; public long f3578; public long f3579;
+ public long f3580; public long f3581; public long f3582; public long f3583;
+ public long f3584; public long f3585; public long f3586; public long f3587;
+ public long f3588; public long f3589; public long f3590; public long f3591;
+ public long f3592; public long f3593; public long f3594; public long f3595;
+ public long f3596; public long f3597; public long f3598; public long f3599;
+ public long f3600; public long f3601; public long f3602; public long f3603;
+ public long f3604; public long f3605; public long f3606; public long f3607;
+ public long f3608; public long f3609; public long f3610; public long f3611;
+ public long f3612; public long f3613; public long f3614; public long f3615;
+ public long f3616; public long f3617; public long f3618; public long f3619;
+ public long f3620; public long f3621; public long f3622; public long f3623;
+ public long f3624; public long f3625; public long f3626; public long f3627;
+ public long f3628; public long f3629; public long f3630; public long f3631;
+ public long f3632; public long f3633; public long f3634; public long f3635;
+ public long f3636; public long f3637; public long f3638; public long f3639;
+ public long f3640; public long f3641; public long f3642; public long f3643;
+ public long f3644; public long f3645; public long f3646; public long f3647;
+ public long f3648; public long f3649; public long f3650; public long f3651;
+ public long f3652; public long f3653; public long f3654; public long f3655;
+ public long f3656; public long f3657; public long f3658; public long f3659;
+ public long f3660; public long f3661; public long f3662; public long f3663;
+ public long f3664; public long f3665; public long f3666; public long f3667;
+ public long f3668; public long f3669; public long f3670; public long f3671;
+ public long f3672; public long f3673; public long f3674; public long f3675;
+ public long f3676; public long f3677; public long f3678; public long f3679;
+ public long f3680; public long f3681; public long f3682; public long f3683;
+ public long f3684; public long f3685; public long f3686; public long f3687;
+ public long f3688; public long f3689; public long f3690; public long f3691;
+ public long f3692; public long f3693; public long f3694; public long f3695;
+ public long f3696; public long f3697; public long f3698; public long f3699;
+ public long f3700; public long f3701; public long f3702; public long f3703;
+ public long f3704; public long f3705; public long f3706; public long f3707;
+ public long f3708; public long f3709; public long f3710; public long f3711;
+ public long f3712; public long f3713; public long f3714; public long f3715;
+ public long f3716; public long f3717; public long f3718; public long f3719;
+ public long f3720; public long f3721; public long f3722; public long f3723;
+ public long f3724; public long f3725; public long f3726; public long f3727;
+ public long f3728; public long f3729; public long f3730; public long f3731;
+ public long f3732; public long f3733; public long f3734; public long f3735;
+ public long f3736; public long f3737; public long f3738; public long f3739;
+ public long f3740; public long f3741; public long f3742; public long f3743;
+ public long f3744; public long f3745; public long f3746; public long f3747;
+ public long f3748; public long f3749; public long f3750; public long f3751;
+ public long f3752; public long f3753; public long f3754; public long f3755;
+ public long f3756; public long f3757; public long f3758; public long f3759;
+ public long f3760; public long f3761; public long f3762; public long f3763;
+ public long f3764; public long f3765; public long f3766; public long f3767;
+ public long f3768; public long f3769; public long f3770; public long f3771;
+ public long f3772; public long f3773; public long f3774; public long f3775;
+ public long f3776; public long f3777; public long f3778; public long f3779;
+ public long f3780; public long f3781; public long f3782; public long f3783;
+ public long f3784; public long f3785; public long f3786; public long f3787;
+ public long f3788; public long f3789; public long f3790; public long f3791;
+ public long f3792; public long f3793; public long f3794; public long f3795;
+ public long f3796; public long f3797; public long f3798; public long f3799;
+ public long f3800; public long f3801; public long f3802; public long f3803;
+ public long f3804; public long f3805; public long f3806; public long f3807;
+ public long f3808; public long f3809; public long f3810; public long f3811;
+ public long f3812; public long f3813; public long f3814; public long f3815;
+ public long f3816; public long f3817; public long f3818; public long f3819;
+ public long f3820; public long f3821; public long f3822; public long f3823;
+ public long f3824; public long f3825; public long f3826; public long f3827;
+ public long f3828; public long f3829; public long f3830; public long f3831;
+ public long f3832; public long f3833; public long f3834; public long f3835;
+ public long f3836; public long f3837; public long f3838; public long f3839;
+ public long f3840; public long f3841; public long f3842; public long f3843;
+ public long f3844; public long f3845; public long f3846; public long f3847;
+ public long f3848; public long f3849; public long f3850; public long f3851;
+ public long f3852; public long f3853; public long f3854; public long f3855;
+ public long f3856; public long f3857; public long f3858; public long f3859;
+ public long f3860; public long f3861; public long f3862; public long f3863;
+ public long f3864; public long f3865; public long f3866; public long f3867;
+ public long f3868; public long f3869; public long f3870; public long f3871;
+ public long f3872; public long f3873; public long f3874; public long f3875;
+ public long f3876; public long f3877; public long f3878; public long f3879;
+ public long f3880; public long f3881; public long f3882; public long f3883;
+ public long f3884; public long f3885; public long f3886; public long f3887;
+ public long f3888; public long f3889; public long f3890; public long f3891;
+ public long f3892; public long f3893; public long f3894; public long f3895;
+ public long f3896; public long f3897; public long f3898; public long f3899;
+ public long f3900; public long f3901; public long f3902; public long f3903;
+ public long f3904; public long f3905; public long f3906; public long f3907;
+ public long f3908; public long f3909; public long f3910; public long f3911;
+ public long f3912; public long f3913; public long f3914; public long f3915;
+ public long f3916; public long f3917; public long f3918; public long f3919;
+ public long f3920; public long f3921; public long f3922; public long f3923;
+ public long f3924; public long f3925; public long f3926; public long f3927;
+ public long f3928; public long f3929; public long f3930; public long f3931;
+ public long f3932; public long f3933; public long f3934; public long f3935;
+ public long f3936; public long f3937; public long f3938; public long f3939;
+ public long f3940; public long f3941; public long f3942; public long f3943;
+ public long f3944; public long f3945; public long f3946; public long f3947;
+ public long f3948; public long f3949; public long f3950; public long f3951;
+ public long f3952; public long f3953; public long f3954; public long f3955;
+ public long f3956; public long f3957; public long f3958; public long f3959;
+ public long f3960; public long f3961; public long f3962; public long f3963;
+ public long f3964; public long f3965; public long f3966; public long f3967;
+ public long f3968; public long f3969; public long f3970; public long f3971;
+ public long f3972; public long f3973; public long f3974; public long f3975;
+ public long f3976; public long f3977; public long f3978; public long f3979;
+ public long f3980; public long f3981; public long f3982; public long f3983;
+ public long f3984; public long f3985; public long f3986; public long f3987;
+ public long f3988; public long f3989; public long f3990; public long f3991;
+ public long f3992; public long f3993; public long f3994; public long f3995;
+ public long f3996; public long f3997; public long f3998; public long f3999;
+ public long f4000; public long f4001; public long f4002; public long f4003;
+ public long f4004; public long f4005; public long f4006; public long f4007;
+ public long f4008; public long f4009; public long f4010; public long f4011;
+ public long f4012; public long f4013; public long f4014; public long f4015;
+ public long f4016; public long f4017; public long f4018; public long f4019;
+ public long f4020; public long f4021; public long f4022; public long f4023;
+ public long f4024; public long f4025; public long f4026; public long f4027;
+ public long f4028; public long f4029; public long f4030; public long f4031;
+ public long f4032; public long f4033; public long f4034; public long f4035;
+ public long f4036; public long f4037; public long f4038; public long f4039;
+ public long f4040; public long f4041; public long f4042; public long f4043;
+ public long f4044; public long f4045; public long f4046; public long f4047;
+ public long f4048; public long f4049; public long f4050; public long f4051;
+ public long f4052; public long f4053; public long f4054; public long f4055;
+ public long f4056; public long f4057; public long f4058; public long f4059;
+ public long f4060; public long f4061; public long f4062; public long f4063;
+ public long f4064; public long f4065; public long f4066; public long f4067;
+ public long f4068; public long f4069; public long f4070; public long f4071;
+ public long f4072; public long f4073; public long f4074; public long f4075;
+ public long f4076; public long f4077; public long f4078; public long f4079;
+ public long f4080; public long f4081; public long f4082; public long f4083;
+ public long f4084; public long f4085; public long f4086; public long f4087;
+ public long f4088; public long f4089; public long f4090; public long f4091;
+ public long f4092; public long f4093; public long f4094; public long f4095;
+ public long f4096; public long f4097; public long f4098; public long f4099;
+ public long f4100; public long f4101; public long f4102; public long f4103;
+ public long f4104; public long f4105; public long f4106; public long f4107;
+ public long f4108; public long f4109; public long f4110; public long f4111;
+ public long f4112; public long f4113; public long f4114; public long f4115;
+ public long f4116; public long f4117; public long f4118; public long f4119;
+ public long f4120; public long f4121; public long f4122; public long f4123;
+ public long f4124; public long f4125; public long f4126; public long f4127;
+ public long f4128; public long f4129; public long f4130; public long f4131;
+ public long f4132; public long f4133; public long f4134; public long f4135;
+ public long f4136; public long f4137; public long f4138; public long f4139;
+ public long f4140; public long f4141; public long f4142; public long f4143;
+ public long f4144; public long f4145; public long f4146; public long f4147;
+ public long f4148; public long f4149; public long f4150; public long f4151;
+ public long f4152; public long f4153; public long f4154; public long f4155;
+ public long f4156; public long f4157; public long f4158; public long f4159;
+ public long f4160; public long f4161; public long f4162; public long f4163;
+ public long f4164; public long f4165; public long f4166; public long f4167;
+ public long f4168; public long f4169; public long f4170; public long f4171;
+ public long f4172; public long f4173; public long f4174; public long f4175;
+ public long f4176; public long f4177; public long f4178; public long f4179;
+ public long f4180; public long f4181; public long f4182; public long f4183;
+ public long f4184; public long f4185; public long f4186; public long f4187;
+ public long f4188; public long f4189; public long f4190; public long f4191;
+ public long f4192; public long f4193; public long f4194; public long f4195;
+ public long f4196; public long f4197; public long f4198; public long f4199;
+ public long f4200; public long f4201; public long f4202; public long f4203;
+ public long f4204; public long f4205; public long f4206; public long f4207;
+ public long f4208; public long f4209; public long f4210; public long f4211;
+ public long f4212; public long f4213; public long f4214; public long f4215;
+ public long f4216; public long f4217; public long f4218; public long f4219;
+ public long f4220; public long f4221; public long f4222; public long f4223;
+ public long f4224; public long f4225; public long f4226; public long f4227;
+ public long f4228; public long f4229; public long f4230; public long f4231;
+ public long f4232; public long f4233; public long f4234; public long f4235;
+ public long f4236; public long f4237; public long f4238; public long f4239;
+ public long f4240; public long f4241; public long f4242; public long f4243;
+ public long f4244; public long f4245; public long f4246; public long f4247;
+ public long f4248; public long f4249; public long f4250; public long f4251;
+ public long f4252; public long f4253; public long f4254; public long f4255;
+ public long f4256; public long f4257; public long f4258; public long f4259;
+ public long f4260; public long f4261; public long f4262; public long f4263;
+ public long f4264; public long f4265; public long f4266; public long f4267;
+ public long f4268; public long f4269; public long f4270; public long f4271;
+ public long f4272; public long f4273; public long f4274; public long f4275;
+ public long f4276; public long f4277; public long f4278; public long f4279;
+ public long f4280; public long f4281; public long f4282; public long f4283;
+ public long f4284; public long f4285; public long f4286; public long f4287;
+ public long f4288; public long f4289; public long f4290; public long f4291;
+ public long f4292; public long f4293; public long f4294; public long f4295;
+ public long f4296; public long f4297; public long f4298; public long f4299;
+ public long f4300; public long f4301; public long f4302; public long f4303;
+ public long f4304; public long f4305; public long f4306; public long f4307;
+ public long f4308; public long f4309; public long f4310; public long f4311;
+ public long f4312; public long f4313; public long f4314; public long f4315;
+ public long f4316; public long f4317; public long f4318; public long f4319;
+ public long f4320; public long f4321; public long f4322; public long f4323;
+ public long f4324; public long f4325; public long f4326; public long f4327;
+ public long f4328; public long f4329; public long f4330; public long f4331;
+ public long f4332; public long f4333; public long f4334; public long f4335;
+ public long f4336; public long f4337; public long f4338; public long f4339;
+ public long f4340; public long f4341; public long f4342; public long f4343;
+ public long f4344; public long f4345; public long f4346; public long f4347;
+ public long f4348; public long f4349; public long f4350; public long f4351;
+ public long f4352; public long f4353; public long f4354; public long f4355;
+ public long f4356; public long f4357; public long f4358; public long f4359;
+ public long f4360; public long f4361; public long f4362; public long f4363;
+ public long f4364; public long f4365; public long f4366; public long f4367;
+ public long f4368; public long f4369; public long f4370; public long f4371;
+ public long f4372; public long f4373; public long f4374; public long f4375;
+ public long f4376; public long f4377; public long f4378; public long f4379;
+ public long f4380; public long f4381; public long f4382; public long f4383;
+ public long f4384; public long f4385; public long f4386; public long f4387;
+ public long f4388; public long f4389; public long f4390; public long f4391;
+ public long f4392; public long f4393; public long f4394; public long f4395;
+ public long f4396; public long f4397; public long f4398; public long f4399;
+ public long f4400; public long f4401; public long f4402; public long f4403;
+ public long f4404; public long f4405; public long f4406; public long f4407;
+ public long f4408; public long f4409; public long f4410; public long f4411;
+ public long f4412; public long f4413; public long f4414; public long f4415;
+ public long f4416; public long f4417; public long f4418; public long f4419;
+ public long f4420; public long f4421; public long f4422; public long f4423;
+ public long f4424; public long f4425; public long f4426; public long f4427;
+ public long f4428; public long f4429; public long f4430; public long f4431;
+ public long f4432; public long f4433; public long f4434; public long f4435;
+ public long f4436; public long f4437; public long f4438; public long f4439;
+ public long f4440; public long f4441; public long f4442; public long f4443;
+ public long f4444; public long f4445; public long f4446; public long f4447;
+ public long f4448; public long f4449; public long f4450; public long f4451;
+ public long f4452; public long f4453; public long f4454; public long f4455;
+ public long f4456; public long f4457; public long f4458; public long f4459;
+ public long f4460; public long f4461; public long f4462; public long f4463;
+ public long f4464; public long f4465; public long f4466; public long f4467;
+ public long f4468; public long f4469; public long f4470; public long f4471;
+ public long f4472; public long f4473; public long f4474; public long f4475;
+ public long f4476; public long f4477; public long f4478; public long f4479;
+ public long f4480; public long f4481; public long f4482; public long f4483;
+ public long f4484; public long f4485; public long f4486; public long f4487;
+ public long f4488; public long f4489; public long f4490; public long f4491;
+ public long f4492; public long f4493; public long f4494; public long f4495;
+ public long f4496; public long f4497; public long f4498; public long f4499;
+ public long f4500; public long f4501; public long f4502; public long f4503;
+ public long f4504; public long f4505; public long f4506; public long f4507;
+ public long f4508; public long f4509; public long f4510; public long f4511;
+ public long f4512; public long f4513; public long f4514; public long f4515;
+ public long f4516; public long f4517; public long f4518; public long f4519;
+ public long f4520; public long f4521; public long f4522; public long f4523;
+ public long f4524; public long f4525; public long f4526; public long f4527;
+ public long f4528; public long f4529; public long f4530; public long f4531;
+ public long f4532; public long f4533; public long f4534; public long f4535;
+ public long f4536; public long f4537; public long f4538; public long f4539;
+ public long f4540; public long f4541; public long f4542; public long f4543;
+ public long f4544; public long f4545; public long f4546; public long f4547;
+ public long f4548; public long f4549; public long f4550; public long f4551;
+ public long f4552; public long f4553; public long f4554; public long f4555;
+ public long f4556; public long f4557; public long f4558; public long f4559;
+ public long f4560; public long f4561; public long f4562; public long f4563;
+ public long f4564; public long f4565; public long f4566; public long f4567;
+ public long f4568; public long f4569; public long f4570; public long f4571;
+ public long f4572; public long f4573; public long f4574; public long f4575;
+ public long f4576; public long f4577; public long f4578; public long f4579;
+ public long f4580; public long f4581; public long f4582; public long f4583;
+ public long f4584; public long f4585; public long f4586; public long f4587;
+ public long f4588; public long f4589; public long f4590; public long f4591;
+ public long f4592; public long f4593; public long f4594; public long f4595;
+ public long f4596; public long f4597; public long f4598; public long f4599;
+ public long f4600; public long f4601; public long f4602; public long f4603;
+ public long f4604; public long f4605; public long f4606; public long f4607;
+ public long f4608; public long f4609; public long f4610; public long f4611;
+ public long f4612; public long f4613; public long f4614; public long f4615;
+ public long f4616; public long f4617; public long f4618; public long f4619;
+ public long f4620; public long f4621; public long f4622; public long f4623;
+ public long f4624; public long f4625; public long f4626; public long f4627;
+ public long f4628; public long f4629; public long f4630; public long f4631;
+ public long f4632; public long f4633; public long f4634; public long f4635;
+ public long f4636; public long f4637; public long f4638; public long f4639;
+ public long f4640; public long f4641; public long f4642; public long f4643;
+ public long f4644; public long f4645; public long f4646; public long f4647;
+ public long f4648; public long f4649; public long f4650; public long f4651;
+ public long f4652; public long f4653; public long f4654; public long f4655;
+ public long f4656; public long f4657; public long f4658; public long f4659;
+ public long f4660; public long f4661; public long f4662; public long f4663;
+ public long f4664; public long f4665; public long f4666; public long f4667;
+ public long f4668; public long f4669; public long f4670; public long f4671;
+ public long f4672; public long f4673; public long f4674; public long f4675;
+ public long f4676; public long f4677; public long f4678; public long f4679;
+ public long f4680; public long f4681; public long f4682; public long f4683;
+ public long f4684; public long f4685; public long f4686; public long f4687;
+ public long f4688; public long f4689; public long f4690; public long f4691;
+ public long f4692; public long f4693; public long f4694; public long f4695;
+ public long f4696; public long f4697; public long f4698; public long f4699;
+ public long f4700; public long f4701; public long f4702; public long f4703;
+ public long f4704; public long f4705; public long f4706; public long f4707;
+ public long f4708; public long f4709; public long f4710; public long f4711;
+ public long f4712; public long f4713; public long f4714; public long f4715;
+ public long f4716; public long f4717; public long f4718; public long f4719;
+ public long f4720; public long f4721; public long f4722; public long f4723;
+ public long f4724; public long f4725; public long f4726; public long f4727;
+ public long f4728; public long f4729; public long f4730; public long f4731;
+ public long f4732; public long f4733; public long f4734; public long f4735;
+ public long f4736; public long f4737; public long f4738; public long f4739;
+ public long f4740; public long f4741; public long f4742; public long f4743;
+ public long f4744; public long f4745; public long f4746; public long f4747;
+ public long f4748; public long f4749; public long f4750; public long f4751;
+ public long f4752; public long f4753; public long f4754; public long f4755;
+ public long f4756; public long f4757; public long f4758; public long f4759;
+ public long f4760; public long f4761; public long f4762; public long f4763;
+ public long f4764; public long f4765; public long f4766; public long f4767;
+ public long f4768; public long f4769; public long f4770; public long f4771;
+ public long f4772; public long f4773; public long f4774; public long f4775;
+ public long f4776; public long f4777; public long f4778; public long f4779;
+ public long f4780; public long f4781; public long f4782; public long f4783;
+ public long f4784; public long f4785; public long f4786; public long f4787;
+ public long f4788; public long f4789; public long f4790; public long f4791;
+ public long f4792; public long f4793; public long f4794; public long f4795;
+ public long f4796; public long f4797; public long f4798; public long f4799;
+ public long f4800; public long f4801; public long f4802; public long f4803;
+ public long f4804; public long f4805; public long f4806; public long f4807;
+ public long f4808; public long f4809; public long f4810; public long f4811;
+ public long f4812; public long f4813; public long f4814; public long f4815;
+ public long f4816; public long f4817; public long f4818; public long f4819;
+ public long f4820; public long f4821; public long f4822; public long f4823;
+ public long f4824; public long f4825; public long f4826; public long f4827;
+ public long f4828; public long f4829; public long f4830; public long f4831;
+ public long f4832; public long f4833; public long f4834; public long f4835;
+ public long f4836; public long f4837; public long f4838; public long f4839;
+ public long f4840; public long f4841; public long f4842; public long f4843;
+ public long f4844; public long f4845; public long f4846; public long f4847;
+ public long f4848; public long f4849; public long f4850; public long f4851;
+ public long f4852; public long f4853; public long f4854; public long f4855;
+ public long f4856; public long f4857; public long f4858; public long f4859;
+ public long f4860; public long f4861; public long f4862; public long f4863;
+ public long f4864; public long f4865; public long f4866; public long f4867;
+ public long f4868; public long f4869; public long f4870; public long f4871;
+ public long f4872; public long f4873; public long f4874; public long f4875;
+ public long f4876; public long f4877; public long f4878; public long f4879;
+ public long f4880; public long f4881; public long f4882; public long f4883;
+ public long f4884; public long f4885; public long f4886; public long f4887;
+ public long f4888; public long f4889; public long f4890; public long f4891;
+ public long f4892; public long f4893; public long f4894; public long f4895;
+ public long f4896; public long f4897; public long f4898; public long f4899;
+ public long f4900; public long f4901; public long f4902; public long f4903;
+ public long f4904; public long f4905; public long f4906; public long f4907;
+ public long f4908; public long f4909; public long f4910; public long f4911;
+ public long f4912; public long f4913; public long f4914; public long f4915;
+ public long f4916; public long f4917; public long f4918; public long f4919;
+ public long f4920; public long f4921; public long f4922; public long f4923;
+ public long f4924; public long f4925; public long f4926; public long f4927;
+ public long f4928; public long f4929; public long f4930; public long f4931;
+ public long f4932; public long f4933; public long f4934; public long f4935;
+ public long f4936; public long f4937; public long f4938; public long f4939;
+ public long f4940; public long f4941; public long f4942; public long f4943;
+ public long f4944; public long f4945; public long f4946; public long f4947;
+ public long f4948; public long f4949; public long f4950; public long f4951;
+ public long f4952; public long f4953; public long f4954; public long f4955;
+ public long f4956; public long f4957; public long f4958; public long f4959;
+ public long f4960; public long f4961; public long f4962; public long f4963;
+ public long f4964; public long f4965; public long f4966; public long f4967;
+ public long f4968; public long f4969; public long f4970; public long f4971;
+ public long f4972; public long f4973; public long f4974; public long f4975;
+ public long f4976; public long f4977; public long f4978; public long f4979;
+ public long f4980; public long f4981; public long f4982; public long f4983;
+ public long f4984; public long f4985; public long f4986; public long f4987;
+ public long f4988; public long f4989; public long f4990; public long f4991;
+ public long f4992; public long f4993; public long f4994; public long f4995;
+ public long f4996; public long f4997; public long f4998; public long f4999;
+ public long f5000; public long f5001; public long f5002; public long f5003;
+ public long f5004; public long f5005; public long f5006; public long f5007;
+ public long f5008; public long f5009; public long f5010; public long f5011;
+ public long f5012; public long f5013; public long f5014; public long f5015;
+ public long f5016; public long f5017; public long f5018; public long f5019;
+ public long f5020; public long f5021; public long f5022; public long f5023;
+ public long f5024; public long f5025; public long f5026; public long f5027;
+ public long f5028; public long f5029; public long f5030; public long f5031;
+ public long f5032; public long f5033; public long f5034; public long f5035;
+ public long f5036; public long f5037; public long f5038; public long f5039;
+ public long f5040; public long f5041; public long f5042; public long f5043;
+ public long f5044; public long f5045; public long f5046; public long f5047;
+ public long f5048; public long f5049; public long f5050; public long f5051;
+ public long f5052; public long f5053; public long f5054; public long f5055;
+ public long f5056; public long f5057; public long f5058; public long f5059;
+ public long f5060; public long f5061; public long f5062; public long f5063;
+ public long f5064; public long f5065; public long f5066; public long f5067;
+ public long f5068; public long f5069; public long f5070; public long f5071;
+ public long f5072; public long f5073; public long f5074; public long f5075;
+ public long f5076; public long f5077; public long f5078; public long f5079;
+ public long f5080; public long f5081; public long f5082; public long f5083;
+ public long f5084; public long f5085; public long f5086; public long f5087;
+ public long f5088; public long f5089; public long f5090; public long f5091;
+ public long f5092; public long f5093; public long f5094; public long f5095;
+ public long f5096; public long f5097; public long f5098; public long f5099;
+ public long f5100; public long f5101; public long f5102; public long f5103;
+ public long f5104; public long f5105; public long f5106; public long f5107;
+ public long f5108; public long f5109; public long f5110; public long f5111;
+ public long f5112; public long f5113; public long f5114; public long f5115;
+ public long f5116; public long f5117; public long f5118; public long f5119;
+ public long f5120; public long f5121; public long f5122; public long f5123;
+ public long f5124; public long f5125; public long f5126; public long f5127;
+ public long f5128; public long f5129; public long f5130; public long f5131;
+ public long f5132; public long f5133; public long f5134; public long f5135;
+ public long f5136; public long f5137; public long f5138; public long f5139;
+ public long f5140; public long f5141; public long f5142; public long f5143;
+ public long f5144; public long f5145; public long f5146; public long f5147;
+ public long f5148; public long f5149; public long f5150; public long f5151;
+ public long f5152; public long f5153; public long f5154; public long f5155;
+ public long f5156; public long f5157; public long f5158; public long f5159;
+ public long f5160; public long f5161; public long f5162; public long f5163;
+ public long f5164; public long f5165; public long f5166; public long f5167;
+ public long f5168; public long f5169; public long f5170; public long f5171;
+ public long f5172; public long f5173; public long f5174; public long f5175;
+ public long f5176; public long f5177; public long f5178; public long f5179;
+ public long f5180; public long f5181; public long f5182; public long f5183;
+ public long f5184; public long f5185; public long f5186; public long f5187;
+ public long f5188; public long f5189; public long f5190; public long f5191;
+ public long f5192; public long f5193; public long f5194; public long f5195;
+ public long f5196; public long f5197; public long f5198; public long f5199;
+ public long f5200; public long f5201; public long f5202; public long f5203;
+ public long f5204; public long f5205; public long f5206; public long f5207;
+ public long f5208; public long f5209; public long f5210; public long f5211;
+ public long f5212; public long f5213; public long f5214; public long f5215;
+ public long f5216; public long f5217; public long f5218; public long f5219;
+ public long f5220; public long f5221; public long f5222; public long f5223;
+ public long f5224; public long f5225; public long f5226; public long f5227;
+ public long f5228; public long f5229; public long f5230; public long f5231;
+ public long f5232; public long f5233; public long f5234; public long f5235;
+ public long f5236; public long f5237; public long f5238; public long f5239;
+ public long f5240; public long f5241; public long f5242; public long f5243;
+ public long f5244; public long f5245; public long f5246; public long f5247;
+ public long f5248; public long f5249; public long f5250; public long f5251;
+ public long f5252; public long f5253; public long f5254; public long f5255;
+ public long f5256; public long f5257; public long f5258; public long f5259;
+ public long f5260; public long f5261; public long f5262; public long f5263;
+ public long f5264; public long f5265; public long f5266; public long f5267;
+ public long f5268; public long f5269; public long f5270; public long f5271;
+ public long f5272; public long f5273; public long f5274; public long f5275;
+ public long f5276; public long f5277; public long f5278; public long f5279;
+ public long f5280; public long f5281; public long f5282; public long f5283;
+ public long f5284; public long f5285; public long f5286; public long f5287;
+ public long f5288; public long f5289; public long f5290; public long f5291;
+ public long f5292; public long f5293; public long f5294; public long f5295;
+ public long f5296; public long f5297; public long f5298; public long f5299;
+ public long f5300; public long f5301; public long f5302; public long f5303;
+ public long f5304; public long f5305; public long f5306; public long f5307;
+ public long f5308; public long f5309; public long f5310; public long f5311;
+ public long f5312; public long f5313; public long f5314; public long f5315;
+ public long f5316; public long f5317; public long f5318; public long f5319;
+ public long f5320; public long f5321; public long f5322; public long f5323;
+ public long f5324; public long f5325; public long f5326; public long f5327;
+ public long f5328; public long f5329; public long f5330; public long f5331;
+ public long f5332; public long f5333; public long f5334; public long f5335;
+ public long f5336; public long f5337; public long f5338; public long f5339;
+ public long f5340; public long f5341; public long f5342; public long f5343;
+ public long f5344; public long f5345; public long f5346; public long f5347;
+ public long f5348; public long f5349; public long f5350; public long f5351;
+ public long f5352; public long f5353; public long f5354; public long f5355;
+ public long f5356; public long f5357; public long f5358; public long f5359;
+ public long f5360; public long f5361; public long f5362; public long f5363;
+ public long f5364; public long f5365; public long f5366; public long f5367;
+ public long f5368; public long f5369; public long f5370; public long f5371;
+ public long f5372; public long f5373; public long f5374; public long f5375;
+ public long f5376; public long f5377; public long f5378; public long f5379;
+ public long f5380; public long f5381; public long f5382; public long f5383;
+ public long f5384; public long f5385; public long f5386; public long f5387;
+ public long f5388; public long f5389; public long f5390; public long f5391;
+ public long f5392; public long f5393; public long f5394; public long f5395;
+ public long f5396; public long f5397; public long f5398; public long f5399;
+ public long f5400; public long f5401; public long f5402; public long f5403;
+ public long f5404; public long f5405; public long f5406; public long f5407;
+ public long f5408; public long f5409; public long f5410; public long f5411;
+ public long f5412; public long f5413; public long f5414; public long f5415;
+ public long f5416; public long f5417; public long f5418; public long f5419;
+ public long f5420; public long f5421; public long f5422; public long f5423;
+ public long f5424; public long f5425; public long f5426; public long f5427;
+ public long f5428; public long f5429; public long f5430; public long f5431;
+ public long f5432; public long f5433; public long f5434; public long f5435;
+ public long f5436; public long f5437; public long f5438; public long f5439;
+ public long f5440; public long f5441; public long f5442; public long f5443;
+ public long f5444; public long f5445; public long f5446; public long f5447;
+ public long f5448; public long f5449; public long f5450; public long f5451;
+ public long f5452; public long f5453; public long f5454; public long f5455;
+ public long f5456; public long f5457; public long f5458; public long f5459;
+ public long f5460; public long f5461; public long f5462; public long f5463;
+ public long f5464; public long f5465; public long f5466; public long f5467;
+ public long f5468; public long f5469; public long f5470; public long f5471;
+ public long f5472; public long f5473; public long f5474; public long f5475;
+ public long f5476; public long f5477; public long f5478; public long f5479;
+ public long f5480; public long f5481; public long f5482; public long f5483;
+ public long f5484; public long f5485; public long f5486; public long f5487;
+ public long f5488; public long f5489; public long f5490; public long f5491;
+ public long f5492; public long f5493; public long f5494; public long f5495;
+ public long f5496; public long f5497; public long f5498; public long f5499;
+ public long f5500; public long f5501; public long f5502; public long f5503;
+ public long f5504; public long f5505; public long f5506; public long f5507;
+ public long f5508; public long f5509; public long f5510; public long f5511;
+ public long f5512; public long f5513; public long f5514; public long f5515;
+ public long f5516; public long f5517; public long f5518; public long f5519;
+ public long f5520; public long f5521; public long f5522; public long f5523;
+ public long f5524; public long f5525; public long f5526; public long f5527;
+ public long f5528; public long f5529; public long f5530; public long f5531;
+ public long f5532; public long f5533; public long f5534; public long f5535;
+ public long f5536; public long f5537; public long f5538; public long f5539;
+ public long f5540; public long f5541; public long f5542; public long f5543;
+ public long f5544; public long f5545; public long f5546; public long f5547;
+ public long f5548; public long f5549; public long f5550; public long f5551;
+ public long f5552; public long f5553; public long f5554; public long f5555;
+ public long f5556; public long f5557; public long f5558; public long f5559;
+ public long f5560; public long f5561; public long f5562; public long f5563;
+ public long f5564; public long f5565; public long f5566; public long f5567;
+ public long f5568; public long f5569; public long f5570; public long f5571;
+ public long f5572; public long f5573; public long f5574; public long f5575;
+ public long f5576; public long f5577; public long f5578; public long f5579;
+ public long f5580; public long f5581; public long f5582; public long f5583;
+ public long f5584; public long f5585; public long f5586; public long f5587;
+ public long f5588; public long f5589; public long f5590; public long f5591;
+ public long f5592; public long f5593; public long f5594; public long f5595;
+ public long f5596; public long f5597; public long f5598; public long f5599;
+ public long f5600; public long f5601; public long f5602; public long f5603;
+ public long f5604; public long f5605; public long f5606; public long f5607;
+ public long f5608; public long f5609; public long f5610; public long f5611;
+ public long f5612; public long f5613; public long f5614; public long f5615;
+ public long f5616; public long f5617; public long f5618; public long f5619;
+ public long f5620; public long f5621; public long f5622; public long f5623;
+ public long f5624; public long f5625; public long f5626; public long f5627;
+ public long f5628; public long f5629; public long f5630; public long f5631;
+ public long f5632; public long f5633; public long f5634; public long f5635;
+ public long f5636; public long f5637; public long f5638; public long f5639;
+ public long f5640; public long f5641; public long f5642; public long f5643;
+ public long f5644; public long f5645; public long f5646; public long f5647;
+ public long f5648; public long f5649; public long f5650; public long f5651;
+ public long f5652; public long f5653; public long f5654; public long f5655;
+ public long f5656; public long f5657; public long f5658; public long f5659;
+ public long f5660; public long f5661; public long f5662; public long f5663;
+ public long f5664; public long f5665; public long f5666; public long f5667;
+ public long f5668; public long f5669; public long f5670; public long f5671;
+ public long f5672; public long f5673; public long f5674; public long f5675;
+ public long f5676; public long f5677; public long f5678; public long f5679;
+ public long f5680; public long f5681; public long f5682; public long f5683;
+ public long f5684; public long f5685; public long f5686; public long f5687;
+ public long f5688; public long f5689; public long f5690; public long f5691;
+ public long f5692; public long f5693; public long f5694; public long f5695;
+ public long f5696; public long f5697; public long f5698; public long f5699;
+ public long f5700; public long f5701; public long f5702; public long f5703;
+ public long f5704; public long f5705; public long f5706; public long f5707;
+ public long f5708; public long f5709; public long f5710; public long f5711;
+ public long f5712; public long f5713; public long f5714; public long f5715;
+ public long f5716; public long f5717; public long f5718; public long f5719;
+ public long f5720; public long f5721; public long f5722; public long f5723;
+ public long f5724; public long f5725; public long f5726; public long f5727;
+ public long f5728; public long f5729; public long f5730; public long f5731;
+ public long f5732; public long f5733; public long f5734; public long f5735;
+ public long f5736; public long f5737; public long f5738; public long f5739;
+ public long f5740; public long f5741; public long f5742; public long f5743;
+ public long f5744; public long f5745; public long f5746; public long f5747;
+ public long f5748; public long f5749; public long f5750; public long f5751;
+ public long f5752; public long f5753; public long f5754; public long f5755;
+ public long f5756; public long f5757; public long f5758; public long f5759;
+ public long f5760; public long f5761; public long f5762; public long f5763;
+ public long f5764; public long f5765; public long f5766; public long f5767;
+ public long f5768; public long f5769; public long f5770; public long f5771;
+ public long f5772; public long f5773; public long f5774; public long f5775;
+ public long f5776; public long f5777; public long f5778; public long f5779;
+ public long f5780; public long f5781; public long f5782; public long f5783;
+ public long f5784; public long f5785; public long f5786; public long f5787;
+ public long f5788; public long f5789; public long f5790; public long f5791;
+ public long f5792; public long f5793; public long f5794; public long f5795;
+ public long f5796; public long f5797; public long f5798; public long f5799;
+ public long f5800; public long f5801; public long f5802; public long f5803;
+ public long f5804; public long f5805; public long f5806; public long f5807;
+ public long f5808; public long f5809; public long f5810; public long f5811;
+ public long f5812; public long f5813; public long f5814; public long f5815;
+ public long f5816; public long f5817; public long f5818; public long f5819;
+ public long f5820; public long f5821; public long f5822; public long f5823;
+ public long f5824; public long f5825; public long f5826; public long f5827;
+ public long f5828; public long f5829; public long f5830; public long f5831;
+ public long f5832; public long f5833; public long f5834; public long f5835;
+ public long f5836; public long f5837; public long f5838; public long f5839;
+ public long f5840; public long f5841; public long f5842; public long f5843;
+ public long f5844; public long f5845; public long f5846; public long f5847;
+ public long f5848; public long f5849; public long f5850; public long f5851;
+ public long f5852; public long f5853; public long f5854; public long f5855;
+ public long f5856; public long f5857; public long f5858; public long f5859;
+ public long f5860; public long f5861; public long f5862; public long f5863;
+ public long f5864; public long f5865; public long f5866; public long f5867;
+ public long f5868; public long f5869; public long f5870; public long f5871;
+ public long f5872; public long f5873; public long f5874; public long f5875;
+ public long f5876; public long f5877; public long f5878; public long f5879;
+ public long f5880; public long f5881; public long f5882; public long f5883;
+ public long f5884; public long f5885; public long f5886; public long f5887;
+ public long f5888; public long f5889; public long f5890; public long f5891;
+ public long f5892; public long f5893; public long f5894; public long f5895;
+ public long f5896; public long f5897; public long f5898; public long f5899;
+ public long f5900; public long f5901; public long f5902; public long f5903;
+ public long f5904; public long f5905; public long f5906; public long f5907;
+ public long f5908; public long f5909; public long f5910; public long f5911;
+ public long f5912; public long f5913; public long f5914; public long f5915;
+ public long f5916; public long f5917; public long f5918; public long f5919;
+ public long f5920; public long f5921; public long f5922; public long f5923;
+ public long f5924; public long f5925; public long f5926; public long f5927;
+ public long f5928; public long f5929; public long f5930; public long f5931;
+ public long f5932; public long f5933; public long f5934; public long f5935;
+ public long f5936; public long f5937; public long f5938; public long f5939;
+ public long f5940; public long f5941; public long f5942; public long f5943;
+ public long f5944; public long f5945; public long f5946; public long f5947;
+ public long f5948; public long f5949; public long f5950; public long f5951;
+ public long f5952; public long f5953; public long f5954; public long f5955;
+ public long f5956; public long f5957; public long f5958; public long f5959;
+ public long f5960; public long f5961; public long f5962; public long f5963;
+ public long f5964; public long f5965; public long f5966; public long f5967;
+ public long f5968; public long f5969; public long f5970; public long f5971;
+ public long f5972; public long f5973; public long f5974; public long f5975;
+ public long f5976; public long f5977; public long f5978; public long f5979;
+ public long f5980; public long f5981; public long f5982; public long f5983;
+ public long f5984; public long f5985; public long f5986; public long f5987;
+ public long f5988; public long f5989; public long f5990; public long f5991;
+ public long f5992; public long f5993; public long f5994; public long f5995;
+ public long f5996; public long f5997; public long f5998; public long f5999;
+ public long f6000; public long f6001; public long f6002; public long f6003;
+ public long f6004; public long f6005; public long f6006; public long f6007;
+ public long f6008; public long f6009; public long f6010; public long f6011;
+ public long f6012; public long f6013; public long f6014; public long f6015;
+ public long f6016; public long f6017; public long f6018; public long f6019;
+ public long f6020; public long f6021; public long f6022; public long f6023;
+ public long f6024; public long f6025; public long f6026; public long f6027;
+ public long f6028; public long f6029; public long f6030; public long f6031;
+ public long f6032; public long f6033; public long f6034; public long f6035;
+ public long f6036; public long f6037; public long f6038; public long f6039;
+ public long f6040; public long f6041; public long f6042; public long f6043;
+ public long f6044; public long f6045; public long f6046; public long f6047;
+ public long f6048; public long f6049; public long f6050; public long f6051;
+ public long f6052; public long f6053; public long f6054; public long f6055;
+ public long f6056; public long f6057; public long f6058; public long f6059;
+ public long f6060; public long f6061; public long f6062; public long f6063;
+ public long f6064; public long f6065; public long f6066; public long f6067;
+ public long f6068; public long f6069; public long f6070; public long f6071;
+ public long f6072; public long f6073; public long f6074; public long f6075;
+ public long f6076; public long f6077; public long f6078; public long f6079;
+ public long f6080; public long f6081; public long f6082; public long f6083;
+ public long f6084; public long f6085; public long f6086; public long f6087;
+ public long f6088; public long f6089; public long f6090; public long f6091;
+ public long f6092; public long f6093; public long f6094; public long f6095;
+ public long f6096; public long f6097; public long f6098; public long f6099;
+ public long f6100; public long f6101; public long f6102; public long f6103;
+ public long f6104; public long f6105; public long f6106; public long f6107;
+ public long f6108; public long f6109; public long f6110; public long f6111;
+ public long f6112; public long f6113; public long f6114; public long f6115;
+ public long f6116; public long f6117; public long f6118; public long f6119;
+ public long f6120; public long f6121; public long f6122; public long f6123;
+ public long f6124; public long f6125; public long f6126; public long f6127;
+ public long f6128; public long f6129; public long f6130; public long f6131;
+ public long f6132; public long f6133; public long f6134; public long f6135;
+ public long f6136; public long f6137; public long f6138; public long f6139;
+ public long f6140; public long f6141; public long f6142; public long f6143;
+ public long f6144; public long f6145; public long f6146; public long f6147;
+ public long f6148; public long f6149; public long f6150; public long f6151;
+ public long f6152; public long f6153; public long f6154; public long f6155;
+ public long f6156; public long f6157; public long f6158; public long f6159;
+ public long f6160; public long f6161; public long f6162; public long f6163;
+ public long f6164; public long f6165; public long f6166; public long f6167;
+ public long f6168; public long f6169; public long f6170; public long f6171;
+ public long f6172; public long f6173; public long f6174; public long f6175;
+ public long f6176; public long f6177; public long f6178; public long f6179;
+ public long f6180; public long f6181; public long f6182; public long f6183;
+ public long f6184; public long f6185; public long f6186; public long f6187;
+ public long f6188; public long f6189; public long f6190; public long f6191;
+ public long f6192; public long f6193; public long f6194; public long f6195;
+ public long f6196; public long f6197; public long f6198; public long f6199;
+ public long f6200; public long f6201; public long f6202; public long f6203;
+ public long f6204; public long f6205; public long f6206; public long f6207;
+ public long f6208; public long f6209; public long f6210; public long f6211;
+ public long f6212; public long f6213; public long f6214; public long f6215;
+ public long f6216; public long f6217; public long f6218; public long f6219;
+ public long f6220; public long f6221; public long f6222; public long f6223;
+ public long f6224; public long f6225; public long f6226; public long f6227;
+ public long f6228; public long f6229; public long f6230; public long f6231;
+ public long f6232; public long f6233; public long f6234; public long f6235;
+ public long f6236; public long f6237; public long f6238; public long f6239;
+ public long f6240; public long f6241; public long f6242; public long f6243;
+ public long f6244; public long f6245; public long f6246; public long f6247;
+ public long f6248; public long f6249; public long f6250; public long f6251;
+ public long f6252; public long f6253; public long f6254; public long f6255;
+ public long f6256; public long f6257; public long f6258; public long f6259;
+ public long f6260; public long f6261; public long f6262; public long f6263;
+ public long f6264; public long f6265; public long f6266; public long f6267;
+ public long f6268; public long f6269; public long f6270; public long f6271;
+ public long f6272; public long f6273; public long f6274; public long f6275;
+ public long f6276; public long f6277; public long f6278; public long f6279;
+ public long f6280; public long f6281; public long f6282; public long f6283;
+ public long f6284; public long f6285; public long f6286; public long f6287;
+ public long f6288; public long f6289; public long f6290; public long f6291;
+ public long f6292; public long f6293; public long f6294; public long f6295;
+ public long f6296; public long f6297; public long f6298; public long f6299;
+ public long f6300; public long f6301; public long f6302; public long f6303;
+ public long f6304; public long f6305; public long f6306; public long f6307;
+ public long f6308; public long f6309; public long f6310; public long f6311;
+ public long f6312; public long f6313; public long f6314; public long f6315;
+ public long f6316; public long f6317; public long f6318; public long f6319;
+ public long f6320; public long f6321; public long f6322; public long f6323;
+ public long f6324; public long f6325; public long f6326; public long f6327;
+ public long f6328; public long f6329; public long f6330; public long f6331;
+ public long f6332; public long f6333; public long f6334; public long f6335;
+ public long f6336; public long f6337; public long f6338; public long f6339;
+ public long f6340; public long f6341; public long f6342; public long f6343;
+ public long f6344; public long f6345; public long f6346; public long f6347;
+ public long f6348; public long f6349; public long f6350; public long f6351;
+ public long f6352; public long f6353; public long f6354; public long f6355;
+ public long f6356; public long f6357; public long f6358; public long f6359;
+ public long f6360; public long f6361; public long f6362; public long f6363;
+ public long f6364; public long f6365; public long f6366; public long f6367;
+ public long f6368; public long f6369; public long f6370; public long f6371;
+ public long f6372; public long f6373; public long f6374; public long f6375;
+ public long f6376; public long f6377; public long f6378; public long f6379;
+ public long f6380; public long f6381; public long f6382; public long f6383;
+ public long f6384; public long f6385; public long f6386; public long f6387;
+ public long f6388; public long f6389; public long f6390; public long f6391;
+ public long f6392; public long f6393; public long f6394; public long f6395;
+ public long f6396; public long f6397; public long f6398; public long f6399;
+ public long f6400; public long f6401; public long f6402; public long f6403;
+ public long f6404; public long f6405; public long f6406; public long f6407;
+ public long f6408; public long f6409; public long f6410; public long f6411;
+ public long f6412; public long f6413; public long f6414; public long f6415;
+ public long f6416; public long f6417; public long f6418; public long f6419;
+ public long f6420; public long f6421; public long f6422; public long f6423;
+ public long f6424; public long f6425; public long f6426; public long f6427;
+ public long f6428; public long f6429; public long f6430; public long f6431;
+ public long f6432; public long f6433; public long f6434; public long f6435;
+ public long f6436; public long f6437; public long f6438; public long f6439;
+ public long f6440; public long f6441; public long f6442; public long f6443;
+ public long f6444; public long f6445; public long f6446; public long f6447;
+ public long f6448; public long f6449; public long f6450; public long f6451;
+ public long f6452; public long f6453; public long f6454; public long f6455;
+ public long f6456; public long f6457; public long f6458; public long f6459;
+ public long f6460; public long f6461; public long f6462; public long f6463;
+ public long f6464; public long f6465; public long f6466; public long f6467;
+ public long f6468; public long f6469; public long f6470; public long f6471;
+ public long f6472; public long f6473; public long f6474; public long f6475;
+ public long f6476; public long f6477; public long f6478; public long f6479;
+ public long f6480; public long f6481; public long f6482; public long f6483;
+ public long f6484; public long f6485; public long f6486; public long f6487;
+ public long f6488; public long f6489; public long f6490; public long f6491;
+ public long f6492; public long f6493; public long f6494; public long f6495;
+ public long f6496; public long f6497; public long f6498; public long f6499;
+ public long f6500; public long f6501; public long f6502; public long f6503;
+ public long f6504; public long f6505; public long f6506; public long f6507;
+ public long f6508; public long f6509; public long f6510; public long f6511;
+ public long f6512; public long f6513; public long f6514; public long f6515;
+ public long f6516; public long f6517; public long f6518; public long f6519;
+ public long f6520; public long f6521; public long f6522; public long f6523;
+ public long f6524; public long f6525; public long f6526; public long f6527;
+ public long f6528; public long f6529; public long f6530; public long f6531;
+ public long f6532; public long f6533; public long f6534; public long f6535;
+ public long f6536; public long f6537; public long f6538; public long f6539;
+ public long f6540; public long f6541; public long f6542; public long f6543;
+ public long f6544; public long f6545; public long f6546; public long f6547;
+ public long f6548; public long f6549; public long f6550; public long f6551;
+ public long f6552; public long f6553; public long f6554; public long f6555;
+ public long f6556; public long f6557; public long f6558; public long f6559;
+ public long f6560; public long f6561; public long f6562; public long f6563;
+ public long f6564; public long f6565; public long f6566; public long f6567;
+ public long f6568; public long f6569; public long f6570; public long f6571;
+ public long f6572; public long f6573; public long f6574; public long f6575;
+ public long f6576; public long f6577; public long f6578; public long f6579;
+ public long f6580; public long f6581; public long f6582; public long f6583;
+ public long f6584; public long f6585; public long f6586; public long f6587;
+ public long f6588; public long f6589; public long f6590; public long f6591;
+ public long f6592; public long f6593; public long f6594; public long f6595;
+ public long f6596; public long f6597; public long f6598; public long f6599;
+ public long f6600; public long f6601; public long f6602; public long f6603;
+ public long f6604; public long f6605; public long f6606; public long f6607;
+ public long f6608; public long f6609; public long f6610; public long f6611;
+ public long f6612; public long f6613; public long f6614; public long f6615;
+ public long f6616; public long f6617; public long f6618; public long f6619;
+ public long f6620; public long f6621; public long f6622; public long f6623;
+ public long f6624; public long f6625; public long f6626; public long f6627;
+ public long f6628; public long f6629; public long f6630; public long f6631;
+ public long f6632; public long f6633; public long f6634; public long f6635;
+ public long f6636; public long f6637; public long f6638; public long f6639;
+ public long f6640; public long f6641; public long f6642; public long f6643;
+ public long f6644; public long f6645; public long f6646; public long f6647;
+ public long f6648; public long f6649; public long f6650; public long f6651;
+ public long f6652; public long f6653; public long f6654; public long f6655;
+ public long f6656; public long f6657; public long f6658; public long f6659;
+ public long f6660; public long f6661; public long f6662; public long f6663;
+ public long f6664; public long f6665; public long f6666; public long f6667;
+ public long f6668; public long f6669; public long f6670; public long f6671;
+ public long f6672; public long f6673; public long f6674; public long f6675;
+ public long f6676; public long f6677; public long f6678; public long f6679;
+ public long f6680; public long f6681; public long f6682; public long f6683;
+ public long f6684; public long f6685; public long f6686; public long f6687;
+ public long f6688; public long f6689; public long f6690; public long f6691;
+ public long f6692; public long f6693; public long f6694; public long f6695;
+ public long f6696; public long f6697; public long f6698; public long f6699;
+ public long f6700; public long f6701; public long f6702; public long f6703;
+ public long f6704; public long f6705; public long f6706; public long f6707;
+ public long f6708; public long f6709; public long f6710; public long f6711;
+ public long f6712; public long f6713; public long f6714; public long f6715;
+ public long f6716; public long f6717; public long f6718; public long f6719;
+ public long f6720; public long f6721; public long f6722; public long f6723;
+ public long f6724; public long f6725; public long f6726; public long f6727;
+ public long f6728; public long f6729; public long f6730; public long f6731;
+ public long f6732; public long f6733; public long f6734; public long f6735;
+ public long f6736; public long f6737; public long f6738; public long f6739;
+ public long f6740; public long f6741; public long f6742; public long f6743;
+ public long f6744; public long f6745; public long f6746; public long f6747;
+ public long f6748; public long f6749; public long f6750; public long f6751;
+ public long f6752; public long f6753; public long f6754; public long f6755;
+ public long f6756; public long f6757; public long f6758; public long f6759;
+ public long f6760; public long f6761; public long f6762; public long f6763;
+ public long f6764; public long f6765; public long f6766; public long f6767;
+ public long f6768; public long f6769; public long f6770; public long f6771;
+ public long f6772; public long f6773; public long f6774; public long f6775;
+ public long f6776; public long f6777; public long f6778; public long f6779;
+ public long f6780; public long f6781; public long f6782; public long f6783;
+ public long f6784; public long f6785; public long f6786; public long f6787;
+ public long f6788; public long f6789; public long f6790; public long f6791;
+ public long f6792; public long f6793; public long f6794; public long f6795;
+ public long f6796; public long f6797; public long f6798; public long f6799;
+ public long f6800; public long f6801; public long f6802; public long f6803;
+ public long f6804; public long f6805; public long f6806; public long f6807;
+ public long f6808; public long f6809; public long f6810; public long f6811;
+ public long f6812; public long f6813; public long f6814; public long f6815;
+ public long f6816; public long f6817; public long f6818; public long f6819;
+ public long f6820; public long f6821; public long f6822; public long f6823;
+ public long f6824; public long f6825; public long f6826; public long f6827;
+ public long f6828; public long f6829; public long f6830; public long f6831;
+ public long f6832; public long f6833; public long f6834; public long f6835;
+ public long f6836; public long f6837; public long f6838; public long f6839;
+ public long f6840; public long f6841; public long f6842; public long f6843;
+ public long f6844; public long f6845; public long f6846; public long f6847;
+ public long f6848; public long f6849; public long f6850; public long f6851;
+ public long f6852; public long f6853; public long f6854; public long f6855;
+ public long f6856; public long f6857; public long f6858; public long f6859;
+ public long f6860; public long f6861; public long f6862; public long f6863;
+ public long f6864; public long f6865; public long f6866; public long f6867;
+ public long f6868; public long f6869; public long f6870; public long f6871;
+ public long f6872; public long f6873; public long f6874; public long f6875;
+ public long f6876; public long f6877; public long f6878; public long f6879;
+ public long f6880; public long f6881; public long f6882; public long f6883;
+ public long f6884; public long f6885; public long f6886; public long f6887;
+ public long f6888; public long f6889; public long f6890; public long f6891;
+ public long f6892; public long f6893; public long f6894; public long f6895;
+ public long f6896; public long f6897; public long f6898; public long f6899;
+ public long f6900; public long f6901; public long f6902; public long f6903;
+ public long f6904; public long f6905; public long f6906; public long f6907;
+ public long f6908; public long f6909; public long f6910; public long f6911;
+ public long f6912; public long f6913; public long f6914; public long f6915;
+ public long f6916; public long f6917; public long f6918; public long f6919;
+ public long f6920; public long f6921; public long f6922; public long f6923;
+ public long f6924; public long f6925; public long f6926; public long f6927;
+ public long f6928; public long f6929; public long f6930; public long f6931;
+ public long f6932; public long f6933; public long f6934; public long f6935;
+ public long f6936; public long f6937; public long f6938; public long f6939;
+ public long f6940; public long f6941; public long f6942; public long f6943;
+ public long f6944; public long f6945; public long f6946; public long f6947;
+ public long f6948; public long f6949; public long f6950; public long f6951;
+ public long f6952; public long f6953; public long f6954; public long f6955;
+ public long f6956; public long f6957; public long f6958; public long f6959;
+ public long f6960; public long f6961; public long f6962; public long f6963;
+ public long f6964; public long f6965; public long f6966; public long f6967;
+ public long f6968; public long f6969; public long f6970; public long f6971;
+ public long f6972; public long f6973; public long f6974; public long f6975;
+ public long f6976; public long f6977; public long f6978; public long f6979;
+ public long f6980; public long f6981; public long f6982; public long f6983;
+ public long f6984; public long f6985; public long f6986; public long f6987;
+ public long f6988; public long f6989; public long f6990; public long f6991;
+ public long f6992; public long f6993; public long f6994; public long f6995;
+ public long f6996; public long f6997; public long f6998; public long f6999;
+ public long f7000; public long f7001; public long f7002; public long f7003;
+ public long f7004; public long f7005; public long f7006; public long f7007;
+ public long f7008; public long f7009; public long f7010; public long f7011;
+ public long f7012; public long f7013; public long f7014; public long f7015;
+ public long f7016; public long f7017; public long f7018; public long f7019;
+ public long f7020; public long f7021; public long f7022; public long f7023;
+ public long f7024; public long f7025; public long f7026; public long f7027;
+ public long f7028; public long f7029; public long f7030; public long f7031;
+ public long f7032; public long f7033; public long f7034; public long f7035;
+ public long f7036; public long f7037; public long f7038; public long f7039;
+ public long f7040; public long f7041; public long f7042; public long f7043;
+ public long f7044; public long f7045; public long f7046; public long f7047;
+ public long f7048; public long f7049; public long f7050; public long f7051;
+ public long f7052; public long f7053; public long f7054; public long f7055;
+ public long f7056; public long f7057; public long f7058; public long f7059;
+ public long f7060; public long f7061; public long f7062; public long f7063;
+ public long f7064; public long f7065; public long f7066; public long f7067;
+ public long f7068; public long f7069; public long f7070; public long f7071;
+ public long f7072; public long f7073; public long f7074; public long f7075;
+ public long f7076; public long f7077; public long f7078; public long f7079;
+ public long f7080; public long f7081; public long f7082; public long f7083;
+ public long f7084; public long f7085; public long f7086; public long f7087;
+ public long f7088; public long f7089; public long f7090; public long f7091;
+ public long f7092; public long f7093; public long f7094; public long f7095;
+ public long f7096; public long f7097; public long f7098; public long f7099;
+ public long f7100; public long f7101; public long f7102; public long f7103;
+ public long f7104; public long f7105; public long f7106; public long f7107;
+ public long f7108; public long f7109; public long f7110; public long f7111;
+ public long f7112; public long f7113; public long f7114; public long f7115;
+ public long f7116; public long f7117; public long f7118; public long f7119;
+ public long f7120; public long f7121; public long f7122; public long f7123;
+ public long f7124; public long f7125; public long f7126; public long f7127;
+ public long f7128; public long f7129; public long f7130; public long f7131;
+ public long f7132; public long f7133; public long f7134; public long f7135;
+ public long f7136; public long f7137; public long f7138; public long f7139;
+ public long f7140; public long f7141; public long f7142; public long f7143;
+ public long f7144; public long f7145; public long f7146; public long f7147;
+ public long f7148; public long f7149; public long f7150; public long f7151;
+ public long f7152; public long f7153; public long f7154; public long f7155;
+ public long f7156; public long f7157; public long f7158; public long f7159;
+ public long f7160; public long f7161; public long f7162; public long f7163;
+ public long f7164; public long f7165; public long f7166; public long f7167;
+ public long f7168; public long f7169; public long f7170; public long f7171;
+ public long f7172; public long f7173; public long f7174; public long f7175;
+ public long f7176; public long f7177; public long f7178; public long f7179;
+ public long f7180; public long f7181; public long f7182; public long f7183;
+ public long f7184; public long f7185; public long f7186; public long f7187;
+ public long f7188; public long f7189; public long f7190; public long f7191;
+ public long f7192; public long f7193; public long f7194; public long f7195;
+ public long f7196; public long f7197; public long f7198; public long f7199;
+ public long f7200; public long f7201; public long f7202; public long f7203;
+ public long f7204; public long f7205; public long f7206; public long f7207;
+ public long f7208; public long f7209; public long f7210; public long f7211;
+ public long f7212; public long f7213; public long f7214; public long f7215;
+ public long f7216; public long f7217; public long f7218; public long f7219;
+ public long f7220; public long f7221; public long f7222; public long f7223;
+ public long f7224; public long f7225; public long f7226; public long f7227;
+ public long f7228; public long f7229; public long f7230; public long f7231;
+ public long f7232; public long f7233; public long f7234; public long f7235;
+ public long f7236; public long f7237; public long f7238; public long f7239;
+ public long f7240; public long f7241; public long f7242; public long f7243;
+ public long f7244; public long f7245; public long f7246; public long f7247;
+ public long f7248; public long f7249; public long f7250; public long f7251;
+ public long f7252; public long f7253; public long f7254; public long f7255;
+ public long f7256; public long f7257; public long f7258; public long f7259;
+ public long f7260; public long f7261; public long f7262; public long f7263;
+ public long f7264; public long f7265; public long f7266; public long f7267;
+ public long f7268; public long f7269; public long f7270; public long f7271;
+ public long f7272; public long f7273; public long f7274; public long f7275;
+ public long f7276; public long f7277; public long f7278; public long f7279;
+ public long f7280; public long f7281; public long f7282; public long f7283;
+ public long f7284; public long f7285; public long f7286; public long f7287;
+ public long f7288; public long f7289; public long f7290; public long f7291;
+ public long f7292; public long f7293; public long f7294; public long f7295;
+ public long f7296; public long f7297; public long f7298; public long f7299;
+ public long f7300; public long f7301; public long f7302; public long f7303;
+ public long f7304; public long f7305; public long f7306; public long f7307;
+ public long f7308; public long f7309; public long f7310; public long f7311;
+ public long f7312; public long f7313; public long f7314; public long f7315;
+ public long f7316; public long f7317; public long f7318; public long f7319;
+ public long f7320; public long f7321; public long f7322; public long f7323;
+ public long f7324; public long f7325; public long f7326; public long f7327;
+ public long f7328; public long f7329; public long f7330; public long f7331;
+ public long f7332; public long f7333; public long f7334; public long f7335;
+ public long f7336; public long f7337; public long f7338; public long f7339;
+ public long f7340; public long f7341; public long f7342; public long f7343;
+ public long f7344; public long f7345; public long f7346; public long f7347;
+ public long f7348; public long f7349; public long f7350; public long f7351;
+ public long f7352; public long f7353; public long f7354; public long f7355;
+ public long f7356; public long f7357; public long f7358; public long f7359;
+ public long f7360; public long f7361; public long f7362; public long f7363;
+ public long f7364; public long f7365; public long f7366; public long f7367;
+ public long f7368; public long f7369; public long f7370; public long f7371;
+ public long f7372; public long f7373; public long f7374; public long f7375;
+ public long f7376; public long f7377; public long f7378; public long f7379;
+ public long f7380; public long f7381; public long f7382; public long f7383;
+ public long f7384; public long f7385; public long f7386; public long f7387;
+ public long f7388; public long f7389; public long f7390; public long f7391;
+ public long f7392; public long f7393; public long f7394; public long f7395;
+ public long f7396; public long f7397; public long f7398; public long f7399;
+ public long f7400; public long f7401; public long f7402; public long f7403;
+ public long f7404; public long f7405; public long f7406; public long f7407;
+ public long f7408; public long f7409; public long f7410; public long f7411;
+ public long f7412; public long f7413; public long f7414; public long f7415;
+ public long f7416; public long f7417; public long f7418; public long f7419;
+ public long f7420; public long f7421; public long f7422; public long f7423;
+ public long f7424; public long f7425; public long f7426; public long f7427;
+ public long f7428; public long f7429; public long f7430; public long f7431;
+ public long f7432; public long f7433; public long f7434; public long f7435;
+ public long f7436; public long f7437; public long f7438; public long f7439;
+ public long f7440; public long f7441; public long f7442; public long f7443;
+ public long f7444; public long f7445; public long f7446; public long f7447;
+ public long f7448; public long f7449; public long f7450; public long f7451;
+ public long f7452; public long f7453; public long f7454; public long f7455;
+ public long f7456; public long f7457; public long f7458; public long f7459;
+ public long f7460; public long f7461; public long f7462; public long f7463;
+ public long f7464; public long f7465; public long f7466; public long f7467;
+ public long f7468; public long f7469; public long f7470; public long f7471;
+ public long f7472; public long f7473; public long f7474; public long f7475;
+ public long f7476; public long f7477; public long f7478; public long f7479;
+ public long f7480; public long f7481; public long f7482; public long f7483;
+ public long f7484; public long f7485; public long f7486; public long f7487;
+ public long f7488; public long f7489; public long f7490; public long f7491;
+ public long f7492; public long f7493; public long f7494; public long f7495;
+ public long f7496; public long f7497; public long f7498; public long f7499;
+ public long f7500; public long f7501; public long f7502; public long f7503;
+ public long f7504; public long f7505; public long f7506; public long f7507;
+ public long f7508; public long f7509; public long f7510; public long f7511;
+ public long f7512; public long f7513; public long f7514; public long f7515;
+ public long f7516; public long f7517; public long f7518; public long f7519;
+ public long f7520; public long f7521; public long f7522; public long f7523;
+ public long f7524; public long f7525; public long f7526; public long f7527;
+ public long f7528; public long f7529; public long f7530; public long f7531;
+ public long f7532; public long f7533; public long f7534; public long f7535;
+ public long f7536; public long f7537; public long f7538; public long f7539;
+ public long f7540; public long f7541; public long f7542; public long f7543;
+ public long f7544; public long f7545; public long f7546; public long f7547;
+ public long f7548; public long f7549; public long f7550; public long f7551;
+ public long f7552; public long f7553; public long f7554; public long f7555;
+ public long f7556; public long f7557; public long f7558; public long f7559;
+ public long f7560; public long f7561; public long f7562; public long f7563;
+ public long f7564; public long f7565; public long f7566; public long f7567;
+ public long f7568; public long f7569; public long f7570; public long f7571;
+ public long f7572; public long f7573; public long f7574; public long f7575;
+ public long f7576; public long f7577; public long f7578; public long f7579;
+ public long f7580; public long f7581; public long f7582; public long f7583;
+ public long f7584; public long f7585; public long f7586; public long f7587;
+ public long f7588; public long f7589; public long f7590; public long f7591;
+ public long f7592; public long f7593; public long f7594; public long f7595;
+ public long f7596; public long f7597; public long f7598; public long f7599;
+ public long f7600; public long f7601; public long f7602; public long f7603;
+ public long f7604; public long f7605; public long f7606; public long f7607;
+ public long f7608; public long f7609; public long f7610; public long f7611;
+ public long f7612; public long f7613; public long f7614; public long f7615;
+ public long f7616; public long f7617; public long f7618; public long f7619;
+ public long f7620; public long f7621; public long f7622; public long f7623;
+ public long f7624; public long f7625; public long f7626; public long f7627;
+ public long f7628; public long f7629; public long f7630; public long f7631;
+ public long f7632; public long f7633; public long f7634; public long f7635;
+ public long f7636; public long f7637; public long f7638; public long f7639;
+ public long f7640; public long f7641; public long f7642; public long f7643;
+ public long f7644; public long f7645; public long f7646; public long f7647;
+ public long f7648; public long f7649; public long f7650; public long f7651;
+ public long f7652; public long f7653; public long f7654; public long f7655;
+ public long f7656; public long f7657; public long f7658; public long f7659;
+ public long f7660; public long f7661; public long f7662; public long f7663;
+ public long f7664; public long f7665; public long f7666; public long f7667;
+ public long f7668; public long f7669; public long f7670; public long f7671;
+ public long f7672; public long f7673; public long f7674; public long f7675;
+ public long f7676; public long f7677; public long f7678; public long f7679;
+ public long f7680; public long f7681; public long f7682; public long f7683;
+ public long f7684; public long f7685; public long f7686; public long f7687;
+ public long f7688; public long f7689; public long f7690; public long f7691;
+ public long f7692; public long f7693; public long f7694; public long f7695;
+ public long f7696; public long f7697; public long f7698; public long f7699;
+ public long f7700; public long f7701; public long f7702; public long f7703;
+ public long f7704; public long f7705; public long f7706; public long f7707;
+ public long f7708; public long f7709; public long f7710; public long f7711;
+ public long f7712; public long f7713; public long f7714; public long f7715;
+ public long f7716; public long f7717; public long f7718; public long f7719;
+ public long f7720; public long f7721; public long f7722; public long f7723;
+ public long f7724; public long f7725; public long f7726; public long f7727;
+ public long f7728; public long f7729; public long f7730; public long f7731;
+ public long f7732; public long f7733; public long f7734; public long f7735;
+ public long f7736; public long f7737; public long f7738; public long f7739;
+ public long f7740; public long f7741; public long f7742; public long f7743;
+ public long f7744; public long f7745; public long f7746; public long f7747;
+ public long f7748; public long f7749; public long f7750; public long f7751;
+ public long f7752; public long f7753; public long f7754; public long f7755;
+ public long f7756; public long f7757; public long f7758; public long f7759;
+ public long f7760; public long f7761; public long f7762; public long f7763;
+ public long f7764; public long f7765; public long f7766; public long f7767;
+ public long f7768; public long f7769; public long f7770; public long f7771;
+ public long f7772; public long f7773; public long f7774; public long f7775;
+ public long f7776; public long f7777; public long f7778; public long f7779;
+ public long f7780; public long f7781; public long f7782; public long f7783;
+ public long f7784; public long f7785; public long f7786; public long f7787;
+ public long f7788; public long f7789; public long f7790; public long f7791;
+ public long f7792; public long f7793; public long f7794; public long f7795;
+ public long f7796; public long f7797; public long f7798; public long f7799;
+ public long f7800; public long f7801; public long f7802; public long f7803;
+ public long f7804; public long f7805; public long f7806; public long f7807;
+ public long f7808; public long f7809; public long f7810; public long f7811;
+ public long f7812; public long f7813; public long f7814; public long f7815;
+ public long f7816; public long f7817; public long f7818; public long f7819;
+ public long f7820; public long f7821; public long f7822; public long f7823;
+ public long f7824; public long f7825; public long f7826; public long f7827;
+ public long f7828; public long f7829; public long f7830; public long f7831;
+ public long f7832; public long f7833; public long f7834; public long f7835;
+ public long f7836; public long f7837; public long f7838; public long f7839;
+ public long f7840; public long f7841; public long f7842; public long f7843;
+ public long f7844; public long f7845; public long f7846; public long f7847;
+ public long f7848; public long f7849; public long f7850; public long f7851;
+ public long f7852; public long f7853; public long f7854; public long f7855;
+ public long f7856; public long f7857; public long f7858; public long f7859;
+ public long f7860; public long f7861; public long f7862; public long f7863;
+ public long f7864; public long f7865; public long f7866; public long f7867;
+ public long f7868; public long f7869; public long f7870; public long f7871;
+ public long f7872; public long f7873; public long f7874; public long f7875;
+ public long f7876; public long f7877; public long f7878; public long f7879;
+ public long f7880; public long f7881; public long f7882; public long f7883;
+ public long f7884; public long f7885; public long f7886; public long f7887;
+ public long f7888; public long f7889; public long f7890; public long f7891;
+ public long f7892; public long f7893; public long f7894; public long f7895;
+ public long f7896; public long f7897; public long f7898; public long f7899;
+ public long f7900; public long f7901; public long f7902; public long f7903;
+ public long f7904; public long f7905; public long f7906; public long f7907;
+ public long f7908; public long f7909; public long f7910; public long f7911;
+ public long f7912; public long f7913; public long f7914; public long f7915;
+ public long f7916; public long f7917; public long f7918; public long f7919;
+ public long f7920; public long f7921; public long f7922; public long f7923;
+ public long f7924; public long f7925; public long f7926; public long f7927;
+ public long f7928; public long f7929; public long f7930; public long f7931;
+ public long f7932; public long f7933; public long f7934; public long f7935;
+ public long f7936; public long f7937; public long f7938; public long f7939;
+ public long f7940; public long f7941; public long f7942; public long f7943;
+ public long f7944; public long f7945; public long f7946; public long f7947;
+ public long f7948; public long f7949; public long f7950; public long f7951;
+ public long f7952; public long f7953; public long f7954; public long f7955;
+ public long f7956; public long f7957; public long f7958; public long f7959;
+ public long f7960; public long f7961; public long f7962; public long f7963;
+ public long f7964; public long f7965; public long f7966; public long f7967;
+ public long f7968; public long f7969; public long f7970; public long f7971;
+ public long f7972; public long f7973; public long f7974; public long f7975;
+ public long f7976; public long f7977; public long f7978; public long f7979;
+ public long f7980; public long f7981; public long f7982; public long f7983;
+ public long f7984; public long f7985; public long f7986; public long f7987;
+ public long f7988; public long f7989; public long f7990; public long f7991;
+ public long f7992; public long f7993; public long f7994; public long f7995;
+ public long f7996; public long f7997; public long f7998; public long f7999;
+ public long f8000; public long f8001; public long f8002; public long f8003;
+ public long f8004; public long f8005; public long f8006; public long f8007;
+ public long f8008; public long f8009; public long f8010; public long f8011;
+ public long f8012; public long f8013; public long f8014; public long f8015;
+ public long f8016; public long f8017; public long f8018; public long f8019;
+ public long f8020; public long f8021; public long f8022; public long f8023;
+ public long f8024; public long f8025; public long f8026; public long f8027;
+ public long f8028; public long f8029; public long f8030; public long f8031;
+ public long f8032; public long f8033; public long f8034; public long f8035;
+ public long f8036; public long f8037; public long f8038; public long f8039;
+ public long f8040; public long f8041; public long f8042; public long f8043;
+ public long f8044; public long f8045; public long f8046; public long f8047;
+ public long f8048; public long f8049; public long f8050; public long f8051;
+ public long f8052; public long f8053; public long f8054; public long f8055;
+ public long f8056; public long f8057; public long f8058; public long f8059;
+ public long f8060; public long f8061; public long f8062; public long f8063;
+ public long f8064; public long f8065; public long f8066; public long f8067;
+ public long f8068; public long f8069; public long f8070; public long f8071;
+ public long f8072; public long f8073; public long f8074; public long f8075;
+ public long f8076; public long f8077; public long f8078; public long f8079;
+ public long f8080; public long f8081; public long f8082; public long f8083;
+ public long f8084; public long f8085; public long f8086; public long f8087;
+ public long f8088; public long f8089; public long f8090; public long f8091;
+ public long f8092; public long f8093; public long f8094; public long f8095;
+ public long f8096; public long f8097; public long f8098; public long f8099;
+ public long f8100; public long f8101; public long f8102; public long f8103;
+ public long f8104; public long f8105; public long f8106; public long f8107;
+ public long f8108; public long f8109; public long f8110; public long f8111;
+ public long f8112; public long f8113; public long f8114; public long f8115;
+ public long f8116; public long f8117; public long f8118; public long f8119;
+ public long f8120; public long f8121; public long f8122; public long f8123;
+ public long f8124; public long f8125; public long f8126; public long f8127;
+ public long f8128; public long f8129; public long f8130; public long f8131;
+ public long f8132; public long f8133; public long f8134; public long f8135;
+ public long f8136; public long f8137; public long f8138; public long f8139;
+ public long f8140; public long f8141; public long f8142; public long f8143;
+ public long f8144; public long f8145; public long f8146; public long f8147;
+ public long f8148; public long f8149; public long f8150; public long f8151;
+ public long f8152; public long f8153; public long f8154; public long f8155;
+ public long f8156; public long f8157; public long f8158; public long f8159;
+ public long f8160; public long f8161; public long f8162; public long f8163;
+ public long f8164; public long f8165; public long f8166; public long f8167;
+ public long f8168; public long f8169; public long f8170; public long f8171;
+ public long f8172; public long f8173; public long f8174; public long f8175;
+ public long f8176; public long f8177; public long f8178; public long f8179;
+ public long f8180; public long f8181; public long f8182; public long f8183;
+ public long f8184; public long f8185; public long f8186; public long f8187;
+ public long f8188; public long f8189; public long f8190; public long f8191;
+ public long f8192; public long f8193; public long f8194; public long f8195;
+ public long f8196; public long f8197; public long f8198; public long f8199;
+ public long f8200;
+
+ public static void printV(PR26858 o)
+ {
+ System.out.println(o.f8200);
+ }
+
+ public static void main(String args[])
+ {
+ PR26858 x = new PR26858();
+
+ try
+ {
+ printV(x);
+ printV(null);
+ System.out.println("bad");
+ }
+ catch (Exception e)
+ {
+ System.out.println("ok");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR26858.out b/libjava/testsuite/libjava.lang/PR26858.out
new file mode 100644
index 000000000..17cb597de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR26858.out
@@ -0,0 +1,2 @@
+0
+ok
diff --git a/libjava/testsuite/libjava.lang/PR27908.jar b/libjava/testsuite/libjava.lang/PR27908.jar
new file mode 100644
index 000000000..1ec1127dd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR27908.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR27908.java b/libjava/testsuite/libjava.lang/PR27908.java
new file mode 100644
index 000000000..addb1d772
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR27908.java
@@ -0,0 +1,103 @@
+class PR27908
+{
+ public static void main (String[] argv)
+ throws InterruptedException
+ {
+ run1 r1 = new run1();
+ run2 r2 = new run2();
+ run3 r3 = new run3();
+
+ Thread t1, t2, t3;
+
+ (t1 = new Thread (r1)).start();
+ (t2 = new Thread (r2)).start();
+ (t3 = new Thread (r3)).start();
+
+ while (! (r1.isRunning() && r2.isRunning() && r3.isRunning()))
+ Thread.yield();
+
+ r1.stop();
+ r2.stop();
+ r3.stop();
+
+ Thread.sleep(5000);
+
+ if (t1.isAlive() || t2.isAlive() || t3.isAlive())
+ {
+ System.out.println ("fail");
+ System.exit(1);
+ }
+ }
+
+ private static class run1 implements Runnable
+ {
+ volatile int counter;
+ volatile boolean running;
+
+ public void run ()
+ {
+ counter = 0;
+ running = true;
+ while (running)
+ counter++;
+ }
+
+ void stop ()
+ {
+ running = false;
+ }
+
+ public boolean isRunning()
+ {
+ return running;
+ }
+ }
+
+ private static class run2 implements Runnable
+ {
+ volatile int counter;
+ boolean running;
+
+ public void run ()
+ {
+ counter = 0;
+ running = true;
+ while (running)
+ counter++;
+ }
+
+ void stop ()
+ {
+ running = false;
+ }
+
+ public boolean isRunning()
+ {
+ return running;
+ }
+ }
+
+ static class run3 implements Runnable
+ {
+ volatile int counter;
+ private volatile boolean running;
+
+ public void run ()
+ {
+ counter = 0;
+ running = true;
+ while (running)
+ counter++;
+ }
+
+ void stop ()
+ {
+ running = false;
+ }
+
+ public boolean isRunning()
+ {
+ return running;
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR27908.out b/libjava/testsuite/libjava.lang/PR27908.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR27908.out
diff --git a/libjava/testsuite/libjava.lang/PR29013.jar b/libjava/testsuite/libjava.lang/PR29013.jar
new file mode 100644
index 000000000..198ac6e2e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29013.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR29013.java b/libjava/testsuite/libjava.lang/PR29013.java
new file mode 100644
index 000000000..942ba97bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29013.java
@@ -0,0 +1,9 @@
+public class PR29013 {
+ public static int result() { return 5; }
+
+ public static void computeResult() { result(); }
+
+ public static void main(String[] args) {
+ computeResult();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR29013.out b/libjava/testsuite/libjava.lang/PR29013.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29013.out
diff --git a/libjava/testsuite/libjava.lang/PR29495.jar b/libjava/testsuite/libjava.lang/PR29495.jar
new file mode 100644
index 000000000..6e03871c6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29495.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR29495.java b/libjava/testsuite/libjava.lang/PR29495.java
new file mode 100644
index 000000000..7df00e80d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29495.java
@@ -0,0 +1,56 @@
+// Test various reflection methods.
+
+import java.lang.annotation.Inherited;
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+
+public class PR29495
+{
+ public class container<T>
+ {
+ // This class has a synthetic field...
+
+ public T get(T v) { return v; }
+ }
+
+ public class concrete extends container<String>
+ {
+ // This makes us have a synthetic bridge method.
+ public String get(String v) { return "hi" + v; }
+ }
+
+ // varargs method
+ public static void va(Object... args)
+ {
+ }
+
+ public static void check(boolean x, String m)
+ {
+ if (! x)
+ System.out.println("fail: " + m);
+ }
+
+ public static void main(String[] args) throws Throwable
+ {
+ check (Inherited.class.isAnnotation(), "Inherited isAnnotation");
+
+ Method m = PR29495.class.getDeclaredMethod("va", new Class[] { Object[].class });
+ check (m.isVarArgs(), "va isVarArgs");
+
+ m = concrete.class.getDeclaredMethod("get", new Class[] { Object.class });
+ check (m.isSynthetic(), "get isSynthetic");
+ check (m.isBridge(), "get isBridge");
+
+ Field[] fs = container.class.getDeclaredFields();
+ boolean ok = false;
+ for (int i = 0; i < fs.length; ++i)
+ {
+ if (fs[i].isSynthetic())
+ {
+ ok = true;
+ break;
+ }
+ }
+ check (ok, "container has synthetic field");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR29495.out b/libjava/testsuite/libjava.lang/PR29495.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29495.out
diff --git a/libjava/testsuite/libjava.lang/PR3096.jar b/libjava/testsuite/libjava.lang/PR3096.jar
new file mode 100644
index 000000000..4ed8f4ab6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3096.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR3096.java b/libjava/testsuite/libjava.lang/PR3096.java
new file mode 100644
index 000000000..d5407ff1e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3096.java
@@ -0,0 +1,36 @@
+// This test case was built for java/3096.
+
+class PR3096
+{
+ static void foo (int x[], int i) {
+ ++x[i];
+ }
+ static void foo (float x[], int i) {
+ ++x[i];
+ }
+ public static void main(String [] args) {
+ int a[] = new int [1];
+ float f[] = new float [1];
+ int b[];
+ int i = 0;
+ foo (a,0);
+ foo (f,0);
+ System.out.println (a[0]);
+ System.out.println (f[0]);
+ System.out.println ((b=a)[0]);
+ (b=a)[i]=99;
+ b[0]++;
+ System.out.println (a[0]+", "+b[0]);
+ System.out.println (++a[i]);
+ System.out.println (a[i]);
+ System.out.println (a[i]++);
+ System.out.println (a[i]);
+ String s[] = new String [1];
+ String y[];
+ s[0]="";
+ s[0] += "Peace ";
+ System.out.println (s[0]);
+ (y=s)[0] += "now!";
+ System.out.println (s[0]+", "+y[0]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR3096.out b/libjava/testsuite/libjava.lang/PR3096.out
new file mode 100644
index 000000000..1b197cbda
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3096.out
@@ -0,0 +1,10 @@
+1
+1.0
+1
+100, 100
+101
+101
+101
+102
+Peace
+Peace now!, Peace now!
diff --git a/libjava/testsuite/libjava.lang/PR31264.jar b/libjava/testsuite/libjava.lang/PR31264.jar
new file mode 100644
index 000000000..26731c83b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR31264.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR31264.java b/libjava/testsuite/libjava.lang/PR31264.java
new file mode 100644
index 000000000..5c0e85f01
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR31264.java
@@ -0,0 +1,28 @@
+/*
+ * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
+ * Copyright (C) 2006 - Javolution (http://javolution.org/)
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software is
+ * freely granted, provided that this notice is preserved.
+ */
+
+public final class PR31264
+{
+ public static long fubar(double d, int n)
+ {
+ long bits = Double.doubleToRawLongBits(d);
+ int exp = ((int)(bits >> 52)) & 0x7FF;
+ long m = bits & 0x000fffffffffffffL;
+ if (exp == 0)
+ {
+ if (m == 0) return 0L;
+ return fubar(d * 18014398509481984L, n - 54); // 2^54 Exact.
+ }
+ return m;
+ }
+
+ public static void main(String[] argv)
+ {
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR31264.out b/libjava/testsuite/libjava.lang/PR31264.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR31264.out
diff --git a/libjava/testsuite/libjava.lang/PR35020.jar b/libjava/testsuite/libjava.lang/PR35020.jar
new file mode 100644
index 000000000..09c4ef481
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR35020.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR35020.java b/libjava/testsuite/libjava.lang/PR35020.java
new file mode 100644
index 000000000..ff5f6bf06
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR35020.java
@@ -0,0 +1,30 @@
+class outer$inner
+{
+};
+
+public class PR35020
+{
+ class PR35020$Inner
+ {
+ };
+ class inner
+ {
+ }
+ public static void main(String[] args)
+ {
+ System.out.println(inner.class.getSimpleName());
+ System.out.println(PR35020.class.getSimpleName());
+ System.out.println(Class.class.getSimpleName());
+ System.out.println((new int[7]).getClass().getSimpleName());
+ System.out.println((new Object[1][1][1][1][1][1][1][1]).getClass().getSimpleName());
+ System.out.println((new java.security.PrivilegedAction()
+ {
+ public Object run() {
+ return null;
+ }
+ }).getClass().getSimpleName());
+ System.out.println(PR35020$Inner.class.getSimpleName());
+ System.out.println(outer$inner.class.getSimpleName());
+ System.out.println(outer$inner.inner.class.getSimpleName());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR35020.out b/libjava/testsuite/libjava.lang/PR35020.out
new file mode 100644
index 000000000..9bf85e209
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR35020.out
@@ -0,0 +1,9 @@
+inner
+PR35020
+Class
+int[]
+Object[][][][][][][][]
+
+PR35020$Inner
+outer$inner
+inner
diff --git a/libjava/testsuite/libjava.lang/PR36252.jar b/libjava/testsuite/libjava.lang/PR36252.jar
new file mode 100644
index 000000000..2c0d2c0e9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR36252.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR36252.java b/libjava/testsuite/libjava.lang/PR36252.java
new file mode 100644
index 000000000..4f39a678b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR36252.java
@@ -0,0 +1,16 @@
+import java.io.UnsupportedEncodingException;
+
+public class PR36252
+{
+ public static void main(String[] args)
+ {
+ try {
+ byte[] txt = new byte[] {-55, 87, -55, -42, -55, -20};
+ // This new String(...) should not throw an OutOfMemoryError.
+ String s = new String(txt, 0, 6, "MS932");
+ } catch (UnsupportedEncodingException e) {
+ // Silently ignore.
+ }
+ System.out.println("ok");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR36252.out b/libjava/testsuite/libjava.lang/PR36252.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR36252.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/PR3731.jar b/libjava/testsuite/libjava.lang/PR3731.jar
new file mode 100644
index 000000000..7473cb4bd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3731.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR3731.java b/libjava/testsuite/libjava.lang/PR3731.java
new file mode 100644
index 000000000..8e974ccca
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3731.java
@@ -0,0 +1,14 @@
+// Check whether "instanceof" initializes its class argument.
+
+public class PR3731 {
+ static B b;
+ public static void main(String[] args) {
+ System.out.println(b instanceof B);
+ }
+}
+
+class B {
+ static {
+ System.out.println("Initialized");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR3731.out b/libjava/testsuite/libjava.lang/PR3731.out
new file mode 100644
index 000000000..c508d5366
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR3731.out
@@ -0,0 +1 @@
+false
diff --git a/libjava/testsuite/libjava.lang/PR5057.jar b/libjava/testsuite/libjava.lang/PR5057.jar
new file mode 100644
index 000000000..ac7ac9570
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR5057.java b/libjava/testsuite/libjava.lang/PR5057.java
new file mode 100644
index 000000000..590ffdfa0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057.java
@@ -0,0 +1,16 @@
+/* Test to make sure <clinit> is generated correctly. */
+
+public class PR5057
+{
+ public static int x;
+
+ static
+ {
+ x = 72;
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (x);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR5057.out b/libjava/testsuite/libjava.lang/PR5057.out
new file mode 100644
index 000000000..ea70ce013
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057.out
@@ -0,0 +1 @@
+72
diff --git a/libjava/testsuite/libjava.lang/PR5057_2.jar b/libjava/testsuite/libjava.lang/PR5057_2.jar
new file mode 100644
index 000000000..b0accb747
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR5057_2.java b/libjava/testsuite/libjava.lang/PR5057_2.java
new file mode 100644
index 000000000..8e789ff34
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057_2.java
@@ -0,0 +1,19 @@
+/* Test to make sure <clinit> is generated correctly. */
+
+class R
+{
+ public static int z = 23;
+}
+
+public class PR5057_2 extends R
+{
+ static
+ {
+ R.z = 72;
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (R.z);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR5057_2.out b/libjava/testsuite/libjava.lang/PR5057_2.out
new file mode 100644
index 000000000..ea70ce013
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR5057_2.out
@@ -0,0 +1 @@
+72
diff --git a/libjava/testsuite/libjava.lang/PR55.jar b/libjava/testsuite/libjava.lang/PR55.jar
new file mode 100644
index 000000000..a5cb7d61e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR55.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR55.java b/libjava/testsuite/libjava.lang/PR55.java
new file mode 100644
index 000000000..66619bf2c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR55.java
@@ -0,0 +1,9 @@
+public class PR55 {
+
+ // This demonstrates a bug in gcj
+
+ public static void main(String[] argv){
+ int i = 666;
+ System.out.println("The number "+i+" is "+ (""+i).length() +" digits wide");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR55.out b/libjava/testsuite/libjava.lang/PR55.out
new file mode 100644
index 000000000..510a24206
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR55.out
@@ -0,0 +1 @@
+The number 666 is 3 digits wide
diff --git a/libjava/testsuite/libjava.lang/PR56.jar b/libjava/testsuite/libjava.lang/PR56.jar
new file mode 100644
index 000000000..20f87b596
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR56.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR56.java b/libjava/testsuite/libjava.lang/PR56.java
new file mode 100644
index 000000000..27f7c3021
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR56.java
@@ -0,0 +1,8 @@
+public final class PR56 {
+ public static void main(String[] args) {
+ Object o = args;
+ int[] a;
+ if (!(o instanceof int[]) || (a = (int[])o).length != 2) {
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR56.out b/libjava/testsuite/libjava.lang/PR56.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR56.out
diff --git a/libjava/testsuite/libjava.lang/PR6085.jar b/libjava/testsuite/libjava.lang/PR6085.jar
new file mode 100644
index 000000000..ec7066085
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6085.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR6085.java b/libjava/testsuite/libjava.lang/PR6085.java
new file mode 100644
index 000000000..f883bb5f8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6085.java
@@ -0,0 +1,35 @@
+public class PR6085
+{
+ public static void main(String[] args)
+ {
+ F1 f1 = new F1();
+ }
+
+ static class F1
+ {
+ F11 f11;
+ F12 f12;
+
+ F1()
+ {
+ f12 = new F12();
+ System.out.println (f12.i);
+ System.out.println (f12.k);
+ }
+
+ class F11
+ {
+ int k = 90;
+ F11() {}
+ }
+
+ class F12 extends F11
+ {
+ int i;
+ F12()
+ {
+ i = 17;
+ }
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR6085.out b/libjava/testsuite/libjava.lang/PR6085.out
new file mode 100644
index 000000000..812f0e716
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6085.out
@@ -0,0 +1,2 @@
+17
+90
diff --git a/libjava/testsuite/libjava.lang/PR6204.jar b/libjava/testsuite/libjava.lang/PR6204.jar
new file mode 100644
index 000000000..704de3a06
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6204.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR6204.java b/libjava/testsuite/libjava.lang/PR6204.java
new file mode 100644
index 000000000..06eb43d33
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6204.java
@@ -0,0 +1,38 @@
+class X
+{
+ public Y getY()
+ {
+ return new Y(1);
+ }
+}
+
+class Y extends X
+{
+ int i;
+
+ Y(int i)
+ {
+ this.i = i;
+ }
+
+ public Y getY()
+ {
+ return new Y(2);
+ }
+}
+
+class A
+{
+ X x = new Y(-1);
+ public X getX() { return x; }
+}
+
+public class PR6204 extends A
+{
+ public Y getY() { return super.getX().getY(); }
+
+ public static void main(String[] args)
+ {
+ System.out.println (new PR6204().getY().i);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR6204.out b/libjava/testsuite/libjava.lang/PR6204.out
new file mode 100644
index 000000000..0cfbf0888
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6204.out
@@ -0,0 +1 @@
+2
diff --git a/libjava/testsuite/libjava.lang/PR6520.jar b/libjava/testsuite/libjava.lang/PR6520.jar
new file mode 100644
index 000000000..441d1ea50
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6520.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR6520.java b/libjava/testsuite/libjava.lang/PR6520.java
new file mode 100644
index 000000000..617c6b2f1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6520.java
@@ -0,0 +1,13 @@
+public class PR6520
+{
+ public static void check (double x, double y)
+ {
+ System.out.println (x == y);
+ }
+
+ public static void main(String[] args)
+ {
+ check (Math.min (2.0f, Float.NaN), Float.NaN);
+ }
+ }
+
diff --git a/libjava/testsuite/libjava.lang/PR6729.jar b/libjava/testsuite/libjava.lang/PR6729.jar
new file mode 100644
index 000000000..7e63700af
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6729.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR6729.java b/libjava/testsuite/libjava.lang/PR6729.java
new file mode 100644
index 000000000..58dac182d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6729.java
@@ -0,0 +1,13 @@
+public class PR6729
+{
+ static int attr = 0x9;
+
+ public static void main(String [] args) {
+ boolean res = ( ( 1 << attr ) & 0x1000 ) != 0 ;
+ System.out.println("this should be "+res+": "+isWhite());
+ }
+
+ public static boolean isWhite() {
+ return ( ( 1 << attr ) & 0x1000 ) != 0 ;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR6729.out b/libjava/testsuite/libjava.lang/PR6729.out
new file mode 100644
index 000000000..a2248e204
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6729.out
@@ -0,0 +1 @@
+this should be false: false
diff --git a/libjava/testsuite/libjava.lang/PR6820.jar b/libjava/testsuite/libjava.lang/PR6820.jar
new file mode 100644
index 000000000..ba5d3e1f4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6820.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR6820.java b/libjava/testsuite/libjava.lang/PR6820.java
new file mode 100644
index 000000000..c505eb2f0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6820.java
@@ -0,0 +1,15 @@
+public class PR6820
+{
+ static void m(int a, int b) {
+ System.out.println("a="+a+" b="+b);
+ }
+
+ static int a = 10;
+
+ public static void main(String[] args) {
+ int b = 10;
+ m(a,++a);
+ m(b,++b);
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/PR6820.out b/libjava/testsuite/libjava.lang/PR6820.out
new file mode 100644
index 000000000..836bd5c28
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR6820.out
@@ -0,0 +1,2 @@
+a=10 b=11
+a=10 b=11
diff --git a/libjava/testsuite/libjava.lang/PR7482.jar b/libjava/testsuite/libjava.lang/PR7482.jar
new file mode 100644
index 000000000..f03520219
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR7482.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR7482.java b/libjava/testsuite/libjava.lang/PR7482.java
new file mode 100644
index 000000000..223fea66e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR7482.java
@@ -0,0 +1,35 @@
+public class PR7482
+{
+ private interface I { }
+ private static class B { }
+ private static class U extends B implements I { }
+ private static class V extends B implements I { }
+
+ static I field;
+
+ private static void g1(Object o)
+ {
+ I val;
+ if (o == null)
+ val = new U();
+ else
+ val = new V();
+ field = val;
+ }
+
+ private static I g2(Object o)
+ {
+ I val;
+ if (o == null)
+ val = new U();
+ else
+ val = new V();
+ return val;
+ }
+
+ public static void main(String[] args)
+ {
+ g1(null);
+ g2(null);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR7482.out b/libjava/testsuite/libjava.lang/PR7482.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR7482.out
diff --git a/libjava/testsuite/libjava.lang/PR8866.jar b/libjava/testsuite/libjava.lang/PR8866.jar
new file mode 100644
index 000000000..2bc6d5866
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR8866.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/PR8866.java b/libjava/testsuite/libjava.lang/PR8866.java
new file mode 100644
index 000000000..fa6206674
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR8866.java
@@ -0,0 +1,22 @@
+public class PR8866
+{
+ public static void main (String args[])
+ {
+ String attTypeString = "";
+
+ switch (args.length) {
+ case 1:
+ attTypeString = "string";
+ case 4:
+ attTypeString = "ID";;
+ case 5:
+ attTypeString = "IDREF";;
+ case 6:
+ attTypeString = "NMTOKEN";;
+ case 7:
+ attTypeString = "NOTATION";;
+ default:
+ ;
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_1.jar b/libjava/testsuite/libjava.lang/Process_1.jar
new file mode 100644
index 000000000..8499991d7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_1.java b/libjava/testsuite/libjava.lang/Process_1.java
new file mode 100644
index 000000000..adc635466
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_1.java
@@ -0,0 +1,41 @@
+// Create a process and read from its standard output.
+//
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+public class Process_1
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ Runtime r = Runtime.getRuntime();
+ String s = "Hello World";
+ String[] a = { "echo", s };
+ Process p = r.exec(a);
+ InputStream is = p.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String result = br.readLine();
+ if (! s.equals(result))
+ {
+ System.out.println("bad 1");
+ return;
+ }
+ result = br.readLine();
+ if (result != null)
+ {
+ System.out.println("bad 2");
+ return;
+ }
+ int c = p.waitFor();
+ System.out.println(c == 0 ? "ok" : "bad 3");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_1.out b/libjava/testsuite/libjava.lang/Process_1.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_1.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_2.jar b/libjava/testsuite/libjava.lang/Process_2.jar
new file mode 100644
index 000000000..2b26bff2d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_2.java b/libjava/testsuite/libjava.lang/Process_2.java
new file mode 100644
index 000000000..d90e653a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_2.java
@@ -0,0 +1,40 @@
+// Create a process and read from its standard error.
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+public class Process_2
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ Runtime r = Runtime.getRuntime();
+ String s = "Hello World";
+ String[] a = { "sh", "-c", "echo " + s + " >&2" };
+ Process p = r.exec(a);
+ InputStream is = p.getErrorStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String result = br.readLine();
+ if (! s.equals(result))
+ {
+ System.out.println("bad 1");
+ return;
+ }
+ result = br.readLine();
+ if (result != null)
+ {
+ System.out.println("bad 2");
+ return;
+ }
+ int c = p.waitFor();
+ System.out.println(c == 0 ? "ok" : "bad 3");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_2.out b/libjava/testsuite/libjava.lang/Process_2.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_2.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_3.jar b/libjava/testsuite/libjava.lang/Process_3.jar
new file mode 100644
index 000000000..620a644e7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_3.java b/libjava/testsuite/libjava.lang/Process_3.java
new file mode 100644
index 000000000..ebde9f8d8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_3.java
@@ -0,0 +1,73 @@
+// Create a process and pipe data through it. waitFor() the process
+// in a different thread than the one that created it.
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+
+public class Process_3 implements Runnable
+{
+ Process p;
+
+ public void run()
+ {
+ try
+ {
+ Runtime r = Runtime.getRuntime();
+ String[] a = { "sed", "-e", "s/Hello/Goodbye/" };
+ synchronized (this)
+ {
+ p = r.exec(a);
+ this.notifyAll();
+ }
+ OutputStream os = p.getOutputStream();
+ PrintStream ps = new PrintStream(os);
+ ps.println("Hello World");
+ ps.close();
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ System.exit(1);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ try
+ {
+ Process_3 p3 = new Process_3();
+ Thread t = new Thread(p3);
+ t.start();
+ synchronized (p3)
+ {
+ while (p3.p == null)
+ p3.wait();
+ }
+
+ InputStream is = p3.p.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String result = br.readLine();
+ if (! "Goodbye World".equals(result))
+ {
+ System.out.println("bad 1");
+ return;
+ }
+ result = br.readLine();
+ if (result != null)
+ {
+ System.out.println("bad 2");
+ return;
+ }
+ int c = p3.p.waitFor();
+ System.out.println(c == 0 ? "ok" : "bad 3");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_3.out b/libjava/testsuite/libjava.lang/Process_3.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_3.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_4.jar b/libjava/testsuite/libjava.lang/Process_4.jar
new file mode 100644
index 000000000..2014ad040
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_4.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_4.java b/libjava/testsuite/libjava.lang/Process_4.java
new file mode 100644
index 000000000..1511a74a6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_4.java
@@ -0,0 +1,20 @@
+// Create a process and verify failure exit code.
+public class Process_4
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ Runtime r = Runtime.getRuntime();
+ String[] a = { "false" };
+ Process p = r.exec(a);
+ int c = p.waitFor();
+ // Solaris' false doesn't return 1.
+ System.out.println(c != 0 ? "ok" : "bad");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_4.out b/libjava/testsuite/libjava.lang/Process_4.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_4.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_5.jar b/libjava/testsuite/libjava.lang/Process_5.jar
new file mode 100644
index 000000000..1046430dd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_5.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_5.java b/libjava/testsuite/libjava.lang/Process_5.java
new file mode 100644
index 000000000..61fd5b740
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_5.java
@@ -0,0 +1,43 @@
+// Create a long running process and verify that the exitValue is not
+// immediately available. Then destroy() it and verify that it
+// terminates quickly with a non-zero exitValue.
+public class Process_5
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ int c;
+ long startTime = System.currentTimeMillis();
+ Runtime r = Runtime.getRuntime();
+ String[] a = { "sleep", "120" };
+ Process p = r.exec(a);
+
+ try
+ {
+ c = p.exitValue();
+ System.out.println("bad 1");
+ return;
+ }
+ catch (IllegalThreadStateException itse)
+ {
+ // Ignore as this is good here.
+ }
+
+ p.destroy();
+
+ c = p.waitFor();
+
+ long endTime = System.currentTimeMillis();
+
+ if (endTime - startTime > 110000L)
+ System.out.println("bad 2");
+
+ System.out.println(c != 0 ? "ok" : "bad 3");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_5.out b/libjava/testsuite/libjava.lang/Process_5.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_5.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_6.jar b/libjava/testsuite/libjava.lang/Process_6.jar
new file mode 100644
index 000000000..a1a35005d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_6.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_6.java b/libjava/testsuite/libjava.lang/Process_6.java
new file mode 100644
index 000000000..3bf015f76
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_6.java
@@ -0,0 +1,31 @@
+// Create a running process for a non existent executable.
+// Verify that IOException is thrown.
+import java.io.IOException;
+
+
+public class Process_6
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ int c;
+ Runtime r = Runtime.getRuntime();
+ String[] a = { "blablabla_failure" };
+
+ try
+ {
+ Process p = r.exec(a);
+ System.out.println("bad");
+ }
+ catch (IOException ioe)
+ {
+ System.out.println("ok");
+ }
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_6.out b/libjava/testsuite/libjava.lang/Process_6.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_6.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Process_7.jar b/libjava/testsuite/libjava.lang/Process_7.jar
new file mode 100644
index 000000000..261578e8a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_7.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Process_7.java b/libjava/testsuite/libjava.lang/Process_7.java
new file mode 100644
index 000000000..d6f654eb2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_7.java
@@ -0,0 +1,45 @@
+// Verify we can modify the environment.
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Map;
+
+
+
+public class Process_7
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ ProcessBuilder pb = new ProcessBuilder("env");
+ Map<String, String> e = pb.environment();
+ e.clear();
+ String v = "process7_value";
+ String k = "PROCESS_7_KEY";
+ e.put(k, v);
+ Process p = pb.start();
+ InputStream is = p.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ boolean found = false;
+
+ String result;
+ while ((result = br.readLine()) != null)
+ {
+ if (result.equals(k + '=' + v))
+ found = true;
+ }
+ if (!found)
+ {
+ System.out.println("bad");
+ return;
+ }
+ System.out.println("ok");
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Process_7.out b/libjava/testsuite/libjava.lang/Process_7.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Process_7.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/ProxyTest.jar b/libjava/testsuite/libjava.lang/ProxyTest.jar
new file mode 100644
index 000000000..509054b97
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ProxyTest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/ProxyTest.java b/libjava/testsuite/libjava.lang/ProxyTest.java
new file mode 100644
index 000000000..46689b43a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ProxyTest.java
@@ -0,0 +1,37 @@
+import java.lang.reflect.*;
+
+interface Twas
+{
+ Object brillig();
+}
+
+interface Slithy
+{
+ void toves(int gyre);
+}
+
+public class ProxyTest
+{
+ static class MyInvocationHandler implements InvocationHandler
+ {
+ public Object invoke(Object proxy, Method method, Object[] args)
+ {
+ System.out.println (method.getDeclaringClass());
+ System.out.println (args == null
+ ? args
+ : args.getClass().getName());
+ return this;
+ }
+ }
+
+ public static void main(String[] argv)
+ throws InstantiationException, IllegalAccessException
+ {
+ Twas wabe
+ = (Twas)Proxy.newProxyInstance(ProxyTest.class.getClassLoader(),
+ new Class[] { Slithy.class, Twas.class },
+ new MyInvocationHandler());
+ wabe.brillig();
+ ((Slithy)wabe).toves(2);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/ProxyTest.out b/libjava/testsuite/libjava.lang/ProxyTest.out
new file mode 100644
index 000000000..e81ce6000
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/ProxyTest.out
@@ -0,0 +1,4 @@
+interface Twas
+null
+interface Slithy
+[Ljava.lang.Object;
diff --git a/libjava/testsuite/libjava.lang/RH194522.jar b/libjava/testsuite/libjava.lang/RH194522.jar
new file mode 100644
index 000000000..a7c75a246
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/RH194522.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/RH194522.java b/libjava/testsuite/libjava.lang/RH194522.java
new file mode 100644
index 000000000..5ea446cbd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/RH194522.java
@@ -0,0 +1,18 @@
+// Test case for http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=194522
+
+import java.io.*;
+import java.nio.charset.Charset;
+
+public class RH194522
+{
+ public static void main(String[] args) throws Exception
+ {
+ Charset c = Charset.forName("UTF-8");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, c));
+ pw.println("hi");
+ pw.println("bob");
+ pw.flush();
+ pw.close();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/RH194522.out b/libjava/testsuite/libjava.lang/RH194522.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/RH194522.out
diff --git a/libjava/testsuite/libjava.lang/Serialization.jar b/libjava/testsuite/libjava.lang/Serialization.jar
new file mode 100644
index 000000000..376cb6b46
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Serialization.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Serialization.java b/libjava/testsuite/libjava.lang/Serialization.java
new file mode 100644
index 000000000..817875331
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Serialization.java
@@ -0,0 +1,32 @@
+import java.io.*;
+import java.util.*;
+
+public class Serialization
+{
+ public static void main(String[] args)
+ throws IOException, ClassNotFoundException
+ {
+ File f = new File("test.ser");
+ ObjectOutputStream objStream =
+ new ObjectOutputStream(new FileOutputStream(f));
+ objStream.writeInt(8);
+ objStream.writeObject(new Integer(99));
+ List l = new LinkedList();
+ l.add(new Integer(1));
+ l.add(new Short((short) 7));
+ l.add(new Float(9.95));
+ l.add(new Long(-900000000000001l));
+ l.add(new Double(-3.14159));
+ l.add(new Character('X'));
+ l.add(new Byte((byte) 'z'));
+ objStream.writeObject(l);
+ objStream.close();
+
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));
+ System.out.println (ois.readInt());
+ System.out.println (ois.readObject());
+ System.out.println (ois.readObject());
+ ois.close();
+ f.delete();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Serialization.out b/libjava/testsuite/libjava.lang/Serialization.out
new file mode 100644
index 000000000..9c4e5d06c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Serialization.out
@@ -0,0 +1,3 @@
+8
+99
+[1, 7, 9.95, -900000000000001, -3.14159, X, 122]
diff --git a/libjava/testsuite/libjava.lang/Shazam.jar b/libjava/testsuite/libjava.lang/Shazam.jar
new file mode 100644
index 000000000..b3257f6f8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Shazam.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Shazam.java b/libjava/testsuite/libjava.lang/Shazam.java
new file mode 100644
index 000000000..d3defc065
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Shazam.java
@@ -0,0 +1,18 @@
+import java.io.*;
+
+public class Shazam {
+
+ private static String shazam ()
+ {
+ try {
+ return "shazam";
+ } finally {
+ System.out.println ("The next line should say \"shazam\"");
+ }
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (shazam ());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Shazam.out b/libjava/testsuite/libjava.lang/Shazam.out
new file mode 100644
index 000000000..42cc30d72
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Shazam.out
@@ -0,0 +1,2 @@
+The next line should say "shazam"
+shazam
diff --git a/libjava/testsuite/libjava.lang/StackTrace2.jar b/libjava/testsuite/libjava.lang/StackTrace2.jar
new file mode 100644
index 000000000..0aacb8fa6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StackTrace2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/StackTrace2.java b/libjava/testsuite/libjava.lang/StackTrace2.java
new file mode 100644
index 000000000..01c7d5bac
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StackTrace2.java
@@ -0,0 +1,77 @@
+// Check that stack trace's work, and stack trace line numbers, if available,
+// are correct.
+
+public class StackTrace2
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ new StackTrace2().a();
+ }
+ catch (Exception x)
+ {
+ StackTraceElement[] trace = x.getStackTrace();
+ checkTrace(trace);
+ }
+ }
+
+ void a()
+ {
+ new Inner().foo();
+ }
+
+ class Inner
+ {
+ public void foo()
+ {
+ doCrash(null);
+ }
+
+ public void doCrash(Object o)
+ {
+ o.toString();
+ }
+ }
+
+ static void checkTrace(StackTraceElement[] trace)
+ {
+ System.out.println("Trace length = " + trace.length);
+ checkLine(trace[0], "StackTrace2$Inner", "doCrash", 33);
+ checkLine(trace[1], "StackTrace2$Inner", "foo", 28);
+ checkLine(trace[2], "StackTrace2", "a", 21);
+ checkLine(trace[3], "StackTrace2", "main", 10);
+ }
+
+ static void checkLine(StackTraceElement frame, String expected_cl,
+ String expected_method, int expected_line)
+ {
+ if (frame.getClassName().equals(expected_cl))
+ System.out.print(expected_cl);
+ else
+ System.out.print("FAIL - expected " + expected_cl + ", got: " +
+ frame.getClassName());
+
+ System.out.print(".");
+
+ if (frame.getMethodName().equals(expected_method))
+ System.out.print(expected_method);
+ else
+ System.out.print("FAIL - expected " + expected_method + ", got: " +
+ frame.getMethodName());
+
+ System.out.print(":");
+
+ // Permit either the correct line number or no line number. This is so
+ // we don't fail on platforms that don't yet support reading debug info
+ // for stack traces, or when no debug info is available.
+ if (frame.getLineNumber() < 0
+ || (frame.getLineNumber() == expected_line
+ && frame.getFileName().equals("StackTrace2.java")))
+ System.out.println("OK");
+ else
+ System.out.println("FAIL - expected " + expected_line + ", got: "
+ + frame.getLineNumber() + ", in file "
+ + frame.getFileName());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/StackTrace2.out b/libjava/testsuite/libjava.lang/StackTrace2.out
new file mode 100644
index 000000000..dafadce81
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StackTrace2.out
@@ -0,0 +1,5 @@
+Trace length = 4
+StackTrace2$Inner.doCrash:OK
+StackTrace2$Inner.foo:OK
+StackTrace2.a:OK
+StackTrace2.main:OK
diff --git a/libjava/testsuite/libjava.lang/StaticConstructor.jar b/libjava/testsuite/libjava.lang/StaticConstructor.jar
new file mode 100644
index 000000000..0f4ff4c79
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StaticConstructor.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/StaticConstructor.java b/libjava/testsuite/libjava.lang/StaticConstructor.java
new file mode 100644
index 000000000..54c0f5376
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StaticConstructor.java
@@ -0,0 +1,29 @@
+// Test to make sure static initializers are called
+
+class bar
+{
+ public static int zog;
+ public static int zag;
+
+ static
+ {
+ zog = 12;
+ zag = 2;
+ }
+
+ public bar() { }
+}
+
+public class StaticConstructor
+{
+ static int foo ()
+ {
+ return new bar().zog;
+ }
+
+ public static void main(String args[])
+ {
+ System.out.println ("" + (foo() + bar.zag));
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/StaticConstructor.out b/libjava/testsuite/libjava.lang/StaticConstructor.out
new file mode 100644
index 000000000..8351c1939
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StaticConstructor.out
@@ -0,0 +1 @@
+14
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_1.jar b/libjava/testsuite/libjava.lang/StringBuffer_1.jar
new file mode 100644
index 000000000..fd406afbc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_1.java b/libjava/testsuite/libjava.lang/StringBuffer_1.java
new file mode 100644
index 000000000..142912259
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_1.java
@@ -0,0 +1,124 @@
+// Test StringBuffer.replace(), reverse(), insert(String), append(String),
+// and delete().
+
+public class StringBuffer_1
+{
+ public static void main(String args[])
+ {
+ StringBuffer sb = new StringBuffer("45");
+ sb.insert(0, "123");
+ sb.append("89");
+ sb.insert(5, "6");
+ sb.insert(6, '7');
+ System.out.println (sb);
+
+ sb.delete (3, 99);
+
+ String foo = sb.toString();
+
+ System.out.println (foo);
+ sb.reverse();
+ System.out.println (foo);
+
+ System.out.println (sb);
+ sb = new StringBuffer("1234");
+ System.out.println(sb.reverse());
+
+ sb = new StringBuffer("123456789");
+ sb.append ("0");
+ System.out.println(sb);
+
+ sb.replace (2, 99, "foo");
+ System.out.println (sb);
+
+ sb = new StringBuffer("123456789");
+ sb.replace (1, 1, "XX");
+ System.out.println (sb);
+
+ sb = new StringBuffer("123456789");
+ sb.replace (0, 2, "XX");
+ System.out.println (sb);
+
+ sb = new StringBuffer("123456789");
+ sb.replace (5, 9, "54321");
+ System.out.println (sb);
+
+ sb = new StringBuffer("123456789");
+
+ sb.delete (1,4);
+ System.out.println (sb);
+
+ // Test bounds checks
+ try
+ {
+ sb.insert (-2, "x");
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.insert (96, "x");
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.delete (-2, 2);
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.delete (96, 418);
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.delete (4, 2);
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.replace (-2, 2, "54321");
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.replace (4, 2, "54321");
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+
+ try
+ {
+ sb.replace (12, 18, "54321");
+ }
+ catch (StringIndexOutOfBoundsException x)
+ {
+ System.out.println (x.getClass());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_1.out b/libjava/testsuite/libjava.lang/StringBuffer_1.out
new file mode 100644
index 000000000..cdc78ff0b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_1.out
@@ -0,0 +1,19 @@
+123456789
+123
+123
+321
+4321
+1234567890
+12foo
+1XX23456789
+XX3456789
+1234554321
+156789
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
+class java.lang.StringIndexOutOfBoundsException
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_overflow.jar b/libjava/testsuite/libjava.lang/StringBuffer_overflow.jar
new file mode 100644
index 000000000..be8b655ea
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_overflow.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_overflow.java b/libjava/testsuite/libjava.lang/StringBuffer_overflow.java
new file mode 100644
index 000000000..68e18da2f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_overflow.java
@@ -0,0 +1,126 @@
+/* This tests some corner cases of arithmetic in StringBuffer. */
+
+/* These tests can all be run on a 32 bit machine with modest amounts
+ * of memory. */
+
+/* The symptom of the problem is that ArrayIndexOutOfBoundsException
+ * gets thrown, while the documentation says that
+ * StringIndexOutOfBoundsException should be thrown. */
+
+class StringBuffer_overflow
+{
+ /* Test correct exception on getChars. */
+ static void getChars()
+ {
+ StringBuffer b = new StringBuffer ("x");
+ char[] s = new char [1];
+ try
+ {
+ // The substring we are attempting to obtain is invalid,
+ // so we should get a StringIndexOutOfBoundsException.
+ b.getChars (1, -1 << 31, s, 0);
+ Fail ("getChars", "no exception");
+ }
+ catch (Throwable e)
+ {
+ ExpectStringIndex ("getChars()", e);
+ }
+ }
+
+ /* Test correct exception on append with bogus count. */
+ static void append()
+ {
+ StringBuffer s = new StringBuffer("a");
+ try
+ {
+ s.append ("".toCharArray(), 1, (1<<31)-1);
+ Fail ("append", "no exception");
+ }
+ catch (Throwable e)
+ {
+ ExpectStringIndex ("append", e);
+ }
+ }
+
+ // Check that append still more or less works.
+ static void appendbasic()
+ {
+ StringBuffer s = new StringBuffer();
+
+ try
+ {
+ if (!new StringBuffer().append ("abcdefg".toCharArray())
+ .toString().equals ("abcdefg"))
+ {
+ Fail ("appendbasic", "append gives incorrect result");
+ }
+ }
+ catch (Throwable e)
+ {
+ Fail ("appendbasic", e);
+ }
+ }
+
+ /* Test correct expception on substring with bogus indexes. */
+ static void substring()
+ {
+ StringBuffer s = new StringBuffer ("abc");
+ try
+ {
+ // end - begin == -2 - ((1<<31)-1) == (1<<31) - 1 > 0. */
+ s.substring ((1<<31)-1, -2);
+ Fail ("substring", "no exception");
+ }
+ catch (Throwable e)
+ {
+ ExpectStringIndex ("substring", e);
+ }
+ }
+
+ static void insert()
+ {
+ StringBuffer s = new StringBuffer ("");
+ try
+ {
+ s.insert (0, "abcd".toCharArray(), (1<<31)-1, 1);
+ Fail ("insert", "no exception");
+ }
+ catch (Throwable e)
+ {
+ ExpectStringIndex ("insert", e);
+ }
+ }
+
+
+ public static void main (String[] unused)
+ {
+ getChars();
+ append();
+ appendbasic();
+ substring();
+ insert();
+
+ if (tests_failed == 0)
+ {
+ System.out.println ("ok");
+ }
+ }
+
+ static int tests_failed = 0;
+
+ static void ExpectStringIndex (String name, Throwable exception)
+ {
+ if (! (exception instanceof StringIndexOutOfBoundsException))
+ {
+ Fail (name, exception);
+ }
+ }
+ static void Fail (String name, Object why)
+ {
+ ++tests_failed;
+
+ System.err.print (name);
+ System.err.print ('\t');
+ System.err.println (why);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/StringBuffer_overflow.out b/libjava/testsuite/libjava.lang/StringBuffer_overflow.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/StringBuffer_overflow.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/String_overflow.jar b/libjava/testsuite/libjava.lang/String_overflow.jar
new file mode 100644
index 000000000..1400db820
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/String_overflow.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/String_overflow.java b/libjava/testsuite/libjava.lang/String_overflow.java
new file mode 100644
index 000000000..5a1a907c5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/String_overflow.java
@@ -0,0 +1,140 @@
+class String_overflow
+{
+ static void getChars()
+ {
+ String source = "abcdefg";
+ char[] dest = new char [3];
+
+ try
+ {
+ source.getChars (0, 5, // Source
+ dest, (1<<31) - 1);
+ Fail ("getChars", "Should not have succeeded");
+ }
+ catch (Throwable e)
+ {
+ ExpectArrayIndex ("getChars", e);
+ }
+ }
+
+ /* How do I stop a compiler warning causing a test to fail?
+ static void getBytes()
+ {
+ String source = "abcdefg";
+ byte[] dest = new byte[3];
+
+ try
+ {
+ source.getBytes (0, 5, dest, (1<<31) - 1);
+ Fail ("getBytes", "Should not have succeeded");
+ }
+ catch (Throwable e)
+ {
+ ExpectArrayIndex ("getBytes", e);
+ }
+ }
+ */
+
+ static void regionMatches()
+ {
+ if ("abcdefg".regionMatches (4, "abcdefg", 4, -1))
+ {
+ Fail ("regionMatches", "Should not return true");
+ }
+
+ try
+ {
+ if ("abcdefg".regionMatches (4, "abcdefg", 4, (1<<31)-1))
+ {
+ Fail ("regionMatches (2nd)", "Should not return true");
+ }
+ }
+ catch (Throwable e)
+ {
+ Fail ("regionMatches (2nd)", e);
+ }
+ }
+
+ static void regionMatchesCase()
+ {
+ if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, -1))
+ {
+ Fail ("regionMatchesCase", "Should not return true");
+ }
+
+ try
+ {
+ if ("abcdefg".regionMatches (true, 4, "abcdefg", 4, (1<<31)-1))
+ {
+ Fail ("regionMatchesCase (2nd)", "Should not return true");
+ }
+ }
+ catch (Throwable e)
+ {
+ Fail ("regionMatchesCase (2nd)", e);
+ }
+ }
+
+ static void startsWith()
+ {
+ // We make the arg pretty big to try and cause a segfault.
+ String s = new String ("abcdef");
+ StringBuffer b = new StringBuffer (1000000);
+ b.setLength (1000000);
+ String arg = new String (b);
+
+ try
+ {
+ s.startsWith (arg, (1<<31) - 1000000);
+ }
+ catch (Throwable e)
+ {
+ Fail ("startsWith", e);
+ }
+ }
+
+ static void valueOf()
+ {
+ char[] array = new char[] {'a', 'b', 'c', 'd', 'e'};
+ try
+ {
+ String.valueOf (array, 4, (1<<31)-1);
+ Fail ("valueOf", "should not succeed");
+ }
+ catch (Throwable e)
+ {
+ ExpectArrayIndex ("valueOf", e);
+ }
+ }
+
+ public static void main (String[] args) throws Throwable
+ {
+ getChars();
+ // getBytes();
+ regionMatches();
+ regionMatchesCase();
+ startsWith();
+ valueOf();
+
+ if (tests_failed == 0)
+ System.out.println ("ok");
+ }
+
+ static void ExpectArrayIndex (String test, Throwable e)
+ {
+ if (e instanceof ArrayIndexOutOfBoundsException)
+ return;
+
+ Fail (test, e);
+ }
+
+ static void Fail (String test, Object problem)
+ {
+ ++tests_failed;
+ System.err.print (test);
+ System.err.print ('\t');
+ System.err.println (problem);
+ }
+
+ static int tests_failed;
+}
diff --git a/libjava/testsuite/libjava.lang/String_overflow.out b/libjava/testsuite/libjava.lang/String_overflow.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/String_overflow.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/SyncGlobal.jar b/libjava/testsuite/libjava.lang/SyncGlobal.jar
new file mode 100644
index 000000000..54589c286
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncGlobal.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/SyncGlobal.java b/libjava/testsuite/libjava.lang/SyncGlobal.java
new file mode 100644
index 000000000..63613958e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncGlobal.java
@@ -0,0 +1,24 @@
+// Test suitability of alignment of statically-allocated Objects.
+class SyncGlobal
+{
+ private static final byte[] global_1 = { 1 };
+ private static final byte[] global_2 = { 2, 3 };
+ private static final byte[] global_3 = { 4, 5, 6 };
+ private static final byte[] global_4 = { 7, 8, 9, 10 };
+ private static final byte[] global_5 = { 11, 12, 13, 14, 15 };
+ private static final byte[] global_6 = { 16, 17, 18, 19, 20, 21 };
+ private static final byte[] global_7 = { 22, 23, 24, 25, 26, 27, 28 };
+ private static final byte[] global_8 = { 29, 30, 31, 32, 33, 34, 35, 36 };
+
+ public static void main (String args[])
+ {
+ synchronized (global_1) { System.out.println ("PASS1"); }
+ synchronized (global_2) { System.out.println ("PASS2"); }
+ synchronized (global_3) { System.out.println ("PASS3"); }
+ synchronized (global_4) { System.out.println ("PASS4"); }
+ synchronized (global_5) { System.out.println ("PASS5"); }
+ synchronized (global_6) { System.out.println ("PASS6"); }
+ synchronized (global_7) { System.out.println ("PASS7"); }
+ synchronized (global_8) { System.out.println ("PASS8"); }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/SyncGlobal.out b/libjava/testsuite/libjava.lang/SyncGlobal.out
new file mode 100644
index 000000000..5c3cc7d09
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncGlobal.out
@@ -0,0 +1,8 @@
+PASS1
+PASS2
+PASS3
+PASS4
+PASS5
+PASS6
+PASS7
+PASS8
diff --git a/libjava/testsuite/libjava.lang/SyncTest.jar b/libjava/testsuite/libjava.lang/SyncTest.jar
new file mode 100644
index 000000000..3f30e7a0f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncTest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/SyncTest.java b/libjava/testsuite/libjava.lang/SyncTest.java
new file mode 100644
index 000000000..85573f8a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncTest.java
@@ -0,0 +1,34 @@
+// Test atomic increment via synchronized blocks.
+public class SyncTest implements Runnable {
+ static int counter;
+
+ public void run() {
+ // We cache the .class value; otherwise this code is
+ // slow enough that it will time out in some situations.
+ Object lock = SyncTest.class;
+ for (int n = 0; n < 1000000; n++)
+ synchronized (lock) {
+ counter++;
+ }
+ }
+
+ public static void main(String[] args) {
+ SyncTest test = new SyncTest();
+ Thread[] thr = new Thread[4];
+
+ for (int n = 0; n < thr.length; n++) {
+ thr[n] = new Thread(test);
+ thr[n].start();
+ }
+
+ for (int n = 0; n < thr.length; n++) {
+ try {
+ thr[n].join();
+ } catch (InterruptedException ex) {
+ }
+ }
+
+ System.out.println(counter == 1000000 * thr.length ?
+ "ok" : "fail: " + counter);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/SyncTest.out b/libjava/testsuite/libjava.lang/SyncTest.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncTest.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/SyncTest.xfail b/libjava/testsuite/libjava.lang/SyncTest.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/SyncTest.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Synch.jar b/libjava/testsuite/libjava.lang/Synch.jar
new file mode 100644
index 000000000..10b758009
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Synch.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Synch.java b/libjava/testsuite/libjava.lang/Synch.java
new file mode 100644
index 000000000..15e2d26b4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Synch.java
@@ -0,0 +1,17 @@
+public class Synch
+{
+ public synchronized void s()
+ {
+ // This call to notify() isn't supposed to cause a
+ // java.lang.IllegalMonitorStateException.
+ notify ();
+ }
+
+ public static void main (String[] args)
+ {
+ (new Synch()).s();
+ System.out.println ("Ok");
+ }
+}
+
+
diff --git a/libjava/testsuite/libjava.lang/Synch.out b/libjava/testsuite/libjava.lang/Synch.out
new file mode 100644
index 000000000..7326d9603
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Synch.out
@@ -0,0 +1 @@
+Ok
diff --git a/libjava/testsuite/libjava.lang/TLtest.jar b/libjava/testsuite/libjava.lang/TLtest.jar
new file mode 100644
index 000000000..de4ed66d9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/TLtest.java b/libjava/testsuite/libjava.lang/TLtest.java
new file mode 100644
index 000000000..6ddd0cbcd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.java
@@ -0,0 +1,60 @@
+class TLtest extends Thread {
+
+ public static void main (String [] args) {
+ Data d = new Data ();
+ new ThreadTest (d, "A").start ();
+ new ThreadTest (d, "B").start ();
+ }
+}
+
+class Data {
+
+ private static ThreadLocal owner = new ThreadLocal () {
+ public Object initialValue () { return ("0"); }
+ };
+ /* A thread will call `set' to set a value it wants an instance
+ of Data to associate with it and only it. */
+ synchronized public void set (String v){owner.set (v);}
+ /* A thread will call `get' to get a value it wants an instance
+ of Data to associate with it and only it. */
+ synchronized public String get (){return (String)owner.get();}
+}
+
+class ThreadTest extends Thread {
+
+ public Data d;
+
+ ThreadTest (Data d, String name) {
+ super (name);
+ this.d = d;
+ }
+
+ public void run () {
+
+ int value = 0;
+ int ref = 0;
+
+ for (int i = 0; i < 20; i++) {
+
+ int rand = (int)(Math.random ()*20);
+
+ /* Read `value', ref is kept for comparison */
+ value = Integer.parseInt (d.get());
+
+ /* change `value' and ref by a random number, store `value'. */
+ value += rand; ref += rand;
+ d.set (Integer.toString (value));
+
+ try {
+ sleep((int)((Math.random() * 20)));
+ } catch (InterruptedException e) {}
+ }
+
+ /* If a thread didn't have private value to attach to the
+ instance of Data, results wouldn't be the same */
+ if (ref == value)
+ System.out.println ("test OK.");
+ else
+ System.out.println ("test failed.");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/TLtest.out b/libjava/testsuite/libjava.lang/TLtest.out
new file mode 100644
index 000000000..951592b66
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.out
@@ -0,0 +1,2 @@
+test OK.
+test OK.
diff --git a/libjava/testsuite/libjava.lang/TLtest.xfail b/libjava/testsuite/libjava.lang/TLtest.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/TestProxy.jar b/libjava/testsuite/libjava.lang/TestProxy.jar
new file mode 100644
index 000000000..706f086a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TestProxy.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/TestProxy.java b/libjava/testsuite/libjava.lang/TestProxy.java
new file mode 100644
index 000000000..08e16aa33
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TestProxy.java
@@ -0,0 +1,36 @@
+import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.net.*;
+
+public class TestProxy
+{
+ public static class MyInvocationHandler implements InvocationHandler
+ {
+ public Object invoke (Object proxy,
+ Method method,
+ Object[] args)
+ throws Throwable
+ {
+ System.out.println (args[0]);
+ return null;
+ }
+ }
+
+ public static void main (String[] args)
+ {
+ try {
+ InvocationHandler ih = new MyInvocationHandler();
+
+ SocketOptions c = (SocketOptions)
+ Proxy.newProxyInstance (SocketOptions.class.getClassLoader(),
+ new Class[]{SocketOptions.class},
+ ih);
+
+ c.getOption (555);
+
+ } catch (Exception e) {
+ e.printStackTrace ();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/TestProxy.out b/libjava/testsuite/libjava.lang/TestProxy.out
new file mode 100644
index 000000000..3749383de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TestProxy.out
@@ -0,0 +1 @@
+555
diff --git a/libjava/testsuite/libjava.lang/Thread_Alive.jar b/libjava/testsuite/libjava.lang/Thread_Alive.jar
new file mode 100644
index 000000000..548b6a95f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Alive.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Alive.java b/libjava/testsuite/libjava.lang/Thread_Alive.java
new file mode 100644
index 000000000..e885e1624
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Alive.java
@@ -0,0 +1,46 @@
+// Test the status of the isAlive() flag before, during, and after thread
+// execution. Check that thread's threadgroup is null after thread exits.
+
+public class Thread_Alive implements Runnable
+{
+ public static void main(String args[]) throws InterruptedException
+ {
+ Thread_Alive ta = new Thread_Alive();
+ Thread t = new Thread(ta);
+ System.out.println(t.isAlive());
+ t.start();
+ System.out.println(t.isAlive());
+
+ Thread.sleep(50);
+
+ synchronized (ta)
+ {
+ ta.notifyAll();
+ }
+
+ t.join();
+ System.out.println(t.isAlive());
+
+ try
+ {
+ t.start();
+ System.out.println("Error: dead thread can be restarted.");
+ }
+ catch (IllegalThreadStateException x)
+ {
+ System.out.println ("ok");
+ }
+
+ System.out.println(t.getThreadGroup());
+ }
+
+ public synchronized void run()
+ {
+ try
+ {
+ wait();
+ }
+ catch (InterruptedException x) {}
+ }
+
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Alive.out b/libjava/testsuite/libjava.lang/Thread_Alive.out
new file mode 100644
index 000000000..1d1790d92
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Alive.out
@@ -0,0 +1,5 @@
+false
+true
+false
+ok
+null
diff --git a/libjava/testsuite/libjava.lang/Thread_Alive.xfail b/libjava/testsuite/libjava.lang/Thread_Alive.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Alive.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_HoldsLock.jar b/libjava/testsuite/libjava.lang/Thread_HoldsLock.jar
new file mode 100644
index 000000000..8c094f6b7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_HoldsLock.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_HoldsLock.java b/libjava/testsuite/libjava.lang/Thread_HoldsLock.java
new file mode 100644
index 000000000..62119a160
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_HoldsLock.java
@@ -0,0 +1,27 @@
+// Test that Thread.holdsLock() works.
+
+class Lock {}
+
+public class Thread_HoldsLock
+{
+ static Lock lock = new Lock();
+
+ public static void main(String args[]) throws InterruptedException
+ {
+ Thread_HoldsLock thl = new Thread_HoldsLock();
+
+ thl.check();
+ synchronized (lock)
+ {
+ thl.check();
+ }
+ thl.check();
+ }
+
+ public void check()
+ {
+ Thread this_thread = Thread.currentThread();
+ System.out.println(this_thread.holdsLock(lock));
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/Thread_HoldsLock.out b/libjava/testsuite/libjava.lang/Thread_HoldsLock.out
new file mode 100644
index 000000000..eed403754
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_HoldsLock.out
@@ -0,0 +1,3 @@
+false
+true
+false
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.jar b/libjava/testsuite/libjava.lang/Thread_Interrupt.jar
new file mode 100644
index 000000000..b52d43673
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
new file mode 100644
index 000000000..a69247422
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
@@ -0,0 +1,156 @@
+// Test interrupt() behaviour on a thread in wait(), sleep(), and spinning
+// in a loop.
+
+class ThreadBase extends Thread
+{
+ boolean ready = false;
+
+ synchronized void ready()
+ {
+ ready = true;
+ }
+}
+
+class Waiter extends ThreadBase
+{
+ public synchronized void run()
+ {
+ super.ready();
+ System.out.println ("wait()");
+ try
+ {
+ wait();
+ System.out.println("Error: wait() completed normally.");
+ }
+ catch (InterruptedException x)
+ {
+ if (isInterrupted() || interrupted())
+ System.out.println("Error: interrupt flag is still set.");
+
+ }
+ System.out.println("interrupted - ok");
+ }
+}
+
+class Sleeper extends ThreadBase
+{
+ public void run()
+ {
+ super.ready();
+ System.out.println ("sleep()");
+ try
+ {
+ sleep(5000);
+ System.out.println("Error: sleep() completed normally.");
+ }
+ catch (InterruptedException x)
+ {
+ if (isInterrupted() || interrupted())
+ System.out.println("Error: interrupt flag is still set.");
+
+ System.out.println("interrupted - ok");
+ }
+ }
+}
+
+class Looper extends ThreadBase
+{
+ public void run()
+ {
+ super.ready();
+ System.out.println ("Busy waiting");
+
+ int count = 0;
+ long start = System.currentTimeMillis();
+ while (true)
+ {
+ Thread.yield();
+ if (isInterrupted ())
+ break;
+ long now = System.currentTimeMillis();
+ if ((now - start) > 5000)
+ break;
+ }
+ synchronized (this)
+ {
+ if (interrupted ())
+ {
+ System.out.println ("interrupted - ok");
+ if (isInterrupted () || interrupted ())
+ System.out.println("Error: interrupt flag is still set.");
+ }
+ else
+ System.out.println ("Error: Busy wait was not interrupted.");
+ }
+ }
+}
+
+class Joiner extends ThreadBase
+{
+ public void run()
+ {
+ super.ready();
+ System.out.println("join()");
+ try
+ {
+ join(2000);
+ System.out.println("Error: join() completed normally??!");
+ }
+ catch (InterruptedException x)
+ {
+ if (isInterrupted() || interrupted())
+ System.out.println("Error: interrupt flag is still set.");
+
+ System.out.println("interrupted - ok");
+ }
+
+ }
+}
+
+public class Thread_Interrupt
+{
+ public static void main(String args[])
+ {
+ Waiter w = new Waiter();
+ w.start ();
+ sleep_and_interrupt (w);
+
+ Sleeper s = new Sleeper();
+ s.start ();
+ sleep_and_interrupt (s);
+
+ Looper l = new Looper ();
+ l.start ();
+ sleep_and_interrupt (l);
+
+ Joiner j = new Joiner ();
+ j.start ();
+ sleep_and_interrupt (j);
+ }
+
+ public static void sleep_and_interrupt(ThreadBase t)
+ {
+ try
+ {
+ synchronized (t)
+ {
+ while (!t.ready)
+ t.wait(10);
+ }
+
+ Thread.sleep (50);
+ t.interrupt ();
+ long t1 = System.currentTimeMillis();
+ t.join (5000);
+ long time = System.currentTimeMillis() - t1;
+ if (time > 2900)
+ {
+ System.out.println ("Error: join() from main thread timed out");
+ }
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("Error: main thread interrupted.");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.out b/libjava/testsuite/libjava.lang/Thread_Interrupt.out
new file mode 100644
index 000000000..b3a5c3100
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.out
@@ -0,0 +1,8 @@
+wait()
+interrupted - ok
+sleep()
+interrupted - ok
+Busy waiting
+interrupted - ok
+join()
+interrupted - ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.xfail b/libjava/testsuite/libjava.lang/Thread_Interrupt.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Join.jar b/libjava/testsuite/libjava.lang/Thread_Join.jar
new file mode 100644
index 000000000..4a1d2529c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Join.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Join.java b/libjava/testsuite/libjava.lang/Thread_Join.java
new file mode 100644
index 000000000..9f7f2fb15
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Join.java
@@ -0,0 +1,67 @@
+// Many threads join a single thread.
+
+class Sleeper implements Runnable
+{
+ int num = -1;
+
+ public Sleeper(int num)
+ {
+ this.num = num;
+ }
+
+ public void run()
+ {
+ System.out.println("sleeping");
+ try
+ {
+ Thread.sleep(500);
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("sleep() interrupted");
+ }
+ System.out.println("done");
+ }
+}
+
+class Joiner implements Runnable
+{
+ Thread join_target;
+
+ public Joiner(Thread t)
+ {
+ this.join_target = t;
+ }
+
+ public void run()
+ {
+ try
+ {
+ long start = System.currentTimeMillis();
+ join_target.join(2000);
+ if ((System.currentTimeMillis() - start) > 1900)
+ System.out.println("Error: Join timed out");
+ else
+ System.out.println("ok");
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("join() interrupted");
+ }
+ }
+
+}
+
+public class Thread_Join
+{
+ public static void main(String[] args)
+ {
+ Thread primary = new Thread(new Sleeper(1));
+ primary.start();
+ for (int i=0; i < 10; i++)
+ {
+ Thread t = new Thread(new Joiner(primary));
+ t.start();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Join.out b/libjava/testsuite/libjava.lang/Thread_Join.out
new file mode 100644
index 000000000..ac72ef3f9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Join.out
@@ -0,0 +1,12 @@
+sleeping
+done
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Join.xfail b/libjava/testsuite/libjava.lang/Thread_Join.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Join.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Monitor.jar b/libjava/testsuite/libjava.lang/Thread_Monitor.jar
new file mode 100644
index 000000000..2345c8b63
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Monitor.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Monitor.java b/libjava/testsuite/libjava.lang/Thread_Monitor.java
new file mode 100644
index 000000000..649a75c76
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Monitor.java
@@ -0,0 +1,64 @@
+// Test that monitor locks work and are recursive.
+
+class T implements Runnable
+{
+ public int count = 0;
+ Counter c;
+
+ public T (Counter c)
+ {
+ this.c = c;
+ }
+
+ public void run()
+ {
+ while (true)
+ {
+ // NOTE: double-synchronization here.
+ synchronized (c)
+ {
+ if (c.getCount() <= 100000)
+ count++;
+ else
+ break;
+ }
+ }
+ }
+}
+
+class Counter
+{
+ int i = 0;
+ public synchronized int getCount ()
+ {
+ return ++i;
+ }
+}
+
+public class Thread_Monitor
+{
+ public static void main(String args[])
+ {
+ Counter c = new Counter();
+ T t1 = new T(c);
+ T t2 = new T(c);
+
+ Thread th1 = new Thread(t1);
+ Thread th2 = new Thread(t2);
+ th1.start();
+ th2.start();
+ try
+ {
+ th1.join();
+ th2.join();
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("failed: Interrupted");
+ }
+ if (t1.count + t2.count == 100000)
+ System.out.println ("ok");
+ else
+ System.out.println ("failed: total count incorrect");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Monitor.out b/libjava/testsuite/libjava.lang/Thread_Monitor.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Monitor.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Monitor.xfail b/libjava/testsuite/libjava.lang/Thread_Monitor.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Monitor.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep.jar b/libjava/testsuite/libjava.lang/Thread_Sleep.jar
new file mode 100644
index 000000000..2320add29
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep.java b/libjava/testsuite/libjava.lang/Thread_Sleep.java
new file mode 100644
index 000000000..7220a6a3a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep.java
@@ -0,0 +1,23 @@
+// Test that Thread.sleep() works.
+
+public class Thread_Sleep
+{
+ public static void main(String args[])
+ {
+ try
+ {
+ long start = System.currentTimeMillis();
+ System.out.println("sleeping");
+ Thread.sleep(50);
+ long end = System.currentTimeMillis();
+ if ((end - start) < 50)
+ System.out.println ("failed");
+ else
+ System.out.println("ok");
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("error: Thread interrupted.");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep.out b/libjava/testsuite/libjava.lang/Thread_Sleep.out
new file mode 100644
index 000000000..1622a213a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep.out
@@ -0,0 +1,2 @@
+sleeping
+ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep.xfail b/libjava/testsuite/libjava.lang/Thread_Sleep.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep_2.jar b/libjava/testsuite/libjava.lang/Thread_Sleep_2.jar
new file mode 100644
index 000000000..a657ed91a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep_2.java b/libjava/testsuite/libjava.lang/Thread_Sleep_2.java
new file mode 100644
index 000000000..37c0d3bb6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep_2.java
@@ -0,0 +1,34 @@
+// Test that Thread.sleep() is accurate
+// and that nanoTime actually measures in nanoseconds.
+
+public class Thread_Sleep_2
+{
+ public static void main(String args[])
+ {
+ try
+ {
+ boolean ok = true;
+ for (int i = 0; i < 100; i++)
+ {
+ long start = System.nanoTime();
+ Thread.sleep(10);
+ long end = System.nanoTime();
+ if ((end - start) < 10000000)
+ {
+ System.out.print ("failed, iteration ");
+ System.out.print (i);
+ System.out.print (", time ");
+ System.out.print (end - start);
+ System.out.println ("ns");
+ ok = false;
+ }
+ }
+ if (ok)
+ System.out.println ("ok");
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println("error: Thread interrupted.");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep_2.out b/libjava/testsuite/libjava.lang/Thread_Sleep_2.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep_2.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep_2.xfail b/libjava/testsuite/libjava.lang/Thread_Sleep_2.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep_2.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait.jar b/libjava/testsuite/libjava.lang/Thread_Wait.jar
new file mode 100644
index 000000000..1ecb6a3e3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait.java b/libjava/testsuite/libjava.lang/Thread_Wait.java
new file mode 100644
index 000000000..88508243a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait.java
@@ -0,0 +1,48 @@
+// Test basic thread creation and wait/notify functionality.
+
+public class Thread_Wait implements Runnable
+{
+ public static void main(String args[])
+ {
+ new Thread_Wait();
+ }
+
+ public Thread_Wait()
+ {
+ System.out.println("creating thread");
+ Thread t = new Thread(this);
+ t.start();
+
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (Exception x)
+ {
+ System.out.println("exception occurred: " + x);
+ }
+
+ synchronized (this)
+ {
+ System.out.println("notifying other thread");
+ notify();
+ }
+ }
+
+ public void run()
+ {
+ System.out.println ("new thread running");
+ synchronized (this)
+ {
+ try
+ {
+ wait();
+ }
+ catch (Exception x)
+ {
+ System.out.println("exception occurred: " + x);
+ }
+ }
+ System.out.println ("thread notified okay");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait.out b/libjava/testsuite/libjava.lang/Thread_Wait.out
new file mode 100644
index 000000000..09cbb785c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait.out
@@ -0,0 +1,4 @@
+creating thread
+new thread running
+notifying other thread
+thread notified okay
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait.xfail b/libjava/testsuite/libjava.lang/Thread_Wait.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.jar b/libjava/testsuite/libjava.lang/Thread_Wait_2.jar
new file mode 100644
index 000000000..b043de48a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.java b/libjava/testsuite/libjava.lang/Thread_Wait_2.java
new file mode 100644
index 000000000..7ee51726c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_2.java
@@ -0,0 +1,143 @@
+// Create many threads waiting on a monitor. Interrupt some of them. Do the
+// others wake up correctly with notify() and/or notifyAll()?
+
+import java.util.Vector;
+
+class Waiter extends Thread
+{
+ Object monitor;
+ int thread_num;
+ boolean interrupted = false;
+ boolean notified = false;
+
+ Waiter (Object monitor, int thread_num)
+ {
+ this.monitor = monitor;
+ this.thread_num = thread_num;
+ }
+
+ public void run()
+ {
+ synchronized (monitor)
+ {
+ try
+ {
+ monitor.wait();
+ notified = true;
+ }
+ catch (InterruptedException x)
+ {
+ interrupted = true;
+ }
+ }
+
+ }
+}
+
+public class Thread_Wait_2
+{
+ static Vector threads;
+ static Object monitor = new Object();
+
+ static final int NUM_THREADS = 10;
+
+ public static void main(String args[])
+ {
+
+
+ try
+ {
+ makeThreads ();
+
+ Thread.sleep(250);
+
+ // Interrupt a few threads...
+ Waiter i1 = (Waiter) threads.elementAt(3);
+ Waiter i2 = (Waiter) threads.elementAt(4);
+ Waiter i3 = (Waiter) threads.elementAt(9);
+ i1.interrupt();
+ i2.interrupt();
+ i3.interrupt();
+
+ // Call notify the exact number of times required to wake the remaining
+ // threads.
+ synchronized (monitor)
+ {
+ for (int i=0; i < NUM_THREADS -3 ; i++)
+ {
+ monitor.notify ();
+ }
+ }
+
+ joinAll();
+ printStatus();
+
+ // Repeat all the above, but use notifyAll() instead.
+ makeThreads();
+
+ Thread.sleep(250);
+
+ // Interrupt a few threads...
+ i1 = (Waiter) threads.elementAt(0);
+ i2 = (Waiter) threads.elementAt(1);
+ i3 = (Waiter) threads.elementAt(9);
+ i1.interrupt();
+ i2.interrupt();
+ i3.interrupt();
+
+ // Call notifyAll to wake the remaining threads.
+ synchronized (monitor)
+ {
+ monitor.notifyAll ();
+ }
+
+ joinAll();
+ printStatus();
+
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println (x);
+ }
+
+
+ }
+
+ static void makeThreads()
+ {
+ threads = new Vector(NUM_THREADS);
+
+ for (int i=0; i < NUM_THREADS; i++)
+ {
+ Waiter w = new Waiter(monitor, i);
+ w.start();
+ threads.addElement(w);
+ }
+ }
+
+ static void joinAll()
+ {
+ try
+ {
+ for (int i=0; i < threads.size(); i++)
+ {
+ Thread t = (Thread) threads.elementAt(i);
+ t.join();
+ }
+ }
+ catch (InterruptedException x) {}
+ }
+
+ static void printStatus()
+ {
+ for (int i=0; i < threads.size(); i++)
+ {
+ Waiter w = (Waiter) threads.elementAt(i);
+ if (w.interrupted)
+ System.out.println (i + " interrupted.");
+ if (w.notified)
+ System.out.println (i + " notified.");
+ }
+ }
+
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.out b/libjava/testsuite/libjava.lang/Thread_Wait_2.out
new file mode 100644
index 000000000..4a71f07f9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_2.out
@@ -0,0 +1,20 @@
+0 notified.
+1 notified.
+2 notified.
+3 interrupted.
+4 interrupted.
+5 notified.
+6 notified.
+7 notified.
+8 notified.
+9 interrupted.
+0 interrupted.
+1 interrupted.
+2 notified.
+3 notified.
+4 notified.
+5 notified.
+6 notified.
+7 notified.
+8 notified.
+9 interrupted.
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.xfail b/libjava/testsuite/libjava.lang/Thread_Wait_2.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_2.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.jar b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.jar
new file mode 100644
index 000000000..dcafc43c6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
new file mode 100644
index 000000000..609527cda
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
@@ -0,0 +1,75 @@
+// Create two threads waiting on a monitor. Interrupt one of them. Does the
+// other wake up correctly?
+
+class Waiter extends Thread
+{
+ Object monitor;
+ int thread_num;
+ boolean interrupted = false;
+ boolean notified = false;
+
+ Waiter (Object monitor, int thread_num)
+ {
+ this.monitor = monitor;
+ this.thread_num = thread_num;
+ }
+
+ public void run()
+ {
+ synchronized (monitor)
+ {
+ System.out.println ("Thread waiting.");
+ try
+ {
+ long start = System.currentTimeMillis();
+ monitor.wait(1000);
+ long time = System.currentTimeMillis() - start;
+ if (time > 990)
+ System.out.println ("Error: wait on thread " + thread_num
+ + " timed out.");
+ else
+ notified = true;
+ }
+ catch (InterruptedException x)
+ {
+ interrupted = true;
+ }
+ }
+
+ }
+}
+
+public class Thread_Wait_Interrupt
+{
+ public static void main(String args[])
+ {
+ Object monitor = new Object();
+ Waiter w1 = new Waiter(monitor, 1);
+ Waiter w2 = new Waiter(monitor, 2);
+ w1.start();
+ w2.start();
+ try
+ {
+ Thread.sleep(250);
+
+ synchronized (monitor)
+ {
+ w1.interrupt();
+ monitor.notify();
+ }
+
+ w1.join();
+ w2.join();
+ System.out.println("join ok");
+ System.out.println("Thread 1 " +
+ (w1.interrupted ? "interrupted ok" : "error"));
+ System.out.println("Thread 2 " +
+ (w2.notified ? "notified ok" : "error"));
+
+ }
+ catch (InterruptedException x)
+ {
+ System.out.println (x);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out
new file mode 100644
index 000000000..4f3b16678
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out
@@ -0,0 +1,5 @@
+Thread waiting.
+Thread waiting.
+join ok
+Thread 1 interrupted ok
+Thread 2 notified ok
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail
new file mode 100644
index 000000000..3f95317a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail
@@ -0,0 +1 @@
+need-threads
diff --git a/libjava/testsuite/libjava.lang/Throw_1.jar b/libjava/testsuite/libjava.lang/Throw_1.jar
new file mode 100644
index 000000000..330562d50
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Throw_1.java b/libjava/testsuite/libjava.lang/Throw_1.java
new file mode 100644
index 000000000..4a0780aec
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_1.java
@@ -0,0 +1,25 @@
+// Some tests of `throw'.
+
+public class Throw_1
+{
+ public static Throwable get ()
+ {
+ return null;
+ }
+
+ public static void main (String[] args)
+ {
+ Throwable t = get ();
+ try
+ {
+ throw t;
+ }
+ catch (NullPointerException y)
+ {
+ }
+ catch (Throwable x)
+ {
+ System.out.println ("no");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Throw_1.out b/libjava/testsuite/libjava.lang/Throw_1.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_1.out
diff --git a/libjava/testsuite/libjava.lang/Throw_2.jar b/libjava/testsuite/libjava.lang/Throw_2.jar
new file mode 100644
index 000000000..6cfb11fe5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Throw_2.java b/libjava/testsuite/libjava.lang/Throw_2.java
new file mode 100644
index 000000000..6d1d0e6b4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_2.java
@@ -0,0 +1,59 @@
+// Check that NullPointerExceptions thrown from library code are
+// caught. This detects a number of failures that can be caused by
+// libgcj being built incorrectly. In particular, we ensure that a
+// SEGV in native (i.e. C++) code in libgcj is handled correctly.
+
+// Regrettably, we cannot guarantee that Double.parseDouble() will
+// always be native code, or that it will never be inlined. It could
+// be argued that we should add a method to libgcj that will be
+// guaranteed forever to be native, but I'm reluctant to add to the
+// library for the sole purpose of performing this test.
+
+public class Throw_2
+{
+ public static Throwable obj()
+ {
+ return null;
+ }
+
+ public static String str()
+ {
+ return null;
+ }
+
+ static double d;
+
+ public static void main (String[] args)
+ {
+ // This NullPointerException will, at the time of writing, be
+ // thrown from Java code in libgcj.
+ try
+ {
+ java.util.Vector v = new java.util.Vector (null);
+ System.out.println ("fail: no exception thrown");
+ }
+ catch (NullPointerException _)
+ {
+ System.out.println ("1");
+ }
+ catch (Throwable _)
+ {
+ System.out.println ("fail: " + _);
+ }
+ // This one will, at the time of writing, be thrown from C++
+ // code in libgcj.
+ try
+ {
+ d = Double.parseDouble(str());
+ System.out.println ("fail: no exception thrown");
+ }
+ catch (NullPointerException _)
+ {
+ System.out.println ("2");
+ }
+ catch (Throwable _)
+ {
+ System.out.println ("fail: " + _);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Throw_2.out b/libjava/testsuite/libjava.lang/Throw_2.out
new file mode 100644
index 000000000..1191247b6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_2.out
@@ -0,0 +1,2 @@
+1
+2
diff --git a/libjava/testsuite/libjava.lang/Throw_3.jar b/libjava/testsuite/libjava.lang/Throw_3.jar
new file mode 100644
index 000000000..0aefbe04f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/Throw_3.java b/libjava/testsuite/libjava.lang/Throw_3.java
new file mode 100644
index 000000000..5d9a2dc7a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_3.java
@@ -0,0 +1,41 @@
+// Check that a NPE likely thrown from the first instruction of a
+// method (foo) is properly caught.
+public class Throw_3
+{
+ public static void main(String[] args)
+ {
+ Throw_3 al = new Throw_3();
+ try
+ {
+ al.foo(null);
+ }
+ catch (NullPointerException npe)
+ {
+ StackTraceElement ste[] = npe.getStackTrace();
+ StackTraceElement top = ste[0];
+ if ("foo".equals(top.getMethodName()))
+ {
+ System.out.println("ok");
+ return;
+ }
+ }
+ System.out.println("bad");
+ }
+
+ public int bar(int[] a)
+ {
+ System.out.println("Bar");
+ return 5;
+ }
+
+ /**
+ * If the second parameter ('this' being the first) is passed in a
+ * register, then the first machine instruction in foo is likely to
+ * fault when null is passed.
+ */
+ public int foo(int[] a)
+ {
+ int l = a.length;
+ return l + l;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/Throw_3.out b/libjava/testsuite/libjava.lang/Throw_3.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_3.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/WalkerTest.jar b/libjava/testsuite/libjava.lang/WalkerTest.jar
new file mode 100644
index 000000000..64faf04df
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/WalkerTest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/WalkerTest.java b/libjava/testsuite/libjava.lang/WalkerTest.java
new file mode 100644
index 000000000..f4e41fecf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/WalkerTest.java
@@ -0,0 +1,15 @@
+class Foo
+{
+ Class bar()
+ {
+ return gnu.classpath.VMStackWalker.getCallingClass();
+ }
+}
+
+public class WalkerTest
+{
+ public static void main(String[] argv)
+ {
+ System.out.println(new Foo().bar());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/WalkerTest.out b/libjava/testsuite/libjava.lang/WalkerTest.out
new file mode 100644
index 000000000..9b8eb0030
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/WalkerTest.out
@@ -0,0 +1 @@
+class WalkerTest
diff --git a/libjava/testsuite/libjava.lang/anfi.jar b/libjava/testsuite/libjava.lang/anfi.jar
new file mode 100644
index 000000000..81225e4d2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anfi.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anfi.java b/libjava/testsuite/libjava.lang/anfi.java
new file mode 100644
index 000000000..d9e7de752
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anfi.java
@@ -0,0 +1,33 @@
+// Class anfi
+// Generated on Sat Jan 29 16:06:33 PST 2000
+// Anonymous with access to outer context locals
+
+class anfi {
+
+ itf foo (final String s, final int i) {
+ return new itf () {
+ String buff = s+" "+i;
+ public void setString (String s) { buff = s+" "+i; }
+ public String getString () { return buff; }
+ };
+ }
+
+ void test () {
+ itf x = foo ("Hello", 123);
+ System.out.println (x.getString ());
+ x.setString ("Frinkahedron");
+ System.out.println (x.getString ());
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `anfi'...");
+ new anfi().test();
+ }
+}
+
+interface itf {
+ void setString (String s);
+ String getString();
+ String buff = null;
+}
diff --git a/libjava/testsuite/libjava.lang/anfi.out b/libjava/testsuite/libjava.lang/anfi.out
new file mode 100644
index 000000000..52ac97cf9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anfi.out
@@ -0,0 +1,3 @@
+Testing class `anfi'...
+Hello 123
+Frinkahedron 123
diff --git a/libjava/testsuite/libjava.lang/anon.jar b/libjava/testsuite/libjava.lang/anon.jar
new file mode 100644
index 000000000..295e1647a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anon.java b/libjava/testsuite/libjava.lang/anon.java
new file mode 100644
index 000000000..c24b4f0a2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon.java
@@ -0,0 +1,52 @@
+// Class anon
+// Generated on Wed Dec 29 10:07:09 PST 1999
+//
+
+
+interface itf {int count = 0;void setCount (int i);int getCount ();}
+
+class anon {
+
+ int count = 34;
+
+ class x implements itf {
+ int count = 3;
+ public void setCount (int j) { }
+ public int getCount () { return count*3; }
+ }
+
+
+ itf foo () {
+ class y implements itf {
+ int count = 3;
+ public void setCount (int j) { count = j; }
+ public int getCount () { return count+1; }
+ }
+ return new y ();
+ }
+
+ itf bar () {
+ return new itf () {
+ // The class defined right here will implement `itf'
+ int count = 5;
+ public void setCount (int j) { count = j; }
+ public int getCount () { return count+1; }
+ } ;
+ }
+
+ void test () {
+ itf a = foo ();
+ itf b = bar ();
+ x c = this.new x ();
+ System.out.println (a.getCount ());
+ System.out.println (b.getCount ());
+ System.out.println (c.getCount ());
+ System.out.println (this.count);
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `anon'...");
+ new anon ().test ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anon.out b/libjava/testsuite/libjava.lang/anon.out
new file mode 100644
index 000000000..3b397bbe5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon.out
@@ -0,0 +1,5 @@
+Testing class `anon'...
+4
+6
+9
+34
diff --git a/libjava/testsuite/libjava.lang/anon2.jar b/libjava/testsuite/libjava.lang/anon2.jar
new file mode 100644
index 000000000..3906ff540
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anon2.java b/libjava/testsuite/libjava.lang/anon2.java
new file mode 100644
index 000000000..a14eef88e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon2.java
@@ -0,0 +1,50 @@
+// Class anon2
+// Generated on Wed Dec 29 10:07:09 PST 1999
+//
+
+
+class anon2 {
+
+ int count = 34;
+ int field;
+
+ anon2 () { System.out.println ("anon2()"); }
+
+ anon2 (foobar x) {
+ System.out.println ("Yikes!"+x.zoink());
+ }
+
+ anon2 foo () {
+ class y extends anon2 {
+ int count = 3;
+ public void setCount (int j) { count = j; }
+ public int getCount () { return count+1; }
+ y (int i) { System.out.println ("y(int)"); }
+ }
+ return new y (3);
+ }
+
+ anon2 bar () {
+ foobar xyz = new foobar ();
+ return new anon2 (xyz) {
+ int count = 5;
+ public void setCount (int j) { field = 3; count = j; }
+ public int getCount () { return count+1; }
+ } ;
+ }
+
+ void test () {
+ anon2 b = bar ();
+ anon2 c = foo ();
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `anon2'...");
+ new anon2 ().test ();
+ }
+}
+
+class foobar {
+ public String zoink() { return " zoinked"; }
+}
diff --git a/libjava/testsuite/libjava.lang/anon2.out b/libjava/testsuite/libjava.lang/anon2.out
new file mode 100644
index 000000000..2a1257491
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon2.out
@@ -0,0 +1,5 @@
+Testing class `anon2'...
+anon2()
+Yikes! zoinked
+anon2()
+y(int)
diff --git a/libjava/testsuite/libjava.lang/anon3.jar b/libjava/testsuite/libjava.lang/anon3.jar
new file mode 100644
index 000000000..83bce16f8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anon3.java b/libjava/testsuite/libjava.lang/anon3.java
new file mode 100644
index 000000000..0af8804d8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon3.java
@@ -0,0 +1,28 @@
+// Class anon3
+// Generated on Wed Dec 29 10:07:09 PST 1999
+//
+
+
+class anon3 {
+
+ itf bar () {
+ return new itf () {
+ int count = 5;
+ public void setCount (int j) { count = 3; }
+ public int getCount () { return count; }
+ } ;
+ }
+
+ void test () {
+ itf x = bar ();
+ System.out.println (x.getCount ());
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `anon3'...");
+ new anon3 ().test ();
+ }
+}
+
+interface itf { void setCount (int j); int getCount(); int count = 0; }
diff --git a/libjava/testsuite/libjava.lang/anon3.out b/libjava/testsuite/libjava.lang/anon3.out
new file mode 100644
index 000000000..87855491b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon3.out
@@ -0,0 +1,2 @@
+Testing class `anon3'...
+5
diff --git a/libjava/testsuite/libjava.lang/anon4.jar b/libjava/testsuite/libjava.lang/anon4.jar
new file mode 100644
index 000000000..5362e8d59
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon4.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anon4.java b/libjava/testsuite/libjava.lang/anon4.java
new file mode 100644
index 000000000..4fd526227
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon4.java
@@ -0,0 +1,30 @@
+// Class anon4
+// Generated on Wed Dec 29 10:07:09 PST 1999
+//
+
+
+class anon4 {
+
+ private int field = 3;
+
+ itf bar () {
+ return new itf () {
+ int count = 5;
+ public void setCount (int j) { count = 3+field; }
+ public int getCount () { return count+field; }
+ } ;
+ }
+
+ void test () {
+ itf x = bar ();
+ System.out.println (x.getCount ());
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `anon4'...");
+ new anon4 ().test ();
+ }
+}
+
+interface itf { void setCount (int j); int getCount(); int count = 0; }
diff --git a/libjava/testsuite/libjava.lang/anon4.out b/libjava/testsuite/libjava.lang/anon4.out
new file mode 100644
index 000000000..ff8b8916e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon4.out
@@ -0,0 +1,2 @@
+Testing class `anon4'...
+8
diff --git a/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.jar b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.jar
new file mode 100644
index 000000000..d9c42028a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
new file mode 100644
index 000000000..1fd16f12b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
@@ -0,0 +1,38 @@
+/* From java/3285, By p.thio@valescom.com */
+
+interface I
+{
+ void print ();
+};
+
+class C1
+implements I
+{
+ public void print () { System.out.println ("C1: Message"); }
+}
+
+abstract
+class C2
+{
+ C2(I i)
+ {
+ i.print ();
+ }
+ abstract void h();
+}
+
+public
+class anon_ctor_itf_arg
+{
+ public static
+ void main(String argv[])
+ {
+ C1 c1 = new C1();
+ new C2(c1)
+ {
+ void h()
+ {
+ }
+ };
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
new file mode 100644
index 000000000..abddf8e8f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
@@ -0,0 +1 @@
+C1: Message
diff --git a/libjava/testsuite/libjava.lang/anonarray.jar b/libjava/testsuite/libjava.lang/anonarray.jar
new file mode 100644
index 000000000..d2b2070b4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anonarray.java b/libjava/testsuite/libjava.lang/anonarray.java
new file mode 100644
index 000000000..8239c51f9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray.java
@@ -0,0 +1,22 @@
+// Class anonarray
+// Generated on Tue Feb 1 16:11:29 PST 2000
+// Simple anonymous array, of primitive types.
+
+class anonarray {
+
+ static void foo (int [][] x) {
+ for (int i = 0; i < x.length; i++)
+ {
+ for (int j = 0; j < x[i].length; j++)
+ System.out.print (x[i][j]);
+ System.out.println();
+ }
+ }
+
+ public static void main (String[] arg)
+ {
+ foo (new int[][] {{2,3},{5,7}});
+ System.out.println ((new int [][] {{11,13},{17,19}}).length);
+ System.out.println ((new int [][] {{23,29},{31,37}})[0][1]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anonarray.out b/libjava/testsuite/libjava.lang/anonarray.out
new file mode 100644
index 000000000..4ad3f56ef
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray.out
@@ -0,0 +1,4 @@
+23
+57
+2
+29
diff --git a/libjava/testsuite/libjava.lang/anonarray2.jar b/libjava/testsuite/libjava.lang/anonarray2.jar
new file mode 100644
index 000000000..608a08174
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anonarray2.java b/libjava/testsuite/libjava.lang/anonarray2.java
new file mode 100644
index 000000000..46df5e711
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray2.java
@@ -0,0 +1,22 @@
+// Class anonarray2
+// Generated on Tue Feb 1 21:14:06 PST 2000
+// Anonymous array, with a non primitive type.
+
+class anonarray2 {
+
+ static void foo (String [][] x) {
+ for (int i = 0; i < x.length; i++)
+ {
+ for (int j = 0; j < x[i].length; j++)
+ System.out.print (x[i][j]);
+ System.out.println();
+ }
+ }
+
+ public static void main (String[] arg)
+ {
+ foo (new String[][] {{"2","3"},{"5","7"}});
+ System.out.println ((new String [][] {{"11","13"},{"17","19"}}).length);
+ System.out.println ((new String [][] {{"23","29"},{"31","37"}})[0][1]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anonarray2.out b/libjava/testsuite/libjava.lang/anonarray2.out
new file mode 100644
index 000000000..4ad3f56ef
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray2.out
@@ -0,0 +1,4 @@
+23
+57
+2
+29
diff --git a/libjava/testsuite/libjava.lang/anonarray3.jar b/libjava/testsuite/libjava.lang/anonarray3.jar
new file mode 100644
index 000000000..b24906fa8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/anonarray3.java b/libjava/testsuite/libjava.lang/anonarray3.java
new file mode 100644
index 000000000..264365b13
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray3.java
@@ -0,0 +1,13 @@
+// Class anonarray3
+// Generated on Tue Feb 8 19:18:10 PST 2000
+//
+
+class anonarray3 {
+ private static final int[] foo (int x) {
+ return new int[] { x+1 };
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println (foo (34)[0]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anonarray3.out b/libjava/testsuite/libjava.lang/anonarray3.out
new file mode 100644
index 000000000..8f92bfdd4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anonarray3.out
@@ -0,0 +1 @@
+35
diff --git a/libjava/testsuite/libjava.lang/assign.jar b/libjava/testsuite/libjava.lang/assign.jar
new file mode 100644
index 000000000..1b9896c7e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/assign.java b/libjava/testsuite/libjava.lang/assign.java
new file mode 100644
index 000000000..ff288c93b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign.java
@@ -0,0 +1,19 @@
+// Test for an array assignment bug we've had.
+
+public class assign
+{
+ public static class base
+ {
+ }
+
+ public static class derived extends base
+ {
+ }
+
+ public static void main(String[] args)
+ {
+ base[][] x1 = new base[3][3];
+ derived[] x2 = new derived[3];
+ x1[0] = x2;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/assign.out b/libjava/testsuite/libjava.lang/assign.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign.out
diff --git a/libjava/testsuite/libjava.lang/assign2.jar b/libjava/testsuite/libjava.lang/assign2.jar
new file mode 100644
index 000000000..8f1e1164b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/assign2.java b/libjava/testsuite/libjava.lang/assign2.java
new file mode 100644
index 000000000..41fdcb594
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign2.java
@@ -0,0 +1,21 @@
+// Test for an array assignment bug we've had.
+
+public class assign2
+{
+ public static Object[][] c () { return new Long[5][5]; }
+
+ public static Object[] d () { return new Integer[3]; }
+
+ public static void main(String[] args)
+ {
+ try
+ {
+ Object[][] x = c();
+ x[0] = d();
+ }
+ catch (ArrayStoreException _)
+ {
+ System.out.println("good");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/assign2.out b/libjava/testsuite/libjava.lang/assign2.out
new file mode 100644
index 000000000..12799ccbe
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/assign2.out
@@ -0,0 +1 @@
+good
diff --git a/libjava/testsuite/libjava.lang/bclink.jar b/libjava/testsuite/libjava.lang/bclink.jar
new file mode 100644
index 000000000..86709d63d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bclink.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/bclink.java b/libjava/testsuite/libjava.lang/bclink.java
new file mode 100644
index 000000000..b10c678e1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bclink.java
@@ -0,0 +1,12 @@
+// This tests that a C++ ABI class can derive from a BC ABI class.
+// This can't always work, but if the base class does not change then
+// it will work fine.
+
+import org.xml.sax.*;
+
+public class bclink extends SAXParseException {
+ public bclink() { super ("hi", null); }
+
+ public static void main(String[] args) throws Throwable {
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/bclink.out b/libjava/testsuite/libjava.lang/bclink.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bclink.out
diff --git a/libjava/testsuite/libjava.lang/bytearray.jar b/libjava/testsuite/libjava.lang/bytearray.jar
new file mode 100644
index 000000000..550ae7b85
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bytearray.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/bytearray.java b/libjava/testsuite/libjava.lang/bytearray.java
new file mode 100644
index 000000000..88fdc9af0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bytearray.java
@@ -0,0 +1,10 @@
+public class bytearray
+{
+ public static void main (String[] argv) throws Throwable {
+ Class c = Class.forName ("[Ljava.lang.String;");
+ c = Class.forName ("[B");
+ System.out.println (c);
+ c = ClassLoader.getSystemClassLoader().loadClass ("[[Ljava.lang.String;");
+ System.out.println (c);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/bytearray.out b/libjava/testsuite/libjava.lang/bytearray.out
new file mode 100644
index 000000000..520d568e9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bytearray.out
@@ -0,0 +1,2 @@
+class [B
+class [[Ljava.lang.String;
diff --git a/libjava/testsuite/libjava.lang/direct_read.jar b/libjava/testsuite/libjava.lang/direct_read.jar
new file mode 100644
index 000000000..da334fb58
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_read.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/direct_read.java b/libjava/testsuite/libjava.lang/direct_read.java
new file mode 100644
index 000000000..573428493
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_read.java
@@ -0,0 +1,27 @@
+// Class direct_read
+// Generated on Sat Nov 13 23:26:34 UTC 1999
+//
+
+class direct_read {
+
+ int foo;
+
+ class direct_read_inner {
+ void test () {
+ int x = foo;
+ System.out.println ("x="+x);
+ }
+ }
+
+ void foo ()
+ {
+ foo = 670;
+ direct_read_inner inn = this.new direct_read_inner ();
+ inn.test ();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `direct_read'...");
+ new direct_read().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/direct_read.out b/libjava/testsuite/libjava.lang/direct_read.out
new file mode 100644
index 000000000..f8f3c6475
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_read.out
@@ -0,0 +1,2 @@
+Testing class `direct_read'...
+x=670
diff --git a/libjava/testsuite/libjava.lang/direct_write.jar b/libjava/testsuite/libjava.lang/direct_write.jar
new file mode 100644
index 000000000..b3188aa64
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_write.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/direct_write.java b/libjava/testsuite/libjava.lang/direct_write.java
new file mode 100644
index 000000000..2745f8601
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_write.java
@@ -0,0 +1,27 @@
+// Class direct_write
+// Generated on Mon Nov 15 17:10:56 UTC 1999
+//
+
+class direct_write {
+
+ int foo;
+
+ class direct_write_inner {
+ void test () {
+ foo = 670;
+ }
+ }
+
+ void foo ()
+ {
+ foo = 650;
+ direct_write_inner inn = this.new direct_write_inner ();
+ inn.test ();
+ System.out.println ("foo="+foo);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `direct_write'...");
+ new direct_write().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/direct_write.out b/libjava/testsuite/libjava.lang/direct_write.out
new file mode 100644
index 000000000..b4ff636ee
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/direct_write.out
@@ -0,0 +1,2 @@
+Testing class `direct_write'...
+foo=670
diff --git a/libjava/testsuite/libjava.lang/emptystring.jar b/libjava/testsuite/libjava.lang/emptystring.jar
new file mode 100644
index 000000000..6303487c2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/emptystring.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/emptystring.java b/libjava/testsuite/libjava.lang/emptystring.java
new file mode 100644
index 000000000..9da2ead72
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/emptystring.java
@@ -0,0 +1,15 @@
+public class emptystring
+{
+ public static void main(String[] args)
+ {
+ System.out.println("null".equals(n(0) + ""));
+ System.out.println("null".equals("" + n(0)));
+ System.out.println("x".equals(n(1) + ""));
+ System.out.println("x".equals("" + n(1)));
+ }
+
+ static String n(int i)
+ {
+ if (i==0) return null; else return "x";
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/emptystring.out b/libjava/testsuite/libjava.lang/emptystring.out
new file mode 100644
index 000000000..1140ff52e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/emptystring.out
@@ -0,0 +1,4 @@
+true
+true
+true
+true
diff --git a/libjava/testsuite/libjava.lang/err1.jar b/libjava/testsuite/libjava.lang/err1.jar
new file mode 100644
index 000000000..11917d98b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err1.java b/libjava/testsuite/libjava.lang/err1.java
new file mode 100644
index 000000000..7530252c8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err1.java
@@ -0,0 +1,25 @@
+/*-------------------------------------------------------------------------*/
+/* File name : err1.java */
+/* : */
+/* Cause : When I make class-type Object. */
+/* : */
+/* Message : Internal compiler error: program jc1 got */
+/* : fatal signal 11 */
+/*-------------------------------------------------------------------------*/
+
+class A {
+ int counter = 100;
+}
+
+public class err1 {
+ public static void main(String[] args) {
+ A array[] = new A[10]; //err
+ array[0] = new A();
+
+ if ( array[0].counter == 100 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG:[100]-->[" +array[0].counter+ "]");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/err1.out b/libjava/testsuite/libjava.lang/err1.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err1.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err10.jar b/libjava/testsuite/libjava.lang/err10.jar
new file mode 100644
index 000000000..05d8f96fc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err10.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err10.java b/libjava/testsuite/libjava.lang/err10.java
new file mode 100644
index 000000000..afdb4e055
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err10.java
@@ -0,0 +1,23 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err10.java */
+/* : */
+/* Cause : Operator >>> doesn't work correctly when value is negative. */
+/* : */
+/* Message : NG : a = -2 */
+/*--------------------------------------------------------------------------*/
+
+public class err10 {
+ public static void main(String[] args) {
+ int a = -3;
+
+ a = a>>>1;
+
+ if ( a == 2147483646 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG:[2147483646]-->[" +a+ "]");
+ }
+
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err10.out b/libjava/testsuite/libjava.lang/err10.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err10.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err11.jar b/libjava/testsuite/libjava.lang/err11.jar
new file mode 100644
index 000000000..a818007ac
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err11.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err11.java b/libjava/testsuite/libjava.lang/err11.java
new file mode 100644
index 000000000..7b1d0c7f1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err11.java
@@ -0,0 +1,30 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err11.java */
+/* : */
+/* Cause : If I declare both array which have more than 10 element */
+/* : and switch statement, make error. */
+/* : */
+/* Message : err11.java:1: Missing class name. */
+/* : public class err11 */
+/* : ^ */
+/* : err11.java:1: Class or interface declaration expected. */
+/* : public class err11 */
+/* : ^ */
+/* : 2 errors */
+/*--------------------------------------------------------------------------*/
+
+public class err11
+{
+ public static void main(String args[])
+ {
+ int i;
+ short ary1[] = {12,23,34,45,56,67,78,89,90,111};
+
+ for(i=0; i<10; i++) {
+ switch(ary1[i]) {
+ case 111 : System.out.println("OK");
+ default : break;
+ }
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/err11.out b/libjava/testsuite/libjava.lang/err11.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err11.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err12.jar b/libjava/testsuite/libjava.lang/err12.jar
new file mode 100644
index 000000000..ec9f19bf2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err12.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err12.java b/libjava/testsuite/libjava.lang/err12.java
new file mode 100644
index 000000000..9631b3de6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err12.java
@@ -0,0 +1,27 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err12.java */
+/* : */
+/* Cause : Cast negative floating point to char makes error */
+/* : */
+/* Message : Internal compiler error in functi on convert_move */
+/*--------------------------------------------------------------------------*/
+
+public class err12 {
+ public static void main(String[] args){
+ char x1, x2;
+
+ float y = -10000f;
+
+ x1 = (char)y; // err
+ x2 = (char)-10000f; // ok
+
+ if ( x1 == x2 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG");
+ System.out.println("x1:[65520]-->[" +(x1-0)+"]");
+ System.out.println("x2:[65520]-->[" +(x2-0)+"]");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err12.out b/libjava/testsuite/libjava.lang/err12.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err12.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err13.jar b/libjava/testsuite/libjava.lang/err13.jar
new file mode 100644
index 000000000..dde18306c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err13.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err13.java b/libjava/testsuite/libjava.lang/err13.java
new file mode 100644
index 000000000..d946d6104
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err13.java
@@ -0,0 +1,21 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err13.java */
+/* : */
+/* Cause : Conversion from zero to String type is not correct. */
+/* : */
+/* Message : NG : test */
+/*--------------------------------------------------------------------------*/
+
+public class err13 {
+ public static void main(String[] args) {
+ String s = "test";
+ s += 0;
+
+ if ( s.equals("test0") ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG : " +s);
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err13.out b/libjava/testsuite/libjava.lang/err13.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err13.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err14.jar b/libjava/testsuite/libjava.lang/err14.jar
new file mode 100644
index 000000000..f1b6785f2
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err14.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err14.java b/libjava/testsuite/libjava.lang/err14.java
new file mode 100644
index 000000000..a8ee40c20
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err14.java
@@ -0,0 +1,20 @@
+/* Check for incorrectly aligned byte args. */
+
+public class err14
+{
+ protected final String getClearToolCommand(Object a, Object b,
+ Object c, Object d,
+ int e, int f, boolean x)
+ {
+ return x ? "hi" : "byte";
+ }
+
+
+ public static void main(String[] args)
+ {
+ System.out.println(new err14().getClearToolCommand(null, null,
+ null, null, 0, 0, false));
+ System.out.println(new err14().getClearToolCommand(null, null,
+ null, null, 0, 0, true));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/err14.out b/libjava/testsuite/libjava.lang/err14.out
new file mode 100644
index 000000000..c361ac256
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err14.out
@@ -0,0 +1,2 @@
+byte
+hi
diff --git a/libjava/testsuite/libjava.lang/err2.jar b/libjava/testsuite/libjava.lang/err2.jar
new file mode 100644
index 000000000..d825a602d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err2.java b/libjava/testsuite/libjava.lang/err2.java
new file mode 100644
index 000000000..deeddf633
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err2.java
@@ -0,0 +1,28 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err2.java */
+/* : */
+/* Cause : Operator "+=" error in char,byte,short type */
+/* : */
+/* Message : err2.java: In class `err2': */
+/* : err2.java: In method `main(java.lang.String[])': */
+/* : err2.java:22: Incompatible type for `='. Explicit cast */
+/* : needed to convert `int' to `byte'. */
+/* : a %= b; */
+/* : ^ */
+/* : 1 error */
+/*--------------------------------------------------------------------------*/
+
+public class err2 {
+ public static void main(String[] args) {
+ byte a = -16;
+ byte b = 10;
+
+ a %= b;
+
+ if ( a == -6 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("a = " +a);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/err2.out b/libjava/testsuite/libjava.lang/err2.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err2.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err3.jar b/libjava/testsuite/libjava.lang/err3.jar
new file mode 100644
index 000000000..be1bd617a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err3.java b/libjava/testsuite/libjava.lang/err3.java
new file mode 100644
index 000000000..17535b850
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err3.java
@@ -0,0 +1,34 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err3.java */
+/* : */
+/* Cause : Evaluation sequence of the formula which used */
+/* : the substitution operator is not performed correctly. */
+/* : */
+/* Message : NG1:[27]-->[9] */
+/* : NG2:[27]-->[9] */
+/* : */
+/* Note : JLS 15.6 Evaluation Order (p305) */
+/* S15.6.1 Evaluate Left-Hand Operand First */
+/* : A formula should be evaluated to 9*3 instead of 3*3. */
+/*--------------------------------------------------------------------------*/
+
+public class err3 {
+ public static void main(String[] args) {
+ int x = 9;
+ x *= (x = 3);
+ if ( x == 27 ) {
+ System.out.println("OK1");
+ } else {
+ System.out.println("NG1:[27]-->["+x+"]");
+ }
+
+ int y = 9;
+ y = y * (y = 3);
+ if ( y == 27 ) {
+ System.out.println("OK2");
+ } else {
+ System.out.println("NG2:[27]-->["+y+"]");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err3.out b/libjava/testsuite/libjava.lang/err3.out
new file mode 100644
index 000000000..dfa480ce6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err3.out
@@ -0,0 +1,2 @@
+OK1
+OK2
diff --git a/libjava/testsuite/libjava.lang/err4.jar b/libjava/testsuite/libjava.lang/err4.jar
new file mode 100644
index 000000000..f1e782271
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err4.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err4.java b/libjava/testsuite/libjava.lang/err4.java
new file mode 100644
index 000000000..ad908e275
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err4.java
@@ -0,0 +1,34 @@
+/*--------------------------------------------------------------------------*/
+/* file_name : err4.java */
+/* : */
+/* Cause : Evaluation of the array which used the substitution */
+/* : operator is not performed correctly. */
+/* : */
+/* Message : NG1:[27}-->[9.0] */
+/* : NG1:[27}-->[9.0] */
+/*--------------------------------------------------------------------------*/
+
+public class err4 {
+ public static void main(String[] args) {
+
+ // TEST1
+ float []a = {9f};
+ a[0] *= (a[0] = 3f);
+
+ if ( a[0] == 27 ) {
+ System.out.println("OK1");
+ } else {
+ System.out.println("NG1:[27}-->["+a[0]+"]");
+ }
+
+ //TEST2
+ float [] b = {9f};
+ b[0] = (float)(b[0] * (b[0] = 3f));
+ if ( b[0] == 27 ) {
+ System.out.println("OK1");
+ } else {
+ System.out.println("NG1:[27}-->["+b[0]+"]");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err4.out b/libjava/testsuite/libjava.lang/err4.out
new file mode 100644
index 000000000..f6e108f6d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err4.out
@@ -0,0 +1,2 @@
+OK1
+OK1
diff --git a/libjava/testsuite/libjava.lang/err5.jar b/libjava/testsuite/libjava.lang/err5.jar
new file mode 100644
index 000000000..9a573abcb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err5.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err5.java b/libjava/testsuite/libjava.lang/err5.java
new file mode 100644
index 000000000..f9e95b635
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err5.java
@@ -0,0 +1,35 @@
+/*--------------------------------------------------------------------------*/
+/* file_name : err5.java */
+/* : */
+/* Cause : Evaluation order of method argument is not correct. */
+/* : */
+/* Message : NG */
+/* : a:[1]-->[2] */
+/* : b:[3]-->[3] */
+/* : c:[2]-->[2] */
+/* : */
+/* Note : JLS 15.6 Evaluation Order */
+/* S15.6.4 Argument Lists are Evaluated Left-to-Right(p309) */
+/* [Each argument expression appears to be fully evaluated */
+/* before any part of any argument expression to its right.] */
+/*--------------------------------------------------------------------------*/
+
+public class err5 {
+ public static void main(String[] args) {
+ int x = 1;
+
+ err5 obj = new err5();
+ obj.print(x, x = 3, x = 2);
+ }
+
+ void print(int a, int b, int c) {
+ if ( a == 1 && b == 3 && c == 2 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG");
+ System.out.println("a:[1]-->["+a+"]");
+ System.out.println("b:[3]-->["+b+"]");
+ System.out.println("c:[2]-->["+c+"]");
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/err5.out b/libjava/testsuite/libjava.lang/err5.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err5.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err6.jar b/libjava/testsuite/libjava.lang/err6.jar
new file mode 100644
index 000000000..2a12b80e4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err6.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err6.java b/libjava/testsuite/libjava.lang/err6.java
new file mode 100644
index 000000000..4b06c6caa
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err6.java
@@ -0,0 +1,26 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err6.java */
+/* : */
+/* Cause : Array evaluation order */
+/* : */
+/* Message : NG:[1]-->[4] */
+/* : */
+/* Note : JLS 15.9 Array Creation Expressions (p315--) */
+/* : p318 line3 */
+/* :[Each dimension expression is fully evaluated */
+/* : before any part of any dimension expression to its right.] */
+/*--------------------------------------------------------------------------*/
+
+public class err6 {
+ public static void main(String[] args) {
+ int[] x = { 10, 11, 12, 1, 14 };
+ int[] y = { 1, 2, 3, 4, 5, 6 };
+
+ if ( x[(x=y)[2]] == 1 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG:[1]-->[" +x[(x=y)[2]]+ "]");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err6.out b/libjava/testsuite/libjava.lang/err6.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err6.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err7.jar b/libjava/testsuite/libjava.lang/err7.jar
new file mode 100644
index 000000000..f34984497
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err7.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err7.java b/libjava/testsuite/libjava.lang/err7.java
new file mode 100644
index 000000000..11f4e8d0b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err7.java
@@ -0,0 +1,23 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err7.java */
+/* : */
+/* Cause : When exists both array (more than 10 elements) and */
+/* "for" or "while" or "do while" statement , error. */
+/* : */
+/* Message : /var/tmp/cc1oQM8i.s: Assembler messages: */
+/* : /var/tmp/cc1oQM8i.s:243: Fatal error: Symbol $L2 already def*/
+/* : fined. */
+/*--------------------------------------------------------------------------*/
+
+public class err7 {
+ public static void main(String[] args) {
+ int[] ary = {0,1,2,3,4,5,6,7,8,9};
+
+ while ( true ) {
+ break;
+ }
+
+ System.out.println("OK");
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err7.out b/libjava/testsuite/libjava.lang/err7.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err7.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err8.jar b/libjava/testsuite/libjava.lang/err8.jar
new file mode 100644
index 000000000..5baf89b25
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err8.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err8.java b/libjava/testsuite/libjava.lang/err8.java
new file mode 100644
index 000000000..220b2ac4f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err8.java
@@ -0,0 +1,23 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err8.java */
+/* : */
+/* Cause : When "do while" statement has only "break", error. */
+/* : */
+/* Message : err8.java: In class `err8': xxxxxx */
+/* : err8.java: In method `main(java.lang.String[])': */
+/* : err8.java:20: Unreachable statement. */
+/* : } while (true) ; */
+/* : ^ */
+/* : 1 error */
+/*--------------------------------------------------------------------------*/
+
+public class err8 {
+ public static void main(String[] args) {
+ do {
+ break;
+ } while (true) ;
+
+ System.out.println("OK");
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err8.out b/libjava/testsuite/libjava.lang/err8.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err8.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/err9.jar b/libjava/testsuite/libjava.lang/err9.jar
new file mode 100644
index 000000000..cb629e3f9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err9.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/err9.java b/libjava/testsuite/libjava.lang/err9.java
new file mode 100644
index 000000000..a6edd7198
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err9.java
@@ -0,0 +1,32 @@
+/*--------------------------------------------------------------------------*/
+/* File name : err9.java */
+/* : */
+/* Cause : When I use "labeled continue" in "for"statement, error */
+/* : */
+/* Message : In class `err9': */
+/* : In method `main(java.lang.String[])': */
+/* : 22: `continue' must be in loop. */
+/* : continue movehere; */
+/* : ^ */
+/* : 1 error */
+/*--------------------------------------------------------------------------*/
+
+public class err9 {
+ public static void main(String[] args) {
+ int y = 0;
+
+ movehere: for ( int x = 0; x < 10; x++ ) {
+ if ( x > 2 ) {
+ continue movehere;
+ }
+ y++;
+ }
+
+ if ( y == 3 ) {
+ System.out.println("OK");
+ } else {
+ System.out.println("NG:[3]-->[" +y+ "]");
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/err9.out b/libjava/testsuite/libjava.lang/err9.out
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/err9.out
@@ -0,0 +1 @@
+OK
diff --git a/libjava/testsuite/libjava.lang/final_inner.jar b/libjava/testsuite/libjava.lang/final_inner.jar
new file mode 100644
index 000000000..0a37fd960
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_inner.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/final_inner.java b/libjava/testsuite/libjava.lang/final_inner.java
new file mode 100644
index 000000000..40905b1fa
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_inner.java
@@ -0,0 +1,19 @@
+// Class final_inner
+// Generated on Tue Jan 18 13:35:19 PST 2000
+//
+
+class final_inner {
+
+ void foo (final String s, final int i) {
+ class bar {
+ void printI () { System.out.println (s+i); }
+ }
+ new bar ().printI ();
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `final_inner'...");
+ new final_inner ().foo ("The Number ", 666);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/final_inner.out b/libjava/testsuite/libjava.lang/final_inner.out
new file mode 100644
index 000000000..8ac46cfcc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_inner.out
@@ -0,0 +1,2 @@
+Testing class `final_inner'...
+The Number 666
diff --git a/libjava/testsuite/libjava.lang/final_int.jar b/libjava/testsuite/libjava.lang/final_int.jar
new file mode 100644
index 000000000..43feb70e0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_int.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/final_int.java b/libjava/testsuite/libjava.lang/final_int.java
new file mode 100644
index 000000000..e225c7b28
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_int.java
@@ -0,0 +1,22 @@
+// Class final_int
+// Generated on Sat Feb 12 01:27:46 PST 2000
+
+class final_int {
+
+ final int x = 30;
+
+ class foo {
+ int bar () {
+ return x;
+ }
+ }
+ void bar () {
+ int x = this.new foo ().bar ();
+ System.out.println (x);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `final_int'...");
+ new final_int().bar ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/final_int.out b/libjava/testsuite/libjava.lang/final_int.out
new file mode 100644
index 000000000..a7cbe2c9a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_int.out
@@ -0,0 +1,2 @@
+Testing class `final_int'...
+30
diff --git a/libjava/testsuite/libjava.lang/final_static_and_friend.jar b/libjava/testsuite/libjava.lang/final_static_and_friend.jar
new file mode 100644
index 000000000..ca7b2ad0a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_static_and_friend.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/final_static_and_friend.java b/libjava/testsuite/libjava.lang/final_static_and_friend.java
new file mode 100644
index 000000000..b5ca6100d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_static_and_friend.java
@@ -0,0 +1,17 @@
+// Class final_static_and_friend
+// Generated on Sat Feb 12 01:58:38 PST 2000
+
+class final_static_and_friend {
+ final int a = 34;
+ static int b = 34;
+ int c = 34;
+ void foo ()
+ {
+ System.out.println (a+b+c);
+ }
+ public static void main (String[] arg)
+ {
+ new final_static_and_friend ().foo ();
+ }
+
+}
diff --git a/libjava/testsuite/libjava.lang/final_static_and_friend.out b/libjava/testsuite/libjava.lang/final_static_and_friend.out
new file mode 100644
index 000000000..257e56326
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/final_static_and_friend.out
@@ -0,0 +1 @@
+102
diff --git a/libjava/testsuite/libjava.lang/indirect.jar b/libjava/testsuite/libjava.lang/indirect.jar
new file mode 100644
index 000000000..bc772864f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/indirect.java b/libjava/testsuite/libjava.lang/indirect.java
new file mode 100644
index 000000000..22bdebc5b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect.java
@@ -0,0 +1,33 @@
+// Class indirect
+// Generated on Tue Nov 16 15:53:14 UTC 1999
+// Several indirection to enclosing class
+
+class indirect {
+
+ private int foo;
+
+ class indirect_inner {
+ class other {
+ class inner {
+ void test () {
+ int x = foo;
+ System.out.println ("x="+foo);
+ foo = 671;
+ }
+ }
+ }
+
+ }
+ void foo ()
+ {
+ foo = 670;
+ indirect_inner inn = this.new indirect_inner ();
+ this.new indirect_inner().new other().new inner ().test ();
+ System.out.println ("foo="+foo);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `indirect'...");
+ new indirect().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/indirect.out b/libjava/testsuite/libjava.lang/indirect.out
new file mode 100644
index 000000000..7eb96f765
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect.out
@@ -0,0 +1,3 @@
+Testing class `indirect'...
+x=670
+foo=671
diff --git a/libjava/testsuite/libjava.lang/indirect_read.jar b/libjava/testsuite/libjava.lang/indirect_read.jar
new file mode 100644
index 000000000..d0835e990
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_read.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/indirect_read.java b/libjava/testsuite/libjava.lang/indirect_read.java
new file mode 100644
index 000000000..48c53a8d0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_read.java
@@ -0,0 +1,33 @@
+// Class indirect_read
+// Generated on Mon Nov 15 17:20:40 UTC 1999
+//
+
+class indirect_read {
+
+ int foo;
+
+ class indirect_read_inner {
+ void test () {
+ }
+
+ class other {
+ void testx () {
+ int x = foo;
+ System.out.println ("x="+x);
+ }
+ }
+
+ }
+ void foo ()
+ {
+ foo = 670;
+ indirect_read_inner inn = this.new indirect_read_inner ();
+ indirect_read_inner.other o = inn.new other ();
+ o.testx ();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `indirect_read'...");
+ new indirect_read().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/indirect_read.out b/libjava/testsuite/libjava.lang/indirect_read.out
new file mode 100644
index 000000000..bf9d42ad7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_read.out
@@ -0,0 +1,2 @@
+Testing class `indirect_read'...
+x=670
diff --git a/libjava/testsuite/libjava.lang/indirect_write.jar b/libjava/testsuite/libjava.lang/indirect_write.jar
new file mode 100644
index 000000000..9393a27a5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_write.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/indirect_write.java b/libjava/testsuite/libjava.lang/indirect_write.java
new file mode 100644
index 000000000..2f2bb7443
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_write.java
@@ -0,0 +1,32 @@
+// Class indirect_write
+// Generated on Tue Nov 16 15:01:24 UTC 1999
+//
+
+class indirect_write {
+
+ int foo;
+
+ class indirect_write_inner {
+ void test () {
+ }
+
+ class other {
+ void testx () {
+ foo = 670;
+ }
+ }
+
+ }
+ void foo ()
+ {
+ indirect_write_inner inn = this.new indirect_write_inner ();
+ indirect_write_inner.other x = inn.new other ();
+ x.testx();
+ System.out.println ("foo="+foo);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `indirect_write'...");
+ new indirect_write().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/indirect_write.out b/libjava/testsuite/libjava.lang/indirect_write.out
new file mode 100644
index 000000000..92b293337
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/indirect_write.out
@@ -0,0 +1,2 @@
+Testing class `indirect_write'...
+foo=670
diff --git a/libjava/testsuite/libjava.lang/initexc.jar b/libjava/testsuite/libjava.lang/initexc.jar
new file mode 100644
index 000000000..d43546fcb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initexc.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/initexc.java b/libjava/testsuite/libjava.lang/initexc.java
new file mode 100644
index 000000000..eda24ab03
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initexc.java
@@ -0,0 +1,37 @@
+public class initexc
+{
+ public static class fail
+ {
+ static
+ {
+ // Static initializers must be able to complete normally.
+ if (true)
+ throw new NullPointerException("nope");
+ }
+
+ public static int val ()
+ {
+ return 23;
+ }
+ }
+
+ public static void main (String[] args)
+ {
+ try
+ {
+ System.out.println (fail.val ());
+ }
+ catch (ExceptionInInitializerError _)
+ {
+ // Ok.
+ }
+ try
+ {
+ System.out.println (fail.val ());
+ }
+ catch (NoClassDefFoundError _)
+ {
+ // Ok.
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/initexc.out b/libjava/testsuite/libjava.lang/initexc.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initexc.out
diff --git a/libjava/testsuite/libjava.lang/initfield.jar b/libjava/testsuite/libjava.lang/initfield.jar
new file mode 100644
index 000000000..955cb02e8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initfield.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/initfield.java b/libjava/testsuite/libjava.lang/initfield.java
new file mode 100644
index 000000000..4ee615480
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initfield.java
@@ -0,0 +1,20 @@
+// gcj generated buggy code when we reference a field of a
+// non-constant member that we inherit from an interface.
+
+interface iface
+{
+ final value x = new value();
+}
+
+final class value
+{
+ Object field = "maude";
+}
+
+public class initfield implements iface
+{
+ public static void main(String[] args)
+ {
+ System.out.println(x.field);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/initfield.out b/libjava/testsuite/libjava.lang/initfield.out
new file mode 100644
index 000000000..b3668c4d4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/initfield.out
@@ -0,0 +1 @@
+maude
diff --git a/libjava/testsuite/libjava.lang/inline.jar b/libjava/testsuite/libjava.lang/inline.jar
new file mode 100644
index 000000000..b5c9449a8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inline.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inline.java b/libjava/testsuite/libjava.lang/inline.java
new file mode 100644
index 000000000..665852934
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inline.java
@@ -0,0 +1,35 @@
+public class inline
+{
+ static int factorial_1 (int n)
+ {
+ if (n > 0)
+ return n * factorial_1(n-1);
+ return 1;
+ }
+
+ static int factorial_2 (int n)
+ {
+ if (n > 0)
+ return n * factorial_3(n-1);
+ return 1;
+ }
+
+ static int factorial_3 (int n)
+ {
+ if (n > 0)
+ return n * factorial_2(n-1);
+ return 1;
+ }
+
+ public static void main(String args[])
+ {
+ if (factorial_1 (5) != 120)
+ System.out.println("This should not happen");
+ else
+ System.out.println("OK");
+ if (factorial_2 (5) != 120)
+ System.out.println("This should not happen");
+ else
+ System.out.println("OK");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inline.out b/libjava/testsuite/libjava.lang/inline.out
new file mode 100644
index 000000000..2c94e4837
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inline.out
@@ -0,0 +1,2 @@
+OK
+OK
diff --git a/libjava/testsuite/libjava.lang/inner1.jar b/libjava/testsuite/libjava.lang/inner1.jar
new file mode 100644
index 000000000..382ba64ee
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner1.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner1.java b/libjava/testsuite/libjava.lang/inner1.java
new file mode 100644
index 000000000..820edf802
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner1.java
@@ -0,0 +1,36 @@
+// Class inner1
+// Generated on Thu Nov 4 16:35:03 PST 1999
+//
+
+class inner1 {
+ int i;
+ void foo () {
+ inner1.z x1 = new z();
+ inner1.z.y x = x1.new y();
+ x.bar ();
+ x.print();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner1'...");
+ new inner1 ().foo();
+ }
+ class z {
+ int j;
+ void foo () {
+ inner1.this.i = 3;
+ }
+ class y {
+ int k;
+ void bar () {
+ inner1.this.i = 3;
+ z.this.j = 4;
+ y.this.k = 34;
+ }
+ void print () {
+ System.out.println ("i="+i+", j="+j+", k="+k);
+ }
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/inner1.out b/libjava/testsuite/libjava.lang/inner1.out
new file mode 100644
index 000000000..d1f9ac815
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner1.out
@@ -0,0 +1,2 @@
+Testing class `inner1'...
+i=3, j=4, k=34
diff --git a/libjava/testsuite/libjava.lang/inner2.jar b/libjava/testsuite/libjava.lang/inner2.jar
new file mode 100644
index 000000000..48e917e71
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner2.java b/libjava/testsuite/libjava.lang/inner2.java
new file mode 100644
index 000000000..8ecb6f5f7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner2.java
@@ -0,0 +1,18 @@
+// Class inner2
+// Generated on Mon Dec 6 14:32:34 PST 1999
+//
+
+class inner2 {
+ int foo = 1999;
+ void foo ()
+ {
+ inner2.this.foo = 666;
+ System.out.println (inner2.this.foo);
+ }
+ void print () {System.out.println (foo);}
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner2'...");
+ new inner2().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inner2.out b/libjava/testsuite/libjava.lang/inner2.out
new file mode 100644
index 000000000..cd24c8659
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner2.out
@@ -0,0 +1,2 @@
+Testing class `inner2'...
+666
diff --git a/libjava/testsuite/libjava.lang/inner3.jar b/libjava/testsuite/libjava.lang/inner3.jar
new file mode 100644
index 000000000..a128236a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner3.java b/libjava/testsuite/libjava.lang/inner3.java
new file mode 100644
index 000000000..e1cf9da37
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner3.java
@@ -0,0 +1,23 @@
+// Class inner3
+// Generated on Tue Dec 7 11:37:43 PST 1999
+//
+
+class inner3 {
+ int bar;
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner3'...");
+ new inner3().bar ();
+ }
+ void bar () {
+ t xx = this.new t ();
+ xx.bar ();
+ }
+ void foo () { bar = 3; }
+ class t {
+ void bar () {
+ inner3.this.foo ();
+ System.out.println (inner3.this.bar);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inner3.out b/libjava/testsuite/libjava.lang/inner3.out
new file mode 100644
index 000000000..a7ce991de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner3.out
@@ -0,0 +1,2 @@
+Testing class `inner3'...
+3
diff --git a/libjava/testsuite/libjava.lang/inner4.jar b/libjava/testsuite/libjava.lang/inner4.jar
new file mode 100644
index 000000000..cdfb0be4b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner4.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner4.java b/libjava/testsuite/libjava.lang/inner4.java
new file mode 100644
index 000000000..983e668dc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner4.java
@@ -0,0 +1,34 @@
+// Class inner4
+// Generated on Tue Dec 7 11:43:48 PST 1999
+//
+
+class inner4 {
+ static private int xyz () { return 3; }
+ private String f;
+
+ String p () {
+ return "public String p()";
+ }
+
+ private String pp (int x, byte y, char c) {
+ return "private String pp("+x+", "+y+", "+c+")";
+ }
+
+ void foo () {
+ t xxx = this.new t();
+ xxx.bar ();
+ pp (3, (byte)34, 'C');
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner4'...");
+ new inner4().foo();
+ }
+ class t {
+ void bar () {
+ System.out.println (p ());
+ System.out.println (pp (3, (byte)34, 'C'));
+ System.out.println (xyz ());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inner4.out b/libjava/testsuite/libjava.lang/inner4.out
new file mode 100644
index 000000000..db879b58f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner4.out
@@ -0,0 +1,4 @@
+Testing class `inner4'...
+public String p()
+private String pp(3, 34, C)
+3
diff --git a/libjava/testsuite/libjava.lang/inner_array.jar b/libjava/testsuite/libjava.lang/inner_array.jar
new file mode 100644
index 000000000..eddcff577
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_array.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner_array.java b/libjava/testsuite/libjava.lang/inner_array.java
new file mode 100644
index 000000000..69f31f026
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_array.java
@@ -0,0 +1,30 @@
+// Class inner_array
+// Generated on Fri Nov 19 13:19:47 PST 1999
+//
+
+class inner_array {
+
+ private int[] foo;
+
+ class array_inner {
+ void test () {
+ int x = foo[2];
+ System.out.println ("x="+x);
+ foo [1] = 34;
+ foo [1]++;
+ }
+ }
+ void foo ()
+ {
+ foo = new int [3];
+ foo[2]=670;
+ array_inner inn = this.new array_inner ();
+ inn.test ();
+ System.out.println ("foo[1]="+foo[1]);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner_array'...");
+ new inner_array().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inner_array.out b/libjava/testsuite/libjava.lang/inner_array.out
new file mode 100644
index 000000000..88b92874a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_array.out
@@ -0,0 +1,3 @@
+Testing class `inner_array'...
+x=670
+foo[1]=35
diff --git a/libjava/testsuite/libjava.lang/inner_interface.jar b/libjava/testsuite/libjava.lang/inner_interface.jar
new file mode 100644
index 000000000..b85f38ac0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_interface.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/inner_interface.java b/libjava/testsuite/libjava.lang/inner_interface.java
new file mode 100644
index 000000000..b1e6789a9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_interface.java
@@ -0,0 +1,27 @@
+// Class inner_interface
+// Generated on Fri Feb 11 16:29:04 PST 2000
+// Simple inner interface example.
+
+class inner_interface {
+ interface bar {
+ static final int field = 14022000;
+ public void inner_interface ();
+ }
+
+ class baz implements inner_interface.bar {
+ public void inner_interface ()
+ {
+ System.out.println ("This is baz.inner_interface "+field);
+ }
+ }
+
+ void x () {
+ this.new baz ().inner_interface ();
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `inner_interface'...");
+ new inner_interface ().x();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/inner_interface.out b/libjava/testsuite/libjava.lang/inner_interface.out
new file mode 100644
index 000000000..0c977d54a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/inner_interface.out
@@ -0,0 +1,2 @@
+Testing class `inner_interface'...
+This is baz.inner_interface 14022000
diff --git a/libjava/testsuite/libjava.lang/instance.jar b/libjava/testsuite/libjava.lang/instance.jar
new file mode 100644
index 000000000..769141097
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instance.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/instance.java b/libjava/testsuite/libjava.lang/instance.java
new file mode 100644
index 000000000..a509cb385
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instance.java
@@ -0,0 +1,48 @@
+// instance.java -- test the `instanceof' operator.
+
+import java.util.EventListener;
+
+public class instance implements EventListener
+{
+ public static void main (String[] args)
+ {
+ Object x1 = new instance ();
+ EventListener x2 = new instance ();
+ IllegalArgumentException iae
+ = new IllegalArgumentException ("any random class");
+ String x3 = "zardoz";
+ Object x4 = "zardoz";
+
+ // Test simple object stuff
+ System.out.println (x1 instanceof Object);
+ System.out.println (x1 instanceof IllegalArgumentException);
+ System.out.println (x1 instanceof EventListener);
+ System.out.println (x1 instanceof String);
+ System.out.println ("=");
+
+ // Test with value which is an interface.
+ System.out.println (x2 instanceof Object);
+ System.out.println (x2 instanceof IllegalArgumentException);
+ System.out.println (x2 instanceof EventListener);
+ System.out.println ("=");
+
+ // Test with value which is a final class.
+ System.out.println (x3 instanceof Object);
+ System.out.println (x3 instanceof String);
+ System.out.println ("=");
+
+ // Test with value which is a random class.
+ System.out.println (iae instanceof Object);
+ System.out.println (iae instanceof IllegalArgumentException);
+ System.out.println (iae instanceof EventListener);
+ System.out.println ("=");
+
+ // Test with value which is a final class, but not known
+ // statically.
+ System.out.println (x4 instanceof Object);
+ System.out.println (x4 instanceof IllegalArgumentException);
+ System.out.println (x4 instanceof EventListener);
+ System.out.println (x4 instanceof String);
+ System.out.println (x4 instanceof int[]);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/instance.out b/libjava/testsuite/libjava.lang/instance.out
new file mode 100644
index 000000000..039881560
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instance.out
@@ -0,0 +1,21 @@
+true
+false
+true
+false
+=
+true
+false
+true
+=
+true
+true
+=
+true
+true
+false
+=
+true
+false
+false
+true
+false
diff --git a/libjava/testsuite/libjava.lang/instinit.jar b/libjava/testsuite/libjava.lang/instinit.jar
new file mode 100644
index 000000000..93684344e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/instinit.java b/libjava/testsuite/libjava.lang/instinit.java
new file mode 100644
index 000000000..a72dc10db
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit.java
@@ -0,0 +1,22 @@
+// Class instinit
+// Generated on Wed Feb 2 12:31:16 PST 2000
+// Simple instance initializer test case.
+
+class instinit {
+
+ String buffer = "No Oink! Oink!";
+
+ /* Instance initializer */
+ {
+ System.out.println ("Oinking...");
+ }
+ {
+ buffer = "Oink! Oink!";
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `instinit'...");
+ System.out.println (new instinit ().buffer);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/instinit.out b/libjava/testsuite/libjava.lang/instinit.out
new file mode 100644
index 000000000..50f2f5eb0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit.out
@@ -0,0 +1,3 @@
+Testing class `instinit'...
+Oinking...
+Oink! Oink!
diff --git a/libjava/testsuite/libjava.lang/instinit2.jar b/libjava/testsuite/libjava.lang/instinit2.jar
new file mode 100644
index 000000000..7573a0dd8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/instinit2.java b/libjava/testsuite/libjava.lang/instinit2.java
new file mode 100644
index 000000000..dcab178ec
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit2.java
@@ -0,0 +1,31 @@
+// Class instinit2
+// Generated on Wed Feb 2 17:52:49 PST 2000
+// The instance initializer throws a checked exception. This is OK
+// since the constructors declares it in its `throws' clause -- at
+// least that's what the specs are saying.
+
+class instinit2 {
+
+ String buffer = "Oink Oink!";
+
+ {
+ System.out.println ("Checking the oink...");
+ if (buffer != null)
+ throw new Exception ("It just oinked");
+ }
+
+ instinit2 () throws Exception
+ {
+ System.out.println ("Ctor");
+ }
+
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `instinit2'...");
+ try {
+ System.out.println (new instinit2 ().buffer);
+ } catch (Exception e) {
+ System.out.println (e.toString());
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/instinit2.out b/libjava/testsuite/libjava.lang/instinit2.out
new file mode 100644
index 000000000..b6c7351b8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/instinit2.out
@@ -0,0 +1,3 @@
+Testing class `instinit2'...
+Checking the oink...
+java.lang.Exception: It just oinked
diff --git a/libjava/testsuite/libjava.lang/invoke_from_inner.jar b/libjava/testsuite/libjava.lang/invoke_from_inner.jar
new file mode 100644
index 000000000..064e0184b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invoke_from_inner.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/invoke_from_inner.java b/libjava/testsuite/libjava.lang/invoke_from_inner.java
new file mode 100644
index 000000000..8659ac6d5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invoke_from_inner.java
@@ -0,0 +1,37 @@
+// This test case once showed that `f[0].execute(x)' woudln't be
+// expanded properly, attempting to retrieve this$0 to be used in
+// place of `f[0]'.
+
+abstract class A {
+ abstract public void execute(C x);
+}
+
+class C {}
+
+class Z extends A {
+ public void execute (C x) {
+ System.out.println ("Z.execute");
+ }
+}
+
+public class invoke_from_inner extends A {
+
+ Z f[] = new Z[1];
+ class D extends C {
+ D (C x) {
+ f[0].execute (x);
+ execute (x);
+ }
+ }
+ public void execute (C x) {
+ System.out.println ("invoke_from_inner.execute");
+ }
+
+ public static void main (String a[]) {
+ new invoke_from_inner().foo();
+ }
+ void foo () {
+ f[0] = new Z();
+ new D(new C());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/invoke_from_inner.out b/libjava/testsuite/libjava.lang/invoke_from_inner.out
new file mode 100644
index 000000000..1911e2f0d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invoke_from_inner.out
@@ -0,0 +1,2 @@
+Z.execute
+invoke_from_inner.execute
diff --git a/libjava/testsuite/libjava.lang/invokethrow.jar b/libjava/testsuite/libjava.lang/invokethrow.jar
new file mode 100644
index 000000000..1344d624d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invokethrow.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/invokethrow.java b/libjava/testsuite/libjava.lang/invokethrow.java
new file mode 100644
index 000000000..8cf3ca0a5
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invokethrow.java
@@ -0,0 +1,35 @@
+// Test a `throw' across a libffi call.
+
+import java.lang.reflect.*;
+
+public class invokethrow
+{
+ public static void doit () throws Throwable
+ {
+ throw new Throwable ("hi!");
+ }
+
+ public static void main (String[] args)
+ {
+ Class k = invokethrow.class;
+ try
+ {
+ Class[] noargs = new Class[0];
+ Method m = k.getMethod ("doit", noargs);
+ m.invoke (null, null);
+ }
+ catch (InvocationTargetException x1)
+ {
+ System.out.println (x1.getTargetException ().getMessage ());
+ }
+ catch (UnsupportedOperationException _)
+ {
+ // Some systems don't support invocation, in which case we
+ // will fake a passing result.
+ System.out.println ("hi!");
+ }
+ catch (Throwable _)
+ {
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/invokethrow.out b/libjava/testsuite/libjava.lang/invokethrow.out
new file mode 100644
index 000000000..32aad8c35
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invokethrow.out
@@ -0,0 +1 @@
+hi!
diff --git a/libjava/testsuite/libjava.lang/klass.jar b/libjava/testsuite/libjava.lang/klass.jar
new file mode 100644
index 000000000..269f96daf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/klass.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/klass.java b/libjava/testsuite/libjava.lang/klass.java
new file mode 100644
index 000000000..1578e6f42
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/klass.java
@@ -0,0 +1,10 @@
+public class klass
+{
+ public static void main (String[] args)
+ {
+ Class ic1 = Integer.TYPE;
+ int[] foo = new int[3];
+ Class ic2 = foo.getClass().getComponentType();
+ System.out.println(ic1.equals(ic2));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/klass.out b/libjava/testsuite/libjava.lang/klass.out
new file mode 100644
index 000000000..27ba77dda
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/klass.out
@@ -0,0 +1 @@
+true
diff --git a/libjava/testsuite/libjava.lang/lang.exp b/libjava/testsuite/libjava.lang/lang.exp
new file mode 100644
index 000000000..5e46770c4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/lang.exp
@@ -0,0 +1,35 @@
+global srcdir subdir
+
+catch { lsort [glob -nocomplain ${srcdir}/${subdir}/*.out] } srcfiles
+verbose "srcfiles are $srcfiles"
+
+set prefix ""
+foreach x $srcfiles {
+ regsub "\\.out$" $x "" prefix
+ set bname [file tail $prefix]
+
+ if [file exists $srcdir/$subdir/${bname}.xpo] {
+ set resfile "$srcdir/$subdir/${bname}.xpo"
+ set options "regexp_match"
+ } else {
+ set resfile "${prefix}.out"
+ set options ""
+ }
+
+ if [file exists ${prefix}.inp] {
+ set inpfile ${prefix}.inp
+ } else {
+ set inpfile ""
+ }
+
+ set args [libjava_read_xfail $srcdir/$subdir/$bname.xfail]
+
+ verbose "inpfile is $inpfile"
+
+ test_libjava $options "${prefix}.jar" "" $inpfile $resfile $args
+ test_libjava $options "${prefix}.jar" "-O3" $inpfile $resfile $args
+}
+
+# Local Variables:
+# tcl-indent-level:4
+# End:
diff --git a/libjava/testsuite/libjava.lang/md5test.jar b/libjava/testsuite/libjava.lang/md5test.jar
new file mode 100644
index 000000000..d38891b79
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/md5test.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/md5test.java b/libjava/testsuite/libjava.lang/md5test.java
new file mode 100644
index 000000000..ffd0a93cf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/md5test.java
@@ -0,0 +1,63 @@
+import java.security.*;
+
+class md5test {
+
+
+ // gnu-crypto/source/gnu/testlet/gnu/crypto/hash/TestOfMD5.java
+
+ public static void main(String[] argv) {
+ String[] strings = {
+ "a",
+ "abc",
+ "message digest",
+ "abcdefghijklmnopqrstuvwxyz",
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ };
+
+ String[] expected = {
+ "0CC175B9C0F1B6A831C399E269772661",
+ "900150983CD24FB0D6963F7D28E17F72",
+ "F96B697D7CB7938D525A2F31AAF161D0",
+ "C3FCD3D76192E4007DFB496CCA67E13B",
+ "D174AB98D277D9F5A5611C2C9F419D9F",
+ "57EDF4A22BE3C955AC49DA2E2107B67A"
+ };
+
+ for (int i = 0; i < strings.length; i++)
+ testString(strings[i], expected[i]);
+
+ }
+
+ public static void testString(String string, String expected) {
+
+ MessageDigest md=null;
+ try {
+ md = MessageDigest.getInstance("MD5");
+ md.update(string.getBytes(), 0, string.length());
+ String result = toString(md.digest());
+ System.out.println(expected);
+ System.out.println(result);
+ if (!expected.equals(result))
+ System.out.println("NOT EQUAL!");
+ } catch (Exception x) {
+ x.printStackTrace();
+ }
+ }
+
+ public static String toString(byte[] ba) {
+ return toString(ba, 0, ba.length);
+ }
+ public static final String toString(byte[] ba, int offset, int length) {
+ char[] buf = new char[length * 2];
+ for (int i = 0, j = 0, k; i < length; ) {
+ k = ba[offset + i++];
+ buf[j++] = HEX_DIGITS[(k >>> 4) & 0x0F];
+ buf[j++] = HEX_DIGITS[ k & 0x0F];
+ }
+ return new String(buf);
+ }
+
+ private static final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
+
+}
diff --git a/libjava/testsuite/libjava.lang/md5test.out b/libjava/testsuite/libjava.lang/md5test.out
new file mode 100644
index 000000000..0dd90c39d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/md5test.out
@@ -0,0 +1,12 @@
+0CC175B9C0F1B6A831C399E269772661
+0CC175B9C0F1B6A831C399E269772661
+900150983CD24FB0D6963F7D28E17F72
+900150983CD24FB0D6963F7D28E17F72
+F96B697D7CB7938D525A2F31AAF161D0
+F96B697D7CB7938D525A2F31AAF161D0
+C3FCD3D76192E4007DFB496CCA67E13B
+C3FCD3D76192E4007DFB496CCA67E13B
+D174AB98D277D9F5A5611C2C9F419D9F
+D174AB98D277D9F5A5611C2C9F419D9F
+57EDF4A22BE3C955AC49DA2E2107B67A
+57EDF4A22BE3C955AC49DA2E2107B67A
diff --git a/libjava/testsuite/libjava.lang/multiple_finit.jar b/libjava/testsuite/libjava.lang/multiple_finit.jar
new file mode 100644
index 000000000..cd8152284
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/multiple_finit.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/multiple_finit.java b/libjava/testsuite/libjava.lang/multiple_finit.java
new file mode 100644
index 000000000..a05ecb381
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/multiple_finit.java
@@ -0,0 +1,28 @@
+// Class multiple_finit
+// Generated on Mon Jan 3 20:07:18 PST 2000
+//
+
+class multiple_finit {
+
+ int foo = 99;
+
+ class multiple_finit_inner {
+ int inner = 34;
+ void test () {
+ System.out.println (inner);
+ System.out.println (foo);
+ }
+ }
+ void foo (String s)
+ {
+ multiple_finit_inner inn = this.new multiple_finit_inner ();
+ inn.test ();
+ System.out.println (foo);
+ }
+ void testx () { }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `multiple_finit'...");
+ new multiple_finit().foo ("");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/multiple_finit.out b/libjava/testsuite/libjava.lang/multiple_finit.out
new file mode 100644
index 000000000..65ee05ff1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/multiple_finit.out
@@ -0,0 +1,4 @@
+Testing class `multiple_finit'...
+34
+99
+99
diff --git a/libjava/testsuite/libjava.lang/negzero.jar b/libjava/testsuite/libjava.lang/negzero.jar
new file mode 100644
index 000000000..1f23c61da
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/negzero.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/negzero.java b/libjava/testsuite/libjava.lang/negzero.java
new file mode 100644
index 000000000..53b9da2c4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/negzero.java
@@ -0,0 +1,8 @@
+public class negzero
+{
+ public static void main(String[] args)
+ {
+ System.out.println(-0.0);
+ System.out.println(-0.0f);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/negzero.out b/libjava/testsuite/libjava.lang/negzero.out
new file mode 100644
index 000000000..e6ffe0d43
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/negzero.out
@@ -0,0 +1,2 @@
+-0.0
+-0.0
diff --git a/libjava/testsuite/libjava.lang/nested_with_ctor.jar b/libjava/testsuite/libjava.lang/nested_with_ctor.jar
new file mode 100644
index 000000000..31c5d456b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/nested_with_ctor.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/nested_with_ctor.java b/libjava/testsuite/libjava.lang/nested_with_ctor.java
new file mode 100644
index 000000000..4560dc399
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/nested_with_ctor.java
@@ -0,0 +1,27 @@
+// Class nested_with_ctor
+// Generated on Mon Jan 31 18:31:47 PST 2000
+// The nested class contains explicit constructors. Their argument
+// lists should be augmented with the alias initializer values when
+// the ctors are seen declared (as opposed to generated.)
+
+class nested_with_ctor {
+
+ void fct(final String s, final int i)
+ {
+ class nested {
+ String buffer = s+i;
+ String getString () { return buffer; }
+ nested (int i) { buffer = "(int)"+i; }
+ nested () {}
+ }
+ nested x = new nested ();
+ System.out.println (x.getString ());
+ nested y = new nested (123);
+ System.out.println (y.getString ());
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `nested_with_ctor'...");
+ new nested_with_ctor ().fct ("Yikes!", 321);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/nested_with_ctor.out b/libjava/testsuite/libjava.lang/nested_with_ctor.out
new file mode 100644
index 000000000..d130f1f88
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/nested_with_ctor.out
@@ -0,0 +1,3 @@
+Testing class `nested_with_ctor'...
+Yikes!321
+(int)123
diff --git a/libjava/testsuite/libjava.lang/newarray_overflow.jar b/libjava/testsuite/libjava.lang/newarray_overflow.jar
new file mode 100644
index 000000000..65413ccb0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/newarray_overflow.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/newarray_overflow.java b/libjava/testsuite/libjava.lang/newarray_overflow.java
new file mode 100644
index 000000000..17370b537
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/newarray_overflow.java
@@ -0,0 +1,88 @@
+/* This test checks for two slightly different overflow scenarios in
+ * array allocation.
+ *
+ * The first is that the number of bytes needed for an array size
+ * overflows on a 32 bit machine.
+ *
+ * The second is that on a 64 machine, the number of bytes silently
+ * gets truncated, resulting in too small an object being
+ * allocated. */
+
+class newarray_overflow
+{
+ static boolean failed = false;
+
+ static void int_check()
+ {
+ int[] x;
+ try
+ {
+ x = new int [1 << 30];
+ }
+ catch (OutOfMemoryError e)
+ {
+ return;
+ }
+ /* If we really get away with it (64 bit machine), that's cool. */
+ if (x == null) {
+ System.err.println ("int check: new returned null.");
+ failed = true;
+ return;
+ }
+ try
+ {
+ // Only check a few places so we don't thrash too badly.
+ for (int i = 0; i < x.length; i += (1 << 24))
+ if (x[i] != 0)
+ failed = true;
+ }
+ catch (Throwable e)
+ {
+ System.err.print ("int check: ");
+ System.err.println (e);
+ failed = true;
+ }
+ }
+
+ static void object_check()
+ {
+ Object[] x;
+ try
+ {
+ x = new Object [1 << 30];
+ System.err.println ("Alloc succeeded.");
+ System.err.println (x);
+ }
+ catch (OutOfMemoryError e)
+ {
+ return;
+ }
+ /* If we really get away with it (64 bit machine), that's cool. */
+ if (x == null) {
+ System.err.println ("Object check: new returned null.");
+ failed = true;
+ return;
+ }
+ try
+ {
+ for (int i = 0; i < x.length; i += (1 << 24))
+ if (x[i] != null)
+ failed = true;
+ }
+ catch (Throwable e)
+ {
+ System.err.print ("Object check: ");
+ System.err.println (e);
+ failed = true;
+ }
+ }
+
+ public static void main (String[] ignore)
+ {
+ int_check();
+ object_check();
+
+ if (!failed)
+ System.out.println ("ok");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/newarray_overflow.out b/libjava/testsuite/libjava.lang/newarray_overflow.out
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/newarray_overflow.out
@@ -0,0 +1 @@
+ok
diff --git a/libjava/testsuite/libjava.lang/override.jar b/libjava/testsuite/libjava.lang/override.jar
new file mode 100644
index 000000000..ab734b88c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/override.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/override.java b/libjava/testsuite/libjava.lang/override.java
new file mode 100644
index 000000000..94bb09cfc
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/override.java
@@ -0,0 +1,19 @@
+// Regression test that overrides a virtual method with a final one.
+
+class override1
+{
+ public int x1 () { return 3; }
+}
+
+public class override extends override1
+{
+ public final int x1() { return 5; }
+ public final int x2() { return 7; }
+
+ public static void main(String[] args)
+ {
+ override z = new override();
+ System.out.println(z.x1());
+ System.out.println(z.x2());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/override.out b/libjava/testsuite/libjava.lang/override.out
new file mode 100644
index 000000000..b3172d124
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/override.out
@@ -0,0 +1,2 @@
+5
+7
diff --git a/libjava/testsuite/libjava.lang/pr100.jar b/libjava/testsuite/libjava.lang/pr100.jar
new file mode 100644
index 000000000..a7f49216f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr100.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr100.java b/libjava/testsuite/libjava.lang/pr100.java
new file mode 100644
index 000000000..a9f3685cf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr100.java
@@ -0,0 +1,13 @@
+// PR 100
+
+// Second call to hashcode causes SEGV when dynamically linking.
+
+public class pr100
+{
+ public static void main(String[] args) {
+ pr100 ht = new pr100();
+
+ System.err.println(ht.hashCode());
+ System.err.println(ht.getClass().hashCode());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr100.xpo b/libjava/testsuite/libjava.lang/pr100.xpo
new file mode 100644
index 000000000..d87ea2e88
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr100.xpo
@@ -0,0 +1,2 @@
+[0-9]+
+[0-9]+
diff --git a/libjava/testsuite/libjava.lang/pr109.jar b/libjava/testsuite/libjava.lang/pr109.jar
new file mode 100644
index 000000000..fbcdf264d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr109.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr109.java b/libjava/testsuite/libjava.lang/pr109.java
new file mode 100644
index 000000000..17c4b2301
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr109.java
@@ -0,0 +1,29 @@
+// PR 109
+
+// Running the test code produces the output "0" instead of the
+// expected "01234".
+
+// The break statement exits both for-loops (not just the innermost
+// one) if the (single statement) body of the outer for-loop is not
+// enclosed in braces. Affects more deeply nested loops in the same
+// way.
+
+public class pr109
+{
+ public static void main (String argv[])
+ {
+ int i, j;
+
+ for (i = 0; i < 5; i++)
+ for (j = 0; j < 2; j++)
+ {
+ if (j == 1)
+ break;
+ System.out.print (i);
+ }
+
+ // We print a newline here because otherwise the DejaGNU log
+ // file is screwed up.
+ System.out.println ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr109.out b/libjava/testsuite/libjava.lang/pr109.out
new file mode 100644
index 000000000..3521a84d0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr109.out
@@ -0,0 +1 @@
+01234
diff --git a/libjava/testsuite/libjava.lang/pr13107.jar b/libjava/testsuite/libjava.lang/pr13107.jar
new file mode 100644
index 000000000..89f4779d4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr13107.java b/libjava/testsuite/libjava.lang/pr13107.java
new file mode 100644
index 000000000..06d4c54bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107.java
@@ -0,0 +1,25 @@
+class pr13107
+{
+ public static void main(String[] args)
+ {
+ for (int i = 0; i < 1; i++) {
+ String s = "A";
+
+ if (s == "A")
+ continue;
+
+ try{
+ try{
+ System.out.println(s);
+ }
+ finally{
+ if (s != "A")
+ throw new Error();
+ }
+ }
+ catch(Exception e){
+ s = "B";
+ }
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr13107.out b/libjava/testsuite/libjava.lang/pr13107.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107.out
diff --git a/libjava/testsuite/libjava.lang/pr13107_2.jar b/libjava/testsuite/libjava.lang/pr13107_2.jar
new file mode 100644
index 000000000..5dad7ade9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr13107_2.java b/libjava/testsuite/libjava.lang/pr13107_2.java
new file mode 100644
index 000000000..dba3b249e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_2.java
@@ -0,0 +1,19 @@
+public class pr13107_2
+{
+ public static int foo (boolean b)
+ {
+ int i;
+ try {
+ if (b) return 1;
+ i= 2;
+ }
+ finally {
+ if (b) i = 3;
+ }
+ return i;
+ }
+
+ public static void main(String[] args)
+ {
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr13107_2.out b/libjava/testsuite/libjava.lang/pr13107_2.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_2.out
diff --git a/libjava/testsuite/libjava.lang/pr13107_3.jar b/libjava/testsuite/libjava.lang/pr13107_3.jar
new file mode 100644
index 000000000..8fe327513
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_3.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr13107_3.java b/libjava/testsuite/libjava.lang/pr13107_3.java
new file mode 100644
index 000000000..5ec914605
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_3.java
@@ -0,0 +1,16 @@
+public class pr13107_3
+{
+ public static void main(String[] args)
+ {
+ for (int i = 0; i < 1; i++)
+ {
+ try {
+ System.out.println(i);
+ }
+ finally {
+ if (i == 3)
+ continue;
+ }
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr13107_3.out b/libjava/testsuite/libjava.lang/pr13107_3.out
new file mode 100644
index 000000000..573541ac9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr13107_3.out
@@ -0,0 +1 @@
+0
diff --git a/libjava/testsuite/libjava.lang/pr133.jar b/libjava/testsuite/libjava.lang/pr133.jar
new file mode 100644
index 000000000..f9e36ef9b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr133.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr133.java b/libjava/testsuite/libjava.lang/pr133.java
new file mode 100644
index 000000000..42009f4c8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr133.java
@@ -0,0 +1,34 @@
+// PR 133
+
+// System.exit(0) appears to hang the program.
+
+public class pr133 {
+ public static void main(String argv[])
+ {
+ String name;
+
+ if (argv.length == 0) {
+ name = "Rocket J. Squirrel";
+ } else {
+ name = argv[0];
+ }
+
+ new pr133(name).identifySelf();
+ System.out.println("goodbye");
+
+ System.exit(0);
+ }
+
+ public pr133 (String name)
+ {
+ v_name = name;
+ }
+
+ public void identifySelf()
+ {
+ System.out.println("This is a pr133 instance named " + v_name);
+ System.out.println("Leaving identifySelf()...");
+ }
+
+ private String v_name;
+}
diff --git a/libjava/testsuite/libjava.lang/pr133.out b/libjava/testsuite/libjava.lang/pr133.out
new file mode 100644
index 000000000..52098d807
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr133.out
@@ -0,0 +1,3 @@
+This is a pr133 instance named Rocket J. Squirrel
+Leaving identifySelf()...
+goodbye
diff --git a/libjava/testsuite/libjava.lang/pr16789.jar b/libjava/testsuite/libjava.lang/pr16789.jar
new file mode 100644
index 000000000..4c95e0417
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr16789.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr16789.java b/libjava/testsuite/libjava.lang/pr16789.java
new file mode 100644
index 000000000..64c43f304
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr16789.java
@@ -0,0 +1,15 @@
+// gcj used to generate incorrect bytecode for
+// staticMethod().staticMethod()
+public class pr16789
+{
+ public void foo()
+ {
+ System.out.println(Thread.currentThread().holdsLock(this));
+ }
+
+ public static void main(String[] args)
+ {
+ new pr16789().foo();
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/pr16789.out b/libjava/testsuite/libjava.lang/pr16789.out
new file mode 100644
index 000000000..c508d5366
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr16789.out
@@ -0,0 +1 @@
+false
diff --git a/libjava/testsuite/libjava.lang/pr17536.jar b/libjava/testsuite/libjava.lang/pr17536.jar
new file mode 100644
index 000000000..513e4d92c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr17536.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr17536.java b/libjava/testsuite/libjava.lang/pr17536.java
new file mode 100644
index 000000000..7d94fd9b1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr17536.java
@@ -0,0 +1,5 @@
+public class pr17536 {
+ public static void main(String[] args) {
+ System.out.println(int[].class.getClassLoader());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr17536.out b/libjava/testsuite/libjava.lang/pr17536.out
new file mode 100644
index 000000000..19765bd50
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr17536.out
@@ -0,0 +1 @@
+null
diff --git a/libjava/testsuite/libjava.lang/pr179.jar b/libjava/testsuite/libjava.lang/pr179.jar
new file mode 100644
index 000000000..2eaee64e9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr179.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr179.java b/libjava/testsuite/libjava.lang/pr179.java
new file mode 100644
index 000000000..9fd4657e8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr179.java
@@ -0,0 +1,49 @@
+// Extended regression test for the PR 179.
+//
+// This tests the ".class" language syntax, initialization behaviour for
+// Class.isInstance() and Class.isAssignableFrom(), and isAssignableFrom()
+// functionality in the event that an interface argument that is not
+// implemented by any loaded class is given.
+// Note that the desired output changed from 1.4 to 1.5.
+
+class A
+{
+ static
+ {
+ System.out.println("A initialized");
+ }
+}
+
+interface IA {}
+
+class B implements IA
+{
+ static
+ {
+ System.out.println("B initialized");
+ }
+}
+
+class C
+{
+ static
+ {
+ System.out.println("C initialized");
+ }
+}
+
+interface IB {}
+
+public class pr179
+{
+ public static void main(String[] args)
+ {
+ System.out.println (A.class.isAssignableFrom (Object.class));
+ System.out.println (IB.class.isAssignableFrom (B.class));
+ System.out.println (IA.class.isAssignableFrom (B.class));
+ A a = new A();
+ System.out.println (C.class.isInstance (a));
+ C c = new C();
+ System.out.println (C.class.isInstance (c));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr179.out b/libjava/testsuite/libjava.lang/pr179.out
new file mode 100644
index 000000000..0a43def35
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr179.out
@@ -0,0 +1,7 @@
+false
+false
+true
+A initialized
+false
+C initialized
+true
diff --git a/libjava/testsuite/libjava.lang/pr184.jar b/libjava/testsuite/libjava.lang/pr184.jar
new file mode 100644
index 000000000..2770b3d11
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr184.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr184.java b/libjava/testsuite/libjava.lang/pr184.java
new file mode 100644
index 000000000..42175b38e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr184.java
@@ -0,0 +1,22 @@
+public class pr184
+{
+ public static void main(String[] args)
+ {
+ pr184 n = null;
+ try
+ {
+ n.foo();
+ }
+ catch (NullPointerException x)
+ {
+ System.out.println(x);
+ }
+ }
+
+ int x = 2;
+
+ final int foo()
+ {
+ return x;
+ };
+}
diff --git a/libjava/testsuite/libjava.lang/pr184.out b/libjava/testsuite/libjava.lang/pr184.out
new file mode 100644
index 000000000..7a72d865c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr184.out
@@ -0,0 +1 @@
+java.lang.NullPointerException
diff --git a/libjava/testsuite/libjava.lang/pr21785.jar b/libjava/testsuite/libjava.lang/pr21785.jar
new file mode 100644
index 000000000..e2edfd48a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21785.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr21785.java b/libjava/testsuite/libjava.lang/pr21785.java
new file mode 100644
index 000000000..786975497
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21785.java
@@ -0,0 +1,21 @@
+import java.io.*;
+
+public class pr21785 implements Serializable
+{
+ public static void main(String[] args)
+ {
+ try {
+ ByteArrayOutputStream outb = new ByteArrayOutputStream();
+ ObjectOutputStream outs = new ObjectOutputStream(outb);
+ outs.writeObject(new pr21785());
+ byte[] store = outb.toByteArray();
+
+ ByteArrayInputStream inb = new ByteArrayInputStream(store);
+ ObjectInputStream ins = new ObjectInputStream(inb);
+ ins.readObject();
+ }
+ catch (Throwable e) {
+ throw new Error(e);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr21785.out b/libjava/testsuite/libjava.lang/pr21785.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21785.out
diff --git a/libjava/testsuite/libjava.lang/pr21844.jar b/libjava/testsuite/libjava.lang/pr21844.jar
new file mode 100644
index 000000000..92c7be511
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21844.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr21844.java b/libjava/testsuite/libjava.lang/pr21844.java
new file mode 100644
index 000000000..24ed01fce
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21844.java
@@ -0,0 +1,33 @@
+class pr21844base
+{
+ int modCount;
+
+ public pr21844base(int x)
+ {
+ modCount = x;
+ }
+}
+
+public class pr21844 extends pr21844base
+{
+ class inner
+ {
+ public int doit ()
+ {
+ ++modCount;
+ return modCount;
+ }
+ }
+
+ public pr21844(int x)
+ {
+ super(x);
+ }
+
+ public static void main(String[] args)
+ {
+ pr21844 val = new pr21844(7);
+ inner i = val.new inner();
+ System.out.println(i.doit());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr21844.out b/libjava/testsuite/libjava.lang/pr21844.out
new file mode 100644
index 000000000..45a4fb75d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr21844.out
@@ -0,0 +1 @@
+8
diff --git a/libjava/testsuite/libjava.lang/pr22211.jar b/libjava/testsuite/libjava.lang/pr22211.jar
new file mode 100644
index 000000000..a743c4411
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr22211.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr22211.java b/libjava/testsuite/libjava.lang/pr22211.java
new file mode 100644
index 000000000..87a8e555c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr22211.java
@@ -0,0 +1,8 @@
+public class pr22211
+{
+ public static void main(String[] args)
+ {
+ Thread x = new Thread();
+ x.interrupt();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr24321.jar b/libjava/testsuite/libjava.lang/pr24321.jar
new file mode 100644
index 000000000..335298a4d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr24321.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr24321.java b/libjava/testsuite/libjava.lang/pr24321.java
new file mode 100644
index 000000000..513304b50
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr24321.java
@@ -0,0 +1,21 @@
+public class pr24321 {
+ static class Z {
+ static {
+ System.out.println("init");
+ }
+ }
+
+ static class Y extends Z { }
+
+ public static Object x () { return new Object(); }
+
+ public static void main(String[] args) throws Throwable
+ {
+ System.out.println(x() instanceof Z);
+
+ ClassLoader cl = pr24321.class.getClassLoader();
+ Class zk = Class.forName("pr24321$Z", false, cl);
+ Class yk = Class.forName("pr24321$Y", false, cl);
+ System.out.println(zk.isAssignableFrom(yk));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr24321.out b/libjava/testsuite/libjava.lang/pr24321.out
new file mode 100644
index 000000000..1d474d525
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr24321.out
@@ -0,0 +1,2 @@
+false
+true
diff --git a/libjava/testsuite/libjava.lang/pr25676.jar b/libjava/testsuite/libjava.lang/pr25676.jar
new file mode 100644
index 000000000..c0e0d4c72
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr25676.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr25676.java b/libjava/testsuite/libjava.lang/pr25676.java
new file mode 100644
index 000000000..e79a2c23d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr25676.java
@@ -0,0 +1,12 @@
+public class pr25676
+{
+ public static double g(double a, double b)
+ {
+ return Math.min(a, b);
+ }
+ public static void main(String a[])
+ {
+ System.out.println (g(0.0, -0.0));
+ System.out.println (g(-0.0, 0.0));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr25676.out b/libjava/testsuite/libjava.lang/pr25676.out
new file mode 100644
index 000000000..e6ffe0d43
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr25676.out
@@ -0,0 +1,2 @@
+-0.0
+-0.0
diff --git a/libjava/testsuite/libjava.lang/pr26390.jar b/libjava/testsuite/libjava.lang/pr26390.jar
new file mode 100644
index 000000000..2320e406d
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26390.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr26390.java b/libjava/testsuite/libjava.lang/pr26390.java
new file mode 100644
index 000000000..09cca7ef9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26390.java
@@ -0,0 +1,45 @@
+public class pr26390
+{
+ public interface ComponentPeer {
+ public void setBounds();
+ }
+
+ public interface ContainerPeer extends ComponentPeer {
+ }
+
+ public interface WindowPeer extends ContainerPeer {
+ }
+
+ public interface FramePeer extends WindowPeer {
+ }
+
+ public static class SwingComponentPeer implements ComponentPeer {
+ public void setBounds() {
+ }
+ }
+
+ public static class SwingContainerPeer
+ extends SwingComponentPeer implements ContainerPeer
+ {
+ }
+
+ public static class SwingWindowPeer
+ extends SwingContainerPeer implements WindowPeer
+ {
+ }
+
+ public static class SwingFramePeer
+ extends SwingWindowPeer implements FramePeer
+ {
+ public void setBounds() {
+ super.setBounds();
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ SwingFramePeer s = new SwingFramePeer();
+ s.setBounds();
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/pr26390.out b/libjava/testsuite/libjava.lang/pr26390.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26390.out
diff --git a/libjava/testsuite/libjava.lang/pr26990.jar b/libjava/testsuite/libjava.lang/pr26990.jar
new file mode 100644
index 000000000..32ec05673
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26990.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr26990.java b/libjava/testsuite/libjava.lang/pr26990.java
new file mode 100644
index 000000000..88db93e3e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26990.java
@@ -0,0 +1,13 @@
+public class pr26990
+{
+ public static void main (String args[]) throws Exception
+ {
+ System.setSecurityManager(new SecurityManager()
+ {
+ public void checkExit(int status)
+ {
+ throw new SecurityException("This is a bug");
+ }
+ });
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr26990.out b/libjava/testsuite/libjava.lang/pr26990.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr26990.out
diff --git a/libjava/testsuite/libjava.lang/pr27171.jar b/libjava/testsuite/libjava.lang/pr27171.jar
new file mode 100644
index 000000000..20422fb7e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr27171.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr27171.java b/libjava/testsuite/libjava.lang/pr27171.java
new file mode 100644
index 000000000..a07fea736
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr27171.java
@@ -0,0 +1,19 @@
+public class pr27171 {
+
+ public static void main(String[] args) throws Throwable {
+ // Isolated low surrogate.
+ char x = 56478; // 0xdc9e
+ String xs = new String(new char[] { x });
+ // Note that we fix a result for our implementation; but
+ // the JDK does something else.
+ System.out.println(xs.getBytes("UTF-8").length);
+
+ // isolated high surrogate -- at end of input stream
+ char y = 0xdaee;
+ String ys = new String(new char[] { y });
+ // Note that we fix a result for our implementation; but
+ // the JDK does something else.
+ System.out.println(ys.getBytes("UTF-8").length);
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/pr27171.out b/libjava/testsuite/libjava.lang/pr27171.out
new file mode 100644
index 000000000..a5c880627
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr27171.out
@@ -0,0 +1,2 @@
+3
+3
diff --git a/libjava/testsuite/libjava.lang/pr6388.jar b/libjava/testsuite/libjava.lang/pr6388.jar
new file mode 100644
index 000000000..5f4e4c0ed
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr6388.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr6388.java b/libjava/testsuite/libjava.lang/pr6388.java
new file mode 100644
index 000000000..175e1d213
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr6388.java
@@ -0,0 +1,10 @@
+public class pr6388
+{
+ public static void main (String[] args)
+ {
+ System.out.println (Integer.MIN_VALUE);
+ System.out.println (0x80000000);
+ System.out.println (Integer.MIN_VALUE == 0x80000000);
+ System.out.println (0x80000000 == 0x80000000);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr6388.out b/libjava/testsuite/libjava.lang/pr6388.out
new file mode 100644
index 000000000..1a551d97f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr6388.out
@@ -0,0 +1,4 @@
+-2147483648
+-2147483648
+true
+true
diff --git a/libjava/testsuite/libjava.lang/pr83.jar b/libjava/testsuite/libjava.lang/pr83.jar
new file mode 100644
index 000000000..68e29f8f8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr83.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr83.java b/libjava/testsuite/libjava.lang/pr83.java
new file mode 100644
index 000000000..b209aff28
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr83.java
@@ -0,0 +1,39 @@
+// PR 83
+
+/*
+ * test that caught null pointers exceptions in finalizers work correctly
+ * and that local variables are accessible in null pointer exception handlers.
+ */
+import java.io.*;
+
+public class pr83 {
+
+ static String s;
+
+ public static void main(String[] args) {
+ System.out.println(tryfinally() + s);
+ }
+
+ public static String tryfinally() {
+ String yuck = null;
+ String local_s = null;
+
+ try {
+ return "This is ";
+ } finally {
+ try {
+ local_s = "Perfect";
+ /* trigger null pointer exception */
+ String x = yuck.toLowerCase();
+ } catch (Exception _) {
+ /*
+ * when the null pointer exception is caught, we must still
+ * be able to access local_s.
+ * Our return address for the finally clause must also still
+ * be intact.
+ */
+ s = local_s;
+ }
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr83.out b/libjava/testsuite/libjava.lang/pr83.out
new file mode 100644
index 000000000..6a87582a8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr83.out
@@ -0,0 +1 @@
+This is Perfect
diff --git a/libjava/testsuite/libjava.lang/pr8415.jar b/libjava/testsuite/libjava.lang/pr8415.jar
new file mode 100644
index 000000000..0701225fb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8415.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr8415.java b/libjava/testsuite/libjava.lang/pr8415.java
new file mode 100644
index 000000000..d23fa1396
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8415.java
@@ -0,0 +1,15 @@
+import java.lang.reflect.*;
+public class pr8415
+{
+ public static void meth () throws NullPointerException
+ {
+ throw new NullPointerException();
+ }
+
+ public static void main(String[] args) throws Throwable
+ {
+ Class k = pr8415.class;
+ Method m = k.getMethod ("meth", new Class[0]);
+ System.out.println(m);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr8415.out b/libjava/testsuite/libjava.lang/pr8415.out
new file mode 100644
index 000000000..7589404f0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8415.out
@@ -0,0 +1 @@
+public static void pr8415.meth() throws java.lang.NullPointerException
diff --git a/libjava/testsuite/libjava.lang/pr8676.jar b/libjava/testsuite/libjava.lang/pr8676.jar
new file mode 100644
index 000000000..a59730153
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8676.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr8676.java b/libjava/testsuite/libjava.lang/pr8676.java
new file mode 100644
index 000000000..e28b15b1a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8676.java
@@ -0,0 +1,11 @@
+public class pr8676 {
+ // The problem here was that this function couldn't be compiled to
+ // bytecode.
+ private void f(long j) {
+ boolean x = (1 << j) != 0;
+ }
+
+ public static void main(String[] args)
+ {
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr8676.out b/libjava/testsuite/libjava.lang/pr8676.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8676.out
diff --git a/libjava/testsuite/libjava.lang/pr8823.jar b/libjava/testsuite/libjava.lang/pr8823.jar
new file mode 100644
index 000000000..bb2328433
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8823.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr8823.java b/libjava/testsuite/libjava.lang/pr8823.java
new file mode 100644
index 000000000..3327ddf7a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8823.java
@@ -0,0 +1,24 @@
+interface I
+{
+ public void m();
+}
+
+abstract class A implements I
+{
+ // But doesn't define m()
+}
+
+public class pr8823 extends A // which means it implements I
+{
+ public static void main(String[] args)
+ {
+ // Defining c as either I or C will work.
+ A c = new pr8823();
+ c.m();
+ }
+
+ public void m()
+ {
+ System.out.println("Hello World!");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr8823.out b/libjava/testsuite/libjava.lang/pr8823.out
new file mode 100644
index 000000000..980a0d5f1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8823.out
@@ -0,0 +1 @@
+Hello World!
diff --git a/libjava/testsuite/libjava.lang/pr8945.jar b/libjava/testsuite/libjava.lang/pr8945.jar
new file mode 100644
index 000000000..dd244b5b0
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8945.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/pr8945.java b/libjava/testsuite/libjava.lang/pr8945.java
new file mode 100644
index 000000000..9c5dce89a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8945.java
@@ -0,0 +1,9 @@
+public class pr8945
+{
+ public static void main(String[] args)
+ {
+ String foo = "hello";
+ int pos = 3;
+ System.out.println(foo.substring(pos,++pos));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr8945.out b/libjava/testsuite/libjava.lang/pr8945.out
new file mode 100644
index 000000000..1f9d725a9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8945.out
@@ -0,0 +1 @@
+l
diff --git a/libjava/testsuite/libjava.lang/private_direct_read.jar b/libjava/testsuite/libjava.lang/private_direct_read.jar
new file mode 100644
index 000000000..e44c0686e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_direct_read.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/private_direct_read.java b/libjava/testsuite/libjava.lang/private_direct_read.java
new file mode 100644
index 000000000..46d8fc300
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_direct_read.java
@@ -0,0 +1,26 @@
+// Class private_direct_read
+// Generated on Tue Nov 16 15:04:13 UTC 1999
+//
+
+class private_direct_read {
+
+ private int foo;
+
+ class private_direct_read_inner {
+ void test () {
+ int x = foo;
+ System.out.println ("x="+x);
+ }
+ }
+ void foo ()
+ {
+ foo = 670;
+ private_direct_read_inner inn = this.new private_direct_read_inner ();
+ inn.test ();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `private_direct_read'...");
+ new private_direct_read().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/private_direct_read.out b/libjava/testsuite/libjava.lang/private_direct_read.out
new file mode 100644
index 000000000..11d665d61
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_direct_read.out
@@ -0,0 +1,2 @@
+Testing class `private_direct_read'...
+x=670
diff --git a/libjava/testsuite/libjava.lang/private_direct_write.jar b/libjava/testsuite/libjava.lang/private_direct_write.jar
new file mode 100644
index 000000000..06ef8bf6a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_direct_write.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/private_direct_write.java b/libjava/testsuite/libjava.lang/private_direct_write.java
new file mode 100644
index 000000000..3c7a887f4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_direct_write.java
@@ -0,0 +1,25 @@
+// Class private_direct_write
+// Generated on Tue Nov 16 15:05:54 UTC 1999
+//
+
+class private_direct_write {
+
+ private int foo;
+
+ class private_direct_write_inner {
+ void test () {
+ foo = 670;
+ }
+ }
+ void foo ()
+ {
+ private_direct_write_inner inn = this.new private_direct_write_inner ();
+ inn.test ();
+ System.out.println ("foo="+foo);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `private_direct_write'...");
+ new private_direct_write().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/private_indirect_read.jar b/libjava/testsuite/libjava.lang/private_indirect_read.jar
new file mode 100644
index 000000000..1683111ac
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_indirect_read.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/private_indirect_read.java b/libjava/testsuite/libjava.lang/private_indirect_read.java
new file mode 100644
index 000000000..9a37bfdac
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_indirect_read.java
@@ -0,0 +1,32 @@
+// Class private_indirect_read
+// Generated on Tue Nov 16 15:34:56 UTC 1999
+//
+
+class private_indirect_read {
+
+ private int foo;
+
+ class private_indirect_read_inner {
+ void test () {
+ }
+ class other {
+ void testx () {
+ int x = foo;
+ System.out.println ("x="+x);
+ }
+ }
+
+ }
+ void foo ()
+ {
+ foo=670;
+ private_indirect_read_inner inn = this.new private_indirect_read_inner ();
+ private_indirect_read_inner.other o = inn.new other ();
+ o.testx();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `private_indirect_read'...");
+ new private_indirect_read().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/private_indirect_write.jar b/libjava/testsuite/libjava.lang/private_indirect_write.jar
new file mode 100644
index 000000000..ace4c5a01
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_indirect_write.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/private_indirect_write.java b/libjava/testsuite/libjava.lang/private_indirect_write.java
new file mode 100644
index 000000000..f706b20c9
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/private_indirect_write.java
@@ -0,0 +1,32 @@
+// Class private_indirect_write
+// Generated on Tue Nov 16 15:44:49 UTC 1999
+//
+
+class private_indirect_write {
+
+ private int foo;
+
+ class private_indirect_write_inner {
+ void test () {
+ }
+
+ class other {
+ void test () {
+ foo = 670;
+ }
+ }
+
+ }
+ void foo ()
+ {
+ private_indirect_write_inner inn = this.new private_indirect_write_inner ();
+ private_indirect_write_inner.other x = inn.new other ();
+ x.test ();
+ System.out.println ("foo="+foo);
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `private_indirect_write'...");
+ new private_indirect_write().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/search_outer.jar b/libjava/testsuite/libjava.lang/search_outer.jar
new file mode 100644
index 000000000..136dbb353
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/search_outer.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/search_outer.java b/libjava/testsuite/libjava.lang/search_outer.java
new file mode 100644
index 000000000..66567df8b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/search_outer.java
@@ -0,0 +1,28 @@
+// Class search_outer.java
+// Generated on Thu Nov 18 18:40:43 UTC 1999
+//
+
+class search_outer {
+
+ private int foo;
+
+ class search_outer_inner {
+ void test () {
+ foo++;
+ System.out.println ("foo="+foo);
+ foo += 3;
+ System.out.println ("foo="+foo);
+ }
+ }
+ void foo ()
+ {
+ foo = 3;
+ search_outer_inner inn = this.new search_outer_inner ();
+ inn.test ();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `search_outer'...");
+ new search_outer().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/search_outer.out b/libjava/testsuite/libjava.lang/search_outer.out
new file mode 100644
index 000000000..df2862d68
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/search_outer.out
@@ -0,0 +1,3 @@
+Testing class `search_outer'...
+foo=4
+foo=7
diff --git a/libjava/testsuite/libjava.lang/shatest.jar b/libjava/testsuite/libjava.lang/shatest.jar
new file mode 100644
index 000000000..58c3d4f47
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/shatest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/shatest.java b/libjava/testsuite/libjava.lang/shatest.java
new file mode 100644
index 000000000..4cc6d4f41
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/shatest.java
@@ -0,0 +1,39 @@
+import java.security.*;
+
+class shatest {
+
+ // gnu-crypto/source/gnu/testlet/gnu/crypto/hash/TestOfSha160.java
+
+ public static void main(String[] argv) {
+ MessageDigest md=null;
+ try {
+ md = MessageDigest.getInstance("SHA-1");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ md.update("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".getBytes(), 0, 56);
+ String exp = "84983E441C3BD26EBAAE4AA1F95129E5E54670F1";
+ String result = toString(md.digest());
+ System.out.println(exp);
+ System.out.println(result);
+ if (!exp.equals(result))
+ System.out.println("NOT EQUAL!");
+
+ }
+
+ public static String toString(byte[] ba) {
+ return toString(ba, 0, ba.length);
+ }
+ public static final String toString(byte[] ba, int offset, int length) {
+ char[] buf = new char[length * 2];
+ for (int i = 0, j = 0, k; i < length; ) {
+ k = ba[offset + i++];
+ buf[j++] = HEX_DIGITS[(k >>> 4) & 0x0F];
+ buf[j++] = HEX_DIGITS[ k & 0x0F];
+ }
+ return new String(buf);
+ }
+
+ private static final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
+
+}
diff --git a/libjava/testsuite/libjava.lang/shatest.out b/libjava/testsuite/libjava.lang/shatest.out
new file mode 100644
index 000000000..3c19286fa
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/shatest.out
@@ -0,0 +1,2 @@
+84983E441C3BD26EBAAE4AA1F95129E5E54670F1
+84983E441C3BD26EBAAE4AA1F95129E5E54670F1
diff --git a/libjava/testsuite/libjava.lang/stacktrace.jar b/libjava/testsuite/libjava.lang/stacktrace.jar
new file mode 100644
index 000000000..9ae27ab77
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stacktrace.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/stacktrace.java b/libjava/testsuite/libjava.lang/stacktrace.java
new file mode 100644
index 000000000..f8823a15f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stacktrace.java
@@ -0,0 +1,67 @@
+/* This test should test the stacktrace functionality.
+ We only print ClassName and MethName since the other information
+ like FileName and LineNumber are not consistent while building
+ native or interpreted and we want to test the output inside the dejagnu
+ test environment.
+ Also, we have to make the methods public since they might be optimized away
+ with inline's and then the -O3/-O2 execution might fail.
+*/
+public class stacktrace {
+ public static void main(String args[]) {
+ try {
+ new stacktrace().a();
+ } catch (TopException e) {
+ }
+ }
+
+ public void a() throws TopException {
+ try {
+ b();
+ } catch (MiddleException e) {
+ throw new TopException(e);
+ }
+ }
+
+ public void b() throws MiddleException {
+ c();
+ }
+
+ public void c() throws MiddleException {
+ try {
+ d();
+ } catch (BottomException e) {
+ throw new MiddleException(e);
+ }
+ }
+
+ public void d() throws BottomException {
+ e();
+ }
+
+ public void e() throws BottomException {
+ throw new BottomException();
+ }
+}
+
+class TopException extends Exception {
+ TopException(Throwable cause) {
+ super(cause);
+ }
+}
+
+class MiddleException extends Exception {
+ MiddleException(Throwable cause) {
+ super(cause);
+ }
+}
+
+class BottomException extends Exception {
+ BottomException() {
+ StackTraceElement stack[] = this.getStackTrace();
+ for (int i = 0; i < stack.length; i++) {
+ String className = stack[i].getClassName();
+ String methodName = stack[i].getMethodName();
+ System.out.println(className + "." + methodName);
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/stacktrace.out b/libjava/testsuite/libjava.lang/stacktrace.out
new file mode 100644
index 000000000..974f95130
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stacktrace.out
@@ -0,0 +1,6 @@
+stacktrace.e
+stacktrace.d
+stacktrace.c
+stacktrace.b
+stacktrace.a
+stacktrace.main
diff --git a/libjava/testsuite/libjava.lang/stringconst.jar b/libjava/testsuite/libjava.lang/stringconst.jar
new file mode 100644
index 000000000..aab9f9391
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/stringconst.java b/libjava/testsuite/libjava.lang/stringconst.java
new file mode 100644
index 000000000..628574943
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst.java
@@ -0,0 +1,22 @@
+// A reference to a String shouldn't cause an interface to be
+// initialized.
+
+interface I
+{
+ String z = "zardoz";
+ int q = stringconst.out ("q", 0);
+}
+
+public class stringconst
+{
+ public static int out (String s, int i)
+ {
+ System.out.println (s + "=" + i);
+ return i;
+ }
+
+ public static void main (String[] args)
+ {
+ System.out.println (I.z);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/stringconst.out b/libjava/testsuite/libjava.lang/stringconst.out
new file mode 100644
index 000000000..1f0ac89bf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst.out
@@ -0,0 +1 @@
+zardoz
diff --git a/libjava/testsuite/libjava.lang/stringconst2.jar b/libjava/testsuite/libjava.lang/stringconst2.jar
new file mode 100644
index 000000000..5a6bee37c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/stringconst2.java b/libjava/testsuite/libjava.lang/stringconst2.java
new file mode 100644
index 000000000..c64bba4dd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst2.java
@@ -0,0 +1,22 @@
+// Test to make sure a string constant is correctly initialized.
+
+import java.lang.reflect.*;
+
+public class stringconst2
+{
+ public static final String q = "zardoz";
+
+ public static void main (String[] args)
+ {
+ try
+ {
+ Class k = Class.forName ("stringconst2");
+ Field f = k.getField ("q");
+ System.out.println (f.get (null));
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/stringconst2.out b/libjava/testsuite/libjava.lang/stringconst2.out
new file mode 100644
index 000000000..1f0ac89bf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stringconst2.out
@@ -0,0 +1 @@
+zardoz
diff --git a/libjava/testsuite/libjava.lang/stub.jar b/libjava/testsuite/libjava.lang/stub.jar
new file mode 100644
index 000000000..1c2fca17b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stub.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/stub.java b/libjava/testsuite/libjava.lang/stub.java
new file mode 100644
index 000000000..dfda004b3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stub.java
@@ -0,0 +1,101 @@
+// Class stub
+// Generated on Fri Feb 4 20:23:47 PST 2000
+// A somewhat thorough test of function invocator generated stubs.
+
+class stub {
+
+ String ok;
+
+ void OK () {System.out.println (ok);}
+ void OK (int i) {System.out.println (ok+" "+i);}
+ static void testOK () {System.out.println ("OK");}
+ static void testOK (int i) {System.out.println ("OK "+i); }
+
+ // STATIC PRIVATE R_VALUE ARGS
+ // No No No No
+ void t1 () {OK();}
+ // Yes No No No
+ static void t2 () {testOK();}
+ // No Yes No No
+ private void t3 () {OK();}
+ // Yes Yes No No
+ static private void t4 () {testOK();}
+ // No No Yes No
+ int t5 () {return 5;}
+ // Yes No Yes No
+ static int t6 () {return 6;}
+ // No Yes Yes No
+ private int t7 () {return 7;}
+ // Yes Yes Yes No
+ static private int t8 () {return 8;}
+
+ // No No No Yes
+ void t9 (int i) {OK(i);}
+ // Yes No No Yes
+ static void t10 (int i) {testOK(i);}
+ // No Yes No Yes
+ private void t11 (int i) {OK(i);}
+ // Yes Yes No Yes
+ static private void t12 (int i) {testOK(i);}
+ // No No Yes Yes
+ int t13 (int i) {return i*2;}
+ // Yes No Yes Yes
+ static int t14 (int i) {return i*3;}
+ // No Yes Yes Yes
+ private int t15 (int i) {return i*4;}
+ // Yes Yes Yes Yes
+ static private int t16 (int i) {return i*5;}
+
+ void foo ()
+ {
+ this.new bar ().test ();
+ }
+ class bar {
+ void test () {
+ ok = "OK";
+ t1 ();
+ t2 ();
+ t3 ();
+ t4 ();
+ System.out.println (t5());
+ System.out.println (t6());
+ System.out.println (t7());
+ System.out.println (t8());
+ t9 (9);
+ t10 (10);
+ t11 (11);
+ t12 (12);
+ System.out.println (t13(13));
+ System.out.println (t14(14));
+ System.out.println (t15(15));
+ System.out.println (t16(16));
+ this.new baz ().test ();
+ }
+ class baz {
+ void test () {
+ ok = "OKOK";
+ t1 ();
+ t2 ();
+ t3 ();
+ t4 ();
+ System.out.println (t5());
+ System.out.println (t6());
+ System.out.println (t7());
+ System.out.println (t8());
+ t9 (9);
+ t10 (10);
+ t11 (11);
+ t12 (12);
+ System.out.println (t13(13));
+ System.out.println (t14(14));
+ System.out.println (t15(15));
+ System.out.println (t16(16));
+ }
+ }
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `stub'...");
+ new stub ().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/stub.out b/libjava/testsuite/libjava.lang/stub.out
new file mode 100644
index 000000000..90937c6da
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/stub.out
@@ -0,0 +1,33 @@
+Testing class `stub'...
+OK
+OK
+OK
+OK
+5
+6
+7
+8
+OK 9
+OK 10
+OK 11
+OK 12
+26
+42
+60
+80
+OKOK
+OK
+OKOK
+OK
+5
+6
+7
+8
+OKOK 9
+OK 10
+OKOK 11
+OK 12
+26
+42
+60
+80
diff --git a/libjava/testsuite/libjava.lang/test_long.jar b/libjava/testsuite/libjava.lang/test_long.jar
new file mode 100644
index 000000000..f6b3ee0c3
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/test_long.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/test_long.java b/libjava/testsuite/libjava.lang/test_long.java
new file mode 100644
index 000000000..3e876ac34
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/test_long.java
@@ -0,0 +1,13 @@
+class test_long {
+
+ public static void main (String[] arg)
+ {
+ long a, b, c, d, e;
+ e = 234L;
+ d = 0x8888888888888888L;
+ a = 0x0123456789ABCDEFL;
+ b = 0xFEDCBA9876543210L;
+ c = 0xF096A5B4C3B2E187L;
+ System.out.println (a+" "+b+" "+c+" "+d+" "+e);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/test_long.out b/libjava/testsuite/libjava.lang/test_long.out
new file mode 100644
index 000000000..1f10f0cf8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/test_long.out
@@ -0,0 +1 @@
+81985529216486895 -81985529216486896 -1110518062304271993 -8608480567731124088 234
diff --git a/libjava/testsuite/libjava.lang/tmi.jar b/libjava/testsuite/libjava.lang/tmi.jar
new file mode 100644
index 000000000..3e77d8641
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tmi.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/tmi.java b/libjava/testsuite/libjava.lang/tmi.java
new file mode 100644
index 000000000..be2395a96
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tmi.java
@@ -0,0 +1,43 @@
+// Class t
+// Generated on Thu Nov 4 16:35:03 PST 1999
+//
+
+class tmi {
+ int i;
+ void foo () {
+ tmi.z x1 = new z();
+ tmi.z.y x = x1.new y();
+ x.bar ();
+ x.print();
+ tmi.this.i = 666;
+ x.print();
+ tmi.this.print();
+ }
+ void print () {
+ System.out.println ("tmi.print()");
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `tmi'...");
+ new tmi ().foo();
+ }
+ class z {
+ int j;
+ void foo () {
+ tmi.this.i = 3;
+ }
+ class y {
+ int k;
+ void bar () {
+ tmi.this.i = 3;
+ tmi.this.print ();
+ z.this.j = 4;
+ y.this.k = 34;
+ }
+ void print () {
+ System.out.println ("i="+i+", j="+j+", k="+k);
+ }
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/tmi.out b/libjava/testsuite/libjava.lang/tmi.out
new file mode 100644
index 000000000..7c87756fd
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tmi.out
@@ -0,0 +1,5 @@
+Testing class `tmi'...
+tmi.print()
+i=3, j=4, k=34
+i=666, j=4, k=34
+tmi.print()
diff --git a/libjava/testsuite/libjava.lang/tp.jar b/libjava/testsuite/libjava.lang/tp.jar
new file mode 100644
index 000000000..9cf6cb8cb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tp.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/tp.java b/libjava/testsuite/libjava.lang/tp.java
new file mode 100644
index 000000000..b6d9fbec4
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tp.java
@@ -0,0 +1,36 @@
+// Class tp
+// Generated on Thu Nov 4 16:35:03 PST 1999
+//
+
+class tp {
+ private int i;
+ void foo () {
+ tp.z x1 = new z();
+ tp.z.y x = x1.new y();
+ x.bar ();
+ x.print();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `tp'...");
+ new tp ().foo();
+ }
+ class z {
+ private int j;
+ void foo () {
+ tp.this.i = 3;
+ }
+ class y {
+ private int k;
+ void bar () {
+ tp.this.i = 3;
+ z.this.j = 4;
+ y.this.k = 34;
+ }
+ void print () {
+ System.out.println ("i="+i+", j="+j+", k="+k);
+ }
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.lang/tp.out b/libjava/testsuite/libjava.lang/tp.out
new file mode 100644
index 000000000..f89aac653
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/tp.out
@@ -0,0 +1,2 @@
+Testing class `tp'...
+i=3, j=4, k=34
diff --git a/libjava/testsuite/libjava.lang/update_outer.jar b/libjava/testsuite/libjava.lang/update_outer.jar
new file mode 100644
index 000000000..f6489d07e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/update_outer.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/update_outer.java b/libjava/testsuite/libjava.lang/update_outer.java
new file mode 100644
index 000000000..b2e843703
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/update_outer.java
@@ -0,0 +1,28 @@
+// Class update_outer
+// Generated on Thu Nov 18 21:37:21 UTC 1999
+//
+
+class update_outer {
+
+ private String foo;
+
+ class update_outer_inner {
+ void test () {
+ foo += " M$";
+ System.out.println ("foo=`"+foo+"'");
+ }
+
+
+ }
+ void foo ()
+ {
+ foo = "780";
+ update_outer_inner inn = this.new update_outer_inner ();
+ inn.test ();
+ }
+ public static void main (String[] arg)
+ {
+ System.out.println ("Testing class `update_outer'...");
+ new update_outer().foo ();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/update_outer.out b/libjava/testsuite/libjava.lang/update_outer.out
new file mode 100644
index 000000000..cff7c5d5b
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/update_outer.out
@@ -0,0 +1,2 @@
+Testing class `update_outer'...
+foo=`780 M$'
diff --git a/libjava/testsuite/libjava.lang/utf8concat.jar b/libjava/testsuite/libjava.lang/utf8concat.jar
new file mode 100644
index 000000000..55ba02a6a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utf8concat.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/utf8concat.java b/libjava/testsuite/libjava.lang/utf8concat.java
new file mode 100644
index 000000000..8b8f47ee1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utf8concat.java
@@ -0,0 +1,11 @@
+public class utf8concat
+{
+ private static String s;
+
+ public static void main (String[] args)
+ {
+ // This causes a crash at runtime because the compiler is
+ // producing an invalid UTF-8 string literal.
+ s = "abc" + (char)183;
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/utf8concat.out b/libjava/testsuite/libjava.lang/utf8concat.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utf8concat.out
diff --git a/libjava/testsuite/libjava.lang/utilTest.jar b/libjava/testsuite/libjava.lang/utilTest.jar
new file mode 100644
index 000000000..f3a4169ad
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utilTest.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/utilTest.java b/libjava/testsuite/libjava.lang/utilTest.java
new file mode 100644
index 000000000..221bbf827
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utilTest.java
@@ -0,0 +1,58 @@
+class utilTest {
+
+ public static void main(String[] argv) throws Throwable {
+ byte[] b = new byte[] {
+ 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xab,
+ (byte) 0xcd, (byte) 0xef
+ };
+ String s = "0123456789ABCDEF";
+ System.out.println(toString(b));
+ System.out.println(s);
+ System.out.println(toString(toBytesFromString(s)));
+ }
+
+ // The following comes from the GNU Crypto project gnu.crypto.util.Util
+
+ private static final char[] HEX_DIGITS = {
+ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
+ };
+
+ public static byte[] toBytesFromString(String s) {
+ int limit = s.length();
+ byte[] result = new byte[((limit + 1) / 2)];
+ int i = 0, j = 0;
+ if ((limit % 2) == 1) {
+ result[j++] = (byte) fromDigit(s.charAt(i++));
+ }
+ while (i < limit) {
+ result[j++] =
+ (byte)((fromDigit(s.charAt(i++)) << 4) | fromDigit(s.charAt(i++)));
+ }
+ return result;
+ }
+
+ public static int fromDigit(char c) {
+ if (c >= '0' && c <= '9') {
+ return c - '0';
+ } else if (c >= 'A' && c <= 'F') {
+ return c - 'A' + 10;
+ } else if (c >= 'a' && c <= 'f') {
+ return c - 'a' + 10;
+ } else
+ throw new IllegalArgumentException("Invalid hexadecimal digit: " + c);
+ }
+
+ public static String toString(byte[] ba) {
+ return toString(ba, 0, ba.length);
+ }
+
+ public static final String toString(byte[] ba, int offset, int length) {
+ char[] buf = new char[length * 2];
+ for (int i = 0, j = 0, k; i < length; ) {
+ k = ba[offset + i++];
+ buf[j++] = HEX_DIGITS[(k >>> 4) & 0x0F];
+ buf[j++] = HEX_DIGITS[ k & 0x0F];
+ }
+ return new String(buf);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/utilTest.out b/libjava/testsuite/libjava.lang/utilTest.out
new file mode 100644
index 000000000..036c36ebf
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/utilTest.out
@@ -0,0 +1,3 @@
+0123456789ABCDEF
+0123456789ABCDEF
+0123456789ABCDEF
diff --git a/libjava/testsuite/libjava.lang/verify.jar b/libjava/testsuite/libjava.lang/verify.jar
new file mode 100644
index 000000000..7946994b7
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/verify.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.lang/verify.java b/libjava/testsuite/libjava.lang/verify.java
new file mode 100644
index 000000000..71b4b5c43
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/verify.java
@@ -0,0 +1,20 @@
+// Test for a verification regression.
+
+interface I { }
+class D implements I { }
+class E extends D { }
+
+public class verify
+{
+ static void call(I v) { }
+
+ static void doit (Object x)
+ {
+ call ((x instanceof I) ? (I) x : new E ());
+ }
+
+ public static void main(String[] args)
+ {
+ doit(null);
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/verify.out b/libjava/testsuite/libjava.lang/verify.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/verify.out
diff --git a/libjava/testsuite/libjava.loader/MyLoader.java b/libjava/testsuite/libjava.loader/MyLoader.java
new file mode 100644
index 000000000..40c31d7f6
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/MyLoader.java
@@ -0,0 +1,14 @@
+import java.net.*;
+
+public class MyLoader extends URLClassLoader
+{
+ public MyLoader (URL urls[])
+ {
+ super (urls);
+ }
+
+ public MyLoader (URL urls[], ClassLoader parent)
+ {
+ super (urls, parent);
+ }
+}
diff --git a/libjava/testsuite/libjava.loader/TestEarlyGC.jar b/libjava/testsuite/libjava.loader/TestEarlyGC.jar
new file mode 100644
index 000000000..7a9c0ef1f
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestEarlyGC.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.loader/TestEarlyGC.java b/libjava/testsuite/libjava.loader/TestEarlyGC.java
new file mode 100644
index 000000000..f3bfa0946
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestEarlyGC.java
@@ -0,0 +1,64 @@
+public class TestEarlyGC extends ClassLoader {
+
+ static TestEarlyGC[] a = new TestEarlyGC[10];
+
+ // Jeff Sturm writes:
+ // Reconstructed from bytecode (and memory). The singleton pattern
+ // is used as a class finalizer.
+ // public class C {
+ // private static C c;
+ // public C() {
+ // c = this;
+ // }
+ // protected void finalize() {
+ // System.out.println("finalized");
+ // }
+ // }
+ byte[] code = {
+ -54,-2,-70,-66,0,3,0,45,0,32,1,0,1,67,7,0,
+ 1,1,0,16,106,97,118,97,47,108,97,110,103,47,79,98,
+ 106,101,99,116,7,0,3,1,0,1,99,1,0,3,76,67,
+ 59,1,0,6,60,105,110,105,116,62,1,0,3,40,41,86,
+ 1,0,4,67,111,100,101,12,0,7,0,8,10,0,4,0,
+ 10,12,0,5,0,6,9,0,2,0,12,1,0,15,76,105,
+ 110,101,78,117,109,98,101,114,84,97,98,108,101,1,0,8,
+ 102,105,110,97,108,105,122,101,1,0,16,106,97,118,97,47,
+ 108,97,110,103,47,83,121,115,116,101,109,7,0,16,1,0,
+ 3,111,117,116,1,0,21,76,106,97,118,97,47,105,111,47,
+ 80,114,105,110,116,83,116,114,101,97,109,59,12,0,18,0,
+ 19,9,0,17,0,20,1,0,9,102,105,110,97,108,105,122,
+ 101,100,8,0,22,1,0,19,106,97,118,97,47,105,111,47,
+ 80,114,105,110,116,83,116,114,101,97,109,7,0,24,1,0,
+ 7,112,114,105,110,116,108,110,1,0,21,40,76,106,97,118,
+ 97,47,108,97,110,103,47,83,116,114,105,110,103,59,41,86,
+ 12,0,26,0,27,10,0,25,0,28,1,0,10,83,111,117,
+ 114,99,101,70,105,108,101,1,0,6,67,46,106,97,118,97,
+ 0,33,0,2,0,4,0,0,0,1,0,10,0,5,0,6,
+ 0,0,0,2,0,1,0,7,0,8,0,1,0,9,0,0,
+ 0,33,0,1,0,1,0,0,0,9,42,-73,0,11,42,-77,
+ 0,13,-79,0,0,0,1,0,14,0,0,0,6,0,1,0,
+ 4,0,5,0,4,0,15,0,8,0,1,0,9,0,0,0,
+ 33,0,2,0,1,0,0,0,9,-78,0,21,18,23,-74,0,
+ 29,-79,0,0,0,1,0,14,0,0,0,6,0,1,0,0,
+ 0,9,0,1,0,30,0,0,0,2,0,31
+ };
+
+ TestEarlyGC() throws Throwable {
+ defineClass("C", code, 0, code.length).newInstance();
+ }
+
+ public static void main(String[] args) {
+ Runtime r = Runtime.getRuntime();
+
+ try {
+ for (int n = 0; n < a.length; n++) {
+ a[n] = new TestEarlyGC();
+ r.gc();
+ r.runFinalization();
+ Thread.yield();
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+}
diff --git a/libjava/testsuite/libjava.loader/TestEarlyGC.out b/libjava/testsuite/libjava.loader/TestEarlyGC.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestEarlyGC.out
diff --git a/libjava/testsuite/libjava.loader/TestLeak.jar b/libjava/testsuite/libjava.loader/TestLeak.jar
new file mode 100644
index 000000000..d7bd24737
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestLeak.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.loader/TestLeak.java b/libjava/testsuite/libjava.loader/TestLeak.java
new file mode 100644
index 000000000..3ef452595
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestLeak.java
@@ -0,0 +1,33 @@
+import java.net.*;
+import java.lang.reflect.Proxy;
+
+public class TestLeak
+{
+ static class MyLoader extends URLClassLoader
+ {
+ public MyLoader (URL urls[])
+ {
+ super (urls);
+ }
+ }
+
+ public static void main (String[] args)
+ {
+ URLClassLoader ucl =
+ (URLClassLoader) ClassLoader.getSystemClassLoader();
+ URL urls[] = ucl.getURLs ();
+ Class ifaces[] = new Class[1];
+ ifaces[0] = java.lang.Comparable.class;
+
+ try {
+ for (int i = 0; i < 100; i++)
+ {
+ Proxy.getProxyClass (new MyLoader (urls), ifaces);
+ }
+ } catch (Exception e) {
+ e.printStackTrace ();
+ }
+ }
+}
+
+
diff --git a/libjava/testsuite/libjava.loader/TestLeak.out b/libjava/testsuite/libjava.loader/TestLeak.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestLeak.out
diff --git a/libjava/testsuite/libjava.loader/TestMultiple.jar b/libjava/testsuite/libjava.loader/TestMultiple.jar
new file mode 100644
index 000000000..dfb454cfe
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestMultiple.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.loader/TestMultiple.java b/libjava/testsuite/libjava.loader/TestMultiple.java
new file mode 100644
index 000000000..1a56fc487
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestMultiple.java
@@ -0,0 +1,28 @@
+import java.net.*;
+
+public class TestMultiple
+{
+ public static void main (String[] args)
+ {
+ URLClassLoader ucl =
+ (URLClassLoader) ClassLoader.getSystemClassLoader();
+ URL urls[] = ucl.getURLs ();
+
+ MyLoader t1 = new MyLoader (urls);
+ MyLoader t2 = new MyLoader (urls);
+
+ Class c1, c2;
+
+ try {
+
+ c1 = t1.loadClass ("dummy");
+ c2 = t2.loadClass ("dummy");
+
+ }
+ catch (Exception e) {
+ e.printStackTrace ();
+ }
+ }
+}
+
+
diff --git a/libjava/testsuite/libjava.loader/TestMultiple.out b/libjava/testsuite/libjava.loader/TestMultiple.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestMultiple.out
diff --git a/libjava/testsuite/libjava.loader/TestParent.jar b/libjava/testsuite/libjava.loader/TestParent.jar
new file mode 100644
index 000000000..41f66db52
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestParent.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.loader/TestParent.java b/libjava/testsuite/libjava.loader/TestParent.java
new file mode 100644
index 000000000..3996b7671
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestParent.java
@@ -0,0 +1,29 @@
+import java.net.*;
+
+public class TestParent
+{
+ public static void main (String[] args)
+ {
+ URLClassLoader ucl =
+ (URLClassLoader) ClassLoader.getSystemClassLoader();
+ URL urls[] = ucl.getURLs ();
+
+ MyLoader parent = new MyLoader (urls);
+
+ MyLoader t1 = new MyLoader (urls, parent);
+ MyLoader t2 = new MyLoader (urls, parent);
+
+ Class c1, c2;
+
+ try {
+
+ c1 = t1.loadClass ("dummy");
+ c2 = t2.loadClass ("dummy");
+
+ }
+ catch (Exception e) {
+ e.printStackTrace ();
+ }
+ }
+}
+
diff --git a/libjava/testsuite/libjava.loader/TestParent.out b/libjava/testsuite/libjava.loader/TestParent.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/TestParent.out
diff --git a/libjava/testsuite/libjava.loader/dummy.class b/libjava/testsuite/libjava.loader/dummy.class
new file mode 100644
index 000000000..58ffb90f2
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/dummy.class
Binary files differ
diff --git a/libjava/testsuite/libjava.loader/dummy.java b/libjava/testsuite/libjava.loader/dummy.java
new file mode 100644
index 000000000..67bb4a79f
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/dummy.java
@@ -0,0 +1,6 @@
+// A dummy class
+
+public class dummy
+{
+}
+
diff --git a/libjava/testsuite/libjava.loader/loader.exp b/libjava/testsuite/libjava.loader/loader.exp
new file mode 100644
index 000000000..a94e4e9ea
--- /dev/null
+++ b/libjava/testsuite/libjava.loader/loader.exp
@@ -0,0 +1,77 @@
+# 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
diff --git a/libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java b/libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java
new file mode 100644
index 000000000..91817e6fa
--- /dev/null
+++ b/libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java
@@ -0,0 +1,31 @@
+// Copyright (c) 1998, 1999 Free Software Foundation
+
+// Written by Tom Tromey <tromey@cygnus.com>
+
+import gnu.testlet.*;
+
+public class DejaGNUTestHarness extends SimpleTestHarness
+{
+ static String dejasrcdir;
+
+ public String getSourceDirectory ()
+ {
+ return dejasrcdir;
+ }
+
+ private DejaGNUTestHarness ()
+ {
+ super (/* verbose */ true, /* debug */ false);
+ }
+
+ public static void main (String[] args)
+ {
+ dejasrcdir = args.length > 0 ? args[0] : "";
+ DejaGNUTestHarness harness = new DejaGNUTestHarness ();
+ // This might seem weird, given that we check args.length above.
+ // However, in some cases the expect code rewrites this runtest
+ // invocation to have an explicit name for the test to run.
+ harness.runtest (args[1]);
+ System.exit(harness.done());
+ }
+}
diff --git a/libjava/testsuite/libjava.mauve/mauve.exp b/libjava/testsuite/libjava.mauve/mauve.exp
new file mode 100644
index 000000000..03bbed9fd
--- /dev/null
+++ b/libjava/testsuite/libjava.mauve/mauve.exp
@@ -0,0 +1,446 @@
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation.
+# Written by Tom Tromey <tromey@cygnus.com>.
+# Incorporate Mauve into libjava's DejaGNU test suite framework.
+
+# FIXME: should be able to compile from source as well as from .class.
+
+
+# Compute list of files to compile. Returns list of all files
+# representing classes that must be tested. Result parameter `uses'
+# maps source file names onto list of objects required for link.
+proc mauve_compute_uses {aName} {
+ upvar $aName uses
+ global env runtests
+
+ set fd [open classes r]
+ set line [read $fd]
+ close $fd
+
+ foreach item [split $line] {
+ if {$item == ""} then {
+ continue
+ }
+ set item [join [split $item .] /].java
+
+ # User might have specified "mauve.exp=something.java".
+ if {! [runtest_file_p $runtests $item]} {
+ continue
+ }
+
+ # Look for Uses line in source file.
+ set fd [open $env(MAUVEDIR)/$item r]
+ set ufiles [list $item]
+ set dir [file dirname $item]
+ while {[gets $fd sline] != -1} {
+ if {[regsub -- {^// Uses:} $sline {} sline]} then {
+ foreach uf [split $sline] {
+ if {$uf != ""} then {
+ lappend ufiles $dir/$uf
+ }
+ }
+ }
+ }
+ close $fd
+
+ set uses($item) {}
+ foreach file $ufiles {
+ set file [file rootname $file].o
+ lappend uses($item) $file
+ # Now add all inner classes
+ foreach inner [glob -nocomplain [file rootname $file]$*.class] {
+ # Prevent excessive escaping by replacing $ with a ^ in the .o name
+ set inner [file rootname $inner].o
+ regsub -all "\\$" $inner "\^" inner
+ lappend uses($item) $inner
+ }
+ }
+ }
+
+ return [lsort [array names uses]]
+}
+
+# Find Mauve sources. At end, env(MAUVEDIR) points to sources.
+# Returns 0 if sources not found, 1 otherwise.
+proc find_mauve_sources {} {
+ global env srcdir
+
+ if {[info exists env(MAUVEDIR)]} {
+ return 1
+ } elseif {[file isdirectory $srcdir/libjava.mauve/mauve]} {
+ set env(MAUVEDIR) $srcdir/libjava.mauve/mauve
+ return 1
+ }
+
+ return 0
+}
+
+# Find all the harness files and return a list of them, with no
+# suffix.
+proc mauve_find_harness_files {} {
+ set result {}
+ foreach file [glob -nocomplain -- *.class gnu/testlet/*.class] {
+ lappend result [file root $file]
+ }
+ return $result
+}
+
+# Run all the Mauve tests. Return 1 on success, 0 on any failure. If
+# the tests are skipped, that is treated like success.
+proc test_mauve {} {
+ global srcdir objdir subdir env
+
+ if {! [find_mauve_sources]} then {
+ verbose "MAUVEDIR not set; not running Mauve tests"
+ return 1
+ }
+
+ # Run in subdir so we don't overwrite our own Makefile.
+ catch {system "rm -rf mauve-build"}
+ file mkdir mauve-build
+ # Some weirdness to set srcdir correctly.
+ set here [pwd]
+ cd $srcdir
+ set full_srcdir [pwd]
+ cd $here/mauve-build
+
+ global env libgcj_jar
+ global GCJ_UNDER_TEST
+ global TOOL_EXECUTABLE
+
+ if ![info exists GCJ_UNDER_TEST] {
+ if [info exists TOOL_EXECUTABLE] {
+ set GCJ_UNDER_TEST $TOOL_EXECUTABLE;
+ } else {
+ if [info exists env(GCJ)] {
+ set GCJ_UNDER_TEST env(GCJ)
+ } else {
+ set GCJ_UNDER_TEST "[find_gcj]"
+ }
+ }
+ }
+
+ # Append -B and -I so that libgcj.spec and libgcj.jar are found
+ # before they're installed.
+ # Append -Wno-deprecated since Mauve tests lots of deprecated stuff.
+ set env(GCJ) "$GCJ_UNDER_TEST -Wno-deprecated -B$objdir/../ -I$libgcj_jar"
+
+ if {[catch {
+ system "$env(MAUVEDIR)/configure --with-gcj 2>&1"
+ } msg]} then {
+ fail "Mauve configure"
+ verbose "configure failed with $msg"
+ return 0
+ }
+ pass "Mauve configure"
+
+ # Copy appropriate tags file locally.
+ set fd [open $full_srcdir/../mauve-libgcj r]
+ set c [read $fd]
+ close $fd
+ set fd [open mauve-libgcj w]
+ puts -nonewline $fd $c
+ close $fd
+
+ catch {system "ln -s $full_srcdir/libjava.mauve/xfails xfails"}
+
+ if {[catch {
+ system "make KEYS=libgcj classes.stamp 2>&1"
+ } msg]} then {
+ fail "Mauve build"
+ verbose "build failed with $msg"
+ return 0
+ }
+ pass "Mauve build"
+
+ set srcfile $full_srcdir/$subdir/DejaGNUTestHarness.java
+ if {! [bytecompile_file $srcfile [pwd] $env(MAUVEDIR):[pwd]]} then {
+ fail "Compile DejaGNUTestHarness.java"
+ return 0
+ }
+ pass "Compile DejaGNUTestHarness.java"
+
+ # Compute list of files to test, and also all files to build.
+ set choices [mauve_compute_uses uses]
+
+ # Compute flags to use to do the build.
+ set compile_args [libjava_arguments]
+ set link_args [concat [libjava_arguments link] \
+ [list "additional_flags=--main=DejaGNUTestHarness"]]
+
+ if {[string match "*libtool*" $compile_args]} {
+ set objext lo
+ } else {
+ set objext o
+ }
+
+ set ok 1
+ set objlist {}
+ foreach base [mauve_find_harness_files] {
+ set file $base.class
+ set obj $base.$objext
+ set x [libjava_prune_warnings \
+ [target_compile [pwd]/$file $obj object $compile_args]]
+ if {$x != ""} then {
+ fail "Compile $obj"
+ set ok 0
+ } else {
+ pass "Compile $obj"
+ }
+ lappend objlist $obj
+ }
+ if {! $ok} then {
+ return 0
+ }
+
+ set proc_ok 1
+ set Executable DejaGNUTestHarness
+ foreach file $choices {
+ # Turn `java/lang/Foo.java' into `java.lang.Foo'.
+ set class [file rootname $file]
+ regsub -all -- / $class . class
+
+ set ok 1
+ set this_olist {}
+ foreach obj $uses($file) {
+ set obj [file rootname $obj].$objext
+ lappend this_olist $obj
+ if {! [file exists $obj]} then {
+ verbose "compiling $obj for test of $class"
+ # The .class file does contain a $, but we can quote it between "'"s.
+ set srcfile [file rootname $obj].class
+ regsub -all "\\^" $srcfile "\$" srcfile
+ set x [libjava_prune_warnings \
+ [libjava_tcompile '[pwd]/$srcfile' $obj object $compile_args]]
+ if {$x != ""} then {
+ fail "Compile $obj for $class"
+ set ok 0
+ break
+ }
+ pass "Compile $obj for $class"
+ }
+ }
+ if {! $ok} then {
+ set proc_ok 0
+ continue
+ }
+
+ set x [libjava_prune_warnings \
+ [libjava_tcompile [concat $this_olist $objlist] \
+ $Executable executable $link_args]]
+ if {$x != ""} then {
+ set proc_ok 0
+ fail "Link for $class"
+ continue
+ }
+ pass "Link for $class"
+
+ set result [libjava_load [pwd]/DejaGNUTestHarness \
+ "$env(MAUVEDIR) $class" ""]
+
+ # Extract pass/failure info from output.
+ foreach line [split [lindex $result 1] \n] {
+ if {[regexp -- {^(PASS|FAIL|XFAIL|XPASS): (.*)$} $line ignore what msg]} then {
+ if {$what == "XFAIL" || $what == "XPASS"} then {
+ setup_xfail *-*-*
+ }
+ if {$what == "PASS" || $what == "XPASS"} then {
+ pass $msg
+ } else {
+ set proc_ok 0
+ fail $msg
+ }
+ }
+ }
+ }
+
+ return $proc_ok
+}
+
+# Run all the Mauve tests in a sim environment. In this case, the
+# program cannot use argv[] because there's no way to pass in the
+# command line, so tha name of the class to test is substituted by
+# patching the source of the DejaGNUTestHarness. Return 1 on success,
+# 0 on any failure. If the tests are skipped, that is treated like
+# success.
+proc test_mauve_sim {} {
+ global srcdir subdir env
+
+ if {! [find_mauve_sources]} then {
+ verbose "MAUVEDIR not set; not running Mauve tests"
+ return 1
+ }
+
+ # Run in subdir so we don't overwrite our own Makefile.
+ catch {system "rm -rf mauve-build"}
+ file mkdir mauve-build
+ # Some weirdness to set srcdir correctly.
+ set here [pwd]
+ cd $srcdir
+ set full_srcdir [pwd]
+ cd $here/mauve-build
+
+ if {[catch {
+ system "$env(MAUVEDIR)/configure --with-gcj 2>&1"
+ } msg]} then {
+ fail "Mauve configure"
+ verbose "configure failed with $msg"
+ return 0
+ }
+ pass "Mauve configure"
+
+ # Copy appropriate tags file locally.
+ set fd [open $full_srcdir/../mauve-libgcj r]
+ set c [read $fd]
+ close $fd
+ set fd [open mauve-libgcj w]
+ puts -nonewline $fd $c
+ close $fd
+
+ catch {system "ln -s $full_srcdir/libjava.mauve/xfails xfails"}
+
+ if {[catch {
+ system "make KEYS=libgcj classes.stamp 2>&1"
+ } msg]} then {
+ fail "Mauve build"
+ verbose "build failed with $msg"
+ return 0
+ }
+ pass "Mauve build"
+
+ # Compute list of files to test, and also all files to build.
+ set choices [mauve_compute_uses uses]
+
+ # Compute flags to use to do the build.
+ set compile_args [libjava_arguments]
+ set link_args [concat [libjava_arguments link] \
+ [list "additional_flags=--main=DejaGNUTestHarness"]]
+
+ set ok 1
+ set objlist {}
+ foreach base [mauve_find_harness_files] {
+ set file $base.class
+ set obj $base.o
+ set x [libjava_prune_warnings \
+ [target_compile [pwd]/$file $obj object $compile_args]]
+ if {$x != ""} then {
+ fail "Compile $obj"
+ set ok 0
+ } else {
+ pass "Compile $obj"
+ }
+ lappend objlist $obj
+ }
+ if {! $ok} then {
+ return 0
+ }
+
+ set proc_ok 1
+ set Executable DejaGNUTestHarness
+ foreach file $choices {
+ # Turn `java/lang/Foo.java' into `java.lang.Foo'.
+
+ set class [file rootname $file]
+ regsub -all -- / $class . class
+
+ set ok 1
+ foreach obj $uses($file) {
+ if {! [file exists $obj]} then {
+ verbose "compiling $obj for test of $class"
+ set srcfile [file rootname $obj].class
+ set x [libjava_prune_warnings \
+ [target_compile [pwd]/$srcfile $obj object $compile_args]]
+ if {$x != ""} then {
+ fail "Compile $obj for $class"
+ set ok 0
+ break
+ }
+ pass "Compile $obj for $class"
+ }
+ }
+ if {! $ok} then {
+ set proc_ok 0
+ continue
+ }
+
+ set infile $full_srcdir/$subdir/DejaGNUTestHarness.java
+ set srcfile DejaGNUTestHarness.java
+ set f [open $infile r]
+ set d [open gnu/testlet/$srcfile w]
+ while {[gets $f line] >= 0} {
+ if [regexp {harness\.runtest \(args\[1\]\)} $line] then {
+ regsub {args\[1\]} $line "\"$class\"" out
+ } else {
+ set out $line
+ }
+ puts $d $out
+ }
+ close $f
+ close $d
+
+ if {! [bytecompile_file [pwd]/gnu/testlet/$srcfile [pwd]/gnu/testlet \
+ $env(MAUVEDIR):[pwd]]} then {
+ fail "Compile DejaGNUTestHarness.java"
+ return 0
+ }
+
+ set x [libjava_prune_warnings \
+ [target_compile DejaGNUTestHarness.class \
+ DejaGNUTestHarness.o object $compile_args]]
+ if {$x != ""} then {
+ fail "Compile DejaGNUTestHarness.java"
+ set proc_ok 0
+ continue
+ }
+
+ set x [libjava_prune_warnings \
+ [target_compile [concat $uses($file) $objlist] \
+ $Executable executable $link_args]]
+ if {$x != ""} then {
+ set proc_ok 0
+ fail "Link for $class"
+ continue
+ }
+ pass "Link for $class"
+
+ set result [libjava_load [pwd]/DejaGNUTestHarness \
+ "$env(MAUVEDIR) $class" ""]
+
+ # Extract pass/failure info from output.
+ foreach line [split [lindex $result 1] \n] {
+ if {[regexp -- {^(PASS|FAIL|XFAIL|XPASS): (.*)$} $line ignore what msg]} then {
+ if {$what == "XFAIL" || $what == "XPASS"} then {
+ setup_xfail *-*-*
+ }
+ if {$what == "PASS" || $what == "XPASS"} then {
+ pass $msg
+ } else {
+ set proc_ok 0
+ fail $msg
+ }
+ }
+ }
+ }
+
+ return $proc_ok
+}
+
+proc gcj_run_mauve_tests {} {
+ # The test_mauve* procs will change the current directory. It's
+ # simpler to fix this up here than to keep track of this in the
+ # procs.
+ set here [pwd]
+ if { [board_info target exists is_simulator] } {
+ set r [test_mauve_sim]
+ } else {
+ set r [test_mauve]
+ }
+ cd $here
+
+ if {$r} {
+ # No need to keep the build around. FIXME: this knows how the
+ # tests work. This whole file could use a rewrite.
+ system "rm -rf mauve-build"
+ }
+}
+
+gcj_run_mauve_tests
diff --git a/libjava/testsuite/libjava.mauve/xfails b/libjava/testsuite/libjava.mauve/xfails
new file mode 100644
index 000000000..71c1de5d2
--- /dev/null
+++ b/libjava/testsuite/libjava.mauve/xfails
@@ -0,0 +1,461 @@
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Adding a method to a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Adding a field to a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Adding a method to an interface (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Deleting a method from a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Deleting a field from a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Reordering fields of a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Reordering methods of a class (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Moving a method upward in the class hierarchy (number 1)
+FAIL: gnu.testlet.BinaryCompatibility.BinaryCompatibilityTest: Inserting a new class in the type hierarchy (number 1)
+FAIL: gnu.testlet.java.awt.AWTKeyStroke.getAWTKeyStroke: (String) (number 2)
+FAIL: gnu.testlet.java.awt.AWTKeyStroke.getAWTKeyStroke: (String) (number 3)
+FAIL: gnu.testlet.java.awt.AWTKeyStroke.getAWTKeyStroke: (String) (number 4)
+FAIL: gnu.testlet.java.awt.AWTKeyStroke.getAWTKeyStroke: uncaught exception at "(String)" number 6: java.lang.NullPointerException
+FAIL: gnu.testlet.java.awt.Robot.constructors: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.createScreenCapture: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.getPixelColor: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.keyPress: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.keyRelease: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.mouseMove: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.mousePress: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.mouseRelease: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.Robot.mouseWheel: uncaught exception: java.lang.Error: not implemented
+FAIL: gnu.testlet.java.awt.geom.Arc2D.getEndPoint (number 1)
+FAIL: gnu.testlet.java.awt.geom.Arc2D.getPathIterator (number 8)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.constructors: (int, int, int, int[]) (number 8)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.constructors: (int, int, int, int, int[]) (number 8)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.createSubsetSampleModel (number 7)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 1)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 2)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 5)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 7)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 9)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 11)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.equals (number 13)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.getDataElements: uncaught exception at "(int, int, Object, DataBuffer(Byte))" number 5: java.lang.ArrayStoreException
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.hashCode (number 1)
+FAIL: gnu.testlet.java.awt.image.SinglePixelPackedSampleModel.hashCode (number 2)
+FAIL: Link for gnu.testlet.java.beans.Beans.instantiate_1
+FAIL: gnu.testlet.java.io.File.security: createTempFile(2-args) - unexpected exception (number 1)
+FAIL: gnu.testlet.java.io.File.security: File.listRoots() (number 1)
+FAIL: gnu.testlet.java.io.File.security: file.renameTo - unexpected exception (number 1)
+FAIL: gnu.testlet.java.io.File.security: dir.deleteOnExit() - unexpected exception (number 1)
+FAIL: gnu.testlet.java.io.ObjectInputOutput.Deserializable: Wrong exception (number 1)
+FAIL: gnu.testlet.java.io.ObjectInputOutput.Deserializable: Was expecting an InvalidClassException (number 1)
+FAIL: gnu.testlet.java.io.ObjectInputOutput.InputTest: gnu.testlet.java.io.ObjectInputOutput.Test$GetPutField (number 1)
+FAIL: gnu.testlet.java.io.ObjectInputOutput.OutputTest: Serializable: test(str=null, x=0) (number 2)
+FAIL: Link for gnu.testlet.java.io.ObjectInputStream.registerValidation
+FAIL: gnu.testlet.java.io.OutputStreamWriter.jdk11: OutputStreamWriter(writer, encoding) (number 1)
+FAIL: gnu.testlet.java.io.OutputStreamWriter.jdk11: OutputStreamWriter(writer, encoding) // alias (number 1)
+FAIL: gnu.testlet.java.io.PrintWriter.checkError (number 3)
+FAIL: gnu.testlet.java.io.PrintWriter.jdk11: checkError() after close() (number 1)
+FAIL: gnu.testlet.java.io.RandomAccessFile.setLength (number 14)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Four Byte Range Error (0) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Four Byte Range Error (1) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Five Bytes (0) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Five Bytes (1) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Six Bytes (0) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Six Bytes (1) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Orphan Continuation (1) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Orphan Continuation (2) (number 1)
+FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Four Byte Range Error (2) (number 1)
+FAIL: gnu.testlet.java.lang.Character.classify12 (number 1)
+FAIL: gnu.testlet.java.lang.Character.getType (number 11)
+FAIL: gnu.testlet.java.lang.Character.getType (number 20)
+FAIL: gnu.testlet.java.lang.Character.getType (number 22)
+FAIL: gnu.testlet.java.lang.Class.init (number 14)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getClasses (number 2)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getClasses (number 3)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getClasses (number 5)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaringClass (number 3)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaringClass (number 4)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaringClass (number 5)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaredClasses (number 1)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaredClasses (number 2)
+FAIL: gnu.testlet.java.lang.Class.reflect2: getDeclaredClasses (number 3)
+FAIL: gnu.testlet.java.lang.Math.MathTest: Error : test_pow failed - 9 (number 1)
+FAIL: gnu.testlet.java.lang.String.getBytes13: String.getBytes("UnicodeBig") (number 1)
+FAIL: gnu.testlet.java.lang.String.getBytes13: String.getBytes("UnicodeBigUnmarked") (number 1)
+FAIL: gnu.testlet.java.lang.String.getBytes13: String.getBytes("UnicodeLittle") (number 1)
+FAIL: gnu.testlet.java.lang.String.getBytes14: String.getBytes("ISO8859_15") (number 1)
+FAIL: gnu.testlet.java.lang.Thread.contextClassLoader: null is a valid contextClassLoader (number 1)
+FAIL: gnu.testlet.java.lang.Thread.contextClassLoader: New thread inherits null classloader (number 1)
+FAIL: gnu.testlet.java.lang.Thread.contextClassLoader: run with null classloader (number 1)
+FAIL: gnu.testlet.java.lang.Thread.daemon: Can change daemon state on an exitted Thread (number 1)
+FAIL: gnu.testlet.java.lang.Thread.daemon: Daemon status changed when set on an exitted Thread (number 1)
+FAIL: gnu.testlet.java.lang.Thread.security10: Thread.enumerate(Thread[]) (number 1)
+FAIL: gnu.testlet.java.lang.Thread.stop: Unexpected exception during test() (number 1)
+FAIL: gnu.testlet.java.net.DatagramPacket.DatagramPacketOffset: DatagramPacket Offset Test byte[]='Hello Worl..........Hello World 12345' should be='Hello WorlHello WorlHello World 12345' (number 1)
+FAIL: gnu.testlet.java.net.MulticastSocket.MulticastSocketTest: joinGroup() twice. (number 1)
+FAIL: Compile gnu/testlet/java/net/ServerSocket/ServerSocketTest.lo for gnu.testlet.java.net.ServerSocket.ServerSocketTest
+FAIL: gnu.testlet.java.net.Socket.SocketTest: Error : test_Basics failed - 7 exception should not have been thrown. (number 1)
+FAIL: gnu.testlet.java.net.URI.URITest: unexpected exception (number 1)
+FAIL: gnu.testlet.java.net.URL.URLTest: Error in test_toString - 5 exception should not be thrown here (number 1)
+FAIL: gnu.testlet.java.net.URL.URLTest: contextResolution (number 5)
+FAIL: gnu.testlet.java.net.URL.URLTest: contextResolution (number 6)
+FAIL: gnu.testlet.java.net.URLConnection.URLConnectionTest: Error in test_getHeaderField - 2 4 header field wrong (number 1)
+FAIL: gnu.testlet.java.nio.ByteBuffer.Allocating: mark: mark not invalidated (number 1)
+FAIL: gnu.testlet.java.nio.ByteBuffer.Allocating: mark: mark not invalidated (number 1)
+FAIL: gnu.testlet.java.nio.ByteBuffer.Allocating: mark: mark not invalidated (number 1)
+FAIL: gnu.testlet.java.nio.ByteBuffer.Allocating: mark: mark not invalidated (number 1)
+FAIL: gnu.testlet.java.nio.channels.FileChannel.copyIO: Unexpected result: source=abcdefghijklmnopqrstuvwxyz, result=aababcabcdabcdeabcdefabcdef (number 1)
+FAIL: gnu.testlet.java.nio.channels.FileChannel.manyopen: Unexpected exception at nr 339: java.io.IOException: Too many open files (number 1)
+FAIL: gnu.testlet.java.nio.charset.Charset.encode: uncaught exception at "Wrong limit in char buffer" number 2: java.lang.IllegalStateException
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setAmPmStrings (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setEras (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setMonths (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setShortMonths (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setShortWeekdays (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setWeekdays (number 1)
+FAIL: gnu.testlet.java.text.DateFormatSymbols.setZoneStrings (number 1)
+FAIL: gnu.testlet.java.text.DecimalFormat.formatExp: pattern ##.###E0 (number 2)
+FAIL: gnu.testlet.java.text.DecimalFormatSymbols.getCurrency (number 1)
+FAIL: gnu.testlet.java.text.MessageFormat.format14: number (number 2)
+FAIL: gnu.testlet.java.text.MessageFormat.format14: number (number 4)
+FAIL: gnu.testlet.java.text.MessageFormat.format14: choice (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Double-based fraction formatting with integer number format (0.333). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Double-based fraction formatting with integer number format (123,456.789). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Long-based integer formatting with currency number format ($30.00). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Double-based integer formatting with currency number format ($30.00). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Double-based fraction formatting with currency number format ($0.333). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Double-based fraction formatting with currency number format ($123,456.789). (number 1)
+FAIL: gnu.testlet.java.text.NumberFormat.UK: Long-based integer formatting with percentile number format (30%). (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.Localization: uncaught exception at "Non-localized pattern comes back as is with toPattern()." number 2: java.lang.StringIndexOutOfBoundsException: String index out of range: 18
+FAIL: gnu.testlet.java.text.SimpleDateFormat.applyLocalizedPattern (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.applyLocalizedPattern (number 2)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.lang.NullPointerException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 2)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.text.ParseException: (number 2)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.parse: java.lang.NullPointerException: (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.toLocalizedPattern (number 1)
+FAIL: gnu.testlet.java.text.SimpleDateFormat.toLocalizedPattern (number 2)
+FAIL: gnu.testlet.java.util.Calendar.set: setting only some fields (number 4)
+FAIL: gnu.testlet.java.util.Calendar.set: setting only some fields (number 5)
+FAIL: gnu.testlet.java.util.Currency.Constructors: uncaught exception: java.lang.IllegalArgumentException: The currency code, null, is not supported.
+FAIL: gnu.testlet.java.util.Currency.France: Euro ISO 4217 currency code retrieval check (FRF). (number 1)
+FAIL: gnu.testlet.java.util.Currency.France: Euro currency symbol retrieval check (F). (number 1)
+FAIL: gnu.testlet.java.util.Currency.France: Euro ISO 4217 currency code retrieval check (FRF). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Germany: Euro ISO 4217 currency code retrieval check (DEM). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Germany: Euro currency symbol retrieval check (DM). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Germany: Euro ISO 4217 currency code retrieval check (DEM). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Italy: Euro ISO 4217 currency code retrieval check (ITL). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Italy: Euro currency symbol retrieval check (L.). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Italy: Euro currency fraction digits retrieval check (0). (number 1)
+FAIL: gnu.testlet.java.util.Currency.Italy: Euro ISO 4217 currency code retrieval check (ITL). (number 1)
+FAIL: gnu.testlet.java.util.Currency.ReferenceEquality: uncaught exception at "Reference equality for currencies (UK) check." number 2: java.lang.IllegalArgumentException: The currency code, GBP, is not supported.
+FAIL: gnu.testlet.java.util.Currency.US: Non local currency symbol retrieval check (CAD). (number 1)
+FAIL: gnu.testlet.java.util.Currency.getInstance (number 1)
+FAIL: gnu.testlet.java.util.Currency.getInstance (number 3)
+FAIL: gnu.testlet.java.util.Currency.getInstance (number 4)
+FAIL: gnu.testlet.java.util.Currency.getInstance (number 5)
+FAIL: gnu.testlet.java.util.Date.getTimezoneOffset: getTimezoneOffset for zone: GMT (number 1)
+FAIL: gnu.testlet.java.util.Date.getTimezoneOffset: getTimezoneOffset for zone: GMT (number 2)
+FAIL: gnu.testlet.java.util.Date.getTimezoneOffset: getTimezoneOffset for zone: Europe/London (number 2)
+FAIL: gnu.testlet.java.util.GregorianCalendar.conversion: uncaught exception at "Testing setTimeInMillis(281474976710656) i = 48" number 3: java.lang.IllegalArgumentException: month out of range
+FAIL: gnu.testlet.java.util.GregorianCalendar.getMinimalDaysInFirstWeek (number 1)
+FAIL: gnu.testlet.java.util.GregorianCalendar.getMinimalDaysInFirstWeek (number 2)
+FAIL: gnu.testlet.java.util.SimpleTimeZone.check12 (number 22)
+FAIL: gnu.testlet.java.util.SimpleTimeZone.check12 (number 23)
+FAIL: gnu.testlet.java.util.SimpleTimeZone.equals (number 21)
+FAIL: gnu.testlet.java.util.SimpleTimeZone.getDSTSavings (number 2)
+FAIL: gnu.testlet.java.util.SimpleTimeZone.hasSameRules (number 19)
+FAIL: gnu.testlet.java.util.Timer.taskException: still able to schedule tasks (number 1)
+FAIL: gnu.testlet.java.util.logging.Logger.getLogger (number 9)
+FAIL: gnu.testlet.java.util.logging.Logger.securityChecks: Logger.getAnonymousLogger() (number 7)
+FAIL: gnu.testlet.java.util.logging.Logger.securityChecks: Logger.getAnonymousLogger(null) (number 7)
+FAIL: gnu.testlet.java.util.zip.ZipFile.DirEntryTest: getEntry("dir/") (number 2)
+FAIL: gnu.testlet.java.util.zip.ZipFile.newZipFile: non-zipfile gets rejected (number 1)
+FAIL: Link for gnu.testlet.javax.swing.DefaultListModel.removeAllElements
+FAIL: gnu.testlet.javax.swing.DefaultListModel.setSize: uncaught exception at "setSize(int)" number 10: java.lang.NullPointerException
+FAIL: Link for gnu.testlet.javax.swing.JComboBox.MutableTest1
+FAIL: Link for gnu.testlet.javax.swing.JComboBox.MutableTest2
+FAIL: Link for gnu.testlet.javax.swing.JComboBox.SimpleSelectionTest
+FAIL: gnu.testlet.javax.swing.UIDefaults.remove: put with null gave NullPointerException (number 1)
+FAIL: gnu.testlet.javax.swing.tree.DefaultMutableTreeNode.add: uncaught exception: java.lang.NullPointerException
+FAIL: gnu.testlet.javax.swing.tree.DefaultMutableTreeNode.breadthFirstEnumeration: uncaught exception: java.lang.NullPointerException
+FAIL: gnu.testlet.javax.swing.tree.DefaultMutableTreeNode.pathFromAncestorEnumeration: uncaught exception at "rejects invalid arguments (null)" number 2: java.lang.NullPointerException
+FAIL: gnu.testlet.javax.swing.tree.DefaultMutableTreeNode.postorderEnumeration: uncaught exception: java.lang.NullPointerException
+FAIL: gnu.testlet.javax.swing.tree.DefaultMutableTreeNode.preorderEnumeration: uncaught exception: java.lang.NullPointerException
+FAIL: gnu.testlet.locales.LocaleTest: Locale de_DE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale de_DE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale de_DE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: de_DE (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: de_DE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: de_DE (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_BE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_BE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_BE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 5)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 11)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 12)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 16)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 17)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 20)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 23)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 24)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fr_BE (number 25)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_BE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_BE (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: BEF (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_IE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_IE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_IE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 4)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 5)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 11)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 12)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 16)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 17)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 19)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 20)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 23)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 24)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_IE (number 25)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: en_IE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: en_IE (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: IEP (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_FR (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_FR (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_FR (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_FR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_FR (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: FRF (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale es_ES (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale es_ES (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale es_ES (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: es_ES (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: es_ES (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: es_ES (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: ESP (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale pt_PT (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale pt_PT (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale pt_PT (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: pt_PT (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: pt_PT (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: PTE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale it_IT (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale it_IT (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale it_IT (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: it_IT (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: it_IT (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: it_IT (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: ITL (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale nl_NL (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale nl_NL (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale nl_NL (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 5)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 11)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 12)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 16)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 17)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 20)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 23)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 24)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: nl_NL (number 25)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: nl_NL (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: nl_NL (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: NLG (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_LU (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_LU (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fr_LU (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_LU (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fr_LU (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: LUF (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_GB (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_GB (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_GB (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM en_GB (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_GB (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: en_GB (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: GBP (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_US (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_US (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale en_US (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_US (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_US (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_US (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: en_US (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: en_US (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: USD (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fi_FI (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fi_FI (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale fi_FI (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 5)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 11)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 12)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 16)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 17)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 20)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 23)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 24)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: fi_FI (number 25)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fi_FI (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: fi_FI (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: FIM (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale tr_TR (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale tr_TR (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale tr_TR (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 4)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 5)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 11)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 12)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 16)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 17)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 19)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 20)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 23)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 24)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: tr_TR (number 25)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: tr_TR (number 2)
+FAIL: gnu.testlet.locales.LocaleTest: Currencies locale: tr_TR (number 3)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: TRL (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: Locale et_EE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: Locale et_EE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: Locale et_EE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.SHORT et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.MEDIUM et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.LONG et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: DateFormat.DEFAULT == DateFormat.MEDIUM et_EE (number 1)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 6)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 7)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 8)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 9)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 10)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 14)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 15)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 21)
+FAIL: gnu.testlet.locales.LocaleTest: numberformats locale: et_EE (number 22)
+FAIL: gnu.testlet.locales.LocaleTest: Currency code not supported: EEK (number 1)
diff --git a/libjava/testsuite/libjava.special/pr21115.java b/libjava/testsuite/libjava.special/pr21115.java
new file mode 100644
index 000000000..2e23f271e
--- /dev/null
+++ b/libjava/testsuite/libjava.special/pr21115.java
@@ -0,0 +1,34 @@
+public abstract class pr21115
+{
+ public static void main(String[] args) throws Exception
+ {
+ Class c = Class.forName("pr21115I");
+ Object o = c.newInstance();
+ pr21115 t = (pr21115) o;
+ // Try to fill the stack with 0xff.
+ t.test (0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff);
+ // Pass a bunch of false (0) values.
+ if (t.test (false, false,
+ false, false,
+ false, false,
+ false, false,
+ false, false))
+ System.out.println ("FAILED - expecting false return value.");
+ }
+
+ public abstract boolean test(boolean a, boolean b,
+ boolean c, boolean d,
+ boolean e, boolean f,
+ boolean g, boolean h,
+ boolean i, boolean j);
+
+ public abstract boolean test(int a, int b,
+ int c, int d,
+ int e, int f,
+ int g, int h,
+ int i, int j);
+}
diff --git a/libjava/testsuite/libjava.special/pr21115.out b/libjava/testsuite/libjava.special/pr21115.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/libjava/testsuite/libjava.special/pr21115.out
diff --git a/libjava/testsuite/libjava.special/pr21115I.java b/libjava/testsuite/libjava.special/pr21115I.java
new file mode 100644
index 000000000..17701ac07
--- /dev/null
+++ b/libjava/testsuite/libjava.special/pr21115I.java
@@ -0,0 +1,20 @@
+public class pr21115I extends pr21115
+{
+ public boolean test(boolean a, boolean b,
+ boolean c, boolean d,
+ boolean e, boolean f,
+ boolean g, boolean h,
+ boolean i, boolean j)
+ {
+ return a && b && c && d && e && f && g && h && i;
+ }
+
+ public boolean test(int a, int b,
+ int c, int d,
+ int e, int f,
+ int g, int h,
+ int i, int j)
+ {
+ return true;
+ }
+}
diff --git a/libjava/testsuite/libjava.special/special.exp b/libjava/testsuite/libjava.special/special.exp
new file mode 100644
index 000000000..8397f8567
--- /dev/null
+++ b/libjava/testsuite/libjava.special/special.exp
@@ -0,0 +1,108 @@
+# Special test cases. These require tricky build procedures.
+
+proc gcj_special_try_compiler {} {
+ global srcdir subdir
+ return [bytecompile_file ${srcdir}/${subdir}/pr21115I.java [pwd]]
+}
+
+proc gcj_special_pr21115 {} {
+ global srcdir subdir env
+
+ # ---- PR 21115 -------------------------------------------------------
+
+ if {! [bytecompile_file ${srcdir}/${subdir}/pr21115I.java [pwd]]} {
+ fail "bytecompile ${srcdir}/${subdir}/libjava.special/pr21115I.java"
+ # FIXME - should use `untested' on all remaining tests.
+ # But that is hard.
+ return 0
+ }
+ pass "bytecompile pr21115I.java"
+
+ if {! [gcj_link pr21115 pr21115 [list ${srcdir}/${subdir}/pr21115.java]]} {
+ fail "compiling/linking pr21115.java"
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_invoke pr21115 ${srcdir}/${subdir}/pr21115.out ""]} {
+ # FIXME
+ return 0
+ }
+
+ return 1
+}
+
+# Write a .java file and bytecompile it. Return 0 on failure.
+proc gcj_write_and_byte_compile {name contents} {
+ set fd [open $name w]
+ puts $fd $contents
+ close $fd
+
+ if {! [bytecompile_file $name [pwd]]} {
+ fail "bytecompile $name"
+ # FIXME - should use `untested' on all remaining tests.
+ # But that is hard.
+ return 0
+ }
+ pass "bytecompile $name"
+ return 1
+}
+
+# Check that BC-compiled code lazily throws IllegalAccessError.
+proc gcj_special_lazy_illegal_access {} {
+ global srcdir subdir env
+
+ # Write and compile the initial files.
+ if {! [gcj_write_and_byte_compile LazyA.java {
+ public class LazyA {
+ public static void m() { }
+ }
+ }]} {
+ return 0
+ }
+ if {! [gcj_write_and_byte_compile LazyB.java {
+ public class LazyB {
+ public static void m() { }
+ public static void main(String[] args) { }
+ }
+ }]} {
+ return 0
+ }
+
+ # Create the expected output file.
+ set fd [open Lazy.out w]
+ close $fd
+
+ # Now recompile LazyA with different access for m().
+ if {! [gcj_write_and_byte_compile LazyA.java {
+ public class LazyA {
+ private static void m() { }
+ }
+ }]} {
+ return 0
+ }
+
+ # Link and run... this should still work, since we don't actually
+ # try to call LazyA.m().
+ if {! [gcj_link Lazy LazyB {LazyA.class LazyB.class} \
+ additional_flags=-findirect-dispatch]} {
+ fail "compiling/linking pr21115.java"
+ # FIXME
+ return 0
+ }
+
+ if {! [gcj_invoke Lazy Lazy.out ""]} {
+ # FIXME
+ return 0
+ }
+
+ return 1
+}
+
+# For these tests it is simpler to require that gcj work. So we try
+# the compiler and if it fails, we simply skip the tests.
+
+if {[gcj_special_try_compiler]} {
+ gcj_special_pr21115
+ gcj_special_lazy_illegal_access
+}
diff --git a/libjava/testsuite/libjava.verify/README.verify b/libjava/testsuite/libjava.verify/README.verify
new file mode 100644
index 000000000..d28cdf82c
--- /dev/null
+++ b/libjava/testsuite/libjava.verify/README.verify
@@ -0,0 +1,10 @@
+The verifier tests come from Mauve.
+See http://sources.redhat.com/mauve
+
+You want the "verify" module in the Mauve cvs repository.
+
+In Mauve, only the sources are checked in. However, these need
+jasmin to be compiled to bytecode. Since jasmin would require either
+another VM or gcj itself to already be working and installed (just to
+compile it), we've chose to precompile all the .j files to .class
+files and then import the result.
diff --git a/libjava/testsuite/libjava.verify/verify.exp b/libjava/testsuite/libjava.verify/verify.exp
new file mode 100644
index 000000000..4abdc18ac
--- /dev/null
+++ b/libjava/testsuite/libjava.verify/verify.exp
@@ -0,0 +1,83 @@
+# Tests for class verifier.
+
+global gcj_verify_xfail
+set {gcj_verify_xfail(gij verify of call.fail.Static)} 1
+set {gcj_verify_xfail(gij verify of simple.fail.dupfield)} 1
+set {gcj_verify_xfail(gij verify of simple.fail.dupinterface)} 1
+set {gcj_verify_xfail(gij verify of simple.fail.dupmethod)} 1
+set {gcj_verify_xfail(gij verify of subr.fail.jsr10)} 1
+set {gcj_verify_xfail(gij verify of subr.fail.jsr8)} 1
+
+
+proc gcj_verify_list_tests {srcdir} {
+ set result {}
+ if {[file exists $srcdir]} {
+ set here [pwd]
+ cd $srcdir
+ foreach item [lsort [glob -nocomplain */*/*.class]] {
+ lappend result [file rootname $item]
+ }
+ cd $here
+ }
+ return $result
+}
+
+proc gcj_verify_test_gij {gij srcdir test shouldfail} {
+ global gcj_verify_xfail
+
+ set testname "gij verify of $test"
+ verbose "invoking gij $test - shouldfail=$shouldfail"
+ set result [libjava_load $gij [list --cp $srcdir $test] ""]
+ set status [lindex $result 0]
+ set output [lindex $result 1]
+
+ if {$shouldfail} {
+ # We match the few exceptions that are allowed. This may need
+ # updating from time to time. We do this rather than check the
+ # exit status because we want to catch the case where gij dies in
+ # some inappropriate way.
+ if {[string match *VerifyError* $output]
+ || [string match *AbstractMethodError* $output]
+ || [string match *IncompatibleClassChangeError* $output]} {
+ set cmd pass
+ } else {
+ set cmd fail
+ }
+ if {[info exists gcj_verify_xfail($testname)]} {
+ setup_xfail *-*-*
+ }
+ } else {
+ if {$status == "pass"} {
+ set cmd pass
+ } else {
+ set cmd fail
+ }
+ }
+ $cmd $testname
+}
+
+proc gcj_verify_run {} {
+ global INTERPRETER srcdir
+
+ set gij [libjava_find_gij]
+ set interpret 1
+ # libjava_find_gij will return "" if it couldn't find the
+ # program; in this case we want to skip the test.
+ if {$INTERPRETER != "yes" || $gij == ""} {
+ set interpret 0
+ }
+
+ set testsdir $srcdir/libjava.verify/verify
+ foreach test [gcj_verify_list_tests $testsdir] {
+ set shouldfail [string match */fail/* $test]
+
+ if {$interpret} {
+ regsub -all -- / $test . gijname
+ gcj_verify_test_gij $gij $testsdir $gijname $shouldfail
+ }
+
+ # FIXME: run gcj --syntax-only here.
+ }
+}
+
+gcj_verify_run