[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