JDK-4776723 : RFE: enable linker mapfiles for Linux
  • Type: Enhancement
  • Component: other-libs
  • Sub-Component: other
  • Affected Version: 1.4.2
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: generic
  • Submitted: 2002-11-11
  • Updated: 2002-11-19
  • Resolved: 2002-11-19
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.4.2 mantisFixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
Linux linker supports version script, which is the equivalent of Solaris
linker mapfile. Linux version scripts are designed to have the same
format as Solaris mapfiles, but with some limitations (e.g. no duplicate
version strings or symbols).

Currently linker mapfiles are enabled for the Solaris build to limit
exported dynamic symbols, but the mapfiles are not used in the Linux 
build. We should be able to directly use most of the Solaris mapfiles
on Linux and it should be quite easy to convert the rest.

The primary benefit of limiting dynamic symbols is to avoid potential
symbol conflicts. And when this is used with statically linking libstdc++,
we should be able to support JNI libraries built by different version of
g++ without the annoying system abort due to conflicting libstdc++ 
functions. Limiting dynamic symbols should also generate slightly smaller
.so files and faster startup time.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mantis FIXED IN: mantis INTEGRATED IN: mantis mantis-b08
14-06-2004

EVALUATION needed for both HotSpot and JDK workspace ###@###.### 2002-11-11 The linker mapfiles have been enabled on Linux/x86 in both the HotSpot and J2SE workspace. In HotSpot we use separate mapfiles because there are some Linux specific symbols need to be exported. In J2SE, we just use the same mapfiles used on Solaris except for libawt.so. Mapfile is currently disabled for libawt.so because awt on Linux is statically linked with motif, enabling mapfiles would hide all the Xm symbols. After this change, internal symbols will be hidden from user code. User code uses VM internal functions or variables directly could fail due to unresolved symbols. (Note the same code should already fail on Solaris and Windows, because the symbols are already hidden on Solaris and Windows) And the problem should be fixed in user code. Also please note the JVM interface is considered internal and unsupported even though the JVM_XXXX symbols are exported from libjvm.so. While we certainly would like to maintain compatibility between different releases, the interface could change or disappear at any time without notice. Limiting dynamic symbols can reduce the possibility of symbol conflicts, reduce library file size and slightly improve the performance. ###@###.### 2002-11-15
15-11-2002