diff options
-rw-r--r-- | libjava/ChangeLog | 9 | ||||
-rw-r--r-- | libjava/java/lang/natRuntime.cc | 5 | ||||
-rw-r--r-- | libjava/prims.cc | 12 |
3 files changed, 23 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c50caf8..9d20d86 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,14 @@ 2001-06-15 Tom Tromey <tromey@redhat.com> + * java/lang/natRuntime.cc (_Jv_FindSymbolInExecutable): Return + NULL if no library on the list has the symbol. + (init): Call add_library on the program itself. + * prims.cc (JvRunMain): Initialize Runtime before searching for + `main'. + (_Jv_RunMain): Likewise. + +2001-06-15 Tom Tromey <tromey@redhat.com> + * jni.cc (ClassClass): Removed; updated all users. (ObjectClass): Likewise. (ThrowableClass): Likewise. diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc index 20005b9..cdd44a4 100644 --- a/libjava/java/lang/natRuntime.cc +++ b/libjava/java/lang/natRuntime.cc @@ -69,7 +69,7 @@ _Jv_FindSymbolInExecutable (const char *symname) return r; } - return lt_dlsym (NULL, symname); + return NULL; } #else @@ -199,6 +199,9 @@ java::lang::Runtime::init (void) finalize_on_exit = false; #ifdef USE_LTDL lt_dlinit (); + lt_dlhandle self = lt_dlopen (NULL); + if (self != NULL) + add_library (self); #endif } diff --git a/libjava/prims.cc b/libjava/prims.cc index f112812..eac47e5 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -1008,6 +1008,10 @@ JvRunMain (jclass klass, int argc, const char **argv) _Jv_ThisExecutable (argv[0]); #endif + // Get the Runtime here. We want to initialize it before searching + // for `main'; that way it will be set up if `main' is a JNI method. + java::lang::Runtime *rtime = java::lang::Runtime::getRuntime (); + main_thread = _Jv_AttachCurrentThread (JvNewStringLatin1 ("main"), NULL); arg_vec = JvConvertArgv (argc - 1, argv + 1); runFirst (klass, arg_vec); @@ -1015,7 +1019,7 @@ JvRunMain (jclass klass, int argc, const char **argv) int status = (int) java::lang::ThreadGroup::had_uncaught_exception; - java::lang::Runtime::getRuntime ()->_exit (status); + rtime->_exit (status); } void @@ -1031,6 +1035,10 @@ _Jv_RunMain (const char *name, int argc, const char **argv, bool is_jar) _Jv_ThisExecutable (exec_name); #endif + // Get the Runtime here. We want to initialize it before searching + // for `main'; that way it will be set up if `main' is a JNI method. + java::lang::Runtime *rtime = java::lang::Runtime::getRuntime (); + main_thread = _Jv_AttachCurrentThread (JvNewStringLatin1 ("main"), NULL); if (is_jar) @@ -1061,7 +1069,7 @@ _Jv_RunMain (const char *name, int argc, const char **argv, bool is_jar) int status = (int) java::lang::ThreadGroup::had_uncaught_exception; - java::lang::Runtime::getRuntime ()->exit (status); + rtime->exit (status); } |