On Mar 5, 2013, at 7:36 PM, Dean Long wrote:

> If JNI_ONLOAD_SYMBOLS contains something like "_JNI_OnLoad@8" on Windows, you 
> can't just
> turn that into "_JNI_OnLoad@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
VM function.

Bob.

> 
> dl
> 
> On 3/5/2013 3:05 PM, bill.pitt...@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:
>> 
>> http://cr.openjdk.java.net/~bpittore/8005716/jdk-webrev.00/
>> http://cr.openjdk.java.net/~bpittore/8005716/hs-webrev.00/
>> 
>> 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.
>> 
>> thanks,
>> bill
> 

Reply via email to