On 9/03/2026 9:44 pm, Baesken, Matthias wrote:
Hi Kevi, opt:ref can eliminate some dead code (maybe that’s why the Windows
binaries were rather small for some time) .
https://learn.microsoft.com/en-us/cpp/build/reference/opt-optimizations?view=msvc-170
“When /OPT:REF is enabled, LINK removes unreferenced packaged functions
and data, known as COMDATs. This optimization is known as transitive COMDAT
elimination”
We use this linker flag , see
https://github.com/openjdk/jdk/blob/5e588085e9c333e9ad8e48dd7c60e665d30e278d/make/autoconf/flags-ldflags.m4#L95
and used it for some time see jdk21u-dev :
https://github.com/openjdk/jdk21u-dev/blob/f95246eb2c3c76fa8aafacd5f699fed92ef2b4ce/make/autoconf/flags-ldflags.m4#L90
* I see also David's comment that it was the "debug" symbol specifically
that clashed in a test. If there's no reason to change/prefix all the debug-time utils
that that's great.
*
If it is just about this single helper , we can rename just this one ; I think
most developers would be fine with this.
I'm not sure where this conclusion is coming from. The case in question
was about "debug" but as stated earlier and/or in the JBS issue this is
potentially an issue for any symbol exported from one of the JDK
libraries that clashes with a symbol from the application native code.
David
-----
Best regards, Matthias
From: Kevin Walls <[email protected]>
Sent: Monday, 9 March 2026 12:34
To: Baesken, Matthias <[email protected]>; Erik Joelsson
<[email protected]>; [email protected]
Subject: Re: [External] : RE: Exporting debug helpers and 8375311: Some builds
are missing debug helpers and exporting debug-helpers
Hi - I only wanted to mention JDK-8264593 as it's part of the history, and I
think we should be able to have code in the JVM that is not called. (because it
might be called by some other route). But I think that change was long before
other issues were seen. At the time I thought the default visibility on
Windows was a problem. (I don't think we were using /OPT:REF and don't see it
today with a quick search.)
I see also David's comment that it was the "debug" symbol specifically that
clashed in a test. If there's no reason to change/prefix all the debug-time utils that
that's great.
________________________________
From: Baesken, Matthias
<[email protected]<mailto:[email protected]>>
Sent: Monday, March 9, 2026 11:12 AM
To: Kevin Walls <[email protected]<mailto:[email protected]>>; Erik Joelsson
<[email protected]<mailto:[email protected]>>;
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
Subject: RE: [External] : RE: Exporting debug helpers and 8375311: Some builds
are missing debug helpers and exporting debug-helpers
Hi Matthias -
I did https://bugs.openjdk.org/browse/JDK-8264593 which "promoted" the debug
utils into product builds, and made them available on Windows. So I'm in favour of them
existing, and being available!
Yes maybe they need better names if the short debug utils have clashed with
something else in the past, maybe it was a clash with some native test.
Maybe JVM_dbg_pp, JVM_dbg_blob, etc..? (We already have dbg_is_safe). I don't
see it spelled out exactly what the clash was.
Hi Kevin, your JBS issue JDK-8264593 states : “For Windows, JNIEXPORT is also
needed to make the symbols visible.” .
Is it really about visibility on Windows , or is the more aggressive
/OPT:REF or other linker options on Windows eliminating those symbols
without being exported (that saves them from elimination) ?
(on Linux we had such issues too with LTGC or LTO linker options, that’s why I
exported them on UNIX too)
The very short names of the debug – helpers like help, flush , pp, nm from
the debug helpers are probably also problematic on Windows, but seems no one
ever complained ?
Best regards, Matthias