RFR(L): 8024854: Basic changes and files to build the class library on AIX

Volker Simonis volker.simonis at gmail.com
Mon Sep 16 12:30:10 PDT 2013


Resending this to more lists as requested by Alan Bateman with the kind
request to anybody to review the parts for which he feels responsible:)

For those not up to date, this change is part of the ongoing PowerPC/AIX
Porting Project:
http://openjdk.java.net/projects/ppc-aix-port
https://wiki.openjdk.java.net/display/PPCAIXPort
http://openjdk.java.net/jeps/175

Please send reviews to all currently included recipients.

Thank you and best regards,
Volker


---------- Forwarded message ----------
From: *Volker Simonis*
Date: Monday, September 16, 2013
Subject: RFR(L): 8024854: Basic changes and files to build the class
library on AIX
To: "ppc-aix-port-dev at openjdk.java.net" <ppc-aix-port-dev at openjdk.java.net>,
Java Core Libs <core-libs-dev at openjdk.java.net>


Hi,

could you please review the following webrev which contains the basic
changes and files needed in the 'jdk' repository in order to build the
OpenJDK on AIX:

http://cr.openjdk.java.net/~simonis/webrevs/8024854

This change together with "8024265: Enable new build on AIX (jdk
part)<http://cr.openjdk.java.net/%7Esimonis/webrevs/8024265_jdk/>"
allows it to configure and completely build the staging repository on AIX
5.3 and 7.1 with the following command:

configure --with-boot-jdk=<jdk-image> --with-jvm-variants=core
--with-jvm-interpreter=cpp --with-cups-include=/opt/freeware/include
--x-includes=/opt/freeware/include

Below you can find the changes and additions I've done, sorted by file.
Most of them are just additions which are only active during the AIX build
anyway or simple changes where AIX has been added to conditions which
already check for Linux and/or Solaris. The files with the biggest changes
which you're probably want to look on more thoroughly are
'src/solaris/native/java/net/NetworkInterface.c' and
'src/solaris/native/sun/nio/ch/Net.c' altough they shouldn't change
anything on the current OpenJDK platforms as well.

Notice that there are still some files and some functionality missing from
the current change (notably NIO) but it still yields a running JDK which
can execute "HelloWorld" on the command line and as AWT application. I've
intentionally tried to keep this initial change as simple as possible (with
respect tot shared changes) in order to get it reviewed as fast as
possible. The missing parts can then be added later on, grouped by logical
topics, to simplify the review process.

Thank you and best regards,
Volker

src/share/bin/jli_util.h

   - Define JLI_Lseek on AIX.

src/share/lib/security/java.security-aix

   - Provide default java.security-aix for AIX.

src/share/native/sun/awt/medialib/mlib_sys.c

   - malloc always returns 8-byte aligned pointers on AIX as well.

src/share/native/sun/awt/medialib/mlib_types.h

   - Add AIX to the list of known platforms.

src/share/native/sun/font/layout/KernTable.cpp

   - Rename the macro DEBUG to DEBUG_KERN_TABLE because DEBUG is too common
   and may be defined in other headers as well as on the command line and
   xlc bails out on macro redefinitions with a different value.

src/share/native/sun/security/ec/impl/ecc_impl.h

   - Define required types and macros on AIX.

src/solaris/back/exec_md.c

   - AIX behaves like Linux in this case so check for it in the Linux
   branch.

src/solaris/bin/java_md_solinux.c,
src/solaris/bin/java_md_solinux.h

   - On AIX LD_LIBRARY_PATH is called LIBPATH
   - Always use LD_LIBRARY_PATH macro instead of using the string "
   LD_LIBRARY_PATH" directly to cope with different library path names.
   - Add jre/lib/<arch>/jli to the standard library search path on AIX
   because the AIX linker doesn't support the -rpath option.
   - Replace #ifdef __linux__ by #ifndef __solaris__ because in this case,
   AIX behaves like Linux.

src/solaris/classes/sun/awt/fontconfigs/aix.fontconfig.properties

   - Provide basic fontconfig.propertiesfor AIX.

src/solaris/classes/java/lang/UNIXProcess.java.aix,
src/solaris/classes/sun/tools/attach/AixAttachProvider.java,
src/solaris/classes/sun/tools/attach/AixVirtualMachine.java

   - Provide AIX specific Java versions, mostly based on the corresponding
   Linux versions.

src/solaris/demo/jvmti/hprof/hprof_md.c

   - Add AIX support. AIX mostly behaves like Linux, with the one exception
   that it has no dladdr functionality.
   - Implement dladdr functionality for AIX.

src/solaris/native/com/sun/management/UnixOperatingSystem_md.c

   - Adapt for AIX (i.e. use libperfstat on AIX to query OS memory).

src/solaris/native/common/jdk_util_md.h

   - Add AIX definitions of the ISNANF and ISNAND macros.

src/solaris/native/java/io/io_util_md.c

   - AIX behaves like Linux in this case so check for it in the Linux
   branch.

src/solaris/native/java/net/NetworkInterface.c

   - Add AIX support into the Linux branch because AIX mostly behaves like
   AIX for IPv4.
   - AIX needs a special function to enumerate IPv6 interfaces and to query
   the MAC address.

src/solaris/native/java/net/PlainSocketImpl.c

   - On AIX (like on Solaris) setsockopt will set errno to EINVAL if the
   socket is closed. The default error message is then confusing.

src/solaris/native/java/net/linux_close.c,
src/share/native/java/net/net_util.c

   - Also use the file and socket wrappers on AIX.
   - Add initialization of some previously uninitialized data structures.
   - On AIX we don't have __attribute((constructor)) so we need to
   initialize manually (from JNI_OnLoad() in
   'src/share/native/java/net/net_util.c'

src/solaris/native/java/net/net_util_md.h

   - AIX needs the same workaround for I/O cancellation like Linux and
   MacOSX.

src/solaris/native/java/util/TimeZone_md.c

   - Currently on AIX the only way to get the platform time zone is to read
   it from the TZ environment variable.

src/solaris/native/sun/awt/awt_LoadLibrary.c

   - There's no dladdr on AIX, but we can use the implementation from the
   HotSpot in this case because libjvm.so will be always loaded before the
   AWT.

src/solaris/native/sun/awt/fontpath.c

   - Add AIX specific fontpath settings and library search paths for
   libfontconfig.so.

src/solaris/native/sun/java2d/x11/X11SurfaceData.c

   - Only define MIN and MAX if they're not already defined because xlc on
   AIX fails on macro redefinitions.

src/solaris/native/sun/java2d/x11/XRBackendNative.c

   - Handle AIX like Solaris.

src/solaris/native/sun/nio/ch/Net.c

   - Add AIX-specific includes and constant definitions.
   - On AIX "socket extensions for multicast source filters" support
   depends on the OS version. Check for this and throw appropriate exceptions
   if it requested but not supported. This is needed to pass
   JCK-api/java_nio/channels/DatagramChannel/DatagramChannel.html#Multicast

src/solaris/native/sun/security/pkcs11/j2secmod_md.c

   - Use RTLD_LAZY instead of RTLD_NOLOAD on AIX.

src/solaris/native/sun/tools/attach/AixVirtualMachine.c

   - AIX version mostly derived from the corresponding Linux version.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20130916/59702a42/attachment.html 


More information about the ppc-aix-port-dev mailing list