6891677: java/build integrate zero assembler JDK changes
Summary: Build changes for the Zero assembler port
Reviewed-by: ohair, tbell
--- a/jdk/make/common/Defs-linux.gmk Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/common/Defs-linux.gmk Thu Oct 15 13:27:59 2009 +0100
@@ -116,8 +116,16 @@
LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
-CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
-LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
+ifeq ($(ZERO_BUILD), true)
+ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
+ ifeq ($(ZERO_ENDIANNESS), little)
+ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
+ endif
+ LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
+else
+ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
+endif
# If this is a --hash-style=gnu system, use --hash-style=both
# The gnu .hash section won't work on some Linux systems like SuSE 10.
@@ -217,7 +225,7 @@
EXTRA_LIBS += -lc
-LDFLAGS_DEFS_OPTION = -z defs
+LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
#
--- a/jdk/make/common/Program.gmk Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/common/Program.gmk Thu Oct 15 13:27:59 2009 +0100
@@ -85,7 +85,7 @@
endif
endif
ifeq ($(PLATFORM), linux)
- LDFLAGS += -z origin
+ LDFLAGS += -Wl,-z -Wl,origin
LDFLAGS += -Wl,--allow-shlib-undefined
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
@@ -279,8 +279,14 @@
#
# How to install jvm.cfg.
-#
-$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(ARCH)/jvm.cfg
+#
+ifeq ($(ZERO_BUILD), true)
+JVMCFG_ARCH = zero
+else
+JVMCFG_ARCH = $(ARCH)
+endif
+
+$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg
$(install-file)
#
--- a/jdk/make/java/instrument/Makefile Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/java/instrument/Makefile Thu Oct 15 13:27:59 2009 +0100
@@ -109,7 +109,7 @@
LDFLAGS += -R \$$ORIGIN/jli
endif
ifeq ($(PLATFORM), linux)
- LDFLAGS += -z origin
+ LDFLAGS += -Wl,-z -Wl,origin
LDFLAGS += -Wl,--allow-shlib-undefined
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
endif
--- a/jdk/make/java/jli/Makefile Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/java/jli/Makefile Thu Oct 15 13:27:59 2009 +0100
@@ -48,11 +48,15 @@
LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
+ifeq ($(ZERO_BUILD), true)
+ERGO_FAMILY=zero
+else
ifeq ($(ARCH_FAMILY), amd64)
ERGO_FAMILY=i586
else
ERGO_FAMILY=$(ARCH_FAMILY)
endif
+endif
#
--- a/jdk/make/java/redist/Makefile Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/java/redist/Makefile Thu Oct 15 13:27:59 2009 +0100
@@ -94,11 +94,13 @@
endif
endif # INCLUDE_SA
-# Hotspot client is only available on 32-bit builds
+# Hotspot client is only available on 32-bit non-Zero builds
+ifneq ($(ZERO_BUILD), true)
ifeq ($(ARCH_DATA_MODEL), 32)
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
endif
+endif
ifeq ($(PLATFORM), windows)
# Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Windows
@@ -171,6 +173,7 @@
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
endif
+ifneq ($(ZERO_BUILD), true)
ifeq ($(ARCH_DATA_MODEL), 32)
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
@@ -201,6 +204,8 @@
endif # 32bit
+endif # ZERO_BUILD
+
# NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows
endif # PLATFORM
--- a/jdk/make/javax/sound/SoundDefs.gmk Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/javax/sound/SoundDefs.gmk Thu Oct 15 13:27:59 2009 +0100
@@ -55,21 +55,25 @@
endif # PLATFORM solaris
-ifeq ($(ARCH), i586)
- CPPFLAGS += -DX_ARCH=X_I586
-endif # ARCH i586
-
-ifeq ($(ARCH), sparc)
- CPPFLAGS += -DX_ARCH=X_SPARC
-endif # ARCH sparc
+ifeq ($(ZERO_BUILD), true)
+ CPPFLAGS += -DX_ARCH=X_ZERO
+else
+ ifeq ($(ARCH), i586)
+ CPPFLAGS += -DX_ARCH=X_I586
+ endif # ARCH i586
-ifeq ($(ARCH), sparcv9)
- CPPFLAGS += -DX_ARCH=X_SPARCV9
-endif # ARCH sparcv9
+ ifeq ($(ARCH), sparc)
+ CPPFLAGS += -DX_ARCH=X_SPARC
+ endif # ARCH sparc
-ifeq ($(ARCH), amd64)
- CPPFLAGS += -DX_ARCH=X_AMD64
-endif # ARCH amd64
+ ifeq ($(ARCH), sparcv9)
+ CPPFLAGS += -DX_ARCH=X_SPARCV9
+ endif # ARCH sparcv9
+
+ ifeq ($(ARCH), amd64)
+ CPPFLAGS += -DX_ARCH=X_AMD64
+ endif # ARCH amd64
+endif
# files needed for MIDI i/o
--- a/jdk/make/jdk_generic_profile.sh Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/make/jdk_generic_profile.sh Thu Oct 15 13:27:59 2009 +0100
@@ -339,3 +339,82 @@
PATH="${path4sdk}"
export PATH
+# Export variables required for Zero
+if [ "${ZERO_BUILD}" = true ] ; then
+ # ZERO_LIBARCH is the name of the architecture-specific
+ # subdirectory under $JAVA_HOME/jre/lib
+ arch=$(uname -m)
+ case "${arch}" in
+ x86_64) ZERO_LIBARCH=amd64 ;;
+ i?86) ZERO_LIBARCH=i386 ;;
+ sparc64) ZERO_LIBARCH=sparcv9 ;;
+ arm*) ZERO_LIBARCH=arm ;;
+ *) ZERO_LIBARCH="$(arch)"
+ esac
+ export ZERO_LIBARCH
+
+ # ARCH_DATA_MODEL is the number of bits in a pointer
+ case "${ZERO_LIBARCH}" in
+ i386|ppc|s390|sparc|arm)
+ ARCH_DATA_MODEL=32
+ ;;
+ amd64|ppc64|s390x|sparcv9|ia64|alpha)
+ ARCH_DATA_MODEL=64
+ ;;
+ *)
+ echo "ERROR: Unable to determine ARCH_DATA_MODEL for ${ZERO_LIBARCH}"
+ exit 1
+ esac
+ export ARCH_DATA_MODEL
+
+ # ZERO_ENDIANNESS is the endianness of the processor
+ case "${ZERO_LIBARCH}" in
+ i386|amd64|ia64)
+ ZERO_ENDIANNESS=little
+ ;;
+ ppc*|s390*|sparc*|alpha)
+ ZERO_ENDIANNESS=big
+ ;;
+ *)
+ echo "ERROR: Unable to determine ZERO_ENDIANNESS for ${ZERO_LIBARCH}"
+ exit 1
+ esac
+ export ZERO_ENDIANNESS
+
+ # ZERO_ARCHDEF is used to enable architecture-specific code
+ case "${ZERO_LIBARCH}" in
+ i386) ZERO_ARCHDEF=IA32 ;;
+ ppc*) ZERO_ARCHDEF=PPC ;;
+ s390*) ZERO_ARCHDEF=S390 ;;
+ sparc*) ZERO_ARCHDEF=SPARC ;;
+ *) ZERO_ARCHDEF=$(echo "${ZERO_LIBARCH}" | tr a-z A-Z)
+ esac
+ export ZERO_ARCHDEF
+
+ # ZERO_ARCHFLAG tells the compiler which mode to build for
+ case "${ZERO_LIBARCH}" in
+ s390)
+ ZERO_ARCHFLAG="-m31"
+ ;;
+ *)
+ ZERO_ARCHFLAG="-m${ARCH_DATA_MODEL}"
+ esac
+ export ZERO_ARCHFLAG
+
+ # LIBFFI_CFLAGS and LIBFFI_LIBS tell the compiler how to compile and
+ # link against libffi
+ pkgconfig=$(which pkg-config 2>/dev/null)
+ if [ -x "${pkgconfig}" ] ; then
+ if [ "${LIBFFI_CFLAGS}" = "" ] ; then
+ LIBFFI_CFLAGS=$("${pkgconfig}" --cflags libffi)
+ fi
+ if [ "${LIBFFI_LIBS}" = "" ] ; then
+ LIBFFI_LIBS=$("${pkgconfig}" --libs libffi)
+ fi
+ fi
+ if [ "${LIBFFI_LIBS}" = "" ] ; then
+ LIBFFI_LIBS="-lffi"
+ fi
+ export LIBFFI_CFLAGS
+ export LIBFFI_LIBS
+fi
--- a/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Wed Jul 05 17:01:55 2017 +0200
+++ b/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Thu Oct 15 13:27:59 2009 +0100
@@ -38,6 +38,7 @@
#define X_SPARCV9 3
#define X_IA64 4
#define X_AMD64 5
+#define X_ZERO 6
// **********************************
// Make sure you set X_PLATFORM and X_ARCH defines correctly.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/bin/ergo_zero.c Thu Oct 15 13:27:59 2009 +0100
@@ -0,0 +1,58 @@
+/*
+ * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+#include "ergo.h"
+
+
+/* Methods for solaris-sparc and linux-sparc: these are easy. */
+
+/* Ask the OS how many processors there are. */
+static unsigned long
+physical_processors(void) {
+ const unsigned long sys_processors = sysconf(_SC_NPROCESSORS_CONF);
+
+ JLI_TraceLauncher("sysconf(_SC_NPROCESSORS_CONF): %lu\n", sys_processors);
+ return sys_processors;
+}
+
+/* The sparc version of the "server-class" predicate. */
+jboolean
+ServerClassMachineImpl(void) {
+ jboolean result = JNI_FALSE;
+ /* How big is a server class machine? */
+ const unsigned long server_processors = 2UL;
+ const uint64_t server_memory = 2UL * GB;
+ const uint64_t actual_memory = physical_memory();
+
+ /* Is this a server class machine? */
+ if (actual_memory >= server_memory) {
+ const unsigned long actual_processors = physical_processors();
+ if (actual_processors >= server_processors) {
+ result = JNI_TRUE;
+ }
+ }
+ JLI_TraceLauncher("unix_" LIBARCHNAME "_ServerClassMachine: %s\n",
+ (result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE"));
+ return result;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/bin/zero/jvm.cfg Thu Oct 15 13:27:59 2009 +0100
@@ -0,0 +1,39 @@
+# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+#
+# List of JVMs that can be used as an option to java, javac, etc.
+# Order is important -- first in this list is the default JVM.
+# NOTE that this both this file and its format are UNSUPPORTED and
+# WILL GO AWAY in a future release.
+#
+# You may also select a JVM in an arbitrary location with the
+# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
+# and may not be available in a future release.
+#
+-server KNOWN
+-client IGNORE
+-hotspot ERROR
+-classic WARN
+-native ERROR
+-green ERROR