RFR: 8244224: Implementation of JEP 381: Remove the Solaris and SPARC Ports (build system)
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Thu May 7 15:53:44 UTC 2020
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