OSDN Git Service

For PR libgcj/5103:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2001 21:56:29 +0000 (21:56 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2001 21:56:29 +0000 (21:56 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48012 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/testsuite/ChangeLog
libjava/testsuite/libjava.jni/cxxtest.cc [new file with mode: 0644]
libjava/testsuite/libjava.jni/cxxtest.java [new file with mode: 0644]
libjava/testsuite/libjava.jni/cxxtest.out [new file with mode: 0644]
libjava/testsuite/libjava.jni/jni.exp

index 70777e8..de7df24 100644 (file)
@@ -1,3 +1,12 @@
+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"
diff --git a/libjava/testsuite/libjava.jni/cxxtest.cc b/libjava/testsuite/libjava.jni/cxxtest.cc
new file mode 100644 (file)
index 0000000..577273b
--- /dev/null
@@ -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.java b/libjava/testsuite/libjava.jni/cxxtest.java
new file mode 100644 (file)
index 0000000..b1c3bb9
--- /dev/null
@@ -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 (file)
index 0000000..27ba77d
--- /dev/null
@@ -0,0 +1 @@
+true
index 583462b..ec59945 100644 (file)
@@ -106,6 +106,13 @@ proc gcj_jni_test_one {file} {
   }
 
   set cfile [file rootname $file].c
+  set cxxflags ""
+  # If there is no `.c' file, assume there is a `.cc' file.
+  if {! [file exists $cfile]} {
+    set cfile [file rootname $file].cc
+    set cxxflags "-lstdc++"
+  }
+
   if {! [gcj_jni_compile_c_to_so $cfile]} {
     # FIXME
     return 0
@@ -113,7 +120,7 @@ proc gcj_jni_test_one {file} {
 
   # We use -l$main because the .so is named the same as the main
   # program.
-  set args [list "additional_flags=-fjni -L. -l$main"]
+  set args [list "additional_flags=-fjni -L. -l$main $cxxflags"]
   if {! [gcj_link $main $main $file $args]} {
     # FIXME
     return 0