RFR: JDK-8200358 Remove mapfiles for JDK executables

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Wed Mar 28 21:48:49 UTC 2018


On 2018-03-28 22:39, Martin Buchholz wrote:
>
>
> On Wed, Mar 28, 2018 at 12:07 PM, Magnus Ihse Bursie 
> <magnus.ihse.bursie at oracle.com <mailto:magnus.ihse.bursie at oracle.com>> 
> wrote:
>
>
>     Anyway, with this patch all symbols in executables will be
>     visible, so there should be no problem anyway.
>
>
> The symbols visible in the main executable are a sort-of-public 
> interface.  The difference is visible via e.g. nm -D, or any native 
> code that does dlsym(NULL, symbolName) (yes, we do this!).  The 
> behavior of native code is likely to be affected if there is a symbol 
> conflict.  The larger the exported symbol table, the more overhead 
> there will be at startup (probably). The theory is that changing an 
> interface requires a CSR.

If I understand your objections correctly, you are claiming (correct me 
if I'm misunderstanding you):

1) Removing the mapfiles will affect performance negatively

2) The exported symbols from executables are a public API and the change 
therefore require a CSR.

To this I reply:

1) While theoretically this might affect startup time, I can't for the 
life of me think this would even be measurable. I think any 
uncertainities in the measurement of the startup of "java" will dwarf 
any changes due to loading with a different set of exported symbols, in 
several orders of magnitude. If you claim otherwise, I challenge you to 
do the measurements.

2) If this is a public API, then show me the documentation. If there is 
no documentation, then this is not a public interface. Just the fact 
that you might have used "nm" to locate symbols in a native file and use 
it, does not mean it's a public interface that requires a CSR to change. 
If that would be the case, then we could not ever do any change to any 
native file without filing a CSR, which is obviously absurd.

If you have code that are dependent on a certain set of symbols or 
whatnot, and you want it to keep functioning, then I recommend that you 
file a bug and submit a patch to get it into mainline. If you're just 
collecting a bunch of downstream patches, and this change make your life 
harder, well, then, sorry, that's not my problem.

/Magnus




More information about the build-dev mailing list