From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29979 invoked by alias); 30 May 2008 02:48:34 -0000 Received: (qmail 29953 invoked by uid 367); 30 May 2008 02:48:33 -0000 Date: Fri, 30 May 2008 02:48:00 -0000 Message-ID: <20080530024833.29938.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Load runtime from Version class. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: eb225d30fd0625138f7940c96ef69dc7904b6ecb X-Git-Newrev: 7b9112dfabcff8ee1eb5903f148300239ff0339b Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00307.txt.bz2 The branch, master has been updated via 7b9112dfabcff8ee1eb5903f148300239ff0339b (commit) from eb225d30fd0625138f7940c96ef69dc7904b6ecb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 7b9112dfabcff8ee1eb5903f148300239ff0339b Author: Andrew Cagney Date: Thu May 29 22:42:44 2008 -0400 Load runtime from Version class. frysk-common/ChangeLog 2008-05-29 Andrew Cagney * Makefile.rules (Runner): Add frysk-sys directory; let JAVA interpreter be overridden. * TestRunner.java-in: Don't load libraries from here. frysk-sys/frysk/config/ChangeLog 2008-05-29 Andrew Cagney * Runtime.java (nativeCall): New. * jni/Runtime.cxx: New. * cni/Runtime.cxx: New. * FryskVersion.java: Load runtime environment. ----------------------------------------------------------------------- Summary of changes: frysk-common/ChangeLog | 6 +++++ frysk-common/Makefile.rules | 6 +++- frysk-common/TestRunner.java-in | 6 ----- frysk-sys/frysk/config/ChangeLog | 7 +++++ frysk-sys/frysk/config/FryskVersion.java | 3 ++ frysk-sys/frysk/config/Runtime.java | 37 ++++++++++++++++++----------- frysk-sys/frysk/config/cni/Runtime.cxx | 4 +++ frysk-sys/frysk/config/jni/Runtime.cxx | 4 +++ 8 files changed, 51 insertions(+), 22 deletions(-) First 500 lines of diff: diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog index d28e1f7..6be00bc 100644 --- a/frysk-common/ChangeLog +++ b/frysk-common/ChangeLog @@ -1,3 +1,9 @@ +2008-05-29 Andrew Cagney + + * Makefile.rules (Runner): Add frysk-sys directory; let JAVA + interpreter be overridden. + * TestRunner.java-in: Don't load libraries from here. + 2008-05-27 Andrew Cagney * Makefile.gen.sh (noinst_DATA): Add TestRunner.jar. diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules index b6ab03e..568866d 100644 --- a/frysk-common/Makefile.rules +++ b/frysk-common/Makefile.rules @@ -388,6 +388,7 @@ $(GEN_SOURCENAME)/JUnitTests.java: files-java.list mv -f $@.tmp $@ frysk_imports = $$(cd ../frysk-imports && pwd) +frysk_sys = $$(cd ../frysk-sys && pwd) Runner: rm -f $@ echo "#!/bin/sh" >> $@.tmp @@ -401,7 +402,7 @@ Runner: echo "libunwind-x86_64.so \\" >> $@.tmp echo "\"" >> $@.tmp echo "# hack to hopefully find the right libstdc++.so" >> $@.tmp - echo "export LD_LIBRARY_PATH=.\\" >> $@.tmp + echo "export LD_LIBRARY_PATH=$(frysk_sys)\\" >> $@.tmp echo ":$(frysk_imports)/elfutils/libdw\\" >> $@.tmp echo ":$(frysk_imports)/elfutils/libelf\\" >> $@.tmp echo ":$(frysk_imports)/elfutils/backends\\" >> $@.tmp @@ -413,7 +414,8 @@ Runner: echo ":/usr/lib" >> $@.tmp echo "export CLASSPATH=\\" >> $@.tmp echo "$(CLASSPATH):$(GEN_DIRNAME).jar:TestRunner.jar" >> $@.tmp - echo "gij \"\$$@\"" >> $@.tmp + echo "JAVA=$${JAVA:-gij}" >> $@.tmp + echo "\$${JAVA} \"\$$@\"" >> $@.tmp chmod a+x $@.tmp mv $@.tmp $@ diff --git a/frysk-common/TestRunner.java-in b/frysk-common/TestRunner.java-in index b93c9fa..b3f9eeb 100755 --- a/frysk-common/TestRunner.java-in +++ b/frysk-common/TestRunner.java-in @@ -43,7 +43,6 @@ import frysk.junit.Runner; import @GEN_PACKAGENAME@.JUnitTests; import frysk.config.Prefix; import frysk.config.PrefixFactory; -import frysk.config.Runtime; /** * Run the JUnit tests from within the build tree. @@ -63,9 +62,4 @@ public class TestRunner { int status = testRunner.runTestCases(JUnitTests.get()); System.exit (status); } - static { - // Needs to be done before main, and hence before any - // libraries main needs to load. - Runtime.load(); - } } diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog index f5a775a..899d178 100644 --- a/frysk-sys/frysk/config/ChangeLog +++ b/frysk-sys/frysk/config/ChangeLog @@ -1,3 +1,10 @@ +2008-05-29 Andrew Cagney + + * Runtime.java (nativeCall): New. + * jni/Runtime.cxx: New. + * cni/Runtime.cxx: New. + * FryskVersion.java: Load runtime environment. + 2008-05-27 Andrew Cagney * Runtime.java: New. diff --git a/frysk-sys/frysk/config/FryskVersion.java b/frysk-sys/frysk/config/FryskVersion.java index 7f6e12e..6bdfe9d 100644 --- a/frysk-sys/frysk/config/FryskVersion.java +++ b/frysk-sys/frysk/config/FryskVersion.java @@ -44,6 +44,9 @@ package frysk.config; */ public class FryskVersion { + static { + // Needs to be done before initializing V. + Runtime.load(); } private static native String version(); private static final String v = version(); /** diff --git a/frysk-sys/frysk/config/Runtime.java b/frysk-sys/frysk/config/Runtime.java index a5549db..77fe1ff 100644 --- a/frysk-sys/frysk/config/Runtime.java +++ b/frysk-sys/frysk/config/Runtime.java @@ -54,27 +54,42 @@ public class Runtime { public static final Runtime COMPILER_NATIVE_INTERFACE = new Runtime("CNI"); public static final Runtime JAVA_NATIVE_INTERFACE = new Runtime("JNI"); + public static Runtime get() { + return runtime(); + } + private static native Runtime runtime(); - private static boolean tryBindings() { + private static boolean tryNativeCall() { // Try calling a binding, if it works cool. If it fails, // check that it failed on the expected symbol and if that is // wrong abort. try { - runtime(); + nativeCall(); return true; } catch (UnsatisfiedLinkError e) { - if (!e.getMessage().equals("runtime")) { - System.err.println("Problem loading runtime bindings, unexpected error: " + e.toString()); - System.exit(1); + String m = e.getMessage(); + if (m.equals("nativeCall")) { + // Error from GIJ. + return false; + } + if (m.equals("frysk.config.Runtime.nativeCall()V")) { + // Error from IcedTea/OpenJDK. + return false; } - return false; + throw new RuntimeException("Problem loading runtime bindings, unexpected error", e); } } + private static native void nativeCall(); + private static boolean loaded = false; public static void load() { + if (loaded) { + return; + } + loaded = true; // Just try a call, perhaps things have already been loaded so // things will just work. - if (tryBindings()) { + if (tryNativeCall()) { return; } // No such luck, try explicitly loading frysk's JNI runtime. @@ -85,16 +100,10 @@ public class Runtime { + e.getMessage()); System.exit(1); } - if (tryBindings()) { + if (tryNativeCall()) { return; } System.err.println("Problem loading runtime bindings."); System.exit(1); } - - public static Runtime get() { - return runtime(); - } - - private static native Runtime runtime(); } diff --git a/frysk-sys/frysk/config/cni/Runtime.cxx b/frysk-sys/frysk/config/cni/Runtime.cxx index 29150ec..c7b1182 100644 --- a/frysk-sys/frysk/config/cni/Runtime.cxx +++ b/frysk-sys/frysk/config/cni/Runtime.cxx @@ -47,3 +47,7 @@ Runtime* Runtime::runtime() { return COMPILER_NATIVE_INTERFACE; } + +void +Runtime::nativeCall() { +} diff --git a/frysk-sys/frysk/config/jni/Runtime.cxx b/frysk-sys/frysk/config/jni/Runtime.cxx index 9dc8e27..77306c9 100644 --- a/frysk-sys/frysk/config/jni/Runtime.cxx +++ b/frysk-sys/frysk/config/jni/Runtime.cxx @@ -45,3 +45,7 @@ Runtime Runtime::runtime(jnixx::env env) { return GetCOMPILER_NATIVE_INTERFACE(env); } + +void +Runtime::nativeCall(jnixx::env env) { +} hooks/post-receive -- frysk system monitor/debugger