# HG changeset patch # User prr # Date 1442248417 25200 # Node ID 58120200dfa494748ca4022eeaf0b224d01c6583 # Parent 440d438e12e8e2d1e3342c1b2b1c98493c68ded7# Parent 42b56d1f418523ecb61a49d7493302c80c8009cc Merge diff -r 440d438e12e8 -r 58120200dfa4 .hgtags --- a/.hgtags Tue Sep 08 14:40:19 2015 -0700 +++ b/.hgtags Mon Sep 14 09:33:37 2015 -0700 @@ -323,3 +323,4 @@ 8c40d4143ee13bdf8170c68cc384c36ab1e9fadb jdk9-b78 ba08a9f79b9849716bae1f39f71333d47f604012 jdk9-b79 f7c5ae2933c0b8510a420d1713a955e4ffc7ad0b jdk9-b80 +b8afcf91331d78626a583ec1b63164468d6f4181 jdk9-b81 diff -r 440d438e12e8 -r 58120200dfa4 common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Tue Sep 08 14:40:19 2015 -0700 +++ b/common/autoconf/generated-configure.sh Mon Sep 14 09:33:37 2015 -0700 @@ -4364,7 +4364,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1435822080 +DATE_WHEN_GENERATED=1441958217 ############################################################################### # @@ -38307,6 +38307,48 @@ fi fi + if test "x$OPENJDK_BUILD_OS" = xsolaris; then + # objcopy prior to 2.21.1 on solaris is broken and is not usable. + # Rewrite objcopy version output to VALID_VERSION or BAD_VERSION. + # - version number is last blank separate word on first line + # - version number formats that have been seen: + # - . + # - .. + OBJCOPY_VERSION=`$OBJCOPY --version | $HEAD -n 1` + # The outer [ ] is to prevent m4 from eating the [] in the sed expression. + OBJCOPY_VERSION_CHECK=`$ECHO $OBJCOPY_VERSION | $SED -n \ + -e 's/.* //' \ + -e '/^[01]\./b bad' \ + -e '/^2\./{' \ + -e ' s/^2\.//' \ + -e ' /^[0-9]$/b bad' \ + -e ' /^[0-9]\./b bad' \ + -e ' /^1[0-9]$/b bad' \ + -e ' /^1[0-9]\./b bad' \ + -e ' /^20\./b bad' \ + -e ' /^21\.0$/b bad' \ + -e ' /^21\.0\./b bad' \ + -e '}' \ + -e ':good' \ + -e 's/.*/VALID_VERSION/p' \ + -e 'q' \ + -e ':bad' \ + -e 's/.*/BAD_VERSION/p' \ + -e 'q'` + if test "x$OBJCOPY_VERSION_CHECK" = xBAD_VERSION; then + OBJCOPY= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated." >&5 +$as_echo "$as_me: WARNING: Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: objcopy reports version $OBJCOPY_VERSION" >&5 +$as_echo "$as_me: objcopy reports version $OBJCOPY_VERSION" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version" >&5 +$as_echo "$as_me: Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version" >&5 +$as_echo "$as_me: Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Note: Solaris 11 Update 1 contains the correct version" >&5 +$as_echo "$as_me: Note: Solaris 11 Update 1 contains the correct version" >&6;} + fi + fi fi fi diff -r 440d438e12e8 -r 58120200dfa4 common/autoconf/spec.gmk.in --- a/common/autoconf/spec.gmk.in Tue Sep 08 14:40:19 2015 -0700 +++ b/common/autoconf/spec.gmk.in Mon Sep 14 09:33:37 2015 -0700 @@ -30,25 +30,6 @@ # (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf) # using 'configure @CONFIGURE_COMMAND_LINE@' -# When calling macros, the spaces between arguments are -# often semantically important! Sometimes we need to subst -# spaces and commas, therefore we need the following macros. -X:= -SPACE:=$(X) $(X) -COMMA:=, -DOLLAR:=$$ -HASH:=\# -LEFT_PAREN:=( -RIGHT_PAREN:=) -SQUOTE:=' -#' -DQUOTE:=" -#" -define NEWLINE - - -endef - # The command line given to configure. CONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@ diff -r 440d438e12e8 -r 58120200dfa4 common/autoconf/toolchain.m4 --- a/common/autoconf/toolchain.m4 Tue Sep 08 14:40:19 2015 -0700 +++ b/common/autoconf/toolchain.m4 Mon Sep 14 09:33:37 2015 -0700 @@ -586,6 +586,43 @@ # Only call fixup if objcopy was found. if test -n "$OBJCOPY"; then BASIC_FIXUP_EXECUTABLE(OBJCOPY) + if test "x$OPENJDK_BUILD_OS" = xsolaris; then + # objcopy prior to 2.21.1 on solaris is broken and is not usable. + # Rewrite objcopy version output to VALID_VERSION or BAD_VERSION. + # - version number is last blank separate word on first line + # - version number formats that have been seen: + # - . + # - .. + OBJCOPY_VERSION=`$OBJCOPY --version | $HEAD -n 1` + # The outer [ ] is to prevent m4 from eating the [] in the sed expression. + [ OBJCOPY_VERSION_CHECK=`$ECHO $OBJCOPY_VERSION | $SED -n \ + -e 's/.* //' \ + -e '/^[01]\./b bad' \ + -e '/^2\./{' \ + -e ' s/^2\.//' \ + -e ' /^[0-9]$/b bad' \ + -e ' /^[0-9]\./b bad' \ + -e ' /^1[0-9]$/b bad' \ + -e ' /^1[0-9]\./b bad' \ + -e ' /^20\./b bad' \ + -e ' /^21\.0$/b bad' \ + -e ' /^21\.0\./b bad' \ + -e '}' \ + -e ':good' \ + -e 's/.*/VALID_VERSION/p' \ + -e 'q' \ + -e ':bad' \ + -e 's/.*/BAD_VERSION/p' \ + -e 'q'` ] + if test "x$OBJCOPY_VERSION_CHECK" = xBAD_VERSION; then + OBJCOPY= + AC_MSG_WARN([Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated.]) + AC_MSG_NOTICE([objcopy reports version $OBJCOPY_VERSION]) + AC_MSG_NOTICE([Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version]) + AC_MSG_NOTICE([Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version]) + AC_MSG_NOTICE([Note: Solaris 11 Update 1 contains the correct version]) + fi + fi fi fi diff -r 440d438e12e8 -r 58120200dfa4 make/CompileJavaModules.gmk --- a/make/CompileJavaModules.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/CompileJavaModules.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -534,8 +534,7 @@ ## Service types are required in the classpath when compiing module-info $1_CLASSPATH := $$($1_CLASSPATH) $$(addprefix $(JDK_OUTPUTDIR)/modules/,jdk.hotspot.agent) endif - $1_CLASSPATH := $$(subst $$(SPACE),$$(PATH_SEP),$$($1_CLASSPATH)) - $1_JAVAC_FLAGS := -bootclasspath $(EMPTY_DIR) -extdirs $(EMPTY_DIR) -endorseddirs $(EMPTY_DIR) -classpath "$$($1_CLASSPATH)" $$($1_ADD_JAVAC_FLAGS) + $1_JAVAC_FLAGS := -bootclasspath $(EMPTY_DIR) -extdirs $(EMPTY_DIR) -endorseddirs $(EMPTY_DIR) $$($1_ADD_JAVAC_FLAGS) $$(eval $$(call SetupJavaCompilation,$1, \ SETUP := $$(if $$($1_SETUP), $$($1_SETUP), GENERATE_JDKBYTECODE), \ @@ -543,6 +542,7 @@ INCLUDES := $(JDK_USER_DEFINED_FILTER),\ BIN := $$(if $$($1_BIN), $$($1_BIN), $(JDK_OUTPUTDIR)/modules/$1), \ HEADERS := $(SUPPORT_OUTPUTDIR)/headers/$1, \ + CLASSPATH := $$($1_CLASSPATH), \ ADD_JAVAC_FLAGS := $$($1_ADD_JAVAC_FLAGS) $$($1_JAVAC_FLAGS))) $1: $$($1) $$($1_COPY_EXTRA) diff -r 440d438e12e8 -r 58120200dfa4 make/Init.gmk --- a/make/Init.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/Init.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -50,7 +50,7 @@ include $(topdir)/make/Help.gmk # Targets provided by Init.gmk. - ALL_INIT_TARGETS := print-modules print-targets reconfigure + ALL_INIT_TARGETS := print-modules print-targets print-configuration reconfigure # CALLED_TARGETS is the list of targets that the user provided, # or "default" if unspecified. @@ -228,6 +228,9 @@ $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \ NO_RECIPES=true print-targets ) + print-configuration: + $(ECHO) $(CONFIGURE_COMMAND_LINE) + reconfigure: ifneq ($(CONFIGURE_COMMAND_LINE), ) $(ECHO) "Re-running configure using arguments '$(CONFIGURE_COMMAND_LINE)'" diff -r 440d438e12e8 -r 58120200dfa4 make/common/JavaCompilation.gmk --- a/make/common/JavaCompilation.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/common/JavaCompilation.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -403,6 +403,7 @@ # SRC:=one or more directories to search for sources. The order of the source roots # is significant. The first found file of a certain name has priority. # BIN:=store classes here +# CLASSPATH:=a list of additional entries to set as classpath to javac # INCLUDES:=myapp.foo means will only compile java files in myapp.foo or any of its sub-packages. # EXCLUDES:=myapp.foo means will do not compile java files in myapp.foo or any of its sub-packages. # COPY:=.prp means copy all prp files to the corresponding package in BIN. @@ -428,6 +429,9 @@ $1_JVM := $$($$($1_SETUP)_JVM) $1_JAVAC := $$($$($1_SETUP)_JAVAC) $1_FLAGS := $$($$($1_SETUP)_FLAGS) $(JAVAC_FLAGS) $$($1_ADD_JAVAC_FLAGS) + ifneq ($$($1_CLASSPATH), ) + $1_FLAGS += -cp $$(call PathList, $$($1_CLASSPATH)) + endif ifeq ($$($1_JAVAC),) $$(error The Java compilation $1 refers to a non-existant java compiler setup $$($1_SETUP)) endif @@ -482,7 +486,7 @@ $$(addprefix -i ,$$(addsuffix /*,$$($1_INCLUDES))) \ $$(addprefix -xf *,$$(strip $$($1_EXCLUDE_FILES) $$($1_SJAVAC_EXCLUDE_FILES))) \ $$(addprefix -if *,$$(strip $$($1_INCLUDE_FILES))) \ - -src "$$(subst $$(SPACE),$$(PATH_SEP),$$(strip $$($1_SRC)))" + -src $$(call PathList, $$($1_SRC)) # All files below META-INF are always copied. $1_ALL_COPIES := $$(filter $$(addsuffix /META-INF%,$$($1_SRC)),$$($1_ALL_SRCS)) diff -r 440d438e12e8 -r 58120200dfa4 make/common/MakeBase.gmk --- a/make/common/MakeBase.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/common/MakeBase.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -41,6 +41,29 @@ # next make invocation. .DELETE_ON_ERROR: +################################################################################ +# Definitions for special characters +################################################################################ + +# When calling macros, the spaces between arguments are +# often semantically important! Sometimes we need to subst +# spaces and commas, therefore we need the following macros. +X:= +SPACE:=$(X) $(X) +COMMA:=, +DOLLAR:=$$ +HASH:=\# +LEFT_PAREN:=( +RIGHT_PAREN:=) +SQUOTE:=' +#' +DQUOTE:=" +#" +define NEWLINE + + +endef + ############################## # Functions ############################## @@ -780,6 +803,14 @@ endif ################################################################################ +# Return a string suitable for use after a -classpath option. It will correct and safe to use +# on all platforms. Arguments are given as space separate classpath entries. +# param 1 : A space separated list of classpath entries +# The surrounding strip is needed to keep additional whitespace out +PathList = \ + "$(subst $(SPACE),$(PATH_SEP),$(strip $1))" + +################################################################################ # Hook to include the corresponding custom file, if present. $(eval $(call IncludeCustomExtension, , common/MakeBase.gmk)) diff -r 440d438e12e8 -r 58120200dfa4 make/common/NativeCompilation.gmk --- a/make/common/NativeCompilation.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/common/NativeCompilation.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -624,28 +624,7 @@ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).pdb \ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).map - else ifeq ($(OPENJDK_TARGET_OS), solaris) - $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo - # Setup the command line creating debuginfo files, to be run after linking. - # It cannot be run separately since it updates the original target file - # - # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set. - # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from - # empty section headers until a fixed $(OBJCOPY) is available. - # An empty section header has sh_addr == 0 and sh_size == 0. - # This problem has only been seen on Solaris X64, but we call this tool - # on all Solaris builds just in case. - # - # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections. - # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available. - $1_CREATE_DEBUGINFO_CMDS := \ - $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$($1_TARGET) $$(NEWLINE) \ - $(OBJCOPY) --only-keep-debug $$($1_TARGET) $$($1_DEBUGINFO_FILES) $$(NEWLINE) \ - $(CD) $$($1_OUTPUT_DIR) && \ - $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$($1_DEBUGINFO_FILES) $$($1_TARGET) - $1_DEBUGINFO_EXTRA_DEPS := $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK) - - else ifeq ($(OPENJDK_TARGET_OS), linux) + else ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), ) $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo # Setup the command line creating debuginfo files, to be run after linking. # It cannot be run separately since it updates the original target file @@ -653,7 +632,6 @@ $(OBJCOPY) --only-keep-debug $$($1_TARGET) $$($1_DEBUGINFO_FILES) $$(NEWLINE) \ $(CD) $$($1_OUTPUT_DIR) && \ $(OBJCOPY) --add-gnu-debuglink=$$($1_DEBUGINFO_FILES) $$($1_TARGET) - endif # No MacOS X support # This dependency dance ensures that debug info files get rebuilt @@ -694,7 +672,7 @@ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) $$($1_TARGET): $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_REAL_MAPFILE) \ - $$($1_DEBUGINFO_EXTRA_DEPS) $$($1_VARDEPS_FILE) + $$($1_VARDEPS_FILE) $(ECHO) $(LOG_INFO) "Linking $$($1_BASENAME)" $(call LogFailures, $$($1_OBJECT_DIR)/$1_link.log, $1_link, \ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \ @@ -735,7 +713,7 @@ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) $$($1_TARGET): $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_MANIFEST) \ - $$($1_DEBUGINFO_EXTRA_DEPS) $$($1_VARDEPS_FILE) + $$($1_VARDEPS_FILE) $(ECHO) $(LOG_INFO) "Linking executable $$($1_BASENAME)" $(call LogFailures, $$($1_OBJECT_DIR)/$1_link.log, $1_link, \ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \ diff -r 440d438e12e8 -r 58120200dfa4 make/common/SetupJavaCompilers.gmk --- a/make/common/SetupJavaCompilers.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/common/SetupJavaCompilers.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -78,7 +78,7 @@ SERVER_DIR := $(SJAVAC_SERVER_DIR), \ SERVER_JVM := $(SJAVAC_SERVER_JAVA))) -JDK_BOOTCLASSPATH := $(subst $(SPACE),$(PATH_SEP),\ +JDK_BOOTCLASSPATH := $(call PathList, \ $(filter-out $(JDK_OUTPUTDIR)/modules/_%, $(wildcard $(JDK_OUTPUTDIR)/modules/*))) # After the jdk is built, we want to build demos using only the recently @@ -88,7 +88,7 @@ $(eval $(call SetupJavaCompiler,GENERATE_USINGJDKBYTECODE, \ JVM := $(JAVA_SMALL), \ JAVAC := $(NEW_JAVAC), \ - FLAGS := -bootclasspath "$(JDK_BOOTCLASSPATH)" $(DISABLE_WARNINGS), \ + FLAGS := -bootclasspath $(JDK_BOOTCLASSPATH) $(DISABLE_WARNINGS), \ SERVER_DIR := $(SJAVAC_SERVER_DIR), \ SERVER_JVM := $(SJAVAC_SERVER_JAVA))) diff -r 440d438e12e8 -r 58120200dfa4 make/common/TestFilesCompilation.gmk --- a/make/common/TestFilesCompilation.gmk Tue Sep 08 14:40:19 2015 -0700 +++ b/make/common/TestFilesCompilation.gmk Mon Sep 14 09:33:37 2015 -0700 @@ -32,8 +32,6 @@ include NativeCompilation.gmk -# FIXME: This is a bad fix currently needed due to JDK-8064808 not being resolved. -include $(JDK_TOPDIR)/make/Tools.gmk # Setup make rules for creating a set of native test files (libraries or # executables). This will locate native files matching a certain pattern,