On 14/04/2015 8:12 PM, Erik Joelsson wrote:
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.

Thanks Erik. From a quick read I don't really understand what is happening here, but I suspect we're doing something "not quite right" somewhere that causes this. It seems really ugly to have to define these in a map file. I wonder if our compiler experts can shed some light on why we need to do this and how to avoid it?

But for expediency that shouldn't hold up getting this fix in place.

Thanks,
David

/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


Reply via email to