aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Green <green@redhat.com>2005-02-14 14:57:37 +0000
committerAnthony Green <green@redhat.com>2005-02-14 14:57:37 +0000
commitdbe0b4adea1d1d4d8ab1b1dfcdfbd4e04cdf70a3 (patch)
tree8f2311990fa1769a62f318958162b80d0cdcfcd5
parent6bab3d9d7a9ee7ae84e72caee5628b000ff57a66 (diff)
2005-02-14 Anthony Green <green@redhat.com>
PR libgcj/18116 * testsuite/libjava.jni/PR18116.c: New file. * testsuite/libjava.jni/PR18116.java: New file. * testsuite/libjava.jni/PR18116.out: New file. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@95014 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.c35
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.java16
-rw-r--r--libjava/testsuite/libjava.jni/PR18116.out1
4 files changed, 60 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index b47469f343d..1e727762f7a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,13 @@
+2005-02-14 Anthony Green <green@redhat.com>
+
+ PR libgcj/18116
+ * testsuite/libjava.jni/PR18116.c: New file.
+ * testsuite/libjava.jni/PR18116.java: New file.
+ * testsuite/libjava.jni/PR18116.out: New file.
+
2005-02-13 Anthony Green <green@redhat.com>
+ PR libgcj/18116
* jni.cc (nathash_add): Don't strdup the method signature.
(_Jv_JNI_RegisterNatives): Convert the slashes to dots in the
method signature.
diff --git a/libjava/testsuite/libjava.jni/PR18116.c b/libjava/testsuite/libjava.jni/PR18116.c
new file mode 100644
index 00000000000..bcd14331e61
--- /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.java b/libjava/testsuite/libjava.jni/PR18116.java
new file mode 100644
index 00000000000..d582132b677
--- /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 00000000000..3749383ded2
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/PR18116.out
@@ -0,0 +1 @@
+555