[OpenJDK 2D-Dev] RFR(L): 8024854: Basic changes and files to build the class library on AIX

Michael McMahon michael.x.mcmahon at oracle.com
Fri Sep 20 16:07:25 UTC 2013


A few comments:

1) Seems to be two macros _AIX and AIX. Is this intended?

NetworkInterface.c
============
2) line 1098: new style of variable declaration. First time we would 
have that in this code.
     I think it should be okay though

3) Can't comment on the AIX functionality, except I notice at line 1381: 
an exit(1) call
     which seems a bit extreme, in case of error. Can it not just return 
an error.

linux_close.c
========
4) I see Alan commented that we should create a common module for this 
functionality.
    Right now, we have a separate (but similar) bsd_close.c. I wonder if 
in the short term
    an aix_close.c might be the easiest thing, as I'm not sure it makes 
sense to have a
    bsd version and AIX lumped in with Linux.

- Michael

On 16/09/13 20:30, Volker Simonis wrote:
> 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.




More information about the 2d-dev mailing list