RFR(L): 8024854: Basic changes and files to build the class library on AIX
Chris Hegarty
chris.hegarty at oracle.com
Fri Sep 20 06:13:33 PDT 2013
Volker,
I skimmed over the networking part of the changes, and nothing jumps out
at me. I'd like to spend a little more time doing a more detailed
review, but I will not have time to do this until after JavaOne.
-Chris.
On 09/16/2013 08:30 PM, 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 serviceability-dev
mailing list