From 9096b279c220a45ee1a369a46661b366db767502 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 5 May 1999 14:19:24 +0000 Subject: [PATCH] Makefile.in: Rebuilt. * Makefile.in: Rebuilt. * Makefile.am (CLEANFILES): Don't mention $(class_files). (clean-local): New target * java/lang/natRuntime.cc: Include if required. (load, loadLibrary): Now native. (init): New method. * java/lang/Runtime.java (load, loadLibrary): Now native. (init): New native method. (Runtime): Use init. * prims.cc: Include if required. (JvRunMain): Call LTDL_SET_PRELOADED_SYMBOLS. From-SVN: r26785 --- libjava/ChangeLog | 15 +++++++++ libjava/Makefile.am | 6 +++- libjava/Makefile.in | 8 +++-- libjava/java/lang/Runtime.java | 19 ++++-------- libjava/java/lang/natRuntime.cc | 55 +++++++++++++++++++++++++++++++++ libjava/prims.cc | 7 +++++ 6 files changed, 94 insertions(+), 16 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 42236439962..44320c84d4f 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,18 @@ +1999-05-05 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (CLEANFILES): Don't mention $(class_files). + (clean-local): New target + + * java/lang/natRuntime.cc: Include if required. + (load, loadLibrary): Now native. + (init): New method. + * java/lang/Runtime.java (load, loadLibrary): Now native. + (init): New native method. + (Runtime): Use init. + * prims.cc: Include if required. + (JvRunMain): Call LTDL_SET_PRELOADED_SYMBOLS. + 1999-05-05 Gilles Zunino * configure.in: Switch from irix threads to posix threads diff --git a/libjava/Makefile.am b/libjava/Makefile.am index f0319db575a..da9cce25cd5 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -120,7 +120,11 @@ libgcj.zip: $(java_source_files) $(ZIP) -r libgcj java gnu -n .class -i '*.class' -i '*/' MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) -CLEANFILES = libgcj.zip $(class_files) +CLEANFILES = libgcj.zip + +clean-local: +## We just remove every .class file that was created. + find . -name '*.class' -print | xargs rm -f SUFFIXES = .class .java .h diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 70113db1ee1..5c9bf0a0ac9 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -163,7 +163,7 @@ libgcj_la_LIBADD = $(javao_files) $(nat_files) $(c_files) $(GCOBJS) \ libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) -release $(VERSION) MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) -CLEANFILES = libgcj.zip $(class_files) +CLEANFILES = libgcj.zip SUFFIXES = .class .java .h @@ -1196,7 +1196,8 @@ mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-toolexeclibLTLIBRARIES clean-compile \ clean-libtool clean-binPROGRAMS clean-noinstPROGRAMS \ - clean-tags clean-depend clean-generic mostlyclean-am + clean-tags clean-depend clean-generic mostlyclean-am \ + clean-local clean: clean-recursive @@ -1258,6 +1259,9 @@ libgcj.zip: $(java_source_files) -@rm -f libgcj.zip $(ZIP) -r libgcj java gnu -n .class -i '*.class' -i '*/' +clean-local: + find . -name '*.class' -print | xargs rm -f + .class.lo: $(GCJCOMPILE) -o $@ $< diff --git a/libjava/java/lang/Runtime.java b/libjava/java/lang/Runtime.java index baf1ae541b7..94e7770e7e8 100644 --- a/libjava/java/lang/Runtime.java +++ b/libjava/java/lang/Runtime.java @@ -94,18 +94,8 @@ public class Runtime s.checkLink(lib); } - public synchronized void load (String pathname) - { - checkLink (pathname); - // FIXME. - throw new UnsatisfiedLinkError ("Runtime.load not implemented"); - } - public synchronized void loadLibrary (String libname) - { - checkLink (libname); - // FIXME. - throw new UnsatisfiedLinkError ("Runtime.loadLibrary not implemented"); - } + public native void load (String pathname); + public native void loadLibrary (String libname); public native void runFinalization (); @@ -122,10 +112,13 @@ public class Runtime public native void traceInstructions (boolean on); public native void traceMethodCalls (boolean on); + // A helper for the constructor. + private final native void init (); + // The sole constructor. private Runtime () { - finalize_on_exit = false; + init (); } // Private data. diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc index d89ab18bd9c..f8b050c4d58 100644 --- a/libjava/java/lang/natRuntime.cc +++ b/libjava/java/lang/natRuntime.cc @@ -15,6 +15,12 @@ details. */ #include #include #include +#include +#include + +#ifdef USE_LTDL +#include +#endif void java::lang::Runtime::exit (jint status) @@ -43,6 +49,55 @@ java::lang::Runtime::gc (void) _Jv_RunGC (); } +void +java::lang::Runtime::load (jstring path) +{ + JvSynchronize sync (this); + checkLink (path); + using namespace java::lang; +#ifdef USE_LTDL + // FIXME: make sure path is absolute. + lt_dlhandle h = lt_dlopen (FIXME); + if (h == NULL) + { + const char *msg = lt_dlerror (); + _Jv_Throw (new UnsatisfiedLinkError (JvNewStringLatin1 (msg))); + } +#else + _Jv_Throw (new UnknownError + (JvNewStringLatin1 ("Runtime.load not implemented"))); +#endif /* USE_LTDL */ +} + +void +java::lang::Runtime::loadLibrary (jstring lib) +{ + JvSynchronize sync (this); + checkLink (lib); + using namespace java::lang; +#ifdef USE_LTDL + // FIXME: make sure path is absolute. + lt_dlhandle h = lt_dlopenext (FIXME); + if (h == NULL) + { + const char *msg = lt_dlerror (); + _Jv_Throw (new UnsatisfiedLinkError (JvNewStringLatin1 (msg))); + } +#else + _Jv_Throw (new UnknownError + (JvNewStringLatin1 ("Runtime.loadLibrary not implemented"))); +#endif /* USE_LTDL */ +} + +void +java::lang::Runtime::init (void) +{ + finalize_on_exit = false; +#ifdef USE_LTDL + lt_dlinit (); +#endif +} + void java::lang::Runtime::runFinalization (void) { diff --git a/libjava/prims.cc b/libjava/prims.cc index 4d11cd8d7bb..4cc31cdd0ca 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -39,6 +39,9 @@ details. */ #include #include +#ifdef USE_LTDL +#include +#endif #define ObjectClass _CL_Q34java4lang6Object extern java::lang::Class ObjectClass; @@ -571,6 +574,10 @@ JvRunMain (jclass klass, int argc, const char **argv) no_memory = new java::lang::OutOfMemoryError; +#ifdef USE_LTDL + LTDL_SET_PRELOADED_SYMBOLS (); +#endif + arg_vec = JvConvertArgv (argc - 1, argv + 1); main_group = new java::lang::ThreadGroup (23); main_thread = new java::lang::FirstThread (main_group, klass, arg_vec); -- 2.30.2