RFR: 8017234: Hotspot should stop using mapfiles [v4]
Magnus Ihse Bursie
ihse at openjdk.org
Thu Feb 22 15:32:56 UTC 2024
On Thu, 22 Feb 2024 14:40:36 GMT, Julian Waters <jwaters at openjdk.org> wrote:
>> Windows:
>> Attach Visual Studio,
>> in the Immediate Window, type (funny VS syntax I do not claim to understand):
>>
>> {,,JVM}universe()
>>
>> ...and on the JVM's console window I see:
>>
>> "Executing universe"
>> Heap
>> garbage-first heap total reserved 8343552K,...etc...
>>
>> (It actually did nothing on the first invocation for me, I have typed it 5 times, only got 4 sets of output. But the symbol is working...)
>>
>> In that working (JNIEXPORT) case, the map file jdk/bin/server/jvm.dll.map shows:
>>
>> 0001:0027ff50 universe 0000000180280f50 f debug.obj
>>
>> (I do like that we call it jvm.dll.map now, not just "jvm.map"!)
>>
>> Test removing JNIEXPORT:
>>
>> Without JNIEXPORT, on Windows, the symbol universe is just not there. Nothing in the map file. In Visual Studio:
>>
>> {,,JVM}universe()
>> identifier "universe" is undefined
>>
>> That confirms the expected Windows behaviour: we still need JNIEXPORT to make debug.cpp utils callable by a debugger.
>
>> (I do like that we call it jvm.dll.map now, not just "jvm.map"!)
>
> You can thank @fthevenet for that! :)
> Removing JNIEXPORT here on Linux and rebuilding: still works.
>
> readelf shows: existing build (using JNIEXPORT): 32252: 0000000000698160 249 FUNC LOCAL DEFAULT 11 universe
>
> without JNIEXPORT: 32252: 0000000000698160 249 FUNC LOCAL HIDDEN 11 universe
>
> So gdb on Linux can call a HIDDEN function, i.e. without the JNIEXPORT. It seems happy either way, not affected by visibility.
@kevinjwalls Thank you for testing this for me!
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17955#discussion_r1499434437
More information about the build-dev
mailing list