-diff -durN jdk8u-jdk8u66-b02.orig/common/autoconf/platform.m4 jdk8u-jdk8u66-b02/common/autoconf/platform.m4
---- jdk8u-jdk8u66-b02.orig/common/autoconf/platform.m4 2015-07-17 09:35:23.000000000 +0200
-+++ jdk8u-jdk8u66-b02/common/autoconf/platform.m4 2015-09-21 13:18:18.439165925 +0200
-@@ -31,10 +31,20 @@
- # First argument is the cpu name from the trip/quad
- case "$1" in
- x86_64)
-- VAR_CPU=x86_64
-- VAR_CPU_ARCH=x86
-- VAR_CPU_BITS=64
-- VAR_CPU_ENDIAN=little
-+ case "$target_os" in
-+ *x32)
-+ VAR_CPU=x32
-+ VAR_CPU_ARCH=x86
-+ VAR_CPU_BITS=32
-+ VAR_CPU_ENDIAN=little
-+ ;;
-+ *)
-+ VAR_CPU=x86_64
-+ VAR_CPU_ARCH=x86
-+ VAR_CPU_BITS=64
-+ VAR_CPU_ENDIAN=little
-+ ;;
+--- a/src/hotspot/os/linux/os_linux.cpp
++++ b/src/hotspot/os/linux/os_linux.cpp
+@@ -1847,7 +1847,7 @@ void * os::dll_load(const char *filename
+
+ #if (defined IA32)
+ static Elf32_Half running_arch_code=EM_386;
+-#elif (defined AMD64)
++#elif (defined AMD64) || defined(X32)
+ static Elf32_Half running_arch_code=EM_X86_64;
+ #elif (defined IA64)
+ static Elf32_Half running_arch_code=EM_IA_64;
+--- a/make/autoconf/platform.m4
++++ b/make/autoconf/platform.m4
+@@ -35,6 +35,10 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
++ case "$host" in *x32)
++ VAR_CPU=x32
++ VAR_CPU_BITS=32
+ esac
;;
i?86)
VAR_CPU=x86
-@@ -375,7 +385,16 @@
- ppc64) ZERO_ARCHDEF=PPC64 ;;
- s390*) ZERO_ARCHDEF=S390 ;;
- sparc*) ZERO_ARCHDEF=SPARC ;;
-- x86_64*) ZERO_ARCHDEF=AMD64 ;;
-+ x86_64*)
-+ case "$target_os" in
-+ *x32)
-+ ZERO_ARCHDEF=X32
-+ ;;
-+ *)
-+ ZERO_ARCHDEF=AMD64
-+ ;;
-+ esac
-+ ;;
- x86) ZERO_ARCHDEF=IA32 ;;
- *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
- esac
-diff -durN jdk8u-jdk8u66-b02.orig/hotspot/src/os/linux/vm/os_linux.cpp jdk8u-jdk8u66-b02/hotspot/src/os/linux/vm/os_linux.cpp
---- jdk8u-jdk8u66-b02.orig/hotspot/src/os/linux/vm/os_linux.cpp 2015-09-21 13:05:51.883678088 +0200
-+++ jdk8u-jdk8u66-b02/hotspot/src/os/linux/vm/os_linux.cpp 2015-09-21 13:12:58.665870862 +0200
-@@ -1902,7 +1902,7 @@
-
- #if (defined IA32)
- static Elf32_Half running_arch_code=EM_386;
-- #elif (defined AMD64)
-+ #elif (defined AMD64) || (defined X32)
- static Elf32_Half running_arch_code=EM_X86_64;
- #elif (defined IA64)
- static Elf32_Half running_arch_code=EM_IA_64;
-diff -durN jdk8u-jdk8u66-b02.orig/jdk/make/gensrc/GensrcX11Wrappers.gmk jdk8u-jdk8u66-b02/jdk/make/gensrc/GensrcX11Wrappers.gmk
---- jdk8u-jdk8u66-b02.orig/jdk/make/gensrc/GensrcX11Wrappers.gmk 2015-07-23 16:17:35.000000000 +0200
-+++ jdk8u-jdk8u66-b02/jdk/make/gensrc/GensrcX11Wrappers.gmk 2015-09-21 13:13:00.339291213 +0200
-@@ -87,9 +87,11 @@
- $(TOOL_WRAPPERGENERATOR) $(@D) $(GENSRC_SIZER_DIR)/xlibtypes.txt "sizer" $*
-
- # use -m32/-m64 only if the compiler supports it
-+ ifneq ($(OPENJDK_TARGET_CPU),x32)
- ifeq ($(COMPILER_SUPPORTS_TARGET_BITS_FLAG), true)
- MEMORY_MODEL_FLAG="$(COMPILER_TARGET_BITS_FLAG)$*"
- endif
-+ endif
-
- # Compile the C code into an executable.
- $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe: $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c
-diff -durN jdk8u-jdk8u66-b02.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c jdk8u-jdk8u66-b02/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
---- jdk8u-jdk8u66-b02.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2015-07-23 16:17:35.000000000 +0200
-+++ jdk8u-jdk8u66-b02/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2015-09-21 13:13:00.335957707 +0200
-@@ -35,7 +35,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #include <sys/utsname.h>
- #include <netinet/ip.h>
-
-diff -durN jdk8u-jdk8u66-b02.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c jdk8u-jdk8u66-b02/jdk/src/solaris/native/java/net/PlainSocketImpl.c
---- jdk8u-jdk8u66-b02.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2015-07-23 16:17:35.000000000 +0200
-+++ jdk8u-jdk8u66-b02/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2015-09-21 13:13:00.335957707 +0200
-@@ -43,7 +43,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #endif
-
- #include "jvm.h"
-
---- jdk8u-jdk8u66-b02.orig/common/autoconf/toolchain.m4 2015-07-17 09:35:23.000000000 +0200
-+++ jdk8u-jdk8u66-b02/common/autoconf/toolchain.m4 2015-09-21 16:00:30.328673989 +0200
-@@ -361,6 +361,7 @@
- # Option used to tell the compiler whether to create 32- or 64-bit executables
- # Notice that CC contains the full compiler path at this point.
- case $CC in
-+ *x32-*) COMPILER_TARGET_BITS_FLAG="-mx";;
- *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";;
- *) COMPILER_TARGET_BITS_FLAG="-m";;
- esac
-
---- jdk8u-jdk8u66-b02.orig/hotspot/src/cpu/zero/vm/frame_zero.cpp 2015-07-22 19:12:56.000000000 +0200
-+++ jdk8u-jdk8u66-b02/hotspot/src/cpu/zero/vm/frame_zero.cpp 2015-09-21 15:28:59.680331993 +0200
-@@ -216,7 +216,7 @@
- valuebuf[buflen - 1] = '\0';
-
- // Print the result
-- st->print_cr(" " PTR_FORMAT ": %-21s = %s", addr, fieldbuf, valuebuf);
-+ st->print_cr(" " PTR_FORMAT ": %-21s = %s", (uintptr_t)addr, fieldbuf, valuebuf);
- }
- }
-
+@@ -455,6 +459,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HEL
+ HOTSPOT_$1_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_$1_CPU" = xx86_64; then
+ HOTSPOT_$1_CPU_DEFINE=AMD64
++ elif test "x$OPENJDK_$1_CPU" = xx32; then
++ HOTSPOT_$1_CPU_DEFINE=X32
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ HOTSPOT_$1_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_$1_CPU" = xaarch64; then
+--- a/make/autoconf/flags.m4
++++ b/make/autoconf/flags.m4
+@@ -254,6 +254,7 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
+ test "x$OPENJDK_TARGET_CPU_ARCH" = xppc; then
+ MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
+ fi
++ case "$host" in *x32) MACHINE_FLAG=;; esac
+ fi
+
+ # FIXME: global flags are not used yet...
+@@ -328,11 +329,8 @@ AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL]
+ AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
+ AC_SUBST(COMPILER_BINDCMD_FILE_FLAG)
+
+- # Check that the compiler supports -mX (or -qX on AIX) flags
+- # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
+- FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
+- IF_TRUE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
+- IF_FALSE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
++ # Don't run the -mX check and set this always to false, or else x32 gets passed -m32
++ COMPILER_SUPPORTS_TARGET_BITS_FLAG=false
+ AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then