]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
natSharedLibLoader.cc (init): `libname' now a String.
authorSteve Pribyl <steve@netfuel.com>
Mon, 21 Jul 2003 02:09:47 +0000 (02:09 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Mon, 21 Jul 2003 02:09:47 +0000 (02:09 +0000)
2003-07-20  Steve Pribyl <steve@netfuel.com.>

* gnu/gcj/runtime/natSharedLibLoader.cc (init): `libname' now a
String.  Put dlerror() message into exception.
Include UnsatisfiedLinkError.
* gnu/gcj/runtime/SharedLibLoader.java (init): `libname' now a
String.  Now native.

From-SVN: r69622

libjava/ChangeLog
libjava/gnu/gcj/runtime/SharedLibLoader.java
libjava/gnu/gcj/runtime/natSharedLibLoader.cc

index 2942cb99d0df3cfa8a2fcd570e60fc59016b6316..8bc4dc79a56e6900e5d6e4f02d2db5b6da8a2168 100644 (file)
@@ -1,3 +1,11 @@
+2003-07-20  Steve Pribyl <steve@netfuel.com.>
+
+       * gnu/gcj/runtime/natSharedLibLoader.cc (init): `libname' now a
+       String.  Put dlerror() message into exception.
+       Include UnsatisfiedLinkError.
+       * gnu/gcj/runtime/SharedLibLoader.java (init): `libname' now a
+       String.  Now native.
+
 2003-07-20  Tom Tromey  <tromey@redhat.com>
 
        * java/lang/Runtime.java: Comment fix.
index 40d041d7d21a5bd782c5cc1dc2338e19deacd4a1..cfcd04e936ad110b45481b03da7a2e9022453721 100644 (file)
@@ -45,12 +45,7 @@ public class SharedLibLoader extends ClassLoader
     init(libname, 0);
   }
 
-  void init(String libname, int flags)
-  {
-    init(libname.getBytes(), flags);
-  }
-
-  native void init(byte[] libname, int flags);
+  native void init(String libname, int flags);
 
   public Class loadClass(String name)
     throws ClassNotFoundException
index 5d9e02ad2df6bab984bead998a81e00218454ec6..49bcfb4d10fca828431f5870c6ec8ede03fe178f 100644 (file)
@@ -14,6 +14,7 @@ details.  */
 #include <gnu/gcj/runtime/SharedLibLoader.h>
 #include <java/io/IOException.h>
 #include <java/lang/UnsupportedOperationException.h>
+#include <java/lang/UnsatisfiedLinkError.h>
 
 #ifdef HAVE_DLOPEN
 #include <dlfcn.h>
@@ -45,10 +46,14 @@ struct SharedLibDummy
 #endif
 
 void
-gnu::gcj::runtime::SharedLibLoader::init(jbyteArray libname, jint flags)
+gnu::gcj::runtime::SharedLibLoader::init(jstring libname, jint flags)
 {
 #ifdef HAVE_DLOPEN
-  char *lname = (char*) elements(libname);
+  jint len = _Jv_GetStringUTFLength (libname);
+  char lname[len + 1];
+  JvGetStringUTFRegion (libname, 0, libname->length(), lname);
+  lname[len] = '\0';
+
   if (flags==0)
     flags = RTLD_LAZY;
   JvSynchronize dummy1(&java::lang::Class::class$);
@@ -59,6 +64,10 @@ gnu::gcj::runtime::SharedLibLoader::init(jbyteArray libname, jint flags)
   if (h == NULL)
     {
       const char *msg = dlerror();
+      jstring str = JvNewStringLatin1 (lname);
+      str = str->concat (JvNewStringLatin1 (": "));
+      str = str->concat (JvNewStringLatin1 (msg));
+      throw new java::lang::UnsatisfiedLinkError (str);
     }
   handler = (gnu::gcj::RawData*) h;
 #else