HSX-24: Code Review (round 0) request for MacOS X exported symbols fix (8014326)

David Holmes david.holmes at oracle.com
Tue Jun 18 19:11:33 PDT 2013


Thanks for picking this up Dan (and hs25)

Given this was my suggested fix I guess you are actually the one that 
needs to review it :)

For completeness I'll add that the linker complains about non-existent 
symbols on OSX hence the deletion of a number of entries. The linux and 
solaris mapfiles could probably be cleaned up too but as you note that 
is beyond the scope of this fix (and the linker doesn't care about 
non-existent symbols on those platforms).

Once we have mapfiles working on all platforms we can look into the 
explicit visibility declarations + compiler-flags that have previously 
been suggested - at least for 8 (hs25).

Thanks again,
David

On 19/06/2013 6:50 AM, Daniel D. Daugherty wrote:
> Greetings,
>
> I have picked up David Holmes' work on the following bug:
>
>      8014326 [OSX] All libjvm symbols are exported
>      http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014326
>      https://jbs.oracle.com/bugs/browse/JDK-8014326
>
> Here are the HSX-24 backport webrev URLs:
>
> OpenJDK:  http://cr.openjdk.java.net/~dcubed/8014326-webrev/0-hsx24/
> Internal: http://javaweb.us.oracle.com/~ddaugher/8014326-webrev/0-hsx24/
>
> Testing:
> - JPRT test job on MacOS X
> - (in process) Aurora Adhoc vm.quick batch for MacOS X in the following
>    configs: {Server VM} x {fastdebug} x {-Xmixed}
>
> Gory details are below. As always, comments, questions and
> suggestions are welome.
>
> Dan
>
>
> Gory Details:
>
> The script and Makefile changes are easy to review via the webrev.
>
> However, every function name in the MacOS X mapfiles had to be modified
> to match the MacOS X symbol export syntax. I created "normalized"
> copies of the mapfiles in order to compare the semantic changes (and
> ignore the syntactic changes). These diffs are added to bug report,
> but JBS is not yet accessible outside Oracle and bugs.sun.com can
> be slow to update so I've included the diffs here.
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-debug: current BSD versus updated BSD
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff bsd-funcs-debug{.orig,}
> 191a192
>  > JVM_SetNativeThreadName
> 215,232d215
> < # Old reflection routines
> < # These do not need to be present in the product build in JDK 1.4
> < # but their code has not been removed yet because there will not
> < # be a substantial code savings until JVM_InvokeMethod and
> < # JVM_NewInstanceFromConstructor can also be removed; see
> < # reflectionCompat.hpp.
> < JVM_GetClassConstructor
> < JVM_GetClassConstructors
> < JVM_GetClassField
> < JVM_GetClassFields
> < JVM_GetClassMethod
> < JVM_GetClassMethods
> < JVM_GetField
> < JVM_GetPrimitiveField
> < JVM_NewInstance
> < JVM_SetField
> < JVM_SetPrimitiveField
> <
> 239,241d221
> < fork1
> < numa_warn
> < numa_error
> 243,245d222
> < # Needed because there is no JVM interface for this.
> < sysThreadAvailableStackWithSlack
> <
>
> Line 192: add missing JVM_SetNativeThreadName entry
> Delete the old reflection routines!
> Delete other functions not compiled into BSD/MacOS X.
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-product: current BSD versus updated BSD
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff bsd-funcs-product.orig bsd-funcs-product
> 191a192
>  > JVM_SetNativeThreadName
> 215,232d215
> < # Old reflection routines
> < # These do not need to be present in the product build in JDK 1.4
> < # but their code has not been removed yet because there will not
> < # be a substantial code savings until JVM_InvokeMethod and
> < # JVM_NewInstanceFromConstructor can also be removed; see
> < # reflectionCompat.hpp.
> < JVM_GetClassConstructor
> < JVM_GetClassConstructors
> < JVM_GetClassField
> < JVM_GetClassFields
> < JVM_GetClassMethod
> < JVM_GetClassMethods
> < JVM_GetField
> < JVM_GetPrimitiveField
> < JVM_NewInstance
> < JVM_SetField
> < JVM_SetPrimitiveField
> <
> 239,241d221
> < fork1
> < numa_warn
> < numa_error
> 243,245d222
> < # Needed because there is no JVM interface for this.
> < sysThreadAvailableStackWithSlack
> <
>
> Line 192: add missing JVM_SetNativeThreadName entry
> Delete the old reflection routines!
> Delete other functions not compiled into BSD/MacOS X.
>
>
> Since the MacOS X port was originally derived from the Linux port,
> it also makes sense to compare the updated BSD files versus the
> current Linux files. This is a useful sanity check.
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-debug: updated BSD versus current Linux
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff {bsd,linux}-funcs-debug
> 214c214
> < JVM_handle_bsd_signal
> ---
>  > JVM_handle_linux_signal
> 226a227,229
>  > fork1
>  > numa_warn
>  > numa_error
> 227a231,233
>  > # Needed because there is no JVM interface for this.
>  > sysThreadAvailableStackWithSlack
>  >
>
> Line 214 is an obvious rename.
> Lines 227-229 are functions not compiled into BSD/MacOS X.
> Line 232 is an error on Linux; sysThreadAvailableStackWithSlack is
> only on Solaris, but we won't fix that with this bug since we want
> the MacOS X fix in HSX24 and in HSX25.
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-product: updated BSD versus current Linux
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff {bsd,linux}-funcs-product
> 214c214
> < JVM_handle_bsd_signal
> ---
>  > JVM_handle_linux_signal
> 221a222,224
>  > fork1
>  > numa_warn
>  > numa_error
> 222a226,228
>  > # Needed because there is no JVM interface for this.
>  > sysThreadAvailableStackWithSlack
>  >
>
> Line 214 is an obvious rename.
> Lines 222-224 are functions not compiled into BSD/MacOS X.
> Line 227 is an error on Linux; sysThreadAvailableStackWithSlack is
> only on Solaris, but we won't fix that with this bug since we want
> the MacOS X fix in HSX24 and in HSX25.
>
>
> Lastly, since this is a backport from HSX-25 -> HSX-24, we should
> look at what's different between those two version:
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-debug: updated HSX-24 BSD versus HSX-25 BSD
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff 8014326_exp_for_hsx2{4,5}/bsd-funcs-debug
> 98a99
>  >                 JVM_GetClassTypeAnnotations
> 104a106
>  >                 JVM_GetFieldTypeAnnotations
> 124a127,128
>  >                 JVM_GetMethodParameters
>  >                 JVM_GetMethodTypeAnnotations
> 156a161
>  >                 JVM_IsVMGeneratedMethodIx
> 174d178
> <                 JVM_PrintStackTrace
>
> Several new functions were added in HSX-25 and one function
> was deleted in HSX25.
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> mapfile-vers-product: updated HSX-24 BSD versus HSX-25 BSD
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
> $ diff 8014326_exp_for_hsx2{4,5}/bsd-funcs-product
> 98a99
>  >                 JVM_GetClassTypeAnnotations
> 104a106
>  >                 JVM_GetFieldTypeAnnotations
> 124a127,128
>  >                 JVM_GetMethodParameters
>  >                 JVM_GetMethodTypeAnnotations
> 156a161
>  >                 JVM_IsVMGeneratedMethodIx
> 174d178
> <                 JVM_PrintStackTrace
>
> Several new functions were added in HSX-25 and one function
> was deleted in HSX25.


More information about the hotspot-runtime-dev mailing list