<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Volker,<div><br></div><div>The serviceability-related changes look ok to me (not a Reviewer).</div><div><br></div><div>/Staffan</div><div><br><div><div>On 16 sep 2013, at 21:30, Volker Simonis &lt;<a href="mailto:volker.simonis@gmail.com">volker.simonis@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Resending this to more lists as requested by Alan Bateman with the kind request to anybody to&nbsp;review the parts for which he&nbsp;feels responsible:)<div><br></div><div>For those not up to date, this change is part of the ongoing PowerPC/AIX Porting Project:</div>
<div><a href="http://openjdk.java.net/projects/ppc-aix-port">http://openjdk.java.net/projects/ppc-aix-port</a><br></div><div><a href="https://wiki.openjdk.java.net/display/PPCAIXPort">https://wiki.openjdk.java.net/display/PPCAIXPort</a><span style="font-family:Helvetica;white-space:nowrap"><br>
</span></div><div><a href="http://openjdk.java.net/jeps/175">http://openjdk.java.net/jeps/175</a><br></div><div><font face="Helvetica"><span style="white-space:nowrap"><br></span></font></div><div><font face="Helvetica"><span style="white-space:nowrap">Please send reviews to all currently included recipients.</span></font></div>
<div><font face="Helvetica"><span style="white-space:nowrap"><br></span></font></div><div><font face="Helvetica"><span style="white-space:nowrap">Thank you and best regards,</span></font></div><div><font face="Helvetica"><span style="white-space:nowrap">Volker</span></font></div>
<div><font face="Helvetica"><span style="white-space:nowrap"><br></span></font><div><br>---------- Forwarded message ----------<br>From: <b>Volker Simonis</b> <br>Date: Monday, September 16, 2013<br>Subject: RFR(L): 8024854: Basic changes and files to build the class library on AIX<br>
To: "<a href="mailto:ppc-aix-port-dev@openjdk.java.net">ppc-aix-port-dev@openjdk.java.net</a>" &lt;<a href="mailto:ppc-aix-port-dev@openjdk.java.net">ppc-aix-port-dev@openjdk.java.net</a>&gt;, Java Core Libs &lt;<a href="mailto:core-libs-dev@openjdk.java.net">core-libs-dev@openjdk.java.net</a>&gt;<br>
<br><br><div dir="ltr">

<h4><span style="font-weight:normal">Hi,</span></h4><p>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:</p><p><a href="http://cr.openjdk.java.net/%7Esimonis/webrevs/8024854" target="_blank">http://cr.openjdk.java.net/~simonis/webrevs/8024854</a><br>



</p><p>This change together with "<a href="http://cr.openjdk.java.net/%7Esimonis/webrevs/8024265_jdk/" target="_blank">8024265: Enable new build on AIX (jdk part)</a>" allows it to configure and completely build the staging repository on 
AIX 5.3 and 7.1 with the following command:</p><p><span style="font-family:courier new,monospace">configure 
--with-boot-jdk=&lt;jdk-image&gt; --with-jvm-variants=core 
--with-jvm-interpreter=cpp --with-cups-include=/opt/freeware/include --x-includes=/opt/freeware/include</span><br>
</p><div><br class="webkit-block-placeholder"></div><p>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.</p><p>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.<br>

</p><p>Thank you and best regards,</p>Volker<br><br><h4>src/share/bin/jli_util.h</h4>

<ul style="padding-left:1em"><li>
    Define <code>JLI_Lseek</code> on AIX.</li></ul>

<h4>src/share/lib/security/java.security-aix</h4>

<ul style="padding-left:1em"><li>
    Provide default <code>java.security-aix</code> for AIX.</li></ul>

<h4>src/share/native/sun/awt/medialib/mlib_sys.c</h4>

<ul style="padding-left:1em"><li>
    <code>malloc</code> always returns 8-byte aligned pointers on AIX as well.</li></ul>

<h4>src/share/native/sun/awt/medialib/mlib_types.h</h4>

<ul style="padding-left:1em"><li>
    Add AIX to the list of known platforms.</li></ul>

<h4>src/share/native/sun/font/layout/KernTable.cpp</h4>

<ul style="padding-left:1em"><li>
    Rename the macro <code>DEBUG</code> to <code>DEBUG_KERN_TABLE</code>
    because <code>DEBUG</code> is too common and may be defined in other
    headers as well as on the command line and <code>xlc</code> bails out on
    macro redefinitions with a different value.</li></ul>

<h4>src/share/native/sun/security/ec/impl/ecc_impl.h</h4>

<ul style="padding-left:1em"><li>
    Define required types and macros on AIX.</li></ul>

<h4>src/solaris/back/exec_md.c</h4>

<ul style="padding-left:1em"><li>
    AIX behaves like Linux in this case so check for it in the Linux branch.</li></ul>

<h4>src/solaris/bin/java_md_solinux.c,<br>
    src/solaris/bin/java_md_solinux.h</h4>

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

<h4>src/solaris/classes/sun/awt/fontconfigs/aix.fontconfig.properties</h4>

<ul style="padding-left:1em"><li>
    Provide basic <code>fontconfig.properties</code>for AIX.</li></ul>

<h4>src/solaris/classes/java/lang/UNIXProcess.java.aix,<br>
    src/solaris/classes/sun/tools/attach/AixAttachProvider.java,<br>
    src/solaris/classes/sun/tools/attach/AixVirtualMachine.java</h4>

<ul style="padding-left:1em"><li>
    Provide AIX specific Java versions, mostly based on the corresponding
    Linux versions.</li></ul>

<h4>src/solaris/demo/jvmti/hprof/hprof_md.c</h4>

<ul style="padding-left:1em"><li>
    Add AIX support. AIX mostly behaves like Linux, with the one exception
    that it has no <code>dladdr</code> functionality.</li><li>
    Implement <code>dladdr</code> functionality for AIX.</li></ul>

<h4>src/solaris/native/com/sun/management/UnixOperatingSystem_md.c</h4>

<ul style="padding-left:1em"><li>
    Adapt for AIX (i.e. use <code>libperfstat</code> on AIX to query OS memory).</li></ul>

<h4>src/solaris/native/common/jdk_util_md.h</h4>

<ul style="padding-left:1em"><li>
    Add AIX definitions of the <code>ISNANF</code> and <code>ISNAND</code> macros.</li></ul>

<h4>src/solaris/native/java/io/io_util_md.c</h4>

<ul style="padding-left:1em"><li>
    AIX behaves like Linux in this case so check for it in the Linux branch.</li></ul>

<h4>src/solaris/native/java/net/NetworkInterface.c</h4>

<ul style="padding-left:1em"><li>
    Add AIX support into the Linux branch because AIX mostly behaves like AIX
    for IPv4.</li><li>
    AIX needs a special function to enumerate IPv6 interfaces and to query the
    MAC address.</li></ul>

<h4>src/solaris/native/java/net/PlainSocketImpl.c</h4>

<ul style="padding-left:1em"><li>
    On AIX (like on Solaris) <code>setsockopt</code> will set errno
    to <code>EINVAL</code> if the socket is closed. The default error message
    is then confusing.</li></ul>

<h4>src/solaris/native/java/net/linux_close.c,<br>
    src/share/native/java/net/net_util.c</h4>

<ul style="padding-left:1em"><li>
    Also use the file and socket wrappers on AIX.</li><li>
    Add initialization of some previously uninitialized data structures.</li><li>
    On AIX we don't have <code>__attribute((constructor))</code> so we need to
    initialize manually (from <code>JNI_OnLoad()</code> in 'src/share/native/java/net/net_util.c'
</li></ul>

<h4>src/solaris/native/java/net/net_util_md.h</h4>

<ul style="padding-left:1em"><li>
    AIX needs the same workaround for I/O cancellation like Linux and MacOSX.</li></ul>

<h4>src/solaris/native/java/util/TimeZone_md.c</h4>

<ul style="padding-left:1em"><li>
    Currently on AIX the only way to get the platform time zone is to read it
    from the <code>TZ</code> environment variable.</li></ul>

<h4>src/solaris/native/sun/awt/awt_LoadLibrary.c</h4>

<ul style="padding-left:1em"><li>
    There's no <code>dladdr</code> on AIX, but we can use the implementation
    from the HotSpot in this case because <code>libjvm.so</code> will be
    always loaded before the AWT.</li></ul>

<h4>src/solaris/native/sun/awt/fontpath.c</h4>

<ul style="padding-left:1em"><li>
    Add AIX specific fontpath settings and library search paths for <code>libfontconfig.so</code>.</li></ul>

<h4>src/solaris/native/sun/java2d/x11/X11SurfaceData.c</h4>

<ul style="padding-left:1em"><li>
    Only define <code>MIN</code> and <code>MAX</code> if they're not already
    defined because xlc on AIX fails on macro redefinitions.</li></ul>

<h4>src/solaris/native/sun/java2d/x11/XRBackendNative.c</h4>

<ul style="padding-left:1em"><li>
    Handle AIX like Solaris.</li></ul>

<h4>src/solaris/native/sun/nio/ch/Net.c</h4>

<ul style="padding-left:1em"><li>
    Add AIX-specific includes and constant definitions.</li><li>
    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</li></ul>

<h4>src/solaris/native/sun/security/pkcs11/j2secmod_md.c</h4>

<ul style="padding-left:1em"><li>
    Use <code>RTLD_LAZY</code> instead of <code>RTLD_NOLOAD</code> on AIX.</li></ul>

<h4>src/solaris/native/sun/tools/attach/AixVirtualMachine.c</h4>

<ul style="padding-left:1em"><li>
    AIX version mostly derived from the corresponding Linux version.</li></ul>

</div>
<br></div></div>
</blockquote></div><br></div></body></html>