OpenJDK build system might need to be adapted for Sun Solaris Sparc/SmartOS

David Holmes david.holmes at oracle.com
Mon May 29 02:40:42 UTC 2017


Hi Mani,

I've dropped build-infra-dev as it is no longer actively used (it was 
for the new build system a couple of years ago).

Not sure about relevance to adoption-discuss ??

On 29/05/2017 9:15 AM, Mani Sarkar wrote:
> Hi,
> 
> While building OpenJDK8 on SmartOS (a fork of Sun Solaris), we came across
> a number of anomalies and would like your help and support.

Happy to help, not sure what "support" entails? ;-)

> Here is the info from configure so you know a little bit more about the
> platform we are talking about:
<snip>
> * C Compiler:     Sun Studio version 5.12 (at
> /root/SolarisStudio12.3-solaris-x86-bin/solarisstudio12.3/prod/bin/cc)
> * C++ Compiler:   Sun Studio version 5.12 (at
> /root/SolarisStudio12.3-solaris-x86-bin/solarisstudio12.3/prod/bin/CC)

The official toolset for 8u is SS12u1, so using 12u3 may encounter 
problems ...

> Firstly we had to apply the below patch in order to overcome couple of
> initial issues:
> 
> --- a/hotspot/make/solaris/makefiles/build_vm_def.sh
> +++ b/hotspot/make/solaris/makefiles/build_vm_def.sh
> @@ -1,6 +1,6 @@
>   #!/bin/sh
> 
> -/usr/ccs/bin/nm -p $* \
> +/opt/local/bin/nm -p $* \

The use of nm should really be via a NM variable set by configure, but 
the hotspot build isn't fully integrated with configure in 8u.

> --- a/hotspot/make/solaris/makefiles/sparcWorks.make
> +++ b/hotspot/make/solaris/makefiles/sparcWorks.make
> @@ -112,7 +112,7 @@ ARCHFLAG_OLD/sparcv9 = -xarch=v9
>   ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc
>   ARCHFLAG_OLD/i486    =
>   ARCHFLAG_NEW/i486    = -m32
> -ARCHFLAG_OLD/amd64   = -xarch=amd64
> +ARCHFLAG_OLD/amd64   = -march=amdfam10

... this is the kind of problem you may get with a too recent toolset.

> We think that these values are hard-coded and there is no way (or at least
> we couldn't find one) to pass the custom values via a configure
> command-line option or environment variable.

May be possible to do this via EXTRA_CFLAGS variable ...

> And then finally after patching it manually, we landed with this issue:
> 
> Compiling /home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
> Linking vm...
> ld: warning: symbol '__JvmOffsets' has differing types:
>          (file JvmOffsets.o type=OBJT; file dtrace.o type=FUNC);
> ld: warning: symbol 'CodeCache::_heap' has differing types:
>          (file codeCache.o type=OBJT; file dtrace.o type=FUNC);
> ld: warning: symbol 'BufferBlob::__vtbl' has differing types:
>          (file codeBlob.o type=OBJT; file dtrace.o type=FUNC);
> ld: warning: symbol 'Method::__vtbl' has differing types:
>          (file dtrace.o type=FUNC; file method.o type=OBJT);
> ld: warning: symbol 'nmethod::__vtbl' has differing types:
>          (file dtrace.o type=FUNC; file nmethod.o type=OBJT);
> ld: warning: symbol 'Universe::_collectedHeap' has differing types:
>          (file dtrace.o type=FUNC; file universe.o type=OBJT);

These warnings are well known and seemingly harmless.

> BFD: libjvm.debuginfo: Not enough room for program headers, try linking with -N
> /opt/local/bin//gobjcopy:libjvm.debuginfo[.note]: Bad value
> BFD: libjvm.debuginfo: Not enough room for program headers, try linking with -N
> /opt/local/bin//gobjcopy:libjvm.debuginfo: Bad value
> /home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/hotspot/make/solaris/makefiles/vm.make:296:
> recipe for target 'libjvm.so' failed
> gmake[6]: *** [libjvm.so] Error 1
> /home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/hotspot/make/solaris/makefiles/top.make:112:
> recipe for target 'the_vm' failed
> gmake[5]: *** [the_vm] Error 2
> /home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/hotspot/make/solaris/Makefile:226:
> recipe for target 'product' failed
> gmake[4]: *** [product] Error 2
> Makefile:230: recipe for target 'generic_build2' failed
> gmake[3]: *** [generic_build2] Error 2
> Makefile:177: recipe for target 'product' failed
> gmake[2]: *** [product] Error 2
> HotspotWrapper.gmk:44: recipe for target
> '/home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/build/solaris-x86_64-normal-server-release/hotspot/_hotspot.timestamp'
> failed
> gmake[1]: *** [/home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk/build/solaris-x86_64-normal-server-release/hotspot/_hotspot.timestamp]
> Error 2
> /home/jenkins/workspace/openjdk_build_x86-64_smartOS/openjdk//make/Main.gmk:108:
> recipe for target 'hotspot-only' failed
> make: *** [hotspot-only] Error 2
> 
> 
> I see this has already been reported and resolved via
> https://bugs.openjdk.java.net/browse/JDK-8033602, so how come we still get
> this issue.

This was re-raised recently as well. See:

http://mail.openjdk.java.net/pipermail/build-dev/2017-May/019081.html

but again it relates to toolkits.

Cheers,
David
-----

> Any ideas or thoughts about the above?
> 
> Thanks.
> 
> Cheers,
> Mani
> 



More information about the build-dev mailing list