changeset 2930:88ad9f715193

Backport various Makefile changes so -Wno-clobbered is only used with GCC >= 4.3. S6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles) S6729772: 64-bit build with SS12 compiler: SIGSEGV (0xb) at pc=0x0000000000000048, pid=14826, tid=2 S6799141: Build with --hash-style=both so that binaries can work on SuSE 10 S6816311: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003 S6974017: Upgrade required Solaris Studio compilers to 5.10 (12 update 1 + patches) S6980281: SWAT: SwingSet2 got core dumped in Solaris-AMD64 using b107 swat build S7000225: Sanity check on sane-alsa-headers is broken S7038711: Fix CC_VER checks for compiler options, fix use of -Wno-clobber 2013-09-02 Andrew John Hughes <gnu.andrew@redhat.com> * Makefile.am: (ICEDTEA_PATCHES): Add new backports. Move disable-cc-incompatible-sanity-checks and freetypeversion to the end. * patches/disable-cc-incompatible-sanity-checks.patch, * patches/freetypeversion.patch: Regenerated to work after new backports. * patches/openjdk/6563752-ss12_support.patch, * patches/openjdk/6729772-opt_cleanup.patch, * patches/openjdk/6799141-split_out_versions.patch, * patches/openjdk/6816311-compiler_name.patch, * patches/openjdk/6974017-minorver_for_solaris.patch, * patches/openjdk/6980281-majorver_for_solaris.patch, * patches/openjdk/7000225-bad_tabs.patch, * patches/openjdk/7038711-fix_no-clobber_usage.patch: Backports from OpenJDK 7 to bring in latest Makefile updates. * NEWS: Update and order backports numerically.
author Andrew John Hughes <gnu.andrew@redhat.com>
date Wed, 04 Sep 2013 00:13:08 +0100
parents 222321136c48
children ecd2b7356f84
files ChangeLog Makefile.am NEWS patches/disable-cc-incompatible-sanity-checks.patch patches/freetypeversion.patch patches/openjdk/6563752-ss12_support.patch patches/openjdk/6729772-opt_cleanup.patch patches/openjdk/6799141-split_out_versions.patch patches/openjdk/6816311-compiler_name.patch patches/openjdk/6974017-minorver_for_solaris.patch patches/openjdk/6980281-majorver_for_solaris.patch patches/openjdk/7000225-bad_tabs.patch patches/openjdk/7038711-fix_no-clobber_usage.patch
diffstat 13 files changed, 2682 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Sep 03 20:08:26 2013 +0100
+++ b/ChangeLog	Wed Sep 04 00:13:08 2013 +0100
@@ -1,3 +1,24 @@
+2013-09-02  Andrew John Hughes  <gnu.andrew@redhat.com>
+
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Add new backports.  Move
+	disable-cc-incompatible-sanity-checks and freetypeversion
+	to the end.
+	* patches/disable-cc-incompatible-sanity-checks.patch,
+	* patches/freetypeversion.patch:
+	Regenerated to work after new backports.
+	* patches/openjdk/6563752-ss12_support.patch,
+	* patches/openjdk/6729772-opt_cleanup.patch,
+	* patches/openjdk/6799141-split_out_versions.patch,
+	* patches/openjdk/6816311-compiler_name.patch,
+	* patches/openjdk/6974017-minorver_for_solaris.patch,
+	* patches/openjdk/6980281-majorver_for_solaris.patch,
+	* patches/openjdk/7000225-bad_tabs.patch,
+	* patches/openjdk/7038711-fix_no-clobber_usage.patch:
+	Backports from OpenJDK 7 to bring in latest Makefile
+	updates.
+	* NEWS: Update and order backports numerically.
+
 2013-08-30  Andrew John Hughes  <gnu.andrew@redhat.com>
 
 	* Makefile.am:
--- a/Makefile.am	Tue Sep 03 20:08:26 2013 +0100
+++ b/Makefile.am	Wed Sep 04 00:13:08 2013 +0100
@@ -451,7 +451,6 @@
 	patches/lcms.patch \
 	patches/print_lsb_release.patch \
 	patches/uname.patch \
-	patches/freetypeversion.patch \
 	patches/nomotif-6706121.patch \
 	patches/nomotif.patch \
 	patches/nomotif-mtoolkit.patch \
@@ -478,7 +477,6 @@
 	patches/jtreg-jrunscript.patch \
 	patches/network-unreachable.patch \
 	patches/dnd-filelists.patch \
-	patches/disable-cc-incompatible-sanity-checks.patch \
 	patches/explicit-target-arch.patch \
 	patches/openjdk/7019808-stack_noexec.patch \
 	patches/parisc.patch \
@@ -671,7 +669,17 @@
 	patches/openjdk/6636331-appcontext_concurrentmodificationexception.patch \
 	patches/openjdk/6893617-cnctx_always_uses_default_orb.patch \
 	patches/imageiojpeg_sync.patch \
-	patches/openjdk/8005194-scale_memory_leak.patch
+	patches/openjdk/8005194-scale_memory_leak.patch \
+	patches/openjdk/6563752-ss12_support.patch \
+	patches/openjdk/6729772-opt_cleanup.patch \
+	patches/openjdk/6799141-split_out_versions.patch \
+	patches/freetypeversion.patch \
+	patches/openjdk/6816311-compiler_name.patch \
+	patches/openjdk/6974017-minorver_for_solaris.patch \
+	patches/openjdk/6980281-majorver_for_solaris.patch \
+	patches/openjdk/7000225-bad_tabs.patch \
+	patches/openjdk/7038711-fix_no-clobber_usage.patch \
+	patches/disable-cc-incompatible-sanity-checks.patch
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
@@ -727,7 +735,6 @@
 	patches/ecj/spp.patch \
 	patches/ecj/jopt.patch \
 	patches/ecj/jaxp-dependency.patch \
-	patches/ecj/bootver.patch \
 	patches/ecj/getannotation-cast.patch \
 	patches/ecj/override.patch \
 	patches/ecj/xsltproc.patch \
--- a/NEWS	Tue Sep 03 20:08:26 2013 +0100
+++ b/NEWS	Wed Sep 04 00:13:08 2013 +0100
@@ -14,17 +14,25 @@
 New in release 1.11.13 (2013-XX-XX):
 
 * Backports
- - S6840152: JVM crashes when heavyweight monitors are used
- - S7022999: Can't build with FORCE_TIERED=0
   - S4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
+  - S6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles)
   - S6631559: Registration of ImageIO plugins should not cause loading of jpeg.dlli and cmm.dll
+  - S6729772: 64-bit build with SS12 compiler: SIGSEGV (0xb) at pc=0x0000000000000048, pid=14826, tid=2
   - S6791502: IIOException "Invalid icc profile" on jpeg after update from JDK5 to JDK6
   - S6793818: JpegImageReader is too greedy creating color profiles
+  - S6799141: Build with --hash-style=both so that binaries can work on SuSE 10
+  - S6816311: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
+  - S6840152: JVM crashes when heavyweight monitors are used
   - S6888215: memory leak in jpeg plugin
+  - S6974017: Upgrade required Solaris Studio compilers to 5.10 (12 update 1 + patches)
+  - S6980281: SWAT: SwingSet2 got core dumped in Solaris-AMD64 using b107 swat build
   - S6989760: cmm native compiler warnings
   - S6989774: imageio compiler warnings in native code
+  - S7000225: Sanity check on sane-alsa-headers is broken
   - S7013519: [parfait] Integer overflows in 2D code
   - S7018912: [parfait] potential buffer overruns in imageio jpeg
+  - S7022999: Can't build with FORCE_TIERED=0
+  - S7038711: Fix CC_VER checks for compiler options, fix use of -Wno-clobber
   - S8005194: [parfait] #353 sun/awt/image/jpeg/imageioJPEG.c Memory leak of pointer 'scale' allocated with calloc()
   - S8020983, RH976897: OutOfMemoryError caused by non garbage collected JPEGImageWriter Instances
 * Bug fixes
--- a/patches/disable-cc-incompatible-sanity-checks.patch	Tue Sep 03 20:08:26 2013 +0100
+++ b/patches/disable-cc-incompatible-sanity-checks.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -1,7 +1,7 @@
 diff -Nru openjdk.orig/jdk/make/common/Sanity.gmk openjdk/jdk/make/common/Sanity.gmk
---- openjdk.orig/jdk/make/common/Sanity.gmk	2009-10-01 18:31:50.000000000 +0100
-+++ openjdk/jdk/make/common/Sanity.gmk	2009-10-02 17:51:35.000000000 +0100
-@@ -92,8 +92,11 @@
+--- openjdk.orig/jdk/make/common/Sanity.gmk	2012-10-26 19:25:40.000000000 +0100
++++ openjdk/jdk/make/common/Sanity.gmk	2013-09-02 17:26:52.257169562 +0100
+@@ -91,8 +91,11 @@
      sane-ld_options \
      sane-ld_run_path \
      sane-alt_bootdir \
@@ -15,7 +15,7 @@
  
  ifdef OPENJDK
  sanity-all:: sane-freetype 
-@@ -109,17 +112,21 @@
+@@ -108,17 +111,21 @@
  #   (Which only happens with a full control build. The control makefiles are
  #    the files that set BUILD_MOTIF).
  #   We cannot sanity check something that has not been built yet. 
@@ -42,64 +42,36 @@
  
  # Always check hotspot binary paths even if we are building them from scratch
 diff -Nru openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk
---- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2009-10-02 17:36:09.000000000 +0100
-+++ openjdk/jdk/make/common/shared/Sanity.gmk	2009-10-02 17:52:37.000000000 +0100
-@@ -75,9 +75,14 @@
-         fi )
-   endif
-   ifneq ($(ARCH), ia64)
--    # dummy program that outputs ALSA's version (created in target sane-alsa-versioncheck)
--    ALSA_VERSION_CHECK = $(TEMPDIR)/alsaversioncheck
--    ALSA_VERSION = `if [ -f "$(ALSA_VERSION_CHECK)" ] ; then $(ALSA_VERSION_CHECK) ; fi`
-+    ifdef CROSS_COMPILATION
-+      # assume alsa version is correct and do not check it
-+      ALSA_VERSION = 1.0.0
-+    else
-+      # dummy program that outputs ALSA's version (created in target sane-alsa-versioncheck)
-+      ALSA_VERSION_CHECK = $(TEMPDIR)/alsaversioncheck
-+      ALSA_VERSION = `if [ -f "$(ALSA_VERSION_CHECK)" ] ; then $(ALSA_VERSION_CHECK) ; fi`
-+    endif
-   endif
- endif
- 
-@@ -120,6 +125,15 @@
+--- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2013-09-02 17:03:28.039330395 +0100
++++ openjdk/jdk/make/common/shared/Sanity.gmk	2013-09-02 17:32:35.854512833 +0100
+@@ -159,6 +159,11 @@
  # Get ALL_SETTINGS defined
  include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk
  
 +ifndef CROSS_COMPILATION
 +MORE_PHONY_RULES = \
-+	sane-freetype \
-+  sane-cups \
-+  sane-motif \
-+  sane-alsa-versioncheck \
-+  sane-alsa-headers
++  sane-freetype
 +endif
 +
  .PHONY: \
  	sane-copyrightyear\
  	sane-settings \
-@@ -149,8 +163,6 @@
+@@ -187,8 +192,7 @@
  	sane-outputdir \
  	sane-alt_bootdir \
  	sane-bootdir \
 -	sane-motif \
 -        sane-cups \
++	sane-cups \
  	sane-devtools_path \
  	sane-compiler_path \
  	sane-unixcommand_path \
-@@ -168,13 +180,11 @@
- 	sane-compiler \
- 	sane-link \
- 	sane-cacerts \
--	sane-alsa-versioncheck \
--	sane-alsa-headers \
- 	sane-ant_version \
+@@ -211,7 +215,7 @@
  	sane-zip_version \
  	sane-unzip_version \
-- 	sane-msvcrt_path \
+  	sane-msvcrt_path \
 -        sane-freetype
-+	sane-msvcrt_path \
-+	$(MORE_PHONY_RULES)
++        $(MORE_PHONY_RULES)
  
  ######################################################
  # check for COPYRIGHT_YEAR variable
--- a/patches/freetypeversion.patch	Tue Sep 03 20:08:26 2013 +0100
+++ b/patches/freetypeversion.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -1,11 +1,12 @@
---- openjdk/jdk/make/common/shared/Platform.gmk.orig
-+++ openjdk/jdk/make/common/shared/Platform.gmk
-@@ -94,7 +94,7 @@
- REQUIRED_BOOT_VER = 1.5
- 
- # If we are using freetype, this is the required version
--REQUIRED_FREETYPE_VERSION=2.3.0
-+REQUIRED_FREETYPE_VERSION=2.2.1
- 
- #
- # Prune out all known SCM (Source Code Management) directories
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs-versions.gmk openjdk/jdk/make/common/shared/Defs-versions.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs-versions.gmk	2013-09-02 15:32:33.490472903 +0100
++++ openjdk/jdk/make/common/shared/Defs-versions.gmk	2013-09-02 15:33:00.154887749 +0100
+@@ -176,7 +176,7 @@
+ # Generic
+ REQUIRED_ANT_VER          = 1.6.3
+ REQUIRED_BOOT_VER         = 1.5
+-REQUIRED_FREETYPE_VERSION = 2.3.0
++REQUIRED_FREETYPE_VERSION = 2.2.1
+ REQUIRED_MAKE_VER         = 3.78
+ REQUIRED_UNZIP_VER        = 5.12
+ REQUIRED_ZIP_VER          = 2.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6563752-ss12_support.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,173 @@
+# HG changeset patch
+# User ohair
+# Date 1212597498 25200
+#      Wed Jun 04 09:38:18 2008 -0700
+# Node ID f9467b4496dc3731d73dbc5a42fd84cc9b1faaab
+# Parent  b6601ba7f6dfe0d93e40b2891c581c30fdd92289
+6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles)
+Summary: Changes to support building with SS12.
+Reviewed-by: tbell
+
+diff --git a/make/common/Defs-solaris.gmk b/make/common/Defs-solaris.gmk
+--- openjdk/jdk/make/common/Defs-solaris.gmk
++++ openjdk/jdk/make/common/Defs-solaris.gmk
+@@ -197,7 +197,6 @@
+ 
+ # Lint Flags:
+ #	-Xa			ANSI C plus K&R, favor ANSI rules
+-#       -Xarch=XXX		Same as 'cc -xarch=XXX'
+ #	-fd			report on old style func defs
+ #	-errchk=structarg	report on 64bit struct args by value
+ #	-errchk=longptr64	report on 64bit to 32bit issues (ignores casts)
+@@ -206,6 +205,7 @@
+ #	-x			suppress unused externs
+ #	-u			suppress extern func/vars used/defined
+ #	-errfmt=simple		use one line errors with position info
++#       $(LINT_XARCH_OPTION)    See Compiler-sun.gwk
+ 
+ LINTFLAGS_COMMON  = -Xa
+ LINTFLAGS_COMMON += -fd 
+@@ -224,42 +224,12 @@
+ #    Tell the compilers to never generate globalized names, all the time.
+ CFLAGS_COMMON += -W0,-noglobal
+ 
+-# Arch specific settings (determines type of .o files and instruction set)
+-ifeq ($(ARCH_FAMILY), sparc)
+-  ifdef VIS_NEEDED
+-    XARCH_VALUE/32=v8plusa
+-    XARCH_VALUE/64=v9a
+-  else 
+-    # Someday this should change to improve optimization on UltraSPARC
+-    #    and abandon the old v8-only machines like the SPARCstation 10.
+-    #    Indications with Mustang is that alacrity runs do not show a
+-    #    big improvement using v8plus over v8, but other benchmarks might.
+-    XARCH_VALUE/32=v8
+-    XARCH_VALUE/64=v9
+-  endif
+-endif
+-ifeq ($(ARCH_FAMILY), i586)
+-  XARCH_VALUE/64=amd64
+-  XARCH_VALUE/32=
+-endif
+-
+-# Arch value based on current data model being built
+-XARCH_VALUE=$(XARCH_VALUE/$(ARCH_DATA_MODEL))
+-ifneq ($(XARCH_VALUE), )
+-  # The actual compiler -xarch options to use
+-  XARCH_OPTION/32 = -xarch=$(XARCH_VALUE/32)
+-  XARCH_OPTION/64 = -xarch=$(XARCH_VALUE/64)
+-  XARCH_OPTION    = $(XARCH_OPTION/$(ARCH_DATA_MODEL))
+-endif
+-
+-# If we have a specific -xarch value to use, add it
+-ifdef XARCH_OPTION
+-  CFLAGS_COMMON    += $(XARCH_OPTION)
+-  CXXFLAGS_COMMON  += $(XARCH_OPTION)
+-  ASFLAGS_COMMON   += $(XARCH_OPTION)
+-  EXTRA_LIBS       += $(XARCH_OPTION)
+-  LINTFLAGS_COMMON += -Xarch=$(XARCH_VALUE)
+-endif
++# If we have a specific arch value to use, add it
++CFLAGS_COMMON    += $(XARCH_OPTION)
++CXXFLAGS_COMMON  += $(XARCH_OPTION)
++ASFLAGS_COMMON   += $(AS_XARCH_OPTION)
++EXTRA_LIBS       += $(XARCH_OPTION)
++LINTFLAGS_COMMON += $(LINT_XARCH_OPTION)
+ 
+ #
+ # uncomment the following to build with PERTURBALOT set
+diff --git a/make/common/shared/Compiler-sun.gmk b/make/common/shared/Compiler-sun.gmk
+--- openjdk/jdk/make/common/shared/Compiler-sun.gmk
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk
+@@ -31,6 +31,9 @@
+ 
+ # Sun Studio Compiler settings specific to Solaris
+ ifeq ($(PLATFORM), solaris)
++  # FIXUP: Change to SS12 when validated
++  #COMPILER_VERSION=SS12
++  #REQUIRED_CC_VER=5.9
+   COMPILER_VERSION=SS11
+   REQUIRED_CC_VER=5.8
+   CC             = $(COMPILER_PATH)cc
+@@ -51,8 +54,8 @@
+ # Sun Studio Compiler settings specific to Linux
+ ifeq ($(PLATFORM), linux)
+   # This has not been tested
+-  COMPILER_VERSION=SS11
+-  REQUIRED_CC_VER=5.8
++  COMPILER_VERSION=SS12
++  REQUIRED_CC_VER=5.9
+   CC             = $(COMPILER_PATH)cc
+   CPP            = $(COMPILER_PATH)cc -E
+   CXX            = $(COMPILER_PATH)CC
+@@ -74,3 +77,58 @@
+ _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
+ 
++# Arch specific settings (determines type of .o files and instruction set)
++#  Starting in SS12 (5.9), the arch options changed.
++#  The assembler /usr/ccs/bin/as wants older SS11 (5.8) style options.
++#   Note: We need to have both 32 and 64 values at all times for awt Makefiles.
++#
++XARCH_OPTION_OLD/32 =
++XARCH_OPTION_OLD/64 =
++XARCH_OPTION_NEW/32 = -m32
++XARCH_OPTION_NEW/64 = -m64
++# Lint options are slightly different
++LINT_XARCH_OPTION_OLD/32 =
++LINT_XARCH_OPTION_OLD/64 =
++LINT_XARCH_OPTION_NEW/32 = -m32
++LINT_XARCH_OPTION_NEW/64 = -m64
++ifeq ($(ARCH_FAMILY), sparc)
++  ifdef VIS_NEEDED
++    XARCH_OPTION_OLD/32 += -xarch=v8plusa
++    XARCH_OPTION_OLD/64 += -xarch=v9a
++    XARCH_OPTION_NEW/32 += -xarch=sparcvis
++    XARCH_OPTION_NEW/64 += -xarch=sparcvis
++  else
++    # Someday this should change to improve optimization on UltraSPARC
++    #    and abandon v8, even change to sparcvis or sparcvis2, this
++    #    abandons machines like the SPARCstation 10.
++    #    Indications with jdk6 is that alacrity runs do not show a
++    #    big improvement using v8plus over v8, but other benchmarks might.
++    XARCH_OPTION_OLD/32 += -xarch=v8
++    XARCH_OPTION_OLD/64 += -xarch=v9
++    # Note that this new option (SS12+) effectively means v8plus
++    XARCH_OPTION_NEW/32 += -xarch=sparc
++    XARCH_OPTION_NEW/64 += -xarch=sparc
++  endif
++  LINT_XARCH_OPTION_OLD/64 += -Xarch=v9
++endif
++ifeq ($(ARCH_FAMILY), i586)
++  XARCH_OPTION_OLD/64      += -xarch=amd64
++  LINT_XARCH_OPTION_OLD/64 += -Xarch=amd64
++endif
++# Pick the options we want based on the compiler being used.
++ifeq ($(shell expr $(CC_VER) \>= 5.9), 1)
++  XARCH_OPTION/32 = $(XARCH_OPTION_NEW/32)
++  XARCH_OPTION/64 = $(XARCH_OPTION_NEW/64)
++  LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_NEW/32)
++  LINT_XARCH_OPTION/64 = $(LINT_XARCH_OPTION_NEW/64)
++else
++  XARCH_OPTION/32 = $(XARCH_OPTION_OLD/32)
++  XARCH_OPTION/64 = $(XARCH_OPTION_OLD/64)
++  LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_OLD/32)
++  LINT_XARCH_OPTION/64 = $(LINT_XARCH_OPTION_OLD/64)
++endif
++XARCH_OPTION = $(XARCH_OPTION/$(ARCH_DATA_MODEL))
++LINT_XARCH_OPTION = $(LINT_XARCH_OPTION/$(ARCH_DATA_MODEL))
++# The /usr/ccs/bin/as assembler always wants the older SS11 (5.8) options.
++AS_XARCH_OPTION = $(XARCH_OPTION_OLD/$(ARCH_DATA_MODEL))
++
+diff --git a/make/jdk_generic_profile.sh b/make/jdk_generic_profile.sh
+--- openjdk/jdk/make/jdk_generic_profile.sh
++++ openjdk/jdk/make/jdk_generic_profile.sh
+@@ -119,7 +119,7 @@
+   # System place where JDK installed images are stored?
+   jdk_instances=/usr/jdk/instances
+ 
+-  # Get the SS11 compilers (and latest patches for them too)
++  # Get the Sun Studio compilers (and latest patches for them too)
+   if [ "${ALT_COMPILER_PATH}" = "" ] ; then
+     ALT_COMPILER_PATH=/opt/SUNWspro/bin
+     export ALT_COMPILER_PATH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6729772-opt_cleanup.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,847 @@
+# HG changeset patch
+# User ohair
+# Date 1217472057 25200
+#      Wed Jul 30 19:40:57 2008 -0700
+# Node ID b374f6174534071d4305a91fbc2b913e7bc64396
+# Parent  b7474b739d13bacd9972f88ac91f6350b7b0be12
+6729772: 64-bit build with SS12 compiler: SIGSEGV (0xb) at pc=0x0000000000000048, pid=14826, tid=2
+Reviewed-by: tbell
+
+diff --git a/make/common/Defs-linux.gmk b/make/common/Defs-linux.gmk
+--- openjdk/jdk/make/common/Defs-linux.gmk
++++ openjdk/jdk/make/common/Defs-linux.gmk
+@@ -86,18 +86,22 @@
+ #
+ # Default optimization
+ #
+-CC_HIGHEST_OPT = -O3
+-CC_HIGHER_OPT  = -O3
+-CC_LOWER_OPT   = -O2
+-CC_NO_OPT      =
+ 
+-ifeq ($(PRODUCT), java)
+-    _OPT = $(CC_HIGHER_OPT)
+-else
+-    _OPT = $(CC_LOWER_OPT)
+-    CPPFLAGS_DBG    += -DLOGGING 
++ifndef OPTIMIZATION_LEVEL
++  ifeq ($(PRODUCT), java)
++    OPTIMIZATION_LEVEL = HIGHER
++  else
++    OPTIMIZATION_LEVEL = LOWER
++  endif
+ endif
+ 
++CC_OPT/NONE     = 
++CC_OPT/LOWER    = -O2
++CC_OPT/HIGHER   = -O3
++CC_OPT/HIGHEST  = -O3
++
++CC_OPT          = $(CC_OPT/$(OPTIMIZATION_LEVEL))
++
+ # For all platforms, do not omit the frame pointer register usage. 
+ #    We need this frame pointer to make it easy to walk the stacks.
+ #    This should be the default on X86, but ia64 and amd64 may not have this
+@@ -112,18 +116,6 @@
+ CFLAGS_REQUIRED         =  $(CFLAGS_REQUIRED_$(ARCH))
+ LDFLAGS_COMMON          += $(LDFLAGS_COMMON_$(ARCH))
+ 
+-# Add in platform specific optimizations for all opt levels
+-CC_HIGHEST_OPT += $(_OPT_$(ARCH))
+-CC_HIGHER_OPT  += $(_OPT_$(ARCH))
+-CC_LOWER_OPT   += $(_OPT_$(ARCH))
+-
+-# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+-ifdef NO_OPTIMIZATIONS
+-  CC_HIGHEST_OPT = $(CC_NO_OPT)
+-  CC_HIGHER_OPT  = $(CC_NO_OPT)
+-  CC_LOWER_OPT   = $(CC_NO_OPT)
+-endif
+-
+ #
+ # Selection of warning messages
+ #
+@@ -163,19 +155,19 @@
+   endif
+ endif
+ 
+-CFLAGS_OPT      = $(POPT)
++CFLAGS_OPT      = $(CC_OPT)
+ CFLAGS_DBG      = $(DEBUG_FLAG)
+ CFLAGS_COMMON += $(CFLAGS_REQUIRED)
+ 
+ CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
+-CXXFLAGS_OPT	= $(POPT)
++CXXFLAGS_OPT	= $(CC_OPT)
+ CXXFLAGS_DBG	= $(DEBUG_FLAG)
+ CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+ 
+ # FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
+ ifeq ($(FASTDEBUG), true)
+-  CFLAGS_DBG    += $(CC_LOWER_OPT)
+-  CXXFLAGS_DBG	+= $(CC_LOWER_OPT)
++  CFLAGS_DBG    += $(CC_OPT/LOWER)
++  CXXFLAGS_DBG	+= $(CC_OPT/LOWER)
+ endif
+ 
+ CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \
+@@ -187,6 +179,9 @@
+ 
+ CPPFLAGS_OPT    = 
+ CPPFLAGS_DBG    = -DDEBUG
++ifneq ($(PRODUCT), java)
++  CPPFLAGS_DBG    += -DLOGGING 
++endif
+ 
+ ifdef LIBRARY
+   # Libraries need to locate other libraries at runtime, and you can tell
+diff --git a/make/common/Defs-solaris.gmk b/make/common/Defs-solaris.gmk
+--- openjdk/jdk/make/common/Defs-solaris.gmk
++++ openjdk/jdk/make/common/Defs-solaris.gmk
+@@ -83,15 +83,16 @@
+ #
+ # Java default optimization (-x04/-O2) etc.  Applies to the VM.
+ #
+-ifeq ($(PRODUCT), java)
+-    _OPT = $(CC_HIGHER_OPT)
+-else
+-    _OPT = $(CC_LOWER_OPT)
+-    CPPFLAGS_DBG    += -DLOGGING -DDBINFO
++ifndef OPTIMIZATION_LEVEL
++  ifeq ($(PRODUCT), java)
++    OPTIMIZATION_LEVEL = HIGHER
++  else
++    OPTIMIZATION_LEVEL = LOWER
++  endif
+ endif
+ 
+ #
+-# If -Xa is in CFLAGS_COMMON it will end up ahead of $(POPT) for the
++# If -Xa is in CFLAGS_COMMON it will end up ahead of $(CC_OPT) for the
+ # optimized build, and that ordering of the flags completely freaks
+ # out cc.  Hence, -Xa is instead in each CFLAGS variant.
+ #
+@@ -116,8 +117,8 @@
+ #
+ # Debug flag for C and C++ compiler
+ #
+-CFLAGS_DEBUG_OPTION=-g
+-CXXFLAGS_DEBUG_OPTION=-g
++CFLAGS_DEBUG_OPTION    = -g $(CC_OPT/NONE)
++CXXFLAGS_DEBUG_OPTION  = -g $(CXX_OPT/NONE)
+ 
+ # Turn off -g if we are doing tcov build
+ ifdef TCOV_BUILD
+@@ -135,15 +136,14 @@
+ #        Performance/size of files should be about the same, maybe smaller.
+ #
+ ifeq ($(FASTDEBUG), true)
+-  CC_FASTDEBUG_OPT       = $(CC_LOWER_OPT)
+-  CFLAGS_DEBUG_OPTION    = -g   $(CC_FASTDEBUG_OPT)
+-  CXXFLAGS_DEBUG_OPTION  = -g0  $(CC_FASTDEBUG_OPT)
++  CFLAGS_DEBUG_OPTION    = -g  $(CC_OPT/LOWER)
++  CXXFLAGS_DEBUG_OPTION  = -g0 $(CXX_OPT/LOWER)
+ endif
+ 
+ CFLAGS_COMMON   = -v -mt -L$(OBJDIR) -xc99=%none
+ CFLAGS_COMMON  += -xCC
+ CFLAGS_COMMON  += -errshort=tags
+-CFLAGS_OPT      = $(POPT)
++CFLAGS_OPT      = $(CC_OPT)
+ CFLAGS_DBG      = $(CFLAGS_DEBUG_OPTION)
+ CFLAGS_COMMON  +=  -Xa $(CFLAGS_REQUIRED)
+ 
+@@ -171,7 +171,7 @@
+   CXXFLAGS_COMMON += -errwarn=%all
+ endif
+ 
+-CXXFLAGS_OPT	= $(POPT)
++CXXFLAGS_OPT	= $(CXX_OPT)
+ CXXFLAGS_DBG	= $(CXXFLAGS_DEBUG_OPTION)
+ CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+ 
+@@ -241,6 +241,10 @@
+ CPPFLAGS_OPT    = 
+ CPPFLAGS_DBG    = -DDEBUG
+ 
++ifneq ($(PRODUCT), java)
++  CPPFLAGS_DBG    += -DLOGGING -DDBINFO
++endif
++
+ ifeq ($(ARCH_FAMILY), i586)
+   # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
+   #   Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
+@@ -384,63 +388,151 @@
+ # Different "levels" of optimization.
+ #
+ ifeq ($(CC_VERSION),gcc)
+-  CC_HIGHEST_OPT = -O3
+-  CC_HIGHER_OPT  = -O3
+-  CC_LOWER_OPT   = -O2
++  
++  CC_OPT/NONE     =
++  CC_OPT/LOWER    = -O2
++  CC_OPT/HIGHER   = -O3
++  CC_OPT/HIGHEST  = -O3
++
++  CXX_OPT/NONE    =
++  CXX_OPT/LOWER   = -O2
++  CXX_OPT/HIGHER  = -O3
++  CXX_OPT/HIGHEST = -O3
++
+   CFLAGS_REQUIRED_i586  += -fno-omit-frame-pointer
+   CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer
++  
+   # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+   #   (See Rules.gmk) May need to wait for gcc 5?
+   AUTOMATIC_PCH_OPTION = 
++
+ else
++  
+   # Highest could be -xO5, but indications are that -xO5 should be reserved
+   #    for a per-file use, on sources with known performance impacts.
+-  CC_HIGHEST_OPT = -xO4
+-  CC_HIGHER_OPT  = -xO4
+-  CC_LOWER_OPT   = -xO2
++  OPT_LEVEL/LOWER    = 2
++  OPT_LEVEL/HIGHER   = 4
++  OPT_LEVEL/HIGHEST  = 4
++  
++  CC_OPT/NONE     =
++  CC_OPT/LOWER    = $(OPT_LEVEL/LOWER:%=-xO%)
++  CC_OPT/HIGHER   = $(OPT_LEVEL/HIGHER:%=-xO%)
++  CC_OPT/HIGHEST  = $(OPT_LEVEL/HIGHEST:%=-xO%)
++  
++  CXX_OPT/NONE    =
++  CXX_OPT/LOWER   = $(OPT_LEVEL/LOWER:%=-xO%)
++  CXX_OPT/HIGHER  = $(OPT_LEVEL/HIGHER:%=-xO%)
++  CXX_OPT/HIGHEST = $(OPT_LEVEL/HIGHEST:%=-xO%)
++    
++  # We need stack frames at all times
++  USE_XKEEPFRAME_OPTION = false
++  ifeq ($(USE_XKEEPFRAME_OPTION),true)
++    
++    # Unknown spelling on this option at this time (Maybe in SS13?)
++    CC_XKEEPFRAME_OPTIONS  = -xkeepframe
++    CXX_XKEEPFRAME_OPTIONS = -xkeepframe
++  
++  else
++  
++    # On X86, make sure tail call optimization is off
++    #    The z and y are the tail call optimizations.
++    ifeq ($(ARCH_FAMILY), i586)
++      ifeq ($(shell $(EXPR) $(CC_VER) \> 5.8), 1)
++        # Somehow, tail call optimization is creeping in.
++        #    Make sure it is off.
++	# WARNING: These may cause compiler warnings about duplicate -O options
++        CC_XKEEPFRAME_OPTIONS  += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++        CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++      endif
++    endif
++  
++    #  On i586 we need to tell the code generator to ALWAYS use a
++    #   frame pointer.
++    ifeq ($(ARCH_FAMILY), i586)
++      # Note that in 5.7, this is done with -xregs=no%frameptr
++      ifeq ($(CC_VER), 5.5)
++        # It's not exactly clear when this optimization kicks in, the
++        #   current assumption is -xO4 or greater and for C++ with
++        #   the -features=no%except option and -xO4 and greater.
++        #   Bottom line is, we ALWAYS want a frame pointer!
++        CC_XKEEPFRAME_OPTIONS  += -Wu,-Z~B
++        CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B
++      endif
++      ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
++        # Do NOT use frame pointer register as a general purpose opt register
++        CC_OPT/NONE            += -xregs=no%frameptr
++        CXX_OPT/NONE           += -xregs=no%frameptr
++        CC_XKEEPFRAME_OPTIONS  += -xregs=no%frameptr
++        CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
++      endif
++    endif
++  
++    #  Optimizer for sparc needs to be told not to do certain things
++    #   related to frames or save instructions.
++    ifeq ($(ARCH_FAMILY), sparc)
++      #  Do not use save instructions instead of add instructions
++      #  This was an optimization starting in SC5.0 that made it hard for us to
++      #    find the "save" instruction (which got turned into an "add")
++      CC_XKEEPFRAME_OPTIONS  += -Wc,-Qrm-s
++      CXX_XKEEPFRAME_OPTIONS += -Qoption cg -Qrm-s
++      # Don't allow tail call code optimization. Started in SC5.0.
++      #    We don't like code of this form:
++      #	save
++      #	<code>
++      #	call foo
++      #	   restore
++      #   because we can't tell if the method will have a stack frame
++      #   and register windows or not.
++      CC_XKEEPFRAME_OPTIONS  += -Wc,-Qiselect-T0
++      CXX_XKEEPFRAME_OPTIONS += -Qoption cg -Qiselect-T0
++    endif
++  
++  endif
++
++  # Extra options used with HIGHEST
+   #
+-  # WARNING: Use of _OPT=$(CC_HIGHEST_OPT) in your Makefile needs to be
++  # WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
+   #          done with care, there are some assumptions below that need to
+   #          be understood about the use of pointers, and IEEE behavior.
+   #
+   # Use non-standard floating point mode (not IEEE 754)
+-  CC_HIGHEST_OPT += -fns
++  CC_HIGHEST_EXTRAS += -fns
+   # Do some simplification of floating point arithmetic (not IEEE 754)
+-  CC_HIGHEST_OPT += -fsimple
++  CC_HIGHEST_EXTRAS += -fsimple
+   # Use single precision floating point with 'float'
+-  CC_HIGHEST_OPT += -fsingle
++  CC_HIGHEST_EXTRAS += -fsingle
+   # Assume memory references via basic pointer types do not alias
+   #   (Source with excessing pointer casting and data access with mixed 
+   #    pointer types are not recommended)
+-  CC_HIGHEST_OPT += -xalias_level=basic
++  CC_HIGHEST_EXTRAS += -xalias_level=basic
+   # Use intrinsic or inline versions for math/std functions
+   #   (If you expect perfect errno behavior, do not use this)
+-  CC_HIGHEST_OPT += -xbuiltin=%all
++  CC_HIGHEST_EXTRAS += -xbuiltin=%all
+   # Loop data dependency optimizations (need -xO3 or higher)
+-  CC_HIGHEST_OPT += -xdepend
++  CC_HIGHEST_EXTRAS += -xdepend
+   # Pointer parameters to functions do not overlap
+   #   (Similar to -xalias_level=basic usage, but less obvious sometimes.
+   #    If you pass in multiple pointers to the same data, do not use this)
+-  CC_HIGHEST_OPT += -xrestrict
++  CC_HIGHEST_EXTRAS += -xrestrict
+   # Inline some library routines
+   #   (If you expect perfect errno behavior, do not use this)
+-  CC_HIGHEST_OPT += -xlibmil
++  CC_HIGHEST_EXTRAS += -xlibmil
+   # Use optimized math routines
+   #   (If you expect perfect errno behavior, do not use this)
+   #  Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+-  #  CC_HIGHEST_OPT += -xlibmopt
++  #  CC_HIGHEST_EXTRAS += -xlibmopt
+   ifeq ($(ARCH_FAMILY), sparc)
+     # Assume at most 8byte alignment, raise SIGBUS on error
+     ### Presents an ABI issue with customer JNI libs?
+-    ####CC_HIGHEST_OPT  += -xmemalign=8s
++    ####CC_HIGHEST_EXTRAS  += -xmemalign=8s
+     # Automatic prefetch instructions, explicit prefetch macros
+-    CC_HIGHEST_OPT  += -xprefetch=auto,explicit
++    CC_HIGHEST_EXTRAS += -xprefetch=auto,explicit
+     # Pick ultra as the chip to optimize to
+-    CC_HIGHEST_OPT  += -xchip=ultra
++    CC_HIGHEST_EXTRAS += -xchip=ultra
+   endif
+   ifeq ($(ARCH), i586)
+     # Pick pentium as the chip to optimize to
+-    CC_HIGHEST_OPT  += -xchip=pentium
++    CC_HIGHEST_EXTRAS += -xchip=pentium
+   endif
+   ifdef LIBRARY
+     # The Solaris CBE (Common Build Environment) requires that the use
+@@ -450,9 +542,6 @@
+     CFLAGS_REQUIRED_sparcv9  += -xregs=no%appl
+   endif
+   ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
+-    # Do NOT use the frame pointer register as a general purpose opt register
+-    CFLAGS_REQUIRED_i586  += -xregs=no%frameptr
+-    CFLAGS_REQUIRED_amd64 += -xregs=no%frameptr
+     # We MUST allow data alignment of 4 for sparc V8 (32bit)
+     #     Presents an ABI issue with customer JNI libs? We must be able to
+     #     to handle 4byte aligned objects? (rare occurance, but possible?)
+@@ -466,77 +555,28 @@
+   # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+   #   (See Rules.gmk) The SS11 -xpch=auto* options appear to be broken.
+   AUTOMATIC_PCH_OPTION =
++  
++  # Add in keep frame options
++  CC_OPT/LOWER    += $(CC_XKEEPFRAME_OPTIONS)
++  CC_OPT/HIGHER   += $(CC_XKEEPFRAME_OPTIONS)
++  CC_OPT/HIGHEST  += $(CC_XKEEPFRAME_OPTIONS)
++  CXX_OPT/LOWER   += $(CXX_XKEEPFRAME_OPTIONS)
++  CXX_OPT/HIGHER  += $(CXX_XKEEPFRAME_OPTIONS)
++  CXX_OPT/HIGHEST += $(CXX_XKEEPFRAME_OPTIONS)
++ 
++  # Add in highest optimization settings
++  CC_OPT/HIGHEST  += $(CC_HIGHEST_EXTRAS)
++  CXX_OPT/HIGHEST += $(CC_HIGHEST_EXTRAS)
++  
+ endif
+-CC_NO_OPT      = 
+ 
+-# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+-ifdef NO_OPTIMIZATIONS
+-  CC_HIGHEST_OPT = $(CC_NO_OPT)
+-  CC_HIGHER_OPT  = $(CC_NO_OPT)
+-  CC_LOWER_OPT   = $(CC_NO_OPT)
+-endif
++# Default optimization settings based on level.
++CC_OPT  = $(CC_OPT/$(OPTIMIZATION_LEVEL))
++CXX_OPT = $(CXX_OPT/$(OPTIMIZATION_LEVEL))
+ 
+ # Flags required all the time
+ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+ 
+-# Add processor specific options for optimizations
+-CC_HIGHEST_OPT += $(_OPT_$(ARCH))
+-CC_HIGHER_OPT  += $(_OPT_$(ARCH))
+-CC_LOWER_OPT   += $(_OPT_$(ARCH))
+-
+-# Secret compiler optimization options that should be in the above macros
+-#    but since they differ in format from C to C++, are added into the C or
+-#    C++ specific macros for compiler flags.
+-#
+-#  On i586 we need to tell the code generator to ALWAYS use a
+-#   frame pointer.
+-ifeq ($(ARCH_FAMILY), i586)
+-  # Note that in 5.7, this is done with -xregs=no%frameptr
+-  ifeq ($(CC_VER), 5.5)
+-    #       It's not exactly clear when this optimization kicks in, the
+-    #       current assumption is -xO4 or greater and for C++ with
+-    #       the -features=no%except option and -xO4 and greater.
+-    #       Bottom line is, we ALWAYS want a frame pointer!
+-    CXXFLAGS_OPT += -Qoption ube -Z~B
+-    CFLAGS_OPT   +=          -Wu,-Z~B
+-    ifeq ($(FASTDEBUG), true)
+-        CXXFLAGS_DBG += -Qoption ube -Z~B
+-        CFLAGS_DBG   +=          -Wu,-Z~B
+-    endif
+-  endif
+-endif
+-#
+-#  Optimizer for sparc needs to be told not to do certain things
+-#   related to frames or save instructions.
+-ifeq ($(ARCH_FAMILY), sparc)
+-  # NOTE: Someday the compilers will provide a high-level option for this.
+-  #   Use save instructions instead of add instructions
+-  #    This was an optimization starting in SC5.0 that made it hard for us to
+-  #    find the "save" instruction (which got turned into an "add")
+-  CXXFLAGS_OPT += -Qoption cg -Qrm-s
+-  CFLAGS_OPT   +=         -Wc,-Qrm-s
+-  ifeq ($(FASTDEBUG), true)
+-    CXXFLAGS_DBG += -Qoption cg -Qrm-s
+-    CFLAGS_DBG   +=         -Wc,-Qrm-s
+-  endif
+-  #
+-  # NOTE: Someday the compilers will provide a high-level option for this.
+-  #   Don't allow tail call code optimization. Started in SC5.0.
+-  #    We don't like code of this form:
+-  #	save
+-  #	<code>
+-  #	call foo
+-  #	   restore
+-  #   because we can't tell if the method will have a stack frame
+-  #   and register windows or not.
+-  CXXFLAGS_OPT += -Qoption cg -Qiselect-T0
+-  CFLAGS_OPT   +=         -Wc,-Qiselect-T0
+-  ifeq ($(FASTDEBUG), true)
+-    CXXFLAGS_DBG += -Qoption cg -Qiselect-T0
+-    CFLAGS_DBG   +=         -Wc,-Qiselect-T0
+-  endif
+-endif
+-
+ #
+ # Path and option to link against the VM, if you have to.  Note that
+ # there are libraries that link against only -ljava, but they do get
+diff --git a/make/common/Defs-windows.gmk b/make/common/Defs-windows.gmk
+--- openjdk/jdk/make/common/Defs-windows.gmk
++++ openjdk/jdk/make/common/Defs-windows.gmk
+@@ -84,6 +84,15 @@
+ #
+ # Default optimization
+ #
++
++ifndef OPTIMIZATION_LEVEL
++  ifeq ($(PRODUCT), java)
++    OPTIMIZATION_LEVEL = HIGHER
++  else
++    OPTIMIZATION_LEVEL = LOWER
++  endif
++endif
++
+ ifeq ($(CC_VERSION),msvc)
+   # Visual Studio .NET 2003 or VS2003 compiler option definitions:
+   #   -O1      Favors reduced size over speed (-Og     -Os -Oy -Ob2 -Gs -GF -Gy)
+@@ -113,21 +122,28 @@
+   # NOTE: With VC6, -Ox, -O1, and -O2 used -Ob1, not -Ob2.
+   # NOTE: With VC6, -O1 and -O2 used -Gf, not -GF.
+   #
++
++  CC_OPT/NONE    = -Od
++  CC_OPT/LOWER   = -O2
++  CC_OPT/HIGHER  = -O3
++  CC_OPT/HIGHEST = -O3
++  
+   ifeq ($(COMPILER_VERSION), VC6)
+     # VC6 (6.2) msvc compiler (the way Tiger and early Mustang were built)
+     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+     AUTOMATIC_PCH_OPTION =
+     GX_OPTION = -GX
+     ifeq ($(ARCH_DATA_MODEL), 32)
+-      CC_HIGHEST_OPT = -Ox -Gy -Os -GB
+-      CC_HIGHER_OPT  = -Ox -Gy -Os -GB
+-      CC_LOWER_OPT   = -Ox -Gy -Os -GB
++      CC_OPT/HIGHEST = -Ox -Gy -Os -GB
++      CC_OPT/HIGHER  = -Ox -Gy -Os -GB
++      CC_OPT/LOWER   = -Ox -Gy -Os -GB
+     else
+-      CC_HIGHEST_OPT = -Ox -Gy -Op
+-      CC_HIGHER_OPT  = -Ox -Gy -Op
+-      CC_LOWER_OPT   = -Ox -Gy -Op
++      CC_OPT/HIGHEST = -Ox -Gy -Op
++      CC_OPT/HIGHER  = -Ox -Gy -Op
++      CC_OPT/LOWER   = -Ox -Gy -Op
+     endif
+   endif
++  
+   ifeq ($(COMPILER_VERSION), VS2003)
+     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+     AUTOMATIC_PCH_OPTION = -YX
+@@ -135,53 +151,45 @@
+     GX_OPTION = -GX
+     ifeq ($(ARCH_DATA_MODEL), 32)
+       # Lowered opt level to try and reduce footprint, dll size especially.
+-      #     Was: CC_HIGHEST_OPT = -O2 -G6
+-      #     Was: CC_HIGHER_OPT  = -O2
+-      CC_HIGHEST_OPT = -O2
+-      CC_HIGHER_OPT  = -O1
+-      CC_LOWER_OPT   = -O1
++      #     Was: CC_OPT/HIGHEST = -O2 -G6
++      #     Was: CC_OPT/HIGHER  = -O2
++      CC_OPT/HIGHEST = -O2
++      CC_OPT/HIGHER  = -O1
++      CC_OPT/LOWER   = -O1
+     else
+-      CC_HIGHEST_OPT = -O2 -Op
+-      CC_HIGHER_OPT  = -O2 -Op
+-      CC_LOWER_OPT   = -O1 -Op
++      CC_OPT/HIGHEST = -O2 -Op
++      CC_OPT/HIGHER  = -O2 -Op
++      CC_OPT/LOWER   = -O1 -Op
+     endif
+   endif
++  
+   ifeq ($(COMPILER_VERSION), VS2005)
+     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+     AUTOMATIC_PCH_OPTION =
+     # VS2005 compiler, only with Platform SDK right now?
+     GX_OPTION = -EHsc
+     ifeq ($(ARCH_DATA_MODEL), 32)
+-      CC_HIGHEST_OPT = -O2
+-      CC_HIGHER_OPT  = -O1
+-      CC_LOWER_OPT   = -O1
++      CC_OPT/HIGHEST = -O2
++      CC_OPT/HIGHER  = -O1
++      CC_OPT/LOWER   = -O1
+     else
+-      CC_HIGHEST_OPT = -O2
+-      CC_HIGHER_OPT  = -O1
+-      CC_LOWER_OPT   = -O1
++      CC_OPT/HIGHEST = -O2
++      CC_OPT/HIGHER  = -O1
++      CC_OPT/LOWER   = -O1
+     endif
+   endif
+-  CC_NO_OPT      = -Od
++
+ else # CC_VERSION
++  
+   # GCC not supported, but left for historical reference...
+-  CC_HIGHEST_OPT = -O3
+-  CC_HIGHER_OPT  = -O2
+-  CC_LOWER_OPT   = -O2
+-  CC_NO_OPT      = 
++  CC_OPT/NONE     =
++  CC_OPT/LOWER    = -O2
++  CC_OPT/HIGHER   = -O2
++  CC_OPT/HIGHEST  = -O3
++
+ endif
+ 
+-# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+-ifdef NO_OPTIMIZATIONS
+-  CC_HIGHEST_OPT = $(CC_NO_OPT)
+-  CC_HIGHER_OPT  = $(CC_NO_OPT)
+-  CC_LOWER_OPT   = $(CC_NO_OPT)
+-endif
+-
+-ifeq ($(PRODUCT), java)
+-    _OPT = $(CC_HIGHER_OPT)
+-else
+-    _OPT = $(CC_LOWER_OPT)
+-endif
++CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
+ 
+ # Select the runtime support library carefully, need to be consistent
+ #
+@@ -233,7 +241,7 @@
+   #            Use static link for the C++ runtime (so msvcp71.dll not needed)
+   #   
+   CFLAGS_COMMON  += -Zi -nologo
+-  CFLAGS_OPT      = $(POPT)
++  CFLAGS_OPT      = $(CC_OPT)
+   CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)
+ 
+   # Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type
+diff --git a/make/common/Defs.gmk b/make/common/Defs.gmk
+--- openjdk/jdk/make/common/Defs.gmk
++++ openjdk/jdk/make/common/Defs.gmk
+@@ -483,11 +483,6 @@
+ include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk
+ 
+ #
+-# Set opt level to ALT_OPT if set otherwise _OPT
+-#
+-POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
+-
+-#
+ # Convenient macros
+ #
+ 
+diff --git a/make/common/Library.gmk b/make/common/Library.gmk
+--- openjdk/jdk/make/common/Library.gmk
++++ openjdk/jdk/make/common/Library.gmk
+@@ -238,7 +238,7 @@
+ #
+ $(ACTUAL_LIBRARY):: $(COMPILE_FILES_o) $(FILES_m) $(FILES_reorder)
+ 	@$(prep-target)
+-	@$(ECHO) "STATS: LIBRARY=$(LIBRARY), PRODUCT=$(PRODUCT), _OPT=$(_OPT)"
++	@$(ECHO) "STATS: LIBRARY=$(LIBRARY), PRODUCT=$(PRODUCT), OPTIMIZATION_LEVEL=$(OPTIMIZATION_LEVEL)"
+ 	@$(ECHO) "Rebuilding $@ because of $?"
+ ifeq ($(LIBRARY), fdlibm)
+ 	$(AR) -r $@ $(FILES_o)
+diff --git a/make/common/shared/Defs.gmk b/make/common/shared/Defs.gmk
+--- openjdk/jdk/make/common/shared/Defs.gmk
++++ openjdk/jdk/make/common/shared/Defs.gmk
+@@ -277,9 +277,6 @@
+ PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
+ PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
+ 
+-# OPT: Changes what the optimizations settings (in _OPT)
+-POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
+-
+ # PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
+ #  If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set
+ #  to parallel.
+diff --git a/make/java/fdlibm/Makefile b/make/java/fdlibm/Makefile
+--- openjdk/jdk/make/java/fdlibm/Makefile
++++ openjdk/jdk/make/java/fdlibm/Makefile
+@@ -33,6 +33,7 @@
+ BUILDDIR     = ../..
+ LIBRARY      = fdlibm
+ PRODUCT      = java
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+@@ -40,10 +41,10 @@
+ #
+ FDLIBM_SRC = $(SHARE_SRC)/native/java/lang/fdlibm
+ 
+-# windows compiler flags
++# Windows: compiler flags
+ ifeq ($(PLATFORM),windows)
+   # Turn all optimizations off
+-  _OPT = $(CC_NO_OPT)
++  OPTIMIZATION_LEVEL = NONE
+   OTHER_CFLAGS =
+   CPPFLAGS_DBG += -DLOGGING
+   # Files built here do not compile with warning level 3 if warnings are fatal
+@@ -51,6 +52,15 @@
+ endif
+ 
+ #
++# Linux: Disable optimization to get correctly reproducible
++# floating-point results.
++#
++ifeq ($(PLATFORM),linux)
++  # Turn all optimizations off
++  OPTIMIZATION_LEVEL = NONE
++endif
++
++#
+ # Include path.
+ #
+ OTHER_INCLUDES = -I$(FDLIBM_SRC)/include
+@@ -71,15 +81,6 @@
+ include $(BUILDDIR)/common/Library.gmk
+ 
+ #
+-# Disable optimization to get correctly reproducible 
+-# floating-point results.
+-#
+-ifeq ($(PLATFORM),linux)
+-  # Turn all optimizations off
+-  _OPT = $(CC_NO_OPT)
+-endif
+-
+-#
+ # Find fdlibm source files.
+ #
+ vpath %.c
+diff --git a/make/java/java_hprof_demo/Makefile b/make/java/java_hprof_demo/Makefile
+--- openjdk/jdk/make/java/java_hprof_demo/Makefile
++++ openjdk/jdk/make/java/java_hprof_demo/Makefile
+@@ -28,14 +28,14 @@
+ PRODUCT = sun
+ LIBRARY_OUTPUT = hprof_jvmti
+ 
++# Use highest optimization
++OPTIMIZATION_LEVEL = HIGHEST
++
+ # Configure the CFLAGS for this library.
+-
+ FILES_m = mapfile-vers
+ 
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+-_OPT=$(CC_HIGHEST_OPT)
+-
+ SRCDIR=$(SHARE_SRC)/demo/jvmti/hprof
+ PSRCDIR=$(PLATFORM_SRC)/demo/jvmti/hprof
+ 
+diff --git a/make/sun/awt/Makefile b/make/sun/awt/Makefile
+--- openjdk/jdk/make/sun/awt/Makefile
++++ openjdk/jdk/make/sun/awt/Makefile
+@@ -28,18 +28,14 @@
+ LIBRARY = awt
+ PRODUCT = sun
+ 
+-#
+ # Tell Defs.gmk that VIS is needed
+-#
+ VIS_NEEDED=true
+ 
++# Use highest optimization level
++OPTMIZATION_LEVEL = HIGHEST
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+-#
+-# Use highest optimization level
+-#
+-_OPT = $(CC_HIGHEST_OPT)
+-
+ OTHER_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES
+ 
+ #
+diff --git a/make/sun/font/Makefile b/make/sun/font/Makefile
+--- openjdk/jdk/make/sun/font/Makefile
++++ openjdk/jdk/make/sun/font/Makefile
+@@ -35,6 +35,9 @@
+ # Indicate we want the C++ compiler to do the linking.
+ CPLUSPLUSLIBRARY=true
+ 
++# Use higher optimization level
++OPTIMIZATION_LEVEL = HIGHER
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+@@ -48,11 +51,6 @@
+ # Files
+ #
+ 
+-#
+-# Use higher optimization level
+-#
+-_OPT = $(CC_HIGHER_OPT)
+-
+ include FILES_c.gmk
+ 
+ AUTO_FILES_JAVA_DIRS = sun/font
+diff --git a/make/sun/font/t2k/Makefile b/make/sun/font/t2k/Makefile
+--- openjdk/jdk/make/sun/font/t2k/Makefile
++++ openjdk/jdk/make/sun/font/t2k/Makefile
+@@ -41,14 +41,12 @@
+ # for a few ones with native methods) so shouldn't clobber them.
+ DONT_CLOBBER_CLASSES=true
+ 
++# Use higher optimization level
++OPTIMIZATION_LEVEL = HIGHER
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+-# Use higher optimization level
+-#
+-_OPT = $(CC_HIGHER_OPT)
+-
+-#
+ # Files
+ #
+ include FILES_c.gmk
+diff --git a/make/sun/image/generic/Makefile b/make/sun/image/generic/Makefile
+--- openjdk/jdk/make/sun/image/generic/Makefile
++++ openjdk/jdk/make/sun/image/generic/Makefile
+@@ -31,14 +31,13 @@
+ PACKAGE = sun.awt.medialib
+ LIBRARY = mlib_image
+ PRODUCT = sun
++
++# Use highest level of optimization on this library
++OPTIMIZATION_LEVEL = HIGHEST
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+-# Use highest level of optimization on this library
+-#
+-_OPT = $(CC_HIGHEST_OPT)
+-
+-#
+ # Use mapfile
+ #
+ FILES_m = mapfile-vers
+diff --git a/make/sun/image/vis/Makefile b/make/sun/image/vis/Makefile
+--- openjdk/jdk/make/sun/image/vis/Makefile
++++ openjdk/jdk/make/sun/image/vis/Makefile
+@@ -31,19 +31,15 @@
+ LIBRARY = mlib_image_v
+ PRODUCT = sun
+ 
+-#
+ # Tell Defs.gmk we need VIS instructions
+-#
+ VIS_NEEDED=true
+ 
++# Select highest level of optimization for this library
++OPTIMIZATION_LEVEL = HIGHEST
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+-# Select highest level of optimization for this library
+-#
+-_OPT = $(CC_HIGHEST_OPT)
+-
+-#
+ # Use generic mapfile
+ #
+ FILES_m = ../generic/mapfile-vers
+diff --git a/make/sun/jpeg/Makefile b/make/sun/jpeg/Makefile
+--- openjdk/jdk/make/sun/jpeg/Makefile
++++ openjdk/jdk/make/sun/jpeg/Makefile
+@@ -27,14 +27,13 @@
+ PACKAGE = sun.awt
+ LIBRARY = jpeg
+ PRODUCT = sun
++
++# Use highest optimization level
++OPTIMIZATION_LEVEL = HIGHEST
++
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ #
+-# Use highest optimization level
+-#
+-_OPT = $(CC_HIGHEST_OPT)
+-
+-#
+ # Files
+ #
+ include FILES_c.gmk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6799141-split_out_versions.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,915 @@
+diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk
+--- openjdk.orig/jdk/make/common/Defs-linux.gmk	2013-09-03 20:14:17.072980562 +0100
++++ openjdk/jdk/make/common/Defs-linux.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -135,6 +135,14 @@
+   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.
++_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | $(GREP) -- '--hash-style=gnu')
++ifneq ($(_HAS_HASH_STYLE_GNU),)
++  LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
++endif
++LDFLAGS_COMMON          += $(LDFLAGS_HASH_STYLE)
++
+ #
+ # Selection of warning messages
+ #
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-03 20:14:15.576957292 +0100
++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -143,18 +143,10 @@
+   CC             = $(COMPILER_PATH)gcc
+   CPP            = $(COMPILER_PATH)gcc -E
+   CXX            = $(COMPILER_PATH)g++
+-  REQUIRED_CC_VER = 3.2
+ 
+   # Option used to create a shared library
+   SHARED_LIBRARY_FLAG = -G
+-  # But gcc is still needed no matter what on 32bit
+-  ifeq ($(ARCH_DATA_MODEL), 32)
+-    REQUIRED_GCC_VER = 2.95
+-    GCC =$(GCC_COMPILER_PATH)gcc
+-    _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
+-    GCC_VER  :=$(call GetVersion,"$(_GCC_VER)")
+-  endif
+-
++  
+ endif
+ 
+ # Get gcc version
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk openjdk/jdk/make/common/shared/Compiler-msvc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk	2011-11-14 22:11:39.000000000 +0000
++++ openjdk/jdk/make/common/shared/Compiler-msvc.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -41,8 +41,6 @@
+   # Fill in unknown values
+   COMPILER_NAME=Unknown MSVC Compiler
+   COMPILER_VERSION=
+-  REQUIRED_CC_VER=
+-  REQUIRED_LINK_VER=
+   
+   # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
+   NMAKE          = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
+@@ -54,8 +52,6 @@
+     CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$5}')
+     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
+     REQUIRED_CCTYPE = Optimizing
+-    REQUIRED_CC_VER = 13.10.3077
+-    REQUIRED_LINK_VER = 7.10.3077
+     ifeq ($(CC_MAJORVER), 12)
+       # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447
+       COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3
+@@ -91,14 +87,6 @@
+     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
+     CC_MINORVER :=$(call MinorVersion,$(CC_VER))
+     CC_MICROVER :=$(call MicroVersion,$(CC_VER))
+-    ifeq ($(ARCH), ia64)
+-      REQUIRED_CC_VER = 13.00.9337.7
+-      REQUIRED_LINK_VER = 7.00.9337.7
+-    endif
+-    ifeq ($(ARCH), amd64)
+-      REQUIRED_CC_VER = 14.00.40310.41
+-      REQUIRED_LINK_VER = 8.00.40310.39
+-    endif
+     ifeq ($(CC_MAJORVER), 13)
+       ifeq ($(ARCH), ia64)
+         # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-03 20:14:17.060980376 +0100
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -33,29 +33,20 @@
+ ifeq ($(PLATFORM), solaris)
+   # FIXUP: Change to SS12 when validated
+   #COMPILER_VERSION=SS12
+-  #REQUIRED_CC_VER=5.9
+   COMPILER_VERSION=SS11
+-  REQUIRED_CC_VER=5.8
+   CC             = $(COMPILER_PATH)cc
+   CPP            = $(COMPILER_PATH)cc -E
+   CXX            = $(COMPILER_PATH)CC
+   LINT           = $(COMPILER_PATH)lint
+   # Option used to create a shared library
+   SHARED_LIBRARY_FLAG = -G
+-  # But gcc is still needed no matter what on 32bit
+-  ifeq ($(ARCH_DATA_MODEL), 32)
+-    REQUIRED_GCC_VER = 2.95
+-    GCC =$(GCC_COMPILER_PATH)gcc
+-    _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
+-    GCC_VER  :=$(call GetVersion,"$(_GCC_VER)")
+-  endif
++  GCC =$(GCC_COMPILER_PATH)gcc
+ endif
+ 
+ # Sun Studio Compiler settings specific to Linux
+ ifeq ($(PLATFORM), linux)
+   # This has not been tested
+-  COMPILER_VERSION=SS12
+-  REQUIRED_CC_VER=5.9
++  COMPILER_VERSION=SS11
+   CC             = $(COMPILER_PATH)cc
+   CPP            = $(COMPILER_PATH)cc -E
+   CXX            = $(COMPILER_PATH)CC
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs.gmk openjdk/jdk/make/common/shared/Defs.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs.gmk	2013-09-03 20:14:17.072980562 +0100
++++ openjdk/jdk/make/common/shared/Defs.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -113,9 +113,9 @@
+   fi)
+ endef
+ 
+-# Given a line of text, get the major.minor version number from it
++# Given a line of text, get the version number from it
+ define GetVersion
+-$(shell echo $1 | sed -e 's@[^1-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*@\1@' )
++$(shell echo $1 | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' )
+ endef
+ 
+ # Given a major.minor.micro version, return the major, minor, or micro number
+@@ -130,26 +130,26 @@
+ endef
+ 
+ # Macro that returns missing, same, newer, or older $1=version $2=required
+-#  (currently does not check the micro number)
+ define CheckVersions
+ $(shell \
+   if [ "$1" = "" -o "$2" = "" ]; then \
+     echo missing; \
++  elif [ "$1" = "$2" ]; then \
++    echo same; \
++  elif [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \
++    echo older; \
++  elif [ $(call MajorVersion,$1) -gt $(call MajorVersion,$2) ] ; then \
++    echo newer; \
++  elif [ $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \
++    echo older; \
++  elif [ $(call MinorVersion,$1) -gt $(call MinorVersion,$2) ]; then \
++    echo newer; \
++  elif [ $(call MicroVersion,$1) -lt $(call MicroVersion,$2) ]; then \
++    echo older; \
++  elif [ $(call MicroVersion,$1) -gt $(call MicroVersion,$2) ]; then \
++    echo newer; \
+   else \
+-    if [ "$1" = "$2" ]; then \
+-      echo same; \
+-    else \
+-      if [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \
+-        echo older; \
+-      else \
+-	if [ $(call MajorVersion,$1) -eq $(call MajorVersion,$2) -a \
+-	     $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \
+-          echo older; \
+-        else \
+-          echo newer; \
+-        fi; \
+-      fi; \
+-    fi; \
++    echo same; \
+   fi)
+ endef
+ 
+@@ -499,3 +499,6 @@
+ # Get shared compiler settings
+ include $(JDK_MAKE_SHARED_DIR)/Compiler.gmk
+ 
++# Get the REQUIRED versions
++include $(JDK_MAKE_SHARED_DIR)/Defs-versions.gmk
++
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs-versions.gmk openjdk/jdk/make/common/shared/Defs-versions.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs-versions.gmk	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/make/common/shared/Defs-versions.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -0,0 +1,183 @@
++#
++# Copyright 2009 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.
++#
++
++#
++# WARNING: This file is shared with other workspaces.
++#
++
++# This file needs these set: CC_VERSION, PLATFORM, ARCH_FAMILY, and ARCH_DATA_MODEL.
++
++##########################################################################
++#
++# List of JDK official minimum, expected, or required versions:
++#
++# REQUIRED_ALSA_VERSION
++#   Linux only: The ALSA sound library version expected.
++#
++# REQUIRED_ANT_VER
++#   The minimum 'ant' version.
++#
++# REQUIRED_BOOT_VER
++#   The minimum boot jdk version.
++#
++# REQUIRED_CC_VER
++#   The primary C compiler version expected.
++#
++# REQUIRED_CYGWIN_VER
++#   Windows only: If CYGWIN is used, the minimum CYGWIN version.
++#
++# REQUIRED_DXSDK_VER
++#   Windows only: The version of DirectX SDK expected.
++#
++# REQUIRED_FREE_SPACE
++#   The minimum disk space needed as determined by running 'du -sk' on a fully
++#   built workspace.
++#
++# REQUIRED_FREETYPE_VERSION
++#   If we are using freetype, the freetype version expected.
++#
++# REQUIRED_GCC_VER
++#   Solaris and Linux only. The required version of gcc/g++ for the plugin.
++#
++# REQUIRED_LINK_VER
++#   Windows only: The version of link.exe expected.
++#
++# REQUIRED_MAKE_VER
++#   The minimum version of GNU make.
++#
++# REQUIRED_MKS_VER
++#   Windows only: If MKS used instead of CYGWIN, the minimum version of MKS.
++#
++# REQUIRED_OS_VARIANT_NAME
++#   The OS variation name required.
++#     Solaris: Solaris or OpenSolaris
++#     Windows: Windows2000, WindowsXP, Windows2003, etc.
++#     Linux: Fedora, RedHat, SuSE, Ubuntu, etc.
++#
++# REQUIRED_OS_VARIANT_VERSION
++#   The version number associated with the above OS variant name.
++#     Solaris: output of uname -r
++#     Windows: 5.0 for Windows2000, 5.1 for WindowsXP, 5.2 for Windows2003, etc.
++#     Linux: number for the variant, e.g. 9 for Fedora 9
++#
++# REQUIRED_OS_VERSION
++#   The formal OS version number.
++#     Solaris & Windows: same as REQUIRED_OS_VARIANT_VERSION
++#     Linux: the kernel version, or output of uname -r
++#
++# REQUIRED_UNZIP_VER
++#   The minimum version of unzip.
++#
++# REQUIRED_ZIP_VER
++#   The minimum version of unzip.
++#
++###########
++#
++# Differences in the build platform from these versions may trigger warnings
++#   messages during the sanity checking when building the JDK.
++#
++# When building the OpenJDK most of these required or expected  versions are 
++#  ignored or allowed to vary widely to accomodate the many build situations
++#  of the OpenJDK.
++#
++##########################################################################
++
++# Solaris specific
++ifeq ($(PLATFORM), solaris)
++  REQUIRED_OS_VERSION         = 5.10
++  REQUIRED_OS_VARIANT_NAME    = Solaris
++  REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION)
++  ifeq ($(ARCH_FAMILY), sparc)
++    REQUIRED_FREE_SPACE       = 1300000
++  else
++    REQUIRED_FREE_SPACE       = 1040000
++  endif
++  ifeq ($(CC_VERSION),sun)
++    REQUIRED_CC_VER           = 5.8
++  endif
++  ifeq ($(CC_VERSION),gcc)
++    REQUIRED_CC_VER           = 3.4.3
++  endif
++  REQUIRED_GCC_VER            = 2.95.2
++endif
++
++# Linux specific
++ifeq ($(PLATFORM), linux)
++  REQUIRED_OS_VERSION         = 2.6
++  REQUIRED_OS_VARIANT_NAME    = Fedora
++  REQUIRED_OS_VARIANT_VERSION = 9
++  REQUIRED_FREE_SPACE         = 1460000
++  REQUIRED_ALSA_VERSION       = 0.9.1
++  REQUIRED_GCC_VER            = 2.95
++  ifeq ($(CC_VERSION),gcc)
++    REQUIRED_CC_VER           = 3.2
++  endif
++  ifeq ($(CC_VERSION),sun)
++    REQUIRED_CC_VER           = 5.8
++  endif
++endif
++
++# Windows specific
++ifeq ($(PLATFORM), windows)
++  ifeq ($(ARCH_DATA_MODEL),64)
++    REQUIRED_OS_VERSION       = 5.2
++    REQUIRED_OS_VARIANT_NAME  = Windows2003
++  else
++    REQUIRED_OS_VERSION       = 5.1
++    REQUIRED_OS_VARIANT_NAME  = WindowsXP
++  endif
++  REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION)
++  REQUIRED_CYGWIN_VER         = 4.0
++  REQUIRED_MKS_VER            = 6.1
++  REQUIRED_FREE_SPACE         = 500000
++  REQUIRED_DXSDK_VER          = 0x0900
++  ifeq ($(CC_VERSION),msvc)
++    ifeq ($(ARCH_DATA_MODEL), 32)
++      REQUIRED_CC_VER         = 13.10.3077
++      REQUIRED_LINK_VER       = 7.10.3077
++    else
++      ifeq ($(ARCH), ia64)
++        REQUIRED_CC_VER       = 13.00.9337.7
++        REQUIRED_LINK_VER     = 7.00.9337.7
++      endif
++      ifeq ($(ARCH), amd64)
++        REQUIRED_CC_VER       = 14.00.40310.41
++        REQUIRED_LINK_VER     = 8.00.40310.39
++      endif
++    endif
++  endif
++  ifeq ($(CC_VERSION),gcc)
++    REQUIRED_CC_VER           = 3.4.3
++  endif
++endif
++
++# Generic
++REQUIRED_ANT_VER          = 1.6.3
++REQUIRED_BOOT_VER         = 1.5
++REQUIRED_FREETYPE_VERSION = 2.3.0
++REQUIRED_MAKE_VER         = 3.78
++REQUIRED_UNZIP_VER        = 5.12
++REQUIRED_ZIP_VER          = 2.2
++
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs-windows.gmk openjdk/jdk/make/common/shared/Defs-windows.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs-windows.gmk	2011-11-14 22:11:40.000000000 +0000
++++ openjdk/jdk/make/common/shared/Defs-windows.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -136,10 +136,7 @@
+ UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
+ 
+ # Get version of MKS or CYGWIN
+-ifdef USING_CYGWIN
+-_CYGWIN_VER :=$(shell $(UNAME))
+-CYGWIN_VER  :=$(call GetVersion,$(_CYGWIN_VER))
+-else # MKS
++ifndef USING_CYGWIN
+ _MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
+ MKS_VER  :=$(call GetVersion,$(_MKS_VER))
+ # At this point, we can re-define FullPath to use DOSNAME_CMD
+diff -Nru openjdk.orig/jdk/make/common/shared/Platform.gmk openjdk/jdk/make/common/shared/Platform.gmk
+--- openjdk.orig/jdk/make/common/shared/Platform.gmk	2013-09-03 20:14:12.140903842 +0100
++++ openjdk/jdk/make/common/shared/Platform.gmk	2013-09-03 20:57:10.433013915 +0100
+@@ -51,8 +51,6 @@
+ #     USER                        login name of user (minus blanks)
+ #     PLATFORM                    windows, solaris, or linux
+ #     VARIANT                     OPT or DBG, OPT is the default
+-#     OS_NAME                     solaris, linux, or nt
+-#     OS_VERSION                  specific version of os, 5.10, 2.4.9-e.3, etc.
+ #     TEMP_DISK                   /tmp or C:/temp
+ #     ARCH_DATA_MODEL             32 or 64
+ #     ARCH                        sparc, sparcv9, i586, amd64, or ia64
+@@ -71,28 +69,11 @@
+ #     ISA_DIR                     solaris only: /sparcv9 or /amd64
+ #     LIBARCH32                   solaris only: sparc or i386
+ #     LIBARCH64                   solaris only: sparcv9 or amd64
+-#     REQUIRED_WINDOWS_VERSION    windows only: specific version of windows 
+ #     USING_CYGWIN                windows only: true or false
+-#     WINDOWS_NT_VERSION_STRING   windows only: long version name
+-#     REQUIRED_OS_VERSION         required OS version, e.g. 5.10, 2.4
+ #     ISHIELD_TEMP_MIN            windows only: minimum disk space in temp area
+-#     REQUIRED_ZIP_VER            required version of zip
+-#     REQUIRED_UNZIP_VER          required version of unzip
+-#     REQUIRED_DXSDK_VER          windows only: required version of DirectX
+-#     LINUX_VERSION_INFO          linux only: location of linux release file
+-#     REQUIRED_LINUX_VER          linux only: required version of linux
+-#     REQUIRED_LINUX_FULLVER      linux only: required full version of linux
+-#     REQUIRED_ALSA_VERSION       linux only: required version of ALSA
+-#     REQUIRED_FREETYPE_VERSION   openjdk only: required version of freetype 
+ 
+ SYSTEM_UNAME := $(shell uname)
+ 
+-# Normal boot jdk is previous release, but a hard requirement is a 1.6 boot
+-REQUIRED_BOOT_VER = 1.6
+-
+-# If we are using freetype, this is the required version
+-REQUIRED_FREETYPE_VERSION=2.3.0
+-
+ #
+ # Prune out all known SCM (Source Code Management) directories
+ # so they will not be included when copying directory trees
+@@ -111,8 +92,6 @@
+ # Platform settings specific to Solaris
+ ifeq ($(SYSTEM_UNAME), SunOS)
+   PLATFORM = solaris
+-  OS_NAME = solaris
+-  OS_VERSION := $(shell uname -r)
+   # Solaris sparc build can be either 32-bit or 64-bit.
+   #   Default to 32, but allow explicit setting to 32 or 64.
+   ifndef ARCH_DATA_MODEL
+@@ -164,12 +143,6 @@
+   endif
+   # Suffix for file bundles used in previous release
+   BUNDLE_FILE_SUFFIX=.tar
+-  # Required Solaris version
+-  ifeq ($(ARCH), amd64)
+-    REQUIRED_OS_VERSION = 5.10
+-  else
+-    REQUIRED_OS_VERSION = 5.8
+-  endif
+   # How much RAM does this machine have:
+   MB_OF_MEMORY=$(shell /etc/prtconf | fgrep 'Memory size:' | expand | cut -d' ' -f3)
+ endif
+@@ -177,8 +150,6 @@
+ # Platform settings specific to Linux
+ ifeq ($(SYSTEM_UNAME), Linux)
+   PLATFORM = linux
+-  OS_NAME = linux
+-  OS_VERSION := $(shell uname -r)
+   # Arch and OS name/version
+   ifndef CROSS_COMPILATION
+     mach := $(shell uname -m)
+@@ -283,27 +254,6 @@
+ 
+   # Suffix for file bundles used in previous release
+   BUNDLE_FILE_SUFFIX=.tar.gz
+-  LINUX_VERSION_INFO = /etc/redhat-release
+-  ifeq ($(ARCH_DATA_MODEL), 32)
+-    REQUIRED_LINUX_VER = Advanced Server
+-    REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS
+-    REQUIRED_OS_VERSION = 2.4.9-e.3
+-  else
+-    ifeq ($(ARCH), amd64)
+-      LINUX_VERSION_INFO = /etc/SuSE-release
+-      REQUIRED_LINUX_VER = 8.1
+-      REQUIRED_LINUX_FULLVER = $(REQUIRED_LINUX_VER) SLSE AMD64
+-      REQUIRED_OS_VERSION = 2.4.19-SMP
+-    else
+-      REQUIRED_LINUX_VER = Advanced Server
+-      REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS 64 bit
+-      REQUIRED_OS_VERSION = 2.4.19-SMP
+-    endif
+-  endif
+-  ifneq ($(ARCH), ia64)
+-    # ALSA 0.9.1 and above
+-    REQUIRED_ALSA_VERSION = ^((0[.]9[.][1-9])|(1[.]0[.][0-9]))[0-9]*
+-  endif
+   # How much RAM does this machine have:
+   MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2)
+ endif
+@@ -311,23 +261,15 @@
+ # Windows with and without CYGWIN will be slightly different
+ ifeq ($(SYSTEM_UNAME), Windows_NT)
+   PLATFORM = windows
+-  OS_VERSION := $(shell uname -r)
+-  WINDOWS_NT_VERSION_STRING=Windows_NT
+-  REQUIRED_MKS_VER=6.1
+ endif
+ ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
+   PLATFORM = windows
+-  OS_VERSION := 5
+   USING_CYGWIN = true
+   export USING_CYGWIN
+-  WINDOWS_NT_VERSION_STRING=CYGWIN_NT
+-  REQUIRED_CYGWIN_VER=4.0
+ endif
+ 
+ # Platform settings specific to Windows
+ ifeq ($(PLATFORM), windows)
+-  OS_NAME = nt
+-  REQUIRED_OS_VERSION=5
+   # Windows builds default to the appropriate for the underlaying
+   # architecture.
+   # Temporary disk area
+@@ -350,7 +292,6 @@
+     # If the user wants to perform a cross compile build then they must
+     # - set ARCH_DATA_MODEL=64 and either
+     #      + set ARCH to ia64 or amd64, or
+-    REQUIRED_WINDOWS_VERSION=Server 2003 Enterprise x64 Edition
+     ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)), AMD64)
+       ARCH=amd64
+     else
+@@ -360,8 +301,6 @@
+     # Value of Java os.arch property
+     ARCHPROP=$(LIBARCH)
+   else
+-    REQUIRED_WINDOWS_VERSION=2000 or Unknown
+-    #REQUIRED_WINDOWS_VERSION=XP Professional
+     # LIBARCH is used to preserve the jre/lib/i386 directory name for 32-bit intel
+     ARCH=i586
+     LIBARCH=i386
+@@ -407,7 +346,6 @@
+   # ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
+   #     bundles build on windows.
+   ISHIELD_TEMP_MIN=250000
+-  REQUIRED_DXSDK_VER = 0x0900
+   # How much RAM does this machine have:
+   MB_OF_MEMORY := $(shell \
+     if [ -f "C:/cygwin/bin/free.exe" ] ; then \
+@@ -450,10 +388,6 @@
+   MIN_VM_MEMORY      := 128
+ endif
+ 
+-REQUIRED_ZIP_VER = 2.2
+-REQUIRED_UNZIP_VER = 5.12
+-REQUIRED_MAKE_VER = 3.78
+-
+ # Unix type settings (same for all unix platforms)
+ ifneq ($(PLATFORM), windows)
+   # Temporary disk area
+diff -Nru openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk
+--- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2013-09-03 20:14:11.920900419 +0100
++++ openjdk/jdk/make/common/shared/Sanity.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -38,54 +38,100 @@
+ SANITY_FILES =  $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE)
+ 
+ # How to say "The Release Engineering people use this"
+-THE_OFFICIAL_USES=The official $(PLATFORM) builds use
++THE_OFFICIAL_USES=The official builds on $(PLATFORM) use
+ 
+ # How to say "You are using:"
+ YOU_ARE_USING=You appear to be using
+ 
++# Error message
++define SanityError
++$(ECHO) "ERROR: $1\n" >> $(ERROR_FILE)
++endef
++
++# Warning message
++define SanityWarning
++$(ECHO) "WARNING: $1\n" >> $(WARNING_FILE)
++endef
++
++# Official version error message: name version required_version
++define OfficialErrorMessage
++$(call SanityError,\
++$(THE_OFFICIAL_USES) $1 $3. Your $1 $(if $2,undefined,$2) will not work.)
++endef
++
++# Official version warning message: name version required_version
++define OfficialWarningMessage
++$(call SanityWarning,\
++$(THE_OFFICIAL_USES) $1 $3. $(YOU_ARE_USING) $1 $2.)
++endef
++
++
+ # Settings and rules to validate the JDK build environment.
+ 
+ ifeq ($(PLATFORM), solaris)
++  # What kind of system we are using (Variations are Solaris and OpenSolaris)
++  OS_VERSION := $(shell uname -r)
++  OS_VARIANT_NAME := $(strip $(shell head -1 /etc/release | awk '{print $$1;}') )
++  OS_VARIANT_VERSION := $(OS_VERSION)
+   REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris
+   ifeq ($(ARCH_FAMILY), sparc)
+     PATCH_POSITION = $$4
+   else
+     PATCH_POSITION = $$6
+   endif
++  ifndef OPENJDK
++    _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
++    GCC_VER  :=$(call GetVersion,"$(_GCC_VER)")
++  endif
+ endif
+ 
+ ifeq ($(PLATFORM), linux)
+-  ifeq ($(ARCH), amd64)
+-    LINUX_VERSION := $(shell \
+-        if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
+-          $(CAT) $(LINUX_VERSION_INFO) | $(TAIL) -1 | $(NAWK) '{ print $$3; }';\
+-        else \
+-          $(ECHO) "Unknown linux"; \
+-        fi )
+-  else
+-    LINUX_VERSION := $(shell \
+-        if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
+-          $(NAWK) '{ print $$4" "$$5; }' $(LINUX_VERSION_INFO) ; \
+-        else \
+-          $(ECHO) "Unknown linux"; \
+-        fi )
+-  endif
+-  ifneq ($(ARCH), ia64)
+-    # dummy program that outputs ALSA's version (created in target sane-alsa-versioncheck)
+-    ALSA_VERSION_CHECK = $(TEMPDIR)/alsaversioncheck
+-    ALSA_VERSION = `if [ -f "$(ALSA_VERSION_CHECK)" ] ; then $(ALSA_VERSION_CHECK) ; fi`
+-  endif
++  # What kind of system we are using (Variation is the Linux vendor)
++  OS_VERSION := $(shell uname -r)
++  OS_VARIANT_NAME := $(shell \
++    if [ -f /etc/fedora-release ] ; then \
++      echo "Fedora"; \
++    elif [ -f /etc/redhat-release ] ; then \
++      echo "RedHat"; \
++    elif [ -f /etc/SuSE-release ] ; then \
++      echo "SuSE"; \
++    else \
++      echo "Unknown"; \
++    fi)
++  OS_VARIANT_VERSION := $(shell \
++    if [ "$(OS_VARIANT_NAME)" = "Fedora" ] ; then \
++      $(CAT) /etc/fedora-release | $(HEAD) -1 | $(NAWK) '{ print $$3; }' ; \
++    fi)
++  ALSA_INCLUDE=/usr/include/alsa/version.h
++  ALSA_LIBRARY=/usr/lib/libasound.so
++  _ALSA_VERSION := $(shell $(EGREP) SND_LIB_VERSION_STR $(ALSA_INCLUDE) | \
++           $(SED) -e 's@.*\"\(.*\)\".*@\1@' )
++  ALSA_VERSION := $(call GetVersion,$(_ALSA_VERSION))
+ endif
+ 
+ ifeq ($(PLATFORM), windows)
+-  # Localized systeminfo has localized labels, but not localized values.
+-  _WINDOWS_VERSION := \
+-    $(shell systeminfo 2> $(DEV_NULL) | grep 'Microsoft' | grep 'Windows' | \
+-	 cut -d':' -f2)
+-  ifeq ($(_WINDOWS_VERSION),)
+-    _WINDOWS_VERSION := Windows 2000 or Unknown (no systeminfo utility)
++  # Windows 2000 is 5.0, Windows XP is 5.1, Windows 2003 is 5.2
++  #    Assume 5.0 (Windows 2000) if systeminfo does not help
++  WINDOWS_MAPPING-5.0 := Windows2000
++  WINDOWS_MAPPING-5.1 := WindowsXP
++  WINDOWS_MAPPING-5.2 := Windows2003
++  # What kind of system we are using (Variation is the common name)
++  _OS_VERSION := \
++    $(shell systeminfo 2> $(DEV_NULL) | \
++            egrep '^OS Version:' | \
++            awk '{print $$3;}' )
++  ifeq ($(_OS_VERSION),)
++    OS_VERSION = 5.0
++  else
++    OS_VERSION = $(_OS_VERSION)
++  endif
++  OS_VARIANT_NAME := $(WINDOWS_MAPPING-$(OS_VERSION))
++  OS_VARIANT_VERSION := $(OS_VERSION)
++  ifdef USING_CYGWIN
++    # CYGWIN version
++    _CYGWIN_VER := $(SYSTEM_UNAME)
++    CYGWIN_VER  :=$(call GetVersion,$(_CYGWIN_VER))
+   endif
+-  WINDOWS_VERSION := $(strip $(_WINDOWS_VERSION))
+   DXSDK_VER := $(shell $(EGREP) DIRECT3D_VERSION $(DXSDK_INCLUDE_PATH)/d3d9.h 2>&1 | \
+     $(EGREP) "\#define" | $(NAWK) '{print $$3}')
+ endif
+@@ -100,7 +146,6 @@
+ UNZIP_VER  :=$(call GetVersion,"$(_UNZIP_VER)")
+ BOOT_VER   :=$(call GetVersion,"$(_BOOT_VER)")
+ 
+-REQUIRED_ANT_VER      := 1.6.3
+ _ANT_VER              :=$(shell $(ANT) -version 2>&1 )
+ ANT_VER               :=$(call GetVersion,"$(_ANT_VER)")
+ 
+@@ -161,7 +206,6 @@
+ 	sane-compiler \
+ 	sane-link \
+ 	sane-cacerts \
+-	sane-alsa-versioncheck \
+ 	sane-alsa-headers \
+ 	sane-ant_version \
+ 	sane-zip_version \
+@@ -233,35 +277,29 @@
+ #         generate a fatal sanity error, and a warning about the official
+ #         build platform just becomes clutter.
+ ######################################################
+-OS_CHECK :=$(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION))
++ifndef OPENJDK
++  OS_VERSION_CHECK := \
++    $(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION))
++  ifeq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
++    OS_VARIANT_VERSION_CHECK := \
++      $(call CheckVersions,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION))
++  endif
++endif
+ sane-os_version:: sane-arch_data_model sane-memory_check sane-locale sane-os_patch_level
+ ifndef OPENJDK
+-	@if [ "$(OS_CHECK)" = "missing" ]; then \
+-	  $(ECHO) "ERROR: The $(PLATFORM) OS version is undefined (Try: uname -r). \n" \
+-	    "" >> $(ERROR_FILE) ; \
+-	fi
+-	@if [ "$(OS_CHECK)" != "same" ]; then \
+-	  $(ECHO) "WARNING: $(THE_OFFICIAL_USES) OS version $(REQUIRED_OS_VERSION). \n" \
+-	    "        $(YOU_ARE_USING) OS version $(OS_VERSION). \n" \
+-	    "" >> $(WARNING_FILE) ; \
+-	fi
+-  ifeq ($(PLATFORM), windows)
+-	@if [ "$(findstring $(REQUIRED_WINDOWS_VERSION),$(WINDOWS_VERSION))" = "" ]; then \
+-	    $(ECHO) "WARNING: $(YOU_ARE_USING) an unknown version of Windows. \n" \
+-	      "        The required version is $(REQUIRED_WINDOWS_VERSION). \n" \
+-	      "        $(YOU_ARE_USING) $(WINDOWS_VERSION) \n" \
+-	      "" >> $(WARNING_FILE) ; \
+-	fi
+-  endif # windows
+-  ifeq ($(PLATFORM), linux)
+-	@if [ `$(ECHO) "$(LINUX_VERSION)" | $(EGREP) -c '$(REQUIRED_LINUX_VER)'` -ne 1 ]; then \
+-	  $(ECHO) "WARNING: The build is being done on Linux $(LINUX_VERSION). \n" \
+-	    "        $(THE_OFFICIAL_USES) Linux $(REQUIRED_LINUX_VER), \n" \
+-	    "        specifically Linux $(REQUIRED_LINUX_FULLVER). \n" \
+-	    "        The version found was '$(OS_VERSION)'. \n" \
+-	    "" >> $(WARNING_FILE) ; \
+-	fi
+-  endif # linux
++  ifneq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
++    ifeq ($(OS_VERSION_CHECK),missing)
++	@$(call OfficialErrorMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION))
++    endif
++    ifneq ($(OS_VERSION_CHECK),same)
++	@$(call OfficialWarningMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION))
++    endif
++	@$(call OfficialWarningMessage,OS variant,$(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
++  else
++    ifneq ($(OS_VARIANT_VERSION_CHECK),same)
++	@$(call OfficialWarningMessage,$(OS_VARIANT_NAME) version,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION))
++    endif
++  endif
+ endif # OPENJDK
+ 
+ ifeq ($(PLATFORM), windows)
+@@ -302,16 +340,12 @@
+   CYGWIN_CHECK :=$(call CheckVersions,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
+ sane-cygwin:
+   ifdef USING_CYGWIN
+-	@if [ "$(CYGWIN_CHECK)" = "missing" ]; then \
+-	  $(ECHO) "ERROR: The CYGWIN version is undefined. \n" \
+-	    "      $(THE_OFFICIAL_USES) CYGWIN $(REQUIRED_CYGWIN_VER). \n" \
+-	    "" >> $(ERROR_FILE) ; \
+-	fi
+-	@if [ "$(CYGWIN_CHECK)" = "older" ]; then \
+-	  $(ECHO) "ERROR: The build cannot be done on CYGWIN $(CYGWIN_VER). \n" \
+-	    "      Use CYGWIN $(REQUIRED_CYGWIN_VER) or higher. \n" \
+-	    "" >> $(ERROR_FILE) ; \
+-	fi
++    ifeq ($(CYGWIN_CHECK),missing)
++	@$(call OfficialErrorMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
++    endif
++    ifeq ($(CYGWIN_CHECK),older)
++	@$(call OfficialWarningMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
++    endif
+   endif
+ endif
+ 
+@@ -339,16 +373,12 @@
+     MKS_CHECK :=$(call CheckVersions,$(MKS_VER),$(REQUIRED_MKS_VER))
+ sane-mks:
+   ifndef USING_CYGWIN
+-	@if [ "$(MKS_CHECK)" = "missing" ]; then \
+-	  $(ECHO) "ERROR: The MKS version is undefined. \n" \
+-	    "      $(THE_OFFICIAL_USES) MKS $(REQUIRED_MKS_VER). \n" \
+-	    "" >> $(ERROR_FILE) ; \
+-	fi
+-	@if [ "$(MKS_CHECK)" = "older" ]; then \
+-	  $(ECHO) "ERROR: The build cannot be done on MKS $(MKS_VER). \n" \
+-	    "      Use MKS $(REQUIRED_MKS_VER) or higher. \n" \
+-	    "" >> $(ERROR_FILE) ; \
+-	fi
++    ifeq ($(MKS_CHECK),missing)
++	@$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER))
++    endif
++    ifeq ($(MKS_CHECK),older)
++	@$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER))
++    endif
+   endif
+ endif
+ 
+@@ -1296,11 +1326,6 @@
+ # Check the compiler version(s)
+ ######################################################
+ CC_CHECK  :=$(call CheckVersions,$(CC_VER),$(REQUIRED_CC_VER))
+-ifeq ($(PLATFORM), solaris)
+-  ifeq ($(ARCH_DATA_MODEL), 32)
+-    GCC_CHECK :=$(call CheckVersions,$(GCC_VER),$(REQUIRED_GCC_VER))
+-  endif
+-endif
+ sane-compiler: sane-link
+ 	@if [ "$(CC_CHECK)" = "missing" ]; then \
+ 	  $(ECHO) "ERROR: The Compiler version is undefined. \n" \
+@@ -1315,16 +1340,6 @@
+ 	      "          $(COMPILER_PATH) \n" \
+ 	      "" >> $(WARNING_FILE) ; \
+          fi
+-  ifdef GCC_CHECK
+-	  @if [ "$(GCC_CHECK)" != "same" ]; then \
+-	      $(ECHO) "WARNING: The $(PLATFORM) GCC compiler must be version $(REQUIRED_GCC_VER) \n" \
+-	      "      $(YOU_ARE_USING) compiler version: $(GCC_VER) \n" \
+-	      "      The compiler was obtained from the following location: \n" \
+-	      "          $(GCC_COMPILER_PATH) \n" \
+-	      "      Please change your compiler. \n" \
+-	      "" >> $(WARNING_FILE) ; \
+-	  fi
+-  endif
+   ifeq ($(PLATFORM), windows)
+     ifeq ($(ARCH_DATA_MODEL), 64)
+       ifneq ($(COMPILER_VERSION), VS2005)
+@@ -1338,38 +1353,24 @@
+ ######################################################
+ # Check that ALSA headers and libs are installed and 
+ # that the header has the right version. We only
+-# need /usr/include/alsa/*.h and /usr/lib/libasound.so
++# need /usr/include/alsa/version.h and /usr/lib/libasound.so
+ ######################################################
+ 
+-ifdef ALSA_VERSION_CHECK
+-$(ALSA_VERSION_CHECK): $(ALSA_VERSION_CHECK).c
+-	@$(prep-target)
+-	@$(CC) -o $@ $< -lasound
+-
+-$(ALSA_VERSION_CHECK).c:
+-	@$(prep-target)
+-	@$(ECHO) "#include <alsa/asoundlib.h>\n" \
+-                  "int main(char** argv, int argc) {\n" \
+-                   "  printf(\"%s\", SND_LIB_VERSION_STR);\n" \
+-                    "  return 0;\n" \
+-                    "}\n" \
+-                    > $@
++ifdef REQUIRED_ALSA_VERSION
++  ALSA_CHECK := $(call CheckVersions,$(ALSA_VERSION),$(REQUIRED_ALSA_VERSION))
+ endif
+-
+-sane-alsa-versioncheck: $(ALSA_VERSION_CHECK)
+-sane-alsa-headers: sane-alsa-versioncheck
+-ifdef ALSA_VERSION_CHECK
+-	@if [ -f "$(ALSA_VERSION_CHECK)" ]; then \
+-	  if [ `$(ALSA_VERSION_CHECK) | $(EGREP) -c '$(REQUIRED_ALSA_VERSION)'` -ne 1 ] ; then \
+-	    $(ECHO) "ERROR: The ALSA version must be 0.9.1 or higher. \n" \
+-	      "      You have the following ALSA version installed: $(ALSA_VERSION) \n" \
++sane-alsa-headers:
++ifdef REQUIRED_ALSA_VERSION
++        if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer"  ] ; then \
++	    $(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \
++	      "      You have the following ALSA version installed: $${alsa_version) \n" \
+ 	      "      Please reinstall ALSA (drivers and lib). You can download \n" \
+ 	      "      the source distribution from http://www.alsa-project.org \n" \
+ 	      "      or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+ 	      "" >> $(ERROR_FILE) ; \
+ 	  fi \
+ 	else \
+-	  $(ECHO) "ERROR: You seem to not have installed ALSA 0.9.1 or higher. \n" \
++	  $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \
+ 	  "      Please install ALSA (drivers and lib). You can download the \n" \
+ 	  "      source distribution from http://www.alsa-project.org or go to \n" \
+ 	  "      http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+@@ -1384,7 +1385,7 @@
+ ######################################################
+ # dump out the variable settings...
+ ######################################################
+-sane-settings:: sane-alsa-versioncheck
++sane-settings::
+ 	@$(ECHO)  >> $(MESSAGE_FILE)
+ 	@$(ECHO) $(ALL_SETTINGS)  >> $(MESSAGE_FILE)
+ 	@$(ECHO)  >> $(MESSAGE_FILE)
+@@ -1396,8 +1397,8 @@
+ ifeq ($(PLATFORM), solaris)
+   ifndef OPENJDK
+     @if [ -r $(GCC_COMPILER_PATH) ]; then \
+-	  if [ ! "$(GCC_VER)" = 2.95.2 ]; then \
+-	    $(ECHO) "ERROR: The Solaris GCC compiler version must be 2.95.2. \n" \
++	  if [ ! "$(GCC_VER)" = $(REQUIRED_GCC_VERSION) ]; then \
++	    $(ECHO) "ERROR: The Solaris GCC compiler version must be $(REQUIRED_GCC_VERSION). \n" \
+ 	      "      You are using the following compiler version: $(GCC_VER) \n" \
+ 	      "      The compiler was obtained from the following location: \n" \
+ 	      "          $(GCC_COMPILER_PATH) \n" \
+diff -Nru openjdk.orig/jdk/make/common/shared/Sanity-Settings.gmk openjdk/jdk/make/common/shared/Sanity-Settings.gmk
+--- openjdk.orig/jdk/make/common/shared/Sanity-Settings.gmk	2011-11-14 22:11:40.000000000 +0000
++++ openjdk/jdk/make/common/shared/Sanity-Settings.gmk	2013-09-03 20:56:10.816086376 +0100
+@@ -170,8 +170,6 @@
+ ifeq ($(PLATFORM),windows)
+   ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_ARCHITECTURE)
+   ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_IDENTIFIER)
+-  ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_VERSION)
+-  ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_NT_VERSION_STRING)
+   ifdef USING_CYGWIN
+     ALL_SETTINGS+=$(call addRequiredSetting,USING_CYGWIN)
+     ALL_SETTINGS+=$(call addRequiredVersionSetting,CYGWIN_VER)
+@@ -182,13 +180,11 @@
+   endif
+ endif
+ ifeq ($(PLATFORM),linux)
+-  ALL_SETTINGS+=$(call addRequiredSetting,LINUX_VERSION)
+-  ifneq ($(ARCH), ia64)
+-    ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION)
+-  endif
++  ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION)
+ endif
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION)
+-ALL_SETTINGS+=$(call addRequiredSetting,OS_NAME)
++ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_NAME)
++ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_VERSION)
+ ALL_SETTINGS+=$(call addRequiredSetting,MB_OF_MEMORY)
+ 
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6816311-compiler_name.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,417 @@
+diff -Nru openjdk.orig/jdk/make/common/Defs-windows.gmk openjdk/jdk/make/common/Defs-windows.gmk
+--- openjdk.orig/jdk/make/common/Defs-windows.gmk	2013-09-02 16:35:07.688884584 +0100
++++ openjdk/jdk/make/common/Defs-windows.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -78,6 +78,13 @@
+   MS_RUNTIME_LIBRARIES += unicows.dll
+ endif
+ 
++ifeq ($(ARCH_DATA_MODEL), 64)
++  ifeq ($(COMPILER_VERSION), VS2008)
++    MSVCRNN_DLL = msvcr90.dll
++    MSVCPNN_DLL = msvcp90.dll
++    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
++  endif
++endif
+ 
+ EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
+ 
+@@ -302,17 +309,13 @@
+ #
+ CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
+ 
+-#
+-# Add warnings and extra on 64bit issues
+-#
+-ifeq ($(ARCH_DATA_MODEL), 64)
+-  CFLAGS_COMMON += -Wp64 
+-endif
+-CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
+ 
+ #
+ # Treat compiler warnings as errors, if requested
+ #
++CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
++# Turn off security warnings about using the standard C library function strcpy
++CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
+ ifeq ($(COMPILER_WARNINGS_FATAL),true)
+   CFLAGS_COMMON += -WX
+ endif
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:35:07.712884957 +0100
++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -27,8 +27,6 @@
+ # GCC Compiler settings
+ #
+ 
+-COMPILER_NAME=GCC
+-
+ ifeq ($(PLATFORM), windows)
+ 
+   # Settings specific to Windows, pretty stale, hasn't been used
+@@ -153,3 +151,7 @@
+ _CC_VER :=$(shell $(CC) -dumpversion 2>&1 )
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
+ 
++# Name of compiler
++COMPILER_NAME = GCC$(call MajorVersion,$(CC_VER))
++COMPILER_VERSION = $(COMPILER_NAME)
++
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk openjdk/jdk/make/common/shared/Compiler-msvc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk	2013-09-02 16:35:07.712884957 +0100
++++ openjdk/jdk/make/common/shared/Compiler-msvc.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -110,6 +110,12 @@
+         endif
+       endif
+     endif
++    ifeq ($(CC_MAJORVER), 15)
++      COMPILER_NAME=Microsoft Windows SDK with Visual Studio 9 (6001.18000.367)
++      COMPILER_VERSION=VS2008
++      RC = $(MSSDK61)/Bin/X64/rc.exe
++      MT = $(MSSDK61)/Bin/X64/mt.exe
++    endif
+     # This will cause problems if ALT_COMPILER_PATH is defined to ""
+     # which is a directive to use the PATH.
+     REBASE         = $(COMPILER_PATH)../REBASE
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:35:07.712884957 +0100
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:41:13.914577209 +0100
+@@ -27,13 +27,8 @@
+ # Sun Studio Compiler settings
+ #
+ 
+-COMPILER_NAME=Sun Studio
+-
+ # Sun Studio Compiler settings specific to Solaris
+ ifeq ($(PLATFORM), solaris)
+-  # FIXUP: Change to SS12 when validated
+-  #COMPILER_VERSION=SS12
+-  COMPILER_VERSION=SS11
+   CC             = $(COMPILER_PATH)cc
+   CPP            = $(COMPILER_PATH)cc -E
+   CXX            = $(COMPILER_PATH)CC
+@@ -46,7 +41,6 @@
+ # Sun Studio Compiler settings specific to Linux
+ ifeq ($(PLATFORM), linux)
+   # This has not been tested
+-  COMPILER_VERSION=SS11
+   CC             = $(COMPILER_PATH)cc
+   CPP            = $(COMPILER_PATH)cc -E
+   CXX            = $(COMPILER_PATH)CC
+@@ -68,6 +62,18 @@
+ _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
+ 
++# Name of compilers being used
++COMPILER_VERSION-5.7  = SS10
++COMPILER_NAME-5.7     = Sun Studio 10
++COMPILER_VERSION-5.8  = SS11
++COMPILER_NAME-5.8     = Sun Studio 11
++COMPILER_VERSION-5.9  = SS12
++COMPILER_NAME-5.9     = Sun Studio 12
++COMPILER_VERSION-5.10 = SS13
++COMPILER_NAME-5.10    = Sun Studio 13
++COMPILER_VERSION      = $(COMPILER_VERSION-$(CC_VER))
++COMPILER_NAME         = $(COMPILER_NAME-$(CC_VER))
++
+ # Arch specific settings (determines type of .o files and instruction set)
+ #  Starting in SS12 (5.9), the arch options changed.
+ #  The assembler /usr/ccs/bin/as wants older SS11 (5.8) style options.
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs-versions.gmk openjdk/jdk/make/common/shared/Defs-versions.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs-versions.gmk	2013-09-02 16:35:07.720885081 +0100
++++ openjdk/jdk/make/common/shared/Defs-versions.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -45,6 +45,12 @@
+ # REQUIRED_CC_VER
+ #   The primary C compiler version expected.
+ #
++# REQUIRED_COMPILER_NAME
++#   The long descriptive name of the compiler we should use
++#
++# REQUIRED_COMPILER_VERSION
++#   The one word name that identifies the compilers being used.
++#
+ # REQUIRED_CYGWIN_VER
+ #   Windows only: If CYGWIN is used, the minimum CYGWIN version.
+ #
+@@ -114,6 +120,8 @@
+   else
+     REQUIRED_FREE_SPACE       = 1040000
+   endif
++  REQUIRED_COMPILER_NAME      = Sun Studio 11
++  REQUIRED_COMPILER_VERSION   = SS11
+   ifeq ($(CC_VERSION),sun)
+     REQUIRED_CC_VER           = 5.8
+   endif
+@@ -130,6 +138,8 @@
+   REQUIRED_OS_VARIANT_VERSION = 9
+   REQUIRED_FREE_SPACE         = 1460000
+   REQUIRED_ALSA_VERSION       = 0.9.1
++  REQUIRED_COMPILER_NAME      = GCC3
++  REQUIRED_COMPILER_VERSION   = GCC3
+   REQUIRED_GCC_VER            = 2.95
+   ifeq ($(CC_VERSION),gcc)
+     REQUIRED_CC_VER           = 3.2
+@@ -155,14 +165,20 @@
+   REQUIRED_DXSDK_VER          = 0x0900
+   ifeq ($(CC_VERSION),msvc)
+     ifeq ($(ARCH_DATA_MODEL), 32)
++      REQUIRED_COMPILER_NAME = Visual Studio .NET 2003 Professional C++
++      REQUIRED_COMPILER_VERSION = VS2003
+       REQUIRED_CC_VER         = 13.10.3077
+       REQUIRED_LINK_VER       = 7.10.3077
+     else
+       ifeq ($(ARCH), ia64)
+-        REQUIRED_CC_VER       = 13.00.9337.7
+-        REQUIRED_LINK_VER     = 7.00.9337.7
++        REQUIRED_COMPILER_NAME    = Microsoft Platform SDK - November 2001 Edition
++        REQUIRED_COMPILER_VERSION = VS2003
++        REQUIRED_CC_VER           = 13.00.9337.7
++        REQUIRED_LINK_VER         = 7.00.9337.7
+       endif
+       ifeq ($(ARCH), amd64)
++        REQUIRED_COMPILER_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830)
++        REQUIRED_COMPILER_VERSION=VS2005
+         REQUIRED_CC_VER       = 14.00.40310.41
+         REQUIRED_LINK_VER     = 8.00.40310.39
+       endif
+diff -Nru openjdk.orig/jdk/make/common/shared/Defs-windows.gmk openjdk/jdk/make/common/shared/Defs-windows.gmk
+--- openjdk.orig/jdk/make/common/shared/Defs-windows.gmk	2013-09-02 16:35:07.712884957 +0100
++++ openjdk/jdk/make/common/shared/Defs-windows.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -199,6 +199,7 @@
+ endif
+ ifeq ($(ARCH_DATA_MODEL), 32)
+   _program_files     :=$(call FullPath,$(xPROGRAMFILES))
++  _program_files32   :=$(_program_files)
+ else
+   ifdef PROGRAMW6432
+     xPROGRAMW6432    :="$(subst \,/,$(PROGRAMW6432))"
+@@ -260,17 +261,30 @@
+   ifneq ($(_msvc_dir),)
+     _compiler_bin :=$(_msvc_dir)/Bin
+     _redist_sdk   :=$(_msvc_dir)/../SDK/v1.1/Bin
+-    _ms_sdk       :=$(_msvc_dir)/PlatformSDK
++    # Assume PlatformSDK is in VS71 (will be empty if VS90)
++    _ms_sdk       :=$(call FullPath,$(_msvc_dir)/PlatformSDK)
++    # Assume VS90, then VS80, then VS71
++    _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v3.5/Bin)
++    ifeq ($(_redist_sdk),)
++      _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v2.0/Bin)
++      ifeq ($(_redist_sdk),)
++        _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v1.1/Bin)
++      endif
++    endif
+   endif
+ endif
+ 
+ # The Microsoft Platform SDK installed by itself
+ ifneq ($(_program_files),)
+-  xPSDK  :="$(_program_files)/Microsoft Platform SDK"
+-  _psdk  :=$(call FullPath,$(xPSDK))
++  _PSDK :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
++  _psdk :=$(call FullPath,$(xMSSDK61))
+   ifeq ($(_psdk),)
+-    xPSDK  :="$(_program_files)/Microsoft SDK"
+-    _psdk :=$(call FullPath,$(xMSSDK))
++    xPSDK  :="$(_program_files)/Microsoft Platform SDK"
++    _psdk  :=$(call FullPath,$(xPSDK))
++    ifeq ($(_psdk),)
++      xPSDK  :="$(_program_files)/Microsoft SDK"
++      _psdk :=$(call FullPath,$(xMSSDK))
++    endif
+   endif
+ endif
+ 
+@@ -291,13 +305,22 @@
+ 
+ # Compilers for 64bit are from SDK
+ ifeq ($(ARCH_DATA_MODEL), 64)
+-  ifneq ($(_ms_sdk),)
+-    ifeq ($(ARCH), ia64)
+-      _compiler_bin :=$(_ms_sdk)/Bin/Win64
+-    endif
+-    ifeq ($(ARCH), amd64)
+-      _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
+-      _redist_sdk   :=$(_ms_sdk)/redist/win64/AMD64
++  xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/"
++  VS2008 :=$(call FullPath,$(xVS2008))
++  ifneq ($(VS2008),)
++    _compiler_bin :=$(VS2008)/VC/Bin/$(ARCH)
++    xMSSDK61      :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
++    MSSDK61       :=$(call FullPath,$(xMSSDK61))
++    _redist_sdk   :=$(VS2008)/VC/redist/x86/Microsoft.VC90.CRT
++  else
++    ifneq ($(_ms_sdk),)
++      ifeq ($(ARCH), ia64)
++        _compiler_bin :=$(_ms_sdk)/Bin/Win64
++      endif
++      ifeq ($(ARCH), amd64)
++        _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
++        _redist_sdk   :=$(_ms_sdk)/redist/win64/AMD64
++      endif
+     endif
+   endif
+ endif
+@@ -400,38 +423,30 @@
+   _BOOTDIR2  =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
+ endif
+ 
+-# See if SDK area has a msvcrt.dll file, directory may exist w/o msvcr* files
+-_REDIST_SDK_EXISTS := $(shell \
+-	if [ -f "$(_redist_sdk)/msvcrt.dll" ]; then \
+-	  echo "true"; \
+-	else \
+-	  echo "false"; \
+-	fi)
+-_REDIST71_SDK_EXISTS := $(shell \
+-	if [ -f "$(_redist_sdk)/msvcr71.dll" ]; then \
+-	  echo "true"; \
+-	else \
+-	  echo "false"; \
+-	fi)
++# 32 bit always needs 2 runtimes, 64 bit usually does too
+ 
+-# 32 bit needs 2 runtimes
+-ifeq ($(ARCH_DATA_MODEL), 32)
++# MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
++ifdef ALT_MSVCRT_DLL_PATH
++  xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
++  MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
++else
++  MSVCRT_DLL_PATH :=$(call FullPath,$(_system_root)/system32/)
++endif
++MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
++MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
+ 
+-  # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
+-  ifdef ALT_MSVCRT_DLL_PATH
+-    xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
+-    MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
++# 32bit always needs the MSVCRNN runtime, 64bit does when using VS2008
++ifeq ($(ARCH_DATA_MODEL), 32)
++  _NEEDS_MSVCRNN = true
++else
++  ifeq ($(VS2008),)
++    _NEEDS_MSVCRNN = false
+   else
+-    ifeq ($(_REDIST_SDK_EXISTS), true)
+-      xREDIST_DIR   :=$(_redist_sdk)
+-    else
+-      xREDIST_DIR   :=$(_system_root)/system32
+-    endif
+-    MSVCRT_DLL_PATH :=$(call FullPath,$(xREDIST_DIR))
++    _NEEDS_MSVCRNN = true
+   endif
+-  MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
+-  MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
+-  
++endif
++
++ifeq ($(ARCH_DATA_MODEL), 32)
+   # MSVCR71_DLL_PATH: location of msvcr71.dll that will be re-distributed
+   ifdef ALT_MSVCR71_DLL_PATH
+     xALT_MSVCR71_DLL_PATH :="$(subst \,/,$(ALT_MSVCR71_DLL_PATH))"
+@@ -448,22 +463,17 @@
+   MSVCR71_DLL_PATH:=$(call AltCheckValue,MSVCR71_DLL_PATH)
+   
+ else
+-
+-  # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
+-  ifdef ALT_MSVCRT_DLL_PATH
+-    xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
+-    MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
+-  else
+-    ifeq ($(_REDIST_SDK_EXISTS), true)
+-      xREDIST_DIR   :=$(_redist_sdk)
+-    else
+-      xREDIST_DIR   :=$(_system_root)/SysWOW64
+-    endif
+-    MSVCRT_DLL_PATH  :=$(call FullPath,$(xREDIST_DIR))
+-  endif
+-  MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
+-  MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
+-  
++ifeq ($(_NEEDS_MSVCRNN), true)
++   # MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed
++   ifdef ALT_MSVCRNN_DLL_PATH
++     xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))"
++     MSVCRNN_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH))
++   else
++    MSVCRNN_DLL_PATH :=$(_redist_sdk)
++   endif
++   MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH)
++   MSVCRNN_DLL_PATH:=$(call AltCheckValue,MSVCRNN_DLL_PATH)
++endif
+ endif
+ 
+ # DXSDK_PATH: path to Microsoft DirectX SDK Include and Lib
+diff -Nru openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk
+--- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2013-09-02 16:35:07.712884957 +0100
++++ openjdk/jdk/make/common/shared/Sanity.gmk	2013-09-02 16:40:22.565779052 +0100
+@@ -123,7 +123,7 @@
+   ifeq ($(_OS_VERSION),)
+     OS_VERSION = 5.0
+   else
+-    OS_VERSION = $(_OS_VERSION)
++    OS_VERSION = $(call MajorVersion,$(_OS_VERSION)).$(call MinorVersion,$(_OS_VERSION))
+   endif
+   OS_VARIANT_NAME := $(WINDOWS_MAPPING-$(OS_VERSION))
+   OS_VARIANT_VERSION := $(OS_VERSION)
+@@ -1320,8 +1320,8 @@
+ 	fi
+ 	@if [ "$(LINK_CHECK)" != "same" ]; then \
+ 	  $(ECHO) "WARNING: To build Java 2 SDK $(JDK_VERSION) you need : \n" \
+-	    "      $(COMPILER_VERSION) - link.exe version \"$(REQUIRED_LINK_VER)\" \n" \
+-	      "      Specifically the $(COMPILER_NAME) link.exe. \n " \
++	    "      $(REQUIRED_COMPILER_VERSION) - link.exe version \"$(REQUIRED_LINK_VER)\" \n" \
++	      "      Specifically the $(REQUIRED_COMPILER_NAME) link.exe. \n " \
+ 	    "      $(YOU_ARE_USING) Linker version \"$(LINK_VER)\" \n" \
+ 	    "" >> $(WARNING_FILE) ; \
+ 	fi
+@@ -1338,21 +1338,13 @@
+ 	fi
+ ifndef OPENJDK
+ 	@if [ "$(CC_CHECK)" != "same" ]; then \
+-	      $(ECHO) "WARNING: The $(PLATFORM) compiler is not version $(COMPILER_VERSION) $(REQUIRED_CC_VER) \n" \
+-	      "      Specifically the $(COMPILER_NAME) $(CC_TYPE) compiler. \n " \
+-	      "      $(YOU_ARE_USING) compiler version: $(CC_VER) \n" \
++	      $(ECHO) "WARNING: The $(PLATFORM) compiler is not version $(REQUIRED_COMPILER_VERSION) $(REQUIRED_CC_VER) \n" \
++	      "      Specifically the $(REQUIRED_COMPILER_NAME) compiler. \n " \
++	      "      $(YOU_ARE_USING) $(COMPILER_VERSION): $(CC_VER) \n" \
+ 	      "      The compiler was obtained from the following location: \n" \
+ 	      "          $(COMPILER_PATH) \n" \
+ 	      "" >> $(WARNING_FILE) ; \
+          fi
+-  ifeq ($(PLATFORM), windows)
+-    ifeq ($(ARCH_DATA_MODEL), 64)
+-      ifneq ($(COMPILER_VERSION), VS2005)
+-	@$(ECHO) "WARNING: Should be using VS2005 compiler on 64bit platform. \n" \
+-	    "" >> $(WARNING_FILE)
+-      endif
+-    endif
+-  endif
+ endif
+ 
+ ######################################################
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt.rc openjdk/jdk/src/windows/native/sun/windows/awt.rc
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt.rc	2013-09-02 16:35:02.892810032 +0100
++++ openjdk/jdk/src/windows/native/sun/windows/awt.rc	2013-09-02 16:40:22.565779052 +0100
+@@ -23,7 +23,7 @@
+ // questions.
+ //
+ 
+-#include "afxres.h"
++#include "windows.h"
+ 
+ // Need 2 defines so macro argument to XSTR will get expanded before quoting.
+ #define XSTR(x) STR(x)
+diff -Nru openjdk.orig/jdk/src/windows/resource/version.rc openjdk/jdk/src/windows/resource/version.rc
+--- openjdk.orig/jdk/src/windows/resource/version.rc	2012-10-26 19:26:19.000000000 +0100
++++ openjdk/jdk/src/windows/resource/version.rc	2013-09-02 16:40:22.565779052 +0100
+@@ -23,7 +23,7 @@
+ // questions.
+ //
+ 
+-#include "afxres.h"
++#include "windows.h"
+ 
+ // Need 2 defines so macro argument to XSTR will get expanded before quoting.
+ #define XSTR(x) STR(x)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6974017-minorver_for_solaris.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,24 @@
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:05:41.237401088 +0100
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:07:06.026720438 +0100
+@@ -61,6 +61,7 @@
+ # Get compiler version
+ _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
++CC_MINORVER  :=$(call MinorVersion,$(CC_VER))
+ 
+ # Name of compilers being used
+ COMPILER_VERSION-5.7  = SS10
+@@ -69,8 +70,10 @@
+ COMPILER_NAME-5.8     = Sun Studio 11
+ COMPILER_VERSION-5.9  = SS12
+ COMPILER_NAME-5.9     = Sun Studio 12
+-COMPILER_VERSION-5.10 = SS13
+-COMPILER_NAME-5.10    = Sun Studio 13
++COMPILER_VERSION-5.10 = SS12u1
++COMPILER_NAME-5.10    = Sun Studio 12 Update 1
++COMPILER_VERSION-5.11 = OSS12u2
++COMPILER_NAME-5.11    = Oracle Solaris Studio 12 Update 2
+ COMPILER_VERSION      = $(COMPILER_VERSION-$(CC_VER))
+ COMPILER_NAME         = $(COMPILER_NAME-$(CC_VER))
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6980281-majorver_for_solaris.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,66 @@
+# HG changeset patch
+# User bae
+# Date 1291553491 -10800
+#      Sun Dec 05 15:51:31 2010 +0300
+# Node ID 15e3f6f4a43327a0baa7c7ad0f41ea62c566506b
+# Parent  024fe931de8c0e4b56b29d4b666fbcc69c6213e3
+6980281: SWAT: SwingSet2 got core dumped in Solaris-AMD64 using b107 swat build
+Reviewed-by: prr, ohair
+
+diff --git a/make/common/Defs-solaris.gmk b/make/common/Defs-solaris.gmk
+--- openjdk/jdk/make/common/Defs-solaris.gmk
++++ openjdk/jdk/make/common/Defs-solaris.gmk
+@@ -466,12 +466,14 @@
+     # On X86, make sure tail call optimization is off
+     #    The z and y are the tail call optimizations.
+     ifeq ($(ARCH_FAMILY), i586)
+-      ifeq ($(shell $(EXPR) $(CC_VER) \> 5.8), 1)
+-        # Somehow, tail call optimization is creeping in.
+-        #    Make sure it is off.
+-	# WARNING: These may cause compiler warnings about duplicate -O options
+-        CC_XKEEPFRAME_OPTIONS  += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
+-        CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++      ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
++        ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 8), 1)
++          #    Somehow, tail call optimization is creeping in.
++          #    Make sure it is off.
++	  # WARNING: These may cause compiler warnings about duplicate -O options
++          CC_XKEEPFRAME_OPTIONS  += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++          CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++        endif
+       endif
+     endif
+   
+@@ -487,12 +489,15 @@
+         CC_XKEEPFRAME_OPTIONS  += -Wu,-Z~B
+         CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B
+       endif
+-      ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
+-        # Do NOT use frame pointer register as a general purpose opt register
+-        CC_OPT/NONE            += -xregs=no%frameptr
+-        CXX_OPT/NONE           += -xregs=no%frameptr
+-        CC_XKEEPFRAME_OPTIONS  += -xregs=no%frameptr
+-        CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
++
++      ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
++        ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 6), 1)
++          # Do NOT use frame pointer register as a general purpose opt register
++          CC_OPT/NONE            += -xregs=no%frameptr
++          CXX_OPT/NONE           += -xregs=no%frameptr
++          CC_XKEEPFRAME_OPTIONS  += -xregs=no%frameptr
++          CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
++        endif
+       endif
+     endif
+   
+diff --git a/make/common/shared/Compiler-sun.gmk b/make/common/shared/Compiler-sun.gmk
+--- openjdk/jdk/make/common/shared/Compiler-sun.gmk
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk
+@@ -61,6 +61,7 @@
+ # Get compiler version
+ _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
++CC_MAJORVER  :=$(call MajorVersion,$(CC_VER))
+ CC_MINORVER  :=$(call MinorVersion,$(CC_VER))
+ 
+ # Name of compilers being used
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7000225-bad_tabs.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,48 @@
+# HG changeset patch
+# User andrew
+# Date 1290478643 0
+#      Tue Nov 23 02:17:23 2010 +0000
+# Node ID beb9f3298ad3b32c24ceda7b7d3ed812152bafaa
+# Parent  565be51eb60e3660f9261d3cee23b81d0e50e440
+7000225: Sanity check on sane-alsa-headers is broken
+Summary: Fix use of tab separators, ${alsa_version} expansion and conditional
+Reviewed-by: ohair
+
+diff --git a/make/common/shared/Sanity.gmk b/make/common/shared/Sanity.gmk
+--- openjdk/jdk/make/common/shared/Sanity.gmk
++++ openjdk/jdk/make/common/shared/Sanity.gmk
+@@ -1389,20 +1389,21 @@
+ endif
+ sane-alsa-headers:
+ ifdef REQUIRED_ALSA_VERSION
+-        if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer"  ] ; then \
+-	    $(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \
+-	      "      You have the following ALSA version installed: $${alsa_version) \n" \
+-	      "      Please reinstall ALSA (drivers and lib). You can download \n" \
+-	      "      the source distribution from http://www.alsa-project.org \n" \
+-	      "      or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+-	      "" >> $(ERROR_FILE) ; \
+-	  fi \
++	@if [ "$(ALSA_CHECK)" != "missing" ] ; then \
++	    if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer"  ] ; then \
++		$(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \
++		"      You have the following ALSA version installed: $${alsa_version} \n" \
++		"      Please reinstall ALSA (drivers and lib). You can download \n" \
++		"      the source distribution from http://www.alsa-project.org \n" \
++		"      or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
++		"" >> $(ERROR_FILE) ; \
++	    fi ; \
+ 	else \
+-	  $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \
+-	  "      Please install ALSA (drivers and lib). You can download the \n" \
+-	  "      source distribution from http://www.alsa-project.org or go to \n" \
+-	  "      http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+-	  "" >> $(ERROR_FILE) ; \
++	    $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \
++	    "      Please install ALSA (drivers and lib). You can download the \n" \
++	    "      source distribution from http://www.alsa-project.org or go to \n" \
++	    "      http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
++	    "" >> $(ERROR_FILE) ; \
+ 	fi
+ endif
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7038711-fix_no-clobber_usage.patch	Wed Sep 04 00:13:08 2013 +0100
@@ -0,0 +1,125 @@
+diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk
+--- openjdk.orig/jdk/make/common/Defs-linux.gmk	2013-09-02 16:42:50.832083666 +0100
++++ openjdk/jdk/make/common/Defs-linux.gmk	2013-09-02 16:43:24.332604388 +0100
+@@ -258,9 +258,8 @@
+ # statically link libgcc but will print a warning with the flag. We don't 
+ # want the warning, so check gcc version first.
+ #
+-CC_VER_MAJOR := $(shell $(CC) -dumpversion | $(SED) 's/egcs-//' | $(CUT) -d'.' -f1)
+-ifeq ("$(CC_VER_MAJOR)", "3")
+-OTHER_LDFLAGS  += -static-libgcc
++ifeq ($(CC_MAJORVER),3)
++  OTHER_LDFLAGS  += -static-libgcc
+ endif
+ 
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+diff -Nru openjdk.orig/jdk/make/common/Defs-solaris.gmk openjdk/jdk/make/common/Defs-solaris.gmk
+--- openjdk.orig/jdk/make/common/Defs-solaris.gmk	2013-09-02 16:42:51.816098963 +0100
++++ openjdk/jdk/make/common/Defs-solaris.gmk	2013-09-02 16:43:24.332604388 +0100
+@@ -437,14 +437,15 @@
+     # On X86, make sure tail call optimization is off
+     #    The z and y are the tail call optimizations.
+     ifeq ($(ARCH_FAMILY), i586)
+-      ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
+-        ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 8), 1)
+-          #    Somehow, tail call optimization is creeping in.
+-          #    Make sure it is off.
+-	  # WARNING: These may cause compiler warnings about duplicate -O options
+-          CC_XKEEPFRAME_OPTIONS  += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
+-          CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
+-        endif
++      CC_NEWER_THAN_58 := \
++        $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
++	    \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 8 \) )
++      ifeq ($(CC_NEWER_THAN_58),1)
++        #    Somehow, tail call optimization is creeping in.
++        #    Make sure it is off.
++        # WARNING: These may cause compiler warnings about duplicate -O options
++        CC_XKEEPFRAME_OPTIONS  += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
++        CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
+       endif
+     endif
+   
+@@ -461,14 +462,15 @@
+         CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B
+       endif
+ 
+-      ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
+-        ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 6), 1)
+-          # Do NOT use frame pointer register as a general purpose opt register
+-          CC_OPT/NONE            += -xregs=no%frameptr
+-          CXX_OPT/NONE           += -xregs=no%frameptr
+-          CC_XKEEPFRAME_OPTIONS  += -xregs=no%frameptr
+-          CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
+-        endif
++      CC_NEWER_THAN_56 := \
++        $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
++	    \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) )
++      ifeq ($(CC_NEWER_THAN_56),1)
++        # Do NOT use frame pointer register as a general purpose opt register
++        CC_OPT/NONE            += -xregs=no%frameptr
++        CXX_OPT/NONE           += -xregs=no%frameptr
++        CC_XKEEPFRAME_OPTIONS  += -xregs=no%frameptr
++        CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
+       endif
+     endif
+   
+@@ -546,8 +548,10 @@
+     CFLAGS_REQUIRED_sparc    += -xregs=no%appl
+     CFLAGS_REQUIRED_sparcv9  += -xregs=no%appl
+   endif
+-  ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
+-    # We MUST allow data alignment of 4 for sparc V8 (32bit)
++  CC_NEWER_THAN_56 := \
++    $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
++         \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) )
++  ifeq ($(CC_NEWER_THAN_56),1)
+     #     Presents an ABI issue with customer JNI libs? We must be able to
+     #     to handle 4byte aligned objects? (rare occurance, but possible?)
+     CFLAGS_REQUIRED_sparc += -xmemalign=4s
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:42:50.872084289 +0100
++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:43:24.332604388 +0100
+@@ -150,6 +150,8 @@
+ # Get gcc version
+ _CC_VER :=$(shell $(CC) -dumpversion 2>&1 )
+ CC_VER  :=$(call GetVersion,"$(_CC_VER)")
++CC_MAJORVER  :=$(call MajorVersion,$(CC_VER))
++CC_MINORVER  :=$(call MinorVersion,$(CC_VER))
+ 
+ # Name of compiler
+ COMPILER_NAME = GCC$(call MajorVersion,$(CC_VER))
+diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:42:51.816098963 +0100
++++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:44:23.061517244 +0100
+@@ -117,7 +117,10 @@
+   LINT_XARCH_OPTION_OLD/64 += -Xarch=amd64
+ endif
+ # Pick the options we want based on the compiler being used.
+-ifeq ($(shell expr $(CC_VER) \>= 5.9), 1)
++CC_59_OR_NEWER := \
++  $(shell expr $(CC_MAJORVER) \> 5 \| \
++      \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \>= 9 \) )
++ifeq ($(CC_59_OR_NEWER), 1)
+   XARCH_OPTION/32 = $(XARCH_OPTION_NEW/32)
+   XARCH_OPTION/64 = $(XARCH_OPTION_NEW/64)
+   LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_NEW/32)
+diff -Nru openjdk.orig/jdk/make/sun/jpeg/Makefile openjdk/jdk/make/sun/jpeg/Makefile
+--- openjdk.orig/jdk/make/sun/jpeg/Makefile	2013-09-02 16:42:50.804083232 +0100
++++ openjdk/jdk/make/sun/jpeg/Makefile	2013-09-02 16:44:44.629852492 +0100
+@@ -74,7 +74,14 @@
+   # volatile to prevent the optimization. However, this approach does not
+   # work because we have to declare all variables as volatile in result.
+ 
+-  OTHER_CFLAGS += -Wno-clobbered
++  ifndef CROSS_COMPILE_ARCH
++    CC_43_OR_NEWER := \
++      $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
++          \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
++    ifeq ($(CC_43_OR_NEWER),1)
++      OTHER_CFLAGS += -Wno-clobbered
++    endif
++  endif
+ endif
+ 
+ include $(BUILDDIR)/common/Mapfile-vers.gmk