Symbols in libjvm.so
john.r.rose at oracle.com
Fri Sep 5 21:56:50 UTC 2014
That topic comes up every so often. This conversation on hotspot-dev in Ferbruary is probably relevant:
On Sep 5, 2014, at 1:14 PM, S. Bharadwaj Yadavalli <bharadwaj.yadavalli at 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?
> P.S: Please let me know if this is not the appropriate ML for the question and point me to the right one. Thx.
More information about the build-dev