That topic comes up every so often. This conversation on hotspot-dev in Ferbruary is probably relevant:
http://mail.openjdk.java.net/pipermail/hotspot-dev/2014-February/012631.html On Sep 5, 2014, at 1:14 PM, S. Bharadwaj Yadavalli <bharadwaj.yadava...@oracle.com> wrote: > Looking at the command that links Hotspot object files to generate libjvm.so, > it appears to use a generated version script called mapfile_reorder to > restrict the symbols that can be global. > > However, despite the list containing several C++ mangled symbols, these > symbols are not generated as global symbols in the resulting libjvm.so. Can > some one please tell me why the symbols listed in mapfile_reorder as global > do not show up as global symbols in libjvm.so? > > I tried a sample version script to link a test object file and it appears > that the linker does honor the symbol visibility specification in the version > script. So, it appears not to be a linker/script issue. Is there some other > place in the build procedure that scuttles the marking of symbols listed as > global in mapfile_reorder? I notice that (most of) the global symbols in > libjvm.so (did not check each one) are those that are marked JNIEXPORT. If > that is the case, what is the purpose of creating vm.def and the version > script mapfile_reorder? > > Thanks, > > Bharadwaj > > P.S: Please let me know if this is not the appropriate ML for the question > and point me to the right one. Thx.