diff -urN jdk9u-jdk-9.0.4+12.orig/common/autoconf/flags.m4 jdk9u-jdk-9.0.4+12/common/autoconf/flags.m4 --- jdk9u-jdk-9.0.4+12.orig/common/autoconf/flags.m4 2017-12-20 00:25:20.000000000 +0100 +++ jdk9u-jdk-9.0.4+12/common/autoconf/flags.m4 2020-08-29 23:58:39.603994302 +0200 @@ -215,7 +215,10 @@ COMPILER_COMMAND_FILE_FLAG="-f" COMPILER_BINDCMD_FILE_FLAG="-bloadmap:" else - COMPILER_TARGET_BITS_FLAG="-m" + case $CC in + *x32-*) COMPILER_TARGET_BITS_FLAG="-mx";; + *) COMPILER_TARGET_BITS_FLAG="-m" + esac COMPILER_COMMAND_FILE_FLAG="@" COMPILER_BINDCMD_FILE_FLAG="" diff -urN jdk9u-jdk-9.0.4+12.orig/common/autoconf/platform.m4 jdk9u-jdk-9.0.4+12/common/autoconf/platform.m4 --- jdk9u-jdk-9.0.4+12.orig/common/autoconf/platform.m4 2017-12-20 00:25:20.000000000 +0100 +++ jdk9u-jdk-9.0.4+12/common/autoconf/platform.m4 2020-08-29 23:54:36.322300132 +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 + ;; + esac ;; i?86) VAR_CPU=x86 @@ -408,6 +418,14 @@ HOTSPOT_$1_CPU_DEFINE=IA32 elif test "x$OPENJDK_$1_CPU" = xx86_64; then HOTSPOT_$1_CPU_DEFINE=AMD64 + case "$target_os" in + *x32) + HOTSPOT_$1_CPU_DEFINE=X32 + ;; + *) + HOTSPOT_$1_CPU_DEFINE=AMD64 + ;; + esac elif test "x$OPENJDK_$1_CPU" = xsparcv9; then HOTSPOT_$1_CPU_DEFINE=SPARC elif test "x$OPENJDK_$1_CPU" = xaarch64; then diff -urN jdk9u-jdk-9.0.4+12.orig/hotspot/src/os/linux/vm/os_linux.cpp jdk9u-jdk-9.0.4+12/hotspot/src/os/linux/vm/os_linux.cpp --- jdk9u-jdk-9.0.4+12.orig/hotspot/src/os/linux/vm/os_linux.cpp 2020-08-29 23:50:35.510694441 +0200 +++ jdk9u-jdk-9.0.4+12/hotspot/src/os/linux/vm/os_linux.cpp 2020-08-29 23:55:07.785416515 +0200 @@ -1770,7 +1770,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 -urN jdk9u-jdk-9.0.4+12.orig/jdk/make/gensrc/GensrcX11Wrappers.gmk jdk9u-jdk-9.0.4+12/jdk/make/gensrc/GensrcX11Wrappers.gmk --- jdk9u-jdk-9.0.4+12.orig/jdk/make/gensrc/GensrcX11Wrappers.gmk 2018-01-13 03:07:38.000000000 +0100 +++ jdk9u-jdk-9.0.4+12/jdk/make/gensrc/GensrcX11Wrappers.gmk 2020-08-29 23:55:48.198473585 +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 SIZER_CFLAGS := \ -I$(JDK_TOPDIR)/src/java.base/share/native/include \ diff -urN jdk9u-jdk-9.0.4+12.orig/jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp jdk9u-jdk-9.0.4+12/jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp --- jdk9u-jdk-9.0.4+12.orig/jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp 2018-01-13 03:07:38.000000000 +0100 +++ jdk9u-jdk-9.0.4+12/jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp 2020-08-29 23:59:35.900292250 +0200 @@ -37,7 +37,7 @@ * Solaris compilers will define __sparcv9 or __x86_64 on 64bit compilations. */ #if !defined (_MSC_VER) && \ - (defined(_LP64) || defined(__sparcv9) || defined(__x86_64)) + (defined(_LP64) || defined(__sparcv9) || defined(__x86_64) && !defined(__ILP32__)) #define LONG_LONG_FORMAT "%ld" #define LONG_LONG_HEX_FORMAT "%lx" #else