[patch] add zero support for x86_64-linux-gnux32 target
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Fri Aug 31 08:43:45 UTC 2018
The necroposter strikes back! :-)
I'm currently trying to fix or close all long standing bugs on
infrastructure/build, and now the time has come to JDK-8165440.
This patch had a bit of bad timing when it was posted, since it could
not be accepted into mainline due to feature freeze, and there were no
other repo to accept it.
I adjusted the patch to the current code base (which means that most
parts of it were not needed). What remains are two files. However, I
can't test if this works. Matthias, can you verify that this is a
working patch for jdk/jdk for the gnux32 target? If so, I'll sponsor
this patch.
diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
--- a/make/autoconf/platform.m4
+++ b/make/autoconf/platform.m4
@@ -35,6 +35,10 @@
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
@@ -455,6 +459,8 @@
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
diff --git a/src/hotspot/os/linux/os_linux.cpp
b/src/hotspot/os/linux/os_linux.cpp
--- a/src/hotspot/os/linux/os_linux.cpp
+++ b/src/hotspot/os/linux/os_linux.cpp
@@ -1742,7 +1742,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;
/Magnus
On 2016-09-06 01:01, David Holmes wrote:
> Hi Severin, Matthias,
>
> On 5/09/2016 10:16 PM, Severin Gehwolf wrote:
>> On Mon, 2016-09-05 at 14:03 +0200, Matthias Klose wrote:
>>> The attached patch adds support for building zero for the x86_64-
>>> linux-gnux32
>>> target, having changes in the build system, hotspot and jdk.
>>>
>>> - the build system currently only derives the target from
>>> the cpu in PLATFORM_EXTRACT_VARS_FROM_CPU; that is not enough
>>> for the new target, which only differs by the ending of the
>>> triplet. However the $host macro should be available anywhere.
>>>
>>> - the hotspot part just handles the new "cpu"
>>>
>>> - GensrcX11Wrappers.gmk assumes that there is a black/white
>>> decision about -m32/-m64. The patch works around it. However
>>> the real patch should be to get these flags from the build
>>> system, and not hardcode itself.
>>>
>>> - the sysctl system call is unsupported in the x32 kernel, and
>>> just the include leads to a build error. From my point of view
>>> the header is not needed. I had successful builds on all other
>>> targets without including it. If you want to keep the include,
>>> then it should be guarded with
>>> #if !(defined(_ILP32) && defined(__x86_64__))
>>>
>>> Matthias
>>
>> I've filed this bug for this:
>> https://bugs.openjdk.java.net/browse/JDK-8165440
>
> Please note that as a P4 issue this can not be fixed given we have hit
> RDP1:
>
> http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-August/004777.html
>
> Further this is filed as "bug" but seems to clearly be an enhancement,
> so you would need approval for it to come in post-Feature-Complete.
>
> Please consider if this is something that must be fixed for 9 or can
> be deferred. Otherwise you will need to follow additional approval
> processes.
>
> Sorry.
>
> David (just the messenger!)
>
>> Unfortunately, I have no way of testing it.
>>
>> Cheers,
>> Severin
>>
More information about the build-dev
mailing list