RFR: 8244224: Implementation of JEP 381: Remove the Solaris and SPARC Ports (build system)

Mikael Vidstedt mikael.vidstedt at oracle.com
Fri May 8 03:58:06 UTC 2020


Good catch on the deprecation argument! Updated webrev here:

webrev: http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.02/build/open/webrev/ <http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.02/build/open/webrev/>
incremental: http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.02/build.incr/open/webrev/ <http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.02/build.incr/open/webrev/>

I did not include the zero related part of the patch to avoid conflating things - I’ll wait for Adrian to provide a complete patch instead.

Cheers,
Mikael

> On May 7, 2020, at 8:53 AM, Magnus Ihse Bursie <magnus.ihse.bursie at oracle.com> wrote:
> 
> 
> 
> On 2020-05-07 13:18, John Paul Adrian Glaubitz wrote:
>> Hi Mikael!
>> 
>> On 5/7/20 2:47 AM, Mikael Vidstedt wrote:
>>> New webrev available here:
>>> 
>>> webrev: http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.01/build/open/webrev/ <http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.01/build/open/webrev/>
>>> incremental: http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.01/build.incr/open/webrev/ <http://cr.openjdk.java.net/~mikael/webrevs/8244224/webrev.01/build.incr/open/webrev/>
>>> 
>>> I believe I have addressed all the review comments apart from:
>>> 
>>> * GNM - Magnus to file a follow-up RFE
>>> 
>>> * Zero - Waiting for somebody (Adrian?) to provide more information about what needs to be preserved
>> I haven't had the time to look at this yet due to $DAYJOB at SUSE, but I should have time tomorrow
>> as there is a public holiday tomorrow.
>> 
>> Also, Magnus should get to a SPARC-T5 running Debian unstable within the next hours so he
>> will be able to perform build tests as well and provide feedback.
> That was quite painless, actually. Two files needed partial restoration, then everything worked fine.
> 
> Mikael, if you apply this patch on top of your patchset, it should back out those of your changes that broke linux-sparc-zero. Also, I missed that you removed a configure option without deprecating it, something we have as a policy not to do. This patch also fixes that.
> 
> diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
> --- a/make/autoconf/platform.m4
> +++ b/make/autoconf/platform.m4
> @@ -150,6 +150,18 @@
>        VAR_CPU_BITS=32
>        VAR_CPU_ENDIAN=little
>        ;;
> +    sparc)
> +      VAR_CPU=sparc
> +      VAR_CPU_ARCH=sparc
> +      VAR_CPU_BITS=32
> +      VAR_CPU_ENDIAN=big
> +      ;;
> +    sparcv9|sparc64)
> +      VAR_CPU=sparcv9
> +      VAR_CPU_ARCH=sparc
> +      VAR_CPU_BITS=64
> +      VAR_CPU_ENDIAN=big
> +      ;;
>      *)
>        AC_MSG_ERROR([unsupported cpu $1])
>        ;;
> @@ -308,8 +320,10 @@
>        OPENJDK_TARGET_CPU_BITS=32
>        if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
>          OPENJDK_TARGET_CPU=x86
> +      elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
> +        OPENJDK_TARGET_CPU=sparc
>        else
> -        AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64])
> +        AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9])
>        fi
>      elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
>        AC_MSG_ERROR([It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead.])
> @@ -422,6 +436,8 @@
>    HOTSPOT_$1_CPU=${OPENJDK_$1_CPU}
>    if test "x$OPENJDK_$1_CPU" = xx86; then
>      HOTSPOT_$1_CPU=x86_32
> +  elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
> +    HOTSPOT_$1_CPU=sparc
>    elif test "x$OPENJDK_$1_CPU" = xppc64; then
>      HOTSPOT_$1_CPU=ppc_64
>    elif test "x$OPENJDK_$1_CPU" = xppc64le; then
> @@ -440,6 +456,8 @@
>      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
>      HOTSPOT_$1_CPU_DEFINE=AARCH64
>    elif test "x$OPENJDK_$1_CPU" = xppc64; then
> @@ -448,6 +466,8 @@
>      HOTSPOT_$1_CPU_DEFINE=PPC64
> 
>    # The cpu defines below are for zero, we don't support them directly.
> +  elif test "x$OPENJDK_$1_CPU" = xsparc; then
> +    HOTSPOT_$1_CPU_DEFINE=SPARC
>    elif test "x$OPENJDK_$1_CPU" = xppc; then
>      HOTSPOT_$1_CPU_DEFINE=PPC32
>    elif test "x$OPENJDK_$1_CPU" = xs390; then
> @@ -526,6 +546,9 @@
>    PLATFORM_SET_MODULE_TARGET_OS_VALUES
>    PLATFORM_SET_RELEASE_FILE_OS_VALUES
>    PLATFORM_SETUP_LEGACY_VARS
> +
> +  # Deprecated in JDK 15
> +  UTIL_DEPRECATED_ARG_ENABLE(deprecated-ports)
>  ])
> 
>  AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
> 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
> @@ -318,7 +318,7 @@
> 
> 
>  #ifndef SYS_gettid
> -// i386: 224, ia64: 1105, amd64: 186
> +// i386: 224, ia64: 1105, amd64: 186, sparc 143
>    #ifdef __ia64__
>      #define SYS_gettid 1105
>    #else
> @@ -328,7 +328,11 @@
>        #ifdef __amd64__
>          #define SYS_gettid 186
>        #else
> -        #error define gettid for the arch
> +        #ifdef __sparc__
> +          #define SYS_gettid 143
> +        #else
> +          #error define gettid for the arch
> +        #endif
>        #endif
>      #endif
>    #endif
> @@ -404,7 +408,7 @@
>    //        ...
>    //        7: The default directories, normally /lib and /usr/lib.
>  #ifndef OVERRIDE_LIBPATH
> -  #if defined(AMD64) || defined(PPC64) || defined(S390)
> +  #if defined(AMD64) || (defined(_LP64) && defined(SPARC)) || defined(PPC64) || defined(S390)
>      #define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
>    #else
>      #define DEFAULT_LIBPATH "/lib:/usr/lib"
> @@ -1854,6 +1858,9 @@
>      {EM_486,         EM_386,     ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
>      {EM_IA_64,       EM_IA_64,   ELFCLASS64, ELFDATA2LSB, (char*)"IA 64"},
>      {EM_X86_64,      EM_X86_64,  ELFCLASS64, ELFDATA2LSB, (char*)"AMD 64"},
> +    {EM_SPARC,       EM_SPARC,   ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"},
> +    {EM_SPARC32PLUS, EM_SPARC,   ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"},
> +    {EM_SPARCV9,     EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"},
>      {EM_PPC,         EM_PPC,     ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"},
>  #if defined(VM_LITTLE_ENDIAN)
>      {EM_PPC64,       EM_PPC64,   ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64 LE"},
> @@ -1880,6 +1887,10 @@
>    static  Elf32_Half running_arch_code=EM_X86_64;
>  #elif  (defined IA64)
>    static  Elf32_Half running_arch_code=EM_IA_64;
> +#elif  (defined __sparc) && (defined _LP64)
> +  static  Elf32_Half running_arch_code=EM_SPARCV9;
> +#elif  (defined __sparc) && (!defined _LP64)
> +  static  Elf32_Half running_arch_code=EM_SPARC;
>  #elif  (defined __powerpc64__)
>    static  Elf32_Half running_arch_code=EM_PPC64;
>  #elif  (defined __powerpc__)
> @@ -1906,7 +1917,7 @@
>    static  Elf32_Half running_arch_code=EM_RISCV;
>  #else
>      #error Method os::dll_load requires that one of following is defined:\
> -        AARCH64, ALPHA, ARM, AMD64, IA32, IA64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH
> +        AARCH64, ALPHA, ARM, AMD64, IA32, IA64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc
>  #endif
> 
>    // Identify compatibility class for VM's architecture and library's architecture
> @@ -2564,6 +2575,8 @@
>  const char* search_string = "cpu";
>  #elif defined(S390)
>  const char* search_string = "machine =";
> +#elif defined(SPARC)
> +const char* search_string = "cpu";
>  #else
>  const char* search_string = "Processor";
>  #endif
> @@ -2615,6 +2628,8 @@
>    strncpy(cpuinfo, "PPC64", length);
>  #elif defined(S390)
>    strncpy(cpuinfo, "S390", length);
> +#elif defined(SPARC)
> +  strncpy(cpuinfo, "sparcv9", length);
>  #elif defined(ZERO_LIBARCH)
>    strncpy(cpuinfo, ZERO_LIBARCH, length);
>  #else
> 
> I ran some initial tier1 testing, as a sanity check that we're up and running, at least. There might be more subtle issues with the hotspot code, though. I'll leave it to Adrian to sort that out, if that is the case.
> 
> /Magnus
> 
>> 
>> Sorry for not being able to reply earlier.
>> 
>> Adrian




More information about the build-dev mailing list