summaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-21 02:09:47 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-21 02:09:47 +0000
commitb25dcf1ceeacfc20a9f570759e22e21cba5d4277 (patch)
tree3acb94a20dc2a55b893b5314f730de5134a8ed17 /libjava/gnu/gcj
parent3ab7414327e49315d676453c4dda0cbf3a30ddc4 (diff)
downloadgcc-b25dcf1ceeacfc20a9f570759e22e21cba5d4277.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69622 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/gcj')
-rw-r--r--libjava/gnu/gcj/runtime/SharedLibLoader.java7
-rw-r--r--libjava/gnu/gcj/runtime/natSharedLibLoader.cc13
2 files changed, 12 insertions, 8 deletions
diff --git a/libjava/gnu/gcj/runtime/SharedLibLoader.java b/libjava/gnu/gcj/runtime/SharedLibLoader.java
index 40d041d7d21..cfcd04e936a 100644
--- a/libjava/gnu/gcj/runtime/SharedLibLoader.java
+++ b/libjava/gnu/gcj/runtime/SharedLibLoader.java
@@ -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
diff --git a/libjava/gnu/gcj/runtime/natSharedLibLoader.cc b/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
index 5d9e02ad2df..49bcfb4d10f 100644
--- a/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
+++ b/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
@@ -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