The best information that I could find about this is in the Solaris
documentation found here:
https://docs.oracle.com/cd/E26505_01/pdf/E26506.pdf
Under the heading "Localizing Symbol Instances" there is an example
mapfile including __Argv, __environ_lock, _environ and _lib_version. The
text notes that symbol definitions established by your "compiler driver"
need to be kept global. I believe this is what is happening here.
/Erik
On 2015-04-14 09:41, Erik Joelsson wrote:
On 2015-04-14 03:44, David Holmes wrote:
Hi Erik,
On 13/04/2015 11:25 PM, Erik Joelsson wrote:
Hello,
When building JDK 9 with Solaris Studio 12u4, linking of unpack200 and
the java launchers fails due to symbols not being exported. A typical
error message looks like this:
Undefined first referenced
symbol in file
__environ_lock
/net/sthserver02/share/sundevtools/devtools/i586/devkit/SS12u4-Solaris11u1/SS12u4-slim/lib/compilers/amd64/crt1x.o
(symbol has no version assigned)
The fix seems to be to add these symbols to the mapfiles.
I'm perplexed - what are these symbols and why are we exporting them
?? I see we already had __environ_lock on x86, but I can't actually
find these in our source code (environ_lock, longdouble_used).
I don't know. I suspect that these are implicitly created by the
compiler and in SS12u4, the implicitly linked lib/obj files suddenly
need access to them. Perhaps we should try to ask the SS compiler team
for clarification? My googling couldn't find a better answer at least.
/Erik
David
I also noted that the format of the make dependency files generated by
the compiler is slightly different which required a small adjustment to
our rewriting logic for them to remove leading whitespace.
Bug: https://bugs.openjdk.java.net/browse/JDK-8077419
Webrev: http://cr.openjdk.java.net/~erikj/8077419/webrev.01/
/Erik