|
|
9fd28f |
# HG changeset patch
|
|
|
9fd28f |
# User sgehwolf
|
|
|
9fd28f |
# Date 1537885415 -7200
|
|
|
9fd28f |
# Tue Sep 25 16:23:35 2018 +0200
|
|
|
9fd28f |
# Node ID 5044428520866481f438bfd1375da75adbc89243
|
|
|
9fd28f |
# Parent a3df1579a8647b06559f41d345da7bea162b26e9
|
|
|
9fd28f |
8073139: PPC64: User-visible arch directory and os.arch value on ppc64le cause issues with Java tooling
|
|
|
9fd28f |
Reviewed-by: erikj, goetz, dholmes
|
|
|
9fd28f |
|
|
|
9fd28f |
diff --git a/make/defs.make b/make/defs.make
|
|
|
9fd28f |
--- openjdk/hotspot/make/defs.make
|
|
|
9fd28f |
+++ openjdk/hotspot/make/defs.make
|
|
|
9fd28f |
@@ -285,7 +285,7 @@ ifneq ($(OSNAME),windows)
|
|
|
9fd28f |
|
|
|
9fd28f |
# Use uname output for SRCARCH, but deal with platform differences. If ARCH
|
|
|
9fd28f |
# is not explicitly listed below, it is treated as x86.
|
|
|
9fd28f |
- SRCARCH ?= $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64 zero aarch64,$(ARCH)))
|
|
|
9fd28f |
+ SRCARCH ?= $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64 ppc64le zero aarch64,$(ARCH)))
|
|
|
9fd28f |
ARCH/ = x86
|
|
|
9fd28f |
ARCH/sparc = sparc
|
|
|
9fd28f |
ARCH/sparc64= sparc
|
|
|
9fd28f |
@@ -293,6 +293,7 @@ ifneq ($(OSNAME),windows)
|
|
|
9fd28f |
ARCH/amd64 = x86
|
|
|
9fd28f |
ARCH/x86_64 = x86
|
|
|
9fd28f |
ARCH/ppc64 = ppc
|
|
|
9fd28f |
+ ARCH/ppc64le= ppc
|
|
|
9fd28f |
ARCH/ppc = ppc
|
|
|
9fd28f |
ARCH/zero = zero
|
|
|
9fd28f |
ARCH/aarch64 = aarch64
|
|
|
9fd28f |
@@ -316,7 +317,12 @@
|
|
|
9fd28f |
endif
|
|
|
9fd28f |
endif
|
|
|
9fd28f |
|
|
|
9fd28f |
- # LIBARCH is 1:1 mapping from BUILDARCH
|
|
|
9fd28f |
+ # LIBARCH is 1:1 mapping from BUILDARCH, except for ARCH=ppc64le
|
|
|
9fd28f |
+ ifeq ($(ARCH),ppc64le)
|
|
|
9fd28f |
+ LIBARCH ?= ppc64le
|
|
|
9fd28f |
+ else
|
|
|
9fd28f |
+ LIBARCH ?= $(LIBARCH/$(BUILDARCH))
|
|
|
9fd28f |
+ endif
|
|
|
9fd28f |
LIBARCH ?= $(LIBARCH/$(BUILDARCH))
|
|
|
9fd28f |
LIBARCH/i486 = i386
|
|
|
9fd28f |
LIBARCH/amd64 = amd64
|
|
|
9fd28f |
diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
|
|
|
9fd28f |
--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
|
|
|
9fd28f |
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
|
|
|
9fd28f |
@@ -1956,7 +1956,7 @@
|
|
|
9fd28f |
{EM_SPARCV9, EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"},
|
|
|
9fd28f |
{EM_PPC, EM_PPC, ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"},
|
|
|
9fd28f |
#if defined(VM_LITTLE_ENDIAN)
|
|
|
9fd28f |
- {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64"},
|
|
|
9fd28f |
+ {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64 LE"},
|
|
|
9fd28f |
#else
|
|
|
9fd28f |
{EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"},
|
|
|
9fd28f |
#endif
|
|
|
9fd28f |
diff --git a/src/share/tools/hsdis/Makefile b/src/share/tools/hsdis/Makefile
|
|
|
9fd28f |
--- openjdk/hotspot/src/share/tools/hsdis/Makefile
|
|
|
9fd28f |
+++ openjdk/hotspot/src/share/tools/hsdis/Makefile
|
|
|
9fd28f |
@@ -97,6 +97,7 @@
|
|
|
9fd28f |
CFLAGS/sparcv9 += -m64
|
|
|
9fd28f |
CFLAGS/amd64 += -m64
|
|
|
9fd28f |
CFLAGS/ppc64 += -m64
|
|
|
9fd28f |
+CFLAGS/ppc64le += -m64 -DABI_ELFv2
|
|
|
9fd28f |
else
|
|
|
9fd28f |
ARCH=$(ARCH1:amd64=i386)
|
|
|
9fd28f |
CFLAGS/i386 += -m32
|
|
|
9fd28f |
diff --git a/src/share/tools/hsdis/hsdis-demo.c b/src/share/tools/hsdis/hsdis-demo.c
|
|
|
9fd28f |
--- openjdk/hotspot/src/share/tools/hsdis/hsdis-demo.c
|
|
|
9fd28f |
+++ openjdk/hotspot/src/share/tools/hsdis/hsdis-demo.c
|
|
|
9fd28f |
@@ -88,7 +88,7 @@
|
|
|
9fd28f |
printf("...And now for something completely different:\n");
|
|
|
9fd28f |
void *start = (void*) &mai;;
|
|
|
9fd28f |
void *end = (void*) &end_of_file;
|
|
|
9fd28f |
-#if defined(__ia64) || defined(__powerpc__)
|
|
|
9fd28f |
+#if defined(__ia64) || (defined(__powerpc__) && !defined(ABI_ELFv2))
|
|
|
9fd28f |
/* On IA64 and PPC function pointers are pointers to function descriptors */
|
|
|
9fd28f |
start = *((void**)start);
|
|
|
9fd28f |
end = *((void**)end);
|
|
|
9fd28f |
diff --git a/src/share/tools/hsdis/hsdis.c b/src/share/tools/hsdis/hsdis.c
|
|
|
9fd28f |
--- openjdk/hotspot/src/share/tools/hsdis/hsdis.c
|
|
|
9fd28f |
+++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c
|
|
|
9fd28f |
@@ -461,7 +461,7 @@ static const char* native_arch_name() {
|
|
|
9fd28f |
#ifdef LIBARCH_sparcv9
|
|
|
9fd28f |
res = "sparc:v9b";
|
|
|
9fd28f |
#endif
|
|
|
9fd28f |
-#ifdef LIBARCH_ppc64
|
|
|
9fd28f |
+#if defined(LIBARCH_ppc64) || defined(LIBARCH_ppc64le)
|
|
|
9fd28f |
res = "powerpc:common64";
|
|
|
9fd28f |
#endif
|
|
|
9fd28f |
#else
|
|
|
9fd28f |
diff --git a/src/share/vm/runtime/vm_version.cpp b/src/share/vm/runtime/vm_version.cpp
|
|
|
9fd28f |
--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
|
|
|
9fd28f |
+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
|
|
|
9fd28f |
@@ -187,11 +187,16 @@ const char* Abstract_VM_Version::jre_release_version() {
|
|
|
9fd28f |
#ifndef CPU
|
|
|
9fd28f |
#ifdef ZERO
|
|
|
9fd28f |
#define CPU ZERO_LIBARCH
|
|
|
9fd28f |
+#elif defined(PPC64)
|
|
|
9fd28f |
+#if defined(VM_LITTLE_ENDIAN)
|
|
|
9fd28f |
+#define CPU "ppc64le"
|
|
|
9fd28f |
+#else
|
|
|
9fd28f |
+#define CPU "ppc64"
|
|
|
9fd28f |
+#endif
|
|
|
9fd28f |
#else
|
|
|
9fd28f |
#define CPU IA32_ONLY("x86") \
|
|
|
9fd28f |
IA64_ONLY("ia64") \
|
|
|
9fd28f |
AMD64_ONLY("amd64") \
|
|
|
9fd28f |
- PPC64_ONLY("ppc64") \
|
|
|
9fd28f |
AARCH64_ONLY("aarch64") \
|
|
|
9fd28f |
SPARC_ONLY("sparc")
|
|
|
9fd28f |
#endif // ZERO
|
|
|
9fd28f |
diff --git a/test/test_env.sh b/test/test_env.sh
|
|
|
9fd28f |
--- openjdk/hotspot/test/test_env.sh
|
|
|
9fd28f |
+++ openjdk/hotspot/test/test_env.sh
|
|
|
9fd28f |
@@ -185,6 +185,15 @@
|
|
|
9fd28f |
if [ $? = 0 ]
|
|
|
9fd28f |
then
|
|
|
9fd28f |
VM_CPU="ppc"
|
|
|
9fd28f |
+ if [ $VM_BITS = "64" ]
|
|
|
9fd28f |
+ then
|
|
|
9fd28f |
+ VM_CPU="ppc64"
|
|
|
9fd28f |
+ grep "ppc64le" vm_version.out > ${NULL}
|
|
|
9fd28f |
+ if [ $? = 0 ]
|
|
|
9fd28f |
+ then
|
|
|
9fd28f |
+ VM_CPU="ppc64le"
|
|
|
9fd28f |
+ fi
|
|
|
9fd28f |
+ fi
|
|
|
9fd28f |
fi
|
|
|
9fd28f |
grep "ia64" vm_version.out > ${NULL}
|
|
|
9fd28f |
if [ $? = 0 ]
|