PPC-AIX Port to FreeBSD PowerPC Support

Curtis Hamilton hamiltcl at verizon.net
Sat Feb 13 17:50:22 UTC 2016


Thomas/Volker, et al

Thanks to your assistance, I've been SUCCESSFUL in building a native ppc64 jdk8 on FreeBSD.

To validate the build, I made a couple of regression test runs with results similar to the Zero VM build in the same environment.  Although, not all tests completed successfully (some of the failed test were due to missing test files in the distribution).  The regression test stats file is attached. 

I've created a set of initial patches for the code and several patches for the build system.  However, there's one build system issue that I've not yet resolved.  At the end of the Hotspot build, it errors because it cannot find jvmti.hmtl, jvmti.h, libjsig.so and libjvm.so.  The files exist, but the "HOTSPOT_DIST" directory structure has not been created, with these files in the locations the build system expects.  I'm sure that this is because of building a Compiler2 variant on a non-supported platform, as I don't have this issue with the Zero VM build.   Thus, I manually created the "dist" structure and placed the files in the expected locations and the remainder of the build works as designed.  Any thoughts?

I'm going to continue to stress test the build, to ensure everything is in working order.

Again, thanks for all the assistance.

Regards,
Curtis

-----Original Message-----
From: Lindenmaier, Goetz [mailto:goetz.lindenmaier at sap.com] 
Sent: Friday, February 12, 2016 3:28 AM
To: Thomas Stüfe <thomas.stuefe at gmail.com>; Curtis Hamilton <hamiltcl at verizon.net>
Cc: ppc-aix-port-dev at openjdk.java.net; bsd-port-dev at openjdk.java.net
Subject: RE: PPC-AIX Port to FreeBSD PowerPC Support

Hi Curtis,

If SIGTRAP ist he problem, you could try -XX:-UseSIGTRAP.
This slows down null checks a bit, but this should not matter for now.

Best regards,
  Goetz

> -----Original Message-----
> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev- 
> bounces at openjdk.java.net] On Behalf Of Thomas Stüfe
> Sent: Freitag, 12. Februar 2016 08:08
> To: Curtis Hamilton <hamiltcl at verizon.net>
> Cc: ppc-aix-port-dev at openjdk.java.net; bsd-port-dev at openjdk.java.net
> Subject: Re: PPC-AIX Port to FreeBSD PowerPC Support
>
> Hi Curtis,
>
> I think it makes sense to post this on the bsd list too.
>
> See my comments inline.
>
> On Fri, Feb 12, 2016 at 7:26 AM, Curtis Hamilton <hamiltcl at verizon.net 
> <mailto:hamiltcl at verizon.net> > wrote:
>
>
>       Thomas/Volker,
>
>
>
>       Just wanted to give you an update on my bsd/ppc64 porting effort.
> I’m using the standard bsd openjdk8 port, as the bsd mercurial needs 
> freebsd specific patches.
>
>
>
>       I’ve made progress modding the linux/ppc files to work under bsd 
> and can successfully build a native (ppc64) JVM.  Here’s the output I 
> get executing ‘java –version’
>
>
>
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin # ./java -version
>       openjdk version "1.8.0_72-debug"
>       OpenJDK Runtime Environment (build 1.8.0_72-debug-b15)
>       OpenJDK 64-Bit Server VM (build 25.72-b15-debug, mixed mode)
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin #
>
>
> Great Job!
>
>
>
>       I can compile and execute the basic “hello world”.  However, 
> compiling more complicated java code results in a core dump.  See the
> following:
>
>
>
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin # ./javac HelloWorld.java
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin # ./java HelloWorld
>       Hello, World
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin # ./javac zip.java
>       Trace/BPT trap (core dumped)
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin # ./javac LargeZip.java
>       Trace/BPT trap (core dumped)
>       root at lenoil8:/usr/ports/java/openjdk8/work/openjdk/build/bsd-
> ppc64-normal-server-slowdebug/jdk/bin #
>
>       As you can see this is a debug build and I’ve been able to tell 
> from the core dump, using gdb, that it’s getting a signal 5 at abort.
>
>
>
>
> I think SIGTRAP is used by the ppc JIT for some things (implicit nullchecks?
> Volker would know better). So, SIGTRAP must be handled for this to work.
>
> The JVM has a central signal handler, entry point is "signalHandler" 
> in os_<os>.cpp, and then it goes on to, in your case, 
> JVM_handler_bsd_signal() in os_bsd_ppc.cpp.
>
> So, make sure that
>
> 1) SIGTRAP is handled by this signal handler - I think, by default bsd 
> does not install a signal handler for SIGTRAP. See 
> os::Bsd::install_signal_handlers(),
> and compare it with the Linux version.
>
> 2) Then, SIGTRAP must be handled in JVM_handler_bsd_signal(). Compare 
> with the SIGTRAP handling for Linux (os_linux_ppc.cpp). But if you 
> copied that code, maybe SIGTRAP handling is already in place and (1) 
> was all that was missing.
>
> Also note: The jvm normally writes a error log on crashes which is 
> very useful
> ("hs_err_<pid>") but in your case it was not written at all, because 
> no signal handler was installed for SIGTRAP. So, if you took care of 
> (1) but (2) is still missing, you may still crash but with a real error report log this time.
>
> Side note: Magnus Ihse Bursie is cleaning up and repairing the BSD port, see:
> http://mail.openjdk.java.net/pipermail/bsd-port-dev/2016-
> January/002739.html
>
> His changes are not yet committed, but he posted a webrev with his 
> changes
> (http://cr.openjdk.java.net/~ihse/JDK-8147795_addendum-bsd-source-
> patches/webrev.01/). It may make sense to integrate this in your 
> build, he did some worthwhile fixes.
>
> Kind Regards, Thomas
>
>
>
>
>       Any recommendations on what to look at or how to further debug?
>
>
>
>       Regards,
>
>
>
>       Curtis
>
>
>
>       From: Curtis Hamilton [mailto:hamiltcl at verizon.net 
> <mailto:hamiltcl at verizon.net> ]
>       Sent: Monday, January 11, 2016 3:29 PM
>       To: 'Thomas Stüfe' <thomas.stuefe at gmail.com 
> <mailto:thomas.stuefe at gmail.com> >
>       Cc: 'Volker Simonis' <volker.simonis at gmail.com 
> <mailto:volker.simonis at gmail.com> >; 
> 'ppc-aix-port-dev at openjdk.java.net
> <mailto:ppc-aix-port-dev at openjdk.java.net> ' <ppc-aix-port- 
> dev at openjdk.java.net <mailto:ppc-aix-port-dev at openjdk.java.net> >
>       Subject: RE: PPC-AIX Port to FreeBSD PowerPC Support
>
>
>
>       Thomas,
>
>
>
>       Thanks for the vector check!
>
>
>
>       I agree that the AIX os is quite different from other unices (I 
> have an old PowerStation 220 in my collection).  However, the 
> ppc-aix-port was the first that contained code specific to the ppc.  
> Since there isn’t a ppc-bsd port, I needed somewhere to start.  PPC code for both AIX and Linux can be found
> in the same port.   The ports available on FreeBSD currently do contain any of
> the ppc headers or code.  So I decided to use a port that already had 
> the ppc code and go from there.
>
>
>
>       Now that ppc code is being integrated into a more universal 
> port, I just need to check which jdk8 port to work with.
>
>
>
>       Any recommendation?
>
>
>
>       Regards,
>
>       Curtis
>
>
>
>       From: Thomas Stüfe [mailto:thomas.stuefe at gmail.com 
> <mailto:thomas.stuefe at gmail.com> ]
>       Sent: Monday, January 11, 2016 11:23 AM
>       To: Curtis Hamilton <hamiltcl at verizon.net 
> <mailto:hamiltcl at verizon.net> >
>       Cc: Volker Simonis <volker.simonis at gmail.com 
> <mailto:volker.simonis at gmail.com> >; ppc-aix-port-dev at openjdk.java.net 
> <mailto:ppc-aix-port-dev at openjdk.java.net>
>
>
>       Subject: Re: PPC-AIX Port to FreeBSD PowerPC Support
>
>
>
>
>
>       Hi Curtis,
>
>
>
>       I am not sure that AIX ppc would be the best source for an BSD port.
> AIX os port contains a large number of AIX specifics and it is quite a 
> bit different (sometimes, needlessly) from the other Unices. It is 
> also a moving target, at least on jdk9, as we changed a lot in the AIX 
> os port and will change more until the next feature close.
>
>
>
>       So, it may be that linux ppc would be a better porting source 
> for a bsd ppc port.
>
>
>
>       Kind Regards, Thomas
>
>
>
>
>
>
>
>
>
>
>
>       On Mon, Jan 11, 2016 at 3:21 PM, Curtis Hamilton 
> <hamiltcl at verizon.net <mailto:hamiltcl at verizon.net> > wrote:
>
>               Volker,
>
>
>
>               Thanks for the response.
>
>
>
>               Yes, I’m using the mercurial jdk7u ppc-aix version.  The 
> reason I used this port version was because I was more familiar with 
> the build layout of jdk7 versus jdk8/jdk9.  And it seemed like an 
> easier target to start with, since it already supported ppc64 on AIX and Linux.
>
>
>
>               Full disclosure, I’ve been successful in building zero vm for
> both jdk7 and jdk8 on ppc64/FreeBSD.   They both work great.  The system
> performance is somewhat sluggish, but usable.  So I decided to see if 
> I could build native ppc64 versions leveraging the existing AIX and 
> Linux ppc64 support in the ppc-aix-port, since the bsd-port lacks support for PowerPC.
>
>
>
>               I’m aware of the integration effort for jdk9.  So on 
> your advice, I will start working with ppc-aix jdk8u.  I don’t want 
> anyone to waste time with jdk7u. Although my efforts with this older 
> version is not completely wasted.
>
>
>
>               I look forward to contributing to the ppc64/bsd port 
> OpenJDK integration effort.
>
>
>
>               Regards,
>
>               Curtis
>
>
>
>               From: Volker Simonis [mailto:volker.simonis at gmail.com 
> <mailto:volker.simonis at gmail.com> ]
>               Sent: Monday, January 11, 2016 5:22 AM
>               To: Curtis Hamilton <hamiltcl at verizon.net 
> <mailto:hamiltcl at verizon.net> >
>               Cc: ppc-aix-port-dev at openjdk.java.net 
> <mailto:ppc-aix-port- dev at openjdk.java.net>
>               Subject: Re: PPC-AIX Port to FreeBSD PowerPC Support
>
>
>
>               Hi Curtis,
>
>               no, I'm not aware of any effort to port the ppc64 port to BSD.
>
>               My first question is why are you building jdk7. It is 
> quite old and we don't actually support it any more. It was also never 
> integrated into the main jdk7u branch. I'd strongly recommend to use 
> at least the jdk8u version. If you plan to contribute the ppc64/bsd 
> port for integration into the OpenJDK, this has to be done into the head revision (currently jdk9) anyway.
> Once it's there, it may be possible to downport it to jdk8u (but not 
> to jdk7u because that on doesn't even contain the ppc64 port).
>
>               That said, which version of jdk7u are you using? Is it 
> the one from http://hg.openjdk.java.net/ppc-aix-port/jdk7u/ ?
>
>               One problem you may encounter with jdk7u is that it was 
> never compiled with new versions of gcc. I see you are using gcc4.8 
> but we used 4.1.2 back then when we were doing the port.
>
>               Another problem is that we didn't support the 
> serviceability agent in jdk7u. Support for the SA agent on Linux/ppc64 
> (but not for AIX) was added in jdk8. The error you see in 
> vmStructs.cpp is most probably from SA coding. How does your file 
> vmStructs_bsd_ppc.hpp looks like. As you can see, 
> vmStructs_linux_ppc.hpp is empty in jdk7u for the ppc64 port while it has some code in jdk8u-dev and jdk9.
>
>               Unfortunately the place in vmStructs.cpp where the error 
> happens is deeply nested macro coding so it's hard to say what's wrong 
> from the error message. You could preprocess the file and post that to 
> the list, maybe we can see more. Just issue the following command from 
> a shell from within /usr/ports/tmp/jdk7u/build/bsd-
> ppc/hotspot/outputdir/bsd_ppc64_compiler2/product:
>
>                g++48 -DBSD -DPPC64 -D_ALLBSD_SOURCE - D_GNU_SOURCE 
> -DPRODUCT  - I/usr/ports/tmp/jdk7u/hotspot/src/share/vm/prims - 
> I/usr/ports/tmp/jdk7u/hotspot/src/share/vm - 
> I/usr/ports/tmp/jdk7u/hotspot/src/share/vm/precompiled - 
> I/usr/ports/tmp/jdk7u/hotspot/src/cpu/ppc/vm - 
> I/usr/ports/tmp/jdk7u/hotspot/src/os_cpu/bsd_ppc/vm - 
> I/usr/ports/tmp/jdk7u/hotspot/src/os/bsd/vm - 
> I/usr/ports/tmp/jdk7u/hotspot/src/os/posix/vm -I../generated - 
> DHOTSPOT_RELEASE_VERSION="\"24.80-b11\"" - 
> DHOTSPOT_BUILD_TARGET="\"product\"" - DHOTSPOT_BUILD_USER="\"root\"" 
> -DHOTSPOT_LIB_ARCH=\"ppc\" - DHOTSPOT_VM_DISTRO="\"OpenJDK\"" - 
> DDEFAULT_LIBPATH="\"/lib:/usr/lib:/usr/local/lib\"" - 
> DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_ppc -
> DTARGET_ARCH_MODEL_ppc_64 -DTARGET_OS_ARCH_bsd_ppc -
> DTARGET_OS_ARCH_MODEL_bsd_ppc_64 -DTARGET_COMPILER_gcc -
> DCOMPILER2 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -
> mpowerpc64 -pipe -DDONT_USE_PRECOMPILED_HEADER -O3 -fno-strict- 
> aliasing -D_LP64=1 -m64 -mminimal-toc -mcpu=powerpc64 -mtune=power5 - 
> minsert-sched-nops=regroup_exact -mno-multiple -mno-string - 
> DSAFEFETCH_STUBS -DINCLUDE_TRACE=1 -Werror -Wpointer-arith -
> Wconversion -Wsign-compare    -E
> /usr/ports/tmp/jdk7u/hotspot/src/share/vm/runtime/vmStructs.cpp
>
>               Regards,
>
>               Volker
>
>
>
>               On Sun, Jan 10, 2016 at 3:04 PM, Curtis Hamilton 
> <hamiltcl at verizon.net <mailto:hamiltcl at verizon.net> > wrote:
>
>                       Hello,
>
>                       I’d like to know if there’s been any work done 
> to support PPC for *BSD?
>
>                       I’ve hacked both the AIX and Linux PPC headers 
> but have been unsuccessful in building HotSpot.  All modules seem to 
> build with the exception of VMStructs.cpp with the below error.
>
>
>       /usr/ports/tmp/jdk7u/hotspot/src/share/vm/runtime/vmStructs.cp
> p: In static member function 'static void VMStructs::init()':
>
>       /usr/ports/tmp/jdk7u/hotspot/src/share/vm/runtime/vmStructs.cp
> p:3015: error: cannot convert 'pthread**' to 'pid_t*' in 
> initialization
>
>                       Build log is attached.
>
>                       Thanks in advance!
>
>
>
>                       Curtis
>
>
>
>
>
>
>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Stats.txt
URL: <http://lists.freebsd.org/pipermail/freebsd-java/attachments/20160213/ff3d2ee9/attachment.txt>


More information about the freebsd-java mailing list