RFR: 8017234: Hotspot should stop using mapfiles
Magnus Ihse Bursie
ihse at openjdk.org
Thu Feb 22 09:43:55 UTC 2024
On Thu, 22 Feb 2024 07:39:51 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
>> **Summary:** Finally get rid of the mapfiles in Hotspot, and replace it with compiler options and `JNIEXPORT` on all platforms.
>>
>> The bug that this PR solves, [JDK-8017234](https://bugs.openjdk.org/browse/JDK-8017234), was created in 2013. Even back then the use of mapfiles in Hotspot was dated, so this is really good riddance with old rubbish.
>>
>> This code touches on central but not well understood parts of the Hotspot dynamic library, which has contributed to why this bug has stayed unresolved for so long. I will need to explain this fix in more detail than usually necessary. (Please bare with me if this gets long.) I also anticipate that not all solutions that I've picked will be accepted, and we'll have to discuss how to proceed. I think it is better to have actual concrete code to discuss around, rather than starting by an abstract discussion. To keep this description short, I will post the discussion as a comment to the PR.
>>
>> I have run this PR through tier 1-3 in our CI system. I have also carefully checked how the resulting dynamic library differs with this patch (not much; see discussion below). For build system changes, this is often the most relevant metric.
>
> src/hotspot/share/utilities/debug.cpp line 71:
>
>> 69:
>> 70: #if defined(TARGET_COMPILER_gcc)
>> 71: #undef JNIEXPORT
>
> This partially reverts [JDK-8264593](https://bugs.openjdk.org/browse/JDK-8264593); @kevinjwalls will this work for you?
No, it doesn't. Even after [JDK-8264593](https://bugs.openjdk.org/browse/JDK-8264593) the symbols from debug.cpp were not exported on Linux, since they were not mentioned in `make/data/hotspot-symbols`, and thus were made local.
The reason I put this in was to keep parity with the symbol table before and after the patch.
My guess is that it was only on Windows it was necessary that the functions where JNIEXPORTed, otherwise someone would have complained after JDK-8264593. But for platform consistency, it might make sense to export these even on gcc as well. After this PR is integrated, this is easy to do -- just remove the above hack.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17955#discussion_r1498952946
More information about the build-dev
mailing list