Howto re-compile ony parts?
Kelly O'Hair
Kelly.Ohair at Sun.COM
Sun May 11 17:24:49 UTC 2008
Kelly O'Hair wrote:
> Yes, Windows defaults it's DLL symbols to be private, you must explicitly
> 'export' them with statements in the source, or using the command line
> 'export' options.
>
> With Solaris/Linux and the Elf binary file format, there are two symbol
> tables in the .so library, the normal symbol table section .symtab and the
> dynamic symbol table .dynsym used at runtime. By default all extern
> symbols or
> GLOBAL symbols will be in both, opening up the door for anyone to find or
> use any symbol. The mapfile manipulates what goes into what symbol table
> and also can control what goes into other runtime Elf sections of a .so
> or a.out file. On Solaris, mapfiles are required to limit the list of
> extern symbols to just those that are publicly documented/supported and
> also 'version' the library.
> Linux may call these mapfiles 'version scripts'.
>
> Note that a .symtab is needed at runtime, and if you 'strip' your .so file
^^^^^^^ NOT needed
:^{
-kto
> the .symtab is removed and your .so is much smaller, only the .dynsym
> sections is needed at runtime. However, not having a .symtab makes
> debugging
> and stack traces pretty useless.
>
> -kto
>
>
> Phil Race wrote:
>> Igor Nekrestyanov wrote:
>>> Thanks Phil!
>>>
>>> I just found similar explanation in the
>>> jdk\make\common\Makefile-vers.gmk
>>> ....
>>
>>> However, it seems to be used on Linux/Solaris only (everything inside
>>> is under ifder solaris/linux) and this puzzle me a bit.
>>> So, it seems if name clashing is primary reason we should be
>>> protecting from this on Windows too.
>>>
>>> -
>> I believe its the default behaviour on windows to not export symbols.
>> So this isn't needed and the
>> magic "JNIEXPORT <rtn type> JNICALL" at the top of each of the JNI fn
>> declarations expands
>> into what is needed to force the export :
>> jni_md.h:#define JNIEXPORT __declspec(dllexport)
>>
>> -phil.
>>
More information about the build-dev
mailing list