Request for review- RFE 8005716
bob.vandette at oracle.com
Wed Mar 6 16:21:40 UTC 2013
On Mar 5, 2013, at 7:36 PM, Dean Long wrote:
> If JNI_ONLOAD_SYMBOLS contains something like "_JNI_OnLoad at 8" on Windows, you can't just
> turn that into "_JNI_OnLoad at 8_" + <libname>. I think it needs to be
> "_JNI_OnLoad_" + <libname> + "@8"
Good catch Dean.
> Looks like onLoadSymbols is unused in Java_java_lang_ClassLoader_00024NativeLibrary_findBuiltinLib().
> Instead of adding getProcessHandle(), why not add JVM_FindBuiltinLibraryEntry() instead?
> This would make it easier to support table-lookup when runtime symbol information is missing or not
> supported by the platform.
Bill has already factored out the implementation of getProcessHandle. Although your
approach is cleaner, I'm concerned about creating a VM version dependency. For a traditional
JRE that doesn't even require static library support, we'd have to make sure to run on a VM that
support JNI_VERSION_1_8. It looks like the JDK maintains their own copy of jni.h. If they didn't
do that, we would have already gone down that path. The jdk sources already contain several
instances of dlopen, dlysym and the Windows equivalents so I don't see a need to add a new
> On 3/5/2013 3:05 PM, bill.pittore at oracle.com wrote:
>> This request is tied to bugid 8005716 that deals with adding support for statically linked JNI libraries.
>> The JEP is here: http://openjdk.java.net/jeps/178
>> The bug is here:http://bugs.sun.com/view_bug.do?bug_id=8005716
>> The webrevs are here:
>> The main piece of functionality is to check for the presence of JNI_OnLoad_libname to determine if the library specified by 'libname' has been statically linked into the VM. If the symbol is found, it is assumed that the library is linked in and will not be dynamically loaded.
More information about the core-libs-dev