8035881: PPC64: Fix AIX build in ppc-aix-port/stage after syncing 7133499 and 8028293 from jdk8u
Reviewed-by: alanb
diff --git a/make/lib/NioLibraries.gmk b/make/lib/NioLibraries.gmk
index 5c648c2..6c9c46a 100644
--- a/make/lib/NioLibraries.gmk
+++ b/make/lib/NioLibraries.gmk
@@ -120,7 +120,7 @@
   BUILD_LIBNIO_FILES += \
       AixPollPort.c \
       InheritedChannel.c \
-      NativeThread.c \
+      AixNativeThread.c \
       PollArrayWrapper.c \
       UnixAsynchronousServerSocketChannelImpl.c \
       UnixAsynchronousSocketChannelImpl.c \
diff --git a/src/aix/native/sun/nio/ch/AixNativeThread.c b/src/aix/native/sun/nio/ch/AixNativeThread.c
new file mode 100644
index 0000000..c0d5857
--- /dev/null
+++ b/src/aix/native/sun/nio/ch/AixNativeThread.c
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+#include "jni.h"
+#include "jni_util.h"
+#include "jvm.h"
+#include "jlong.h"
+#include "sun_nio_ch_NativeThread.h"
+
+#include <pthread.h>
+#include <sys/signal.h>
+
+/* Also defined in src/aix/native/java/net/aix_close.c */
+#define INTERRUPT_SIGNAL (SIGRTMAX - 1)
+
+static void
+nullHandler(int sig)
+{
+}
+
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl)
+{
+    /* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the
+     * handler previously installed by java/net/aix_close.c, but that's okay
+     * since neither handler actually does anything.  We install our own
+     * handler here simply out of paranoia; ultimately the two mechanisms
+     * should somehow be unified, perhaps within the VM.
+     */
+
+    sigset_t ss;
+    struct sigaction sa, osa;
+    sa.sa_handler = nullHandler;
+    sa.sa_flags = 0;
+    sigemptyset(&sa.sa_mask);
+    if (sigaction(INTERRUPT_SIGNAL, &sa, &osa) < 0)
+        JNU_ThrowIOExceptionWithLastError(env, "sigaction");
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl)
+{
+    return (long)pthread_self();
+}
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread)
+{
+    if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL))
+        JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
+}
diff --git a/src/share/lib/security/java.security-aix b/src/share/lib/security/java.security-aix
index fd49537..d31a1e3 100644
--- a/src/share/lib/security/java.security-aix
+++ b/src/share/lib/security/java.security-aix
@@ -182,6 +182,7 @@
                com.sun.istack.internal.,\
                com.sun.jmx.,\
                com.sun.media.sound.,\
+               com.sun.naming.internal.,\
                com.sun.proxy.,\
                com.sun.corba.se.,\
                com.sun.org.apache.bcel.internal.,\
@@ -205,7 +206,7 @@
                com.sun.org.glassfish.,\
                com.oracle.xmlns.internal.,\
                com.oracle.webservices.internal.,\
-	       oracle.jrockit.jfr.,\
+               oracle.jrockit.jfr.,\
                org.jcp.xml.dsig.internal.,\
                jdk.internal.,\
                jdk.nashorn.internal.,\
@@ -228,6 +229,7 @@
                    com.sun.istack.internal.,\
                    com.sun.jmx.,\
                    com.sun.media.sound.,\
+                   com.sun.naming.internal.,\
                    com.sun.proxy.,\
                    com.sun.corba.se.,\
                    com.sun.org.apache.bcel.internal.,\
@@ -251,7 +253,7 @@
                    com.sun.org.glassfish.,\
                    com.oracle.xmlns.internal.,\
                    com.oracle.webservices.internal.,\
-		   oracle.jrockit.jfr.,\
+                   oracle.jrockit.jfr.,\
                    org.jcp.xml.dsig.internal.,\
                    jdk.internal.,\
                    jdk.nashorn.internal.,\
@@ -494,4 +496,3 @@
 #
 # Example:
 #   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
diff --git a/src/solaris/classes/sun/net/PortConfig.java b/src/solaris/classes/sun/net/PortConfig.java
index 0f4ca74..1825b0b 100644
--- a/src/solaris/classes/sun/net/PortConfig.java
+++ b/src/solaris/classes/sun/net/PortConfig.java
@@ -55,6 +55,14 @@
                     } else if (os.contains("OS X")) {
                         defaultLower = 49152;
                         defaultUpper = 65535;
+                    } else if (os.startsWith("AIX")) {
+                        // The ephemeral port is OS version dependent on AIX:
+                        // http://publib.boulder.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.rsct315.admin/bl503_ephport.htm
+                        // However, on AIX 5.3 / 6.1 / 7.1 we always see the
+                        // settings below by using:
+                        // /usr/sbin/no -a | fgrep ephemeral
+                        defaultLower = 32768;
+                        defaultUpper = 65535;
                     } else {
                         throw new InternalError(
                             "sun.net.PortConfig: unknown OS");