Hi Curtis, On Thu, Jun 16, 2016 at 2:55 PM, Curtis Hamilton <hamil...@verizon.net> wrote: > > > -----Original Message----- > From: Volker Simonis [mailto:volker.simo...@gmail.com] > Sent: Thursday, June 16, 2016 4:34 AM > To: Curtis Hamilton <hamil...@verizon.net> > Cc: ppc-aix-port-...@openjdk.java.net > Subject: Re: Adding BSD PPC Support to jdk9 > >>Hi Curtis, >> >>welcome on board! > > Volker, > > Thanks! > >>On Thu, Jun 16, 2016 at 4:48 AM, Curtis Hamilton <hamil...@verizon.net> wrote: >>> I want to contribute in the development of jdk9, by adding native ppc >>> support for bsd. I've already developed core patches for native >>> support in >>> jdk9 and can successfully compile the mercurial. >>> > >>Congratulations! Sounds like an interesting project. >>How big are the changes you had to do? Did you had to do significant changes >>in the existing sources or did you merely add hotspot/src/os_cp/bsd_ppc ? > > First, let me correct myself, as I've been using the bsd-port jdk9 mercurial > to build against. There are not real significant changes being made to the > existing hotspot code. Mostly just adding hotspot/src/os_cpu/bsd_ppc. > > >>> The extent of my testing, so far, is compiling "HelloWorld" and >>> running simple command-line (text based) java applications. All seem >>> to be working (no errors). However, I'm getting the following >>> error(s) when attempting to test any app that uses a graphical interface: >>> >>> ...ppc64/libjava.so: Undefined symbol "jlog" >>> >> >-OR- >>> >> >...ppc64/libjava.so: Undefined symbol "jsin" >>> > >>In jdk/src/java.base/share/native/libfdlibm/jfdlibm.h the usual mathematical >>functions are redefined to versions prefixed by 'j'. E.g. >> >>#define sin jsin >> >>jdk/src/java.base/share/native/libfdlibm/jfdlibm.h is included by >>jdk/src/java.base/share/native/libfdlibm/fdlibm.h which is in tunr included >>into jdk/src/java.base/share/native/libfdlibm/s_sin.c which defines the >>function. >> >>Can you check if s_sin.c (and the other files from libfdlibm) get compiled >>into libfdlibm.a. To do this, you can build with 'LOG=debug' >>(i.e. make images LOG=debug). >> >>I suppose it is not build until you add a line like: >> >> LIBS_bsd := $(LIBDL) $(BUILD_LIBFDLIBM), \ >> >>to the >> >>$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \ >> >>section in jdk/make/lib/CoreLibraries.gmk >> >>Regards, >>Volker > > You're spot on, as always. Although libfdlibm.a was being built, it was not > being linked into libjava.so. When I looked at CoreLibraries.gmk and noticed > that libfdlibm was missing from the "LIBS_unix" entry. > > So I changed it from: > > LIBS_unix := -ljvm -lverify, \ > > to: > > LIBS_unix := -ljvm -lverify $(LIBDL) $(BUILD_LIBFDLIBM), \ > > Now everything seems to be working. >
Glad that it worked. Nevertheless I think changing LIBS_unix is not the right way to fix your problem. LIBS_unix is used on all *nix systems (i.e. concatenated with LIBS_solaris on Solaris, etc) so your change will probably break Solaris and AIX which don't need fdlibm or link it in a different way. S you should really use LIBS_bsd for BSD specific settings. Also you probably don't need to include $(LIBDL) on BSD if it wasn't required until now. > Now that I've gotten core bsd ppc support working, how can I contribute this > work into the overall project? > As you wrote that you are using the bsd-port jdk9 repository I've CCed bsd-port-dev and Greg Lewis. I'm not sure what's the state of the BSD-port project and if and when they plan to integrate into the jdk9 mainline. For Java 9 it's definitely too late as feature close has already been reached a few weeks ago. As your changes are based on the other changes in the bsd-port/jdk9 repository it's probably the easiest to push them there (bsd-port/jdk9 seems to be merged with jdk9/jdk9 regularly and therefore should contain all the ppc stuff while the main jdk9/jdk9 repos don't have the BSD stuff). Once you're in bsd-port/jdk9 your changes will automatically go into jdk9/jdk9 if the BSD port will be merged into the jdk9 main line eventually. Regarding the exact commit rules of the BSD-port project you have to ask somebody from that project. Regards, Volker > Regards, > Curtis > >>> I understand that jdk9 is WIP, but can someone point me in the right >>> direction to look? >>> >> >Thanks in advance! >>>