Merge
authortbell
Thu, 14 Aug 2008 22:16:00 -0700
changeset 1022 4bebc1fc5013
parent 1021 e50239bc5f51 (current diff)
parent 1001 725bad7d955c (diff)
child 1026 8810ae8edcd1
child 1083 fe22490abe0d
Merge
jdk/make/ASSEMBLY_EXCEPTION
jdk/make/LICENSE
jdk/make/README
jdk/make/README-builds.html
jdk/make/README.html
jdk/make/THIRD_PARTY_README
langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java
langtools/test/tools/javac/capture/Capture4.java
--- a/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 bfe4572fd301a6fcd120373cdb2eff5d2da0c72c jdk7-b29
 bee4731164a06ddece1297ae58db24aca6a1c626 jdk7-b30
 cd8b8f500face60d1566d850857a7fccadbd383a jdk7-b31
+a9f1805e3ba9ca520cad199d522c84af5433e85a jdk7-b32
--- a/.hgtags-top-repo	Sun Aug 10 18:35:53 2008 -0700
+++ b/.hgtags-top-repo	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 31e08f70e88d77c2053f91c21b49a04296bdc59a jdk7-b29
 2dab2f712e1832c92acfa63ec0337048b9422c20 jdk7-b30
 3300a35a0bd56d695b92fe0b34f03ebbfc939064 jdk7-b31
+64da805be725721bf2004e7409a0d7a16fc8ddbc jdk7-b32
--- a/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -49,27 +49,17 @@
   JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared
 endif
 
-include $(JDK_MAKE_SHARED_DIR)/Defs-control.gmk
-
-include ./make/Defs-internal.gmk
-
-all::
-	@$(ECHO) $(PLATFORM) $(ARCH) $(RELEASE) build started: `$(DATE) '+%y-%m-%d %H:%M'`
-	$(MKDIR) -p $(OUTPUTDIR)
-
-# Rules for sanity checks
-include ./make/sanity-rules.gmk
+# For start and finish echo lines
+TITLE_TEXT = Control $(PLATFORM) $(ARCH) $(RELEASE)
+DAYE_STAMP = `$(DATE) '+%y-%m-%d %H:%M'`
+START_ECHO  = echo "$(TITLE_TEXT) $@ build started: $(DATE_STAMP)"
+FINISH_ECHO = echo "$(TITLE_TEXT) $@ build finished: $(DATE_STAMP)"
 
-dev : dev-build
+default: all
 
-dev-build:
-	$(MAKE) DEV_ONLY=true all
-dev-sanity:
-	$(MAKE) DEV_ONLY=true sanity
-dev-clobber:
-	$(MAKE) DEV_ONLY=true clobber
-
-# Rules for various components
+include $(JDK_MAKE_SHARED_DIR)/Defs-control.gmk
+include ./make/Defs-internal.gmk
+include ./make/sanity-rules.gmk
 include ./make/hotspot-rules.gmk
 include ./make/langtools-rules.gmk
 include ./make/corba-rules.gmk
@@ -80,10 +70,202 @@
 include ./make/sponsors-rules.gmk
 include ./make/deploy-rules.gmk
 
-all:: setup build
+# What "all" means
+all::
+	@$(START_ECHO)
+
+all:: openjdk_check sanity all_product_build 
+
+ifeq ($(SKIP_FASTDEBUG_BUILD), false)
+  all:: fastdebug_build
+endif
+
+ifeq ($(SKIP_DEBUG_BUILD), false)
+  all:: debug_build
+endif
+
+ifneq ($(SKIP_OPENJDK_BUILD), true)
+  all:: openjdk_build
+endif
+
+all:: 
+	@$(FINISH_ECHO)
+
+# Everything for a full product build
+all_product_build::
+	@$(START_ECHO)
+
+ifeq ($(SKIP_PRODUCT_BUILD), false)
+  
+  all_product_build:: product_build
+
+  ifeq ($(BUILD_INSTALL), true)
+    all_product_build:: $(INSTALL)
+    clobber:: install-clobber
+  endif
+  
+  ifeq ($(BUILD_SPONSORS), true)
+    all_product_build:: $(SPONSORS)
+    clobber:: sponsors-clobber
+  endif
+  
+  ifneq ($(SKIP_COMPARE_IMAGES), true)
+    all_product_build:: compare-image
+  endif
+
+endif
+
+all_product_build:: 
+	@$(FINISH_ECHO)
+
+# Generis build of basic repo series
+generic_build_repo_series::
+	$(MKDIR) -p $(OUTPUTDIR)
+	$(MKDIR) -p $(OUTPUTDIR)/j2sdk-image
+
+ifeq ($(BUILD_LANGTOOLS), true)
+  generic_build_repo_series:: langtools
+  clobber:: langtools-clobber
+endif
+
+ifeq ($(BUILD_CORBA), true)
+  generic_build_repo_series:: corba
+  clobber:: corba-clobber
+endif
+
+ifeq ($(BUILD_JAXP), true)
+  generic_build_repo_series:: jaxp
+  clobber:: jaxp-clobber
+endif
+
+ifeq ($(BUILD_JAXWS), true)
+  generic_build_repo_series:: jaxws
+  clobber:: jaxws-clobber
+endif
+
+ifeq ($(BUILD_HOTSPOT), true)
+  generic_build_repo_series:: $(HOTSPOT) 
+  clobber:: hotspot-clobber
+endif
+
+ifeq ($(BUILD_JDK), true)
+  generic_build_repo_series:: $(JDK_JAVA_EXE)
+  clobber:: jdk-clobber
+endif
+
+ifeq ($(BUILD_DEPLOY), true)
+  generic_build_repo_series:: $(DEPLOY)
+  clobber:: deploy-clobber
+endif
+
+ifeq ($(BUILD_JDK), true)
+  ifeq ($(BUNDLE_RULES_AVAILABLE), true)
+    generic_build_repo_series:: openjdk-binary-plugs-bundles
+  endif
+endif
 
-setup: openjdk_check
-	$(MKDIR) -p $(OUTPUTDIR)/j2sdk-image
+# The debug build, fastdebug or debug. Needs special handling.
+#  Note that debug builds do NOT do INSTALL steps, but must be done
+#  after the product build and before the INSTALL step of the product build.
+#
+#   DEBUG_NAME is fastdebug or debug
+#   ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix
+#   The resulting j2sdk-image is used by the install makefiles to create a
+#     debug install bundle jdk-*-debug-** bundle (tar or zip) 
+#     which will install in the debug or fastdebug subdirectory of the
+#     normal product install area.
+#     The install process needs to know what the DEBUG_NAME is, so
+#     look for INSTALL_DEBUG_NAME in the install rules.
+#
+
+# Location of fresh bootdir output
+ABS_BOOTDIR_OUTPUTDIR=$(ABS_OUTPUTDIR)/bootjdk
+FRESH_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/j2sdk-image
+FRESH_DEBUG_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)-$(DEBUG_NAME)/j2sdk-image
+  
+create_fresh_product_bootdir: FRC
+	@$(START_ECHO)
+	$(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
+		NO_DOCS=true \
+		BOOT_CYCLE_SETTINGS= \
+		build_product_image
+	@$(FINISH_ECHO)
+
+create_fresh_debug_bootdir: FRC
+	@$(START_ECHO)
+	$(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
+		NO_DOCS=true \
+		BOOT_CYCLE_DEBUG_SETTINGS= \
+		build_debug_image
+	@$(FINISH_ECHO)
+
+create_fresh_fastdebug_bootdir: FRC
+	@$(START_ECHO)
+	$(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
+		NO_DOCS=true \
+		BOOT_CYCLE_DEBUG_SETTINGS= \
+		build_fastdebug_image
+	@$(FINISH_ECHO)
+
+# Create boot image?
+ifeq ($(SKIP_BOOT_CYCLE),false)
+  ifneq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64)
+    DO_BOOT_CYCLE=true
+  endif
+endif
+
+ifeq ($(DO_BOOT_CYCLE),true)
+  
+  # Create the bootdir to use in the build
+  product_build:: create_fresh_product_bootdir
+  debug_build:: create_fresh_debug_bootdir
+  fastdebug_build:: create_fresh_fastdebug_bootdir
+
+  # Define variables to be used now for the boot jdk
+  BOOT_CYCLE_SETTINGS= \
+     ALT_BOOTDIR=$(FRESH_BOOTDIR) \
+     ALT_JDK_IMPORT_PATH=$(FRESH_BOOTDIR)
+  BOOT_CYCLE_DEBUG_SETTINGS= \
+     ALT_BOOTDIR=$(FRESH_DEBUG_BOOTDIR) \
+     ALT_JDK_IMPORT_PATH=$(FRESH_DEBUG_BOOTDIR)
+
+else
+
+  # Use the supplied ALT_BOOTDIR as the boot
+  BOOT_CYCLE_SETTINGS=
+  BOOT_CYCLE_DEBUG_SETTINGS=
+
+endif
+
+build_product_image:
+	@$(START_ECHO)
+	$(MAKE) \
+	        SKIP_FASTDEBUG_BUILD=true \
+	        SKIP_DEBUG_BUILD=true \
+	        $(BOOT_CYCLE_SETTINGS) \
+	        generic_build_repo_series
+	@$(FINISH_ECHO)
+
+generic_debug_build:
+	@$(START_ECHO)
+	$(MAKE) \
+		ALT_OUTPUTDIR=$(ABS_OUTPUTDIR)-$(DEBUG_NAME) \
+	        DEBUG_NAME=$(DEBUG_NAME) \
+		NO_DOCS=true \
+	        $(BOOT_CYCLE_DEBUG_SETTINGS) \
+		generic_build_repo_series
+	@$(FINISH_ECHO)
+
+build_debug_image:
+	$(MAKE) DEBUG_NAME=debug generic_debug_build
+
+build_fastdebug_image:
+	$(MAKE) DEBUG_NAME=fastdebug generic_debug_build
+
+# Build final image
+product_build:: build_product_image
+debug_build:: build_debug_image
+fastdebug_build:: build_fastdebug_image
 
 # Check on whether we really can build the openjdk, need source etc.
 openjdk_check: FRC
@@ -101,113 +283,6 @@
 	@$(ECHO) " "
 endif
 
-build:: sanity 
-
-clobber::
-
-ifeq ($(BUILD_LANGTOOLS), true)
-  build:: langtools
-  clobber:: langtools-clobber
-endif
-
-ifeq ($(BUILD_CORBA), true)
-  build:: corba
-  clobber:: corba-clobber
-endif
-
-ifeq ($(BUILD_JAXP), true)
-  build:: jaxp
-  clobber:: jaxp-clobber
-endif
-
-ifeq ($(BUILD_JAXWS), true)
-  build:: jaxws
-  clobber:: jaxws-clobber
-endif
-
-ifeq ($(BUILD_HOTSPOT), true)
-  build:: $(HOTSPOT) 
-  clobber:: hotspot-clobber
-endif
-
-ifeq ($(BUILD_JDK), true)
-  build:: $(JDK_JAVA_EXE)
-  clobber:: jdk-clobber
-endif
-
-ifeq ($(BUILD_DEPLOY), true)
-  build:: $(DEPLOY)
-  clobber:: deploy-clobber
-endif
-
-#
-# Generic debug build, fastdebug or debug. Needs special handling.
-#  Note that debug builds do NOT do INSTALL steps, but must be done
-#  after the product build and before the INSTALL step of the product build.
-#
-#   DEBUG_NAME is fastdebug or debug
-#   ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix
-#   The resulting j2sdk-image is used by the install makefiles to create a
-#     debug install bundle jdk-*-debug-** bundle (tar or zip) 
-#     which will install in the debug or fastdebug subdirectory of the
-#     normal product install area.
-#     The install process needs to know what the DEBUG_NAME is, so
-#     look for INSTALL_DEBUG_NAME in the install rules.
-#
-
-COMMON_DEBUG_FLAGS= \
-	DEBUG_NAME=$(DEBUG_NAME) \
-	ALT_OUTPUTDIR=$(ABS_OUTPUTDIR)-$(DEBUG_NAME) \
-	NO_DOCS=true
-
-product_build: setup
-	@$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'`
-	$(MAKE) SKIP_FASTDEBUG_BUILD=true SKIP_DEBUG_BUILD=true all
-	@$(ECHO) $@ build finished: `$(DATE) '+%y-%m-%d %H:%M'`
-
-generic_debug_build:
-	@$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'`
-	$(MAKE) $(COMMON_DEBUG_FLAGS) setup build
-	@$(ECHO) $@ build finished: `$(DATE) '+%y-%m-%d %H:%M'`
-
-debug_build: setup
-	$(MAKE) DEBUG_NAME=debug generic_debug_build
-
-fastdebug_build: setup
-	$(MAKE) DEBUG_NAME=fastdebug generic_debug_build
-
-ifeq ($(SKIP_FASTDEBUG_BUILD), false)
-  all:: fastdebug_build
-endif
-
-ifeq ($(SKIP_DEBUG_BUILD), false)
-  all:: debug_build
-endif
-
-ifeq ($(BUILD_JDK), true)
-  ifeq ($(BUNDLE_RULES_AVAILABLE), true)
-    all:: openjdk-binary-plugs-bundles
-  endif
-endif
-
-ifeq ($(BUILD_INSTALL), true)
-  all :: $(INSTALL)
-  clobber:: install-clobber
-endif
-
-ifeq ($(BUILD_SPONSORS), true)
-  all :: $(SPONSORS)
-  clobber:: sponsors-clobber
-endif
-
-ifneq ($(SKIP_COMPARE_IMAGES), true)
-  all :: compare-image
-endif
-
-ifneq ($(SKIP_OPENJDK_BUILD), true)
-  all :: openjdk_build
-endif
-
 # If we have bundle rules, we have a chance here to do a complete cycle
 #   build, of production and open build.
 # FIXUP: We should create the openjdk source bundle and build that?
@@ -235,6 +310,7 @@
 endif
 
 openjdk_build:
+	@$(START_ECHO)
 	@$(ECHO) " "
 	@$(ECHO) "================================================="
 	@$(ECHO) "Starting openjdk build"
@@ -245,6 +321,7 @@
 	$(MKDIR) -p $(OPENJDK_OUTPUTDIR)
 	($(CD) $(OPENJDK_BUILDDIR) && $(MAKE) \
 	  OPENJDK=true \
+	  NO_DOCS=true \
 	  ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR) \
 	  ALT_OUTPUTDIR=$(OPENJDK_OUTPUTDIR) \
 	  ALT_BINARY_PLUGS_PATH=$(OPENJDK_PLUGS) \
@@ -261,6 +338,7 @@
 	@$(ECHO) " Binary Bundle: $(OPENJDK_BUILD_BINARY_ZIP)"
 	@$(ECHO) "================================================="
 	@$(ECHO) " "
+	@$(FINISH_ECHO)
     
     endif
   endif
@@ -274,8 +352,18 @@
 
 clean: clobber
 
-all:: 
-	@$(ECHO) Control build finished: `$(DATE) '+%y-%m-%d %H:%M'`
+#
+# Dev builds
+#
+
+dev : dev-build
+
+dev-build:
+	$(MAKE) DEV_ONLY=true all
+dev-sanity:
+	$(MAKE) DEV_ONLY=true sanity
+dev-clobber:
+	$(MAKE) DEV_ONLY=true clobber
 
 #
 # Quick jdk verification build
@@ -461,16 +549,6 @@
 endif
 
 ################################################################
-# Cycle build. Build the jdk, use it to build the jdk again.
-################################################################
-  
-ABS_BOOTDIR_OUTPUTDIR=$(ABS_OUTPUTDIR)/bootjdk
-  
-boot_cycle:
-	$(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) product_build
-	$(MAKE) ALT_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/j2sdk-image product_build
-
-################################################################
 # JPRT rule to build
 ################################################################
 
@@ -480,9 +558,20 @@
 #  PHONY
 ################################################################
 
-.PHONY: all build what clobber insane \
-	fastdebug_build debug_build product_build setup \
-        dev dev-build dev-sanity dev-clobber
+.PHONY: all \
+	generic_build_repo_series \
+	what clobber insane \
+        dev dev-build dev-sanity dev-clobber \
+        product_build \
+        fastdebug_build \
+        debug_build  \
+        build_product_image  \
+        build_debug_image  \
+        build_fastdebug_image \
+        create_fresh_product_bootdir \
+        create_fresh_debug_bootdir \
+        create_fresh_fastdebug_bootdir \
+        generic_debug_build
 
 # Force target
 FRC:
--- a/README-builds.html	Sun Aug 10 18:35:53 2008 -0700
+++ b/README-builds.html	Thu Aug 14 22:16:00 2008 -0700
@@ -132,7 +132,7 @@
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                             SunSolve</a> for patch downloads.
                         </td>
-                        <td>Sun Studio 11 </td>
+                        <td>Sun Studio 12</td>
                     </tr>
                     <tr>
                         <td>Solaris SPARCV9 (64bit)</td>
@@ -141,7 +141,7 @@
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                             SunSolve</a> for patch downloads.
                         </td>
-                        <td>Sun Studio 11</td>
+                        <td>Sun Studio 12</td>
                     </tr>
                     <tr>
                         <td>Solaris X86 (32bit)</td>
@@ -150,7 +150,7 @@
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                             SunSolve</a> for patch downloads.
                         </td>
-                        <td>Sun Studio 11</td>
+                        <td>Sun Studio 12</td>
                     </tr>
                     <tr>
                         <td>Solaris X64 (64bit)</td>
@@ -159,7 +159,7 @@
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                             SunSolve</a> for patch downloads.
                         </td>
-                        <td>Sun Studio 11</td>
+                        <td>Sun Studio 12</td>
                     </tr>
                     <tr>
                         <td>Windows X86 (32bit)</td>
@@ -831,8 +831,8 @@
                 <blockquote>
                     At a minimum, the
                     <a href="http://developers.sun.com/sunstudio/index.jsp" target="_blank">
-                    Sun Studio 11 Compilers</a>
-                    (containing version 5.8 of the C and C++ compilers) is required,
+                    Sun Studio 12 Compilers</a>
+                    (containing version 5.9 of the C and C++ compilers) is required,
                     with patches from the
                     <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access" target="_blank">
                     SunSolve web site</a>.
--- a/corba/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 8b71960f79ce0a6fb8ddfeec03f03d400a361747 jdk7-b29
 c0252adbb2abbfdd6c35595429ac6fbdd98e20ac jdk7-b30
 ef6af34d75a7b44e77083f1d4ee47631fa09d3b4 jdk7-b31
+80a0f46a6203e727012bd579fe38a609b83decce jdk7-b32
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_dynamicany.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_dynamicany.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -41,4 +41,7 @@
 	com/sun/corba/se/impl/dynamicany/DynSequenceImpl.java \
 	com/sun/corba/se/impl/dynamicany/DynStructImpl.java \
 	com/sun/corba/se/impl/dynamicany/DynUnionImpl.java \
-	com/sun/corba/se/impl/dynamicany/DynValueImpl.java
+	com/sun/corba/se/impl/dynamicany/DynValueImpl.java \
+	com/sun/corba/se/impl/dynamicany/DynValueBoxImpl.java \
+	com/sun/corba/se/impl/dynamicany/DynValueCommonImpl.java
+
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -52,6 +52,8 @@
 	com/sun/corba/se/impl/encoding/CodeSetComponentInfo.java \
 	com/sun/corba/se/impl/encoding/EncapsInputStream.java \
 	com/sun/corba/se/impl/encoding/EncapsOutputStream.java \
+	com/sun/corba/se/impl/encoding/IDLJavaSerializationInputStream.java \
+	com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java \
 	com/sun/corba/se/impl/encoding/MarkAndResetHandler.java \
 	com/sun/corba/se/impl/encoding/MarshalInputStream.java \
 	com/sun/corba/se/impl/encoding/MarshalOutputStream.java \
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -63,6 +63,7 @@
 	com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java \
 	com/sun/corba/se/impl/ior/iiop/IIOPProfileTemplateImpl.java \
 	com/sun/corba/se/impl/ior/iiop/JavaCodebaseComponentImpl.java \
+	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java \
 	com/sun/corba/se/impl/ior/iiop/MaxStreamFormatVersionComponentImpl.java \
 	com/sun/corba/se/impl/ior/iiop/RequestPartitioningComponentImpl.java \
 	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -27,6 +27,7 @@
 	com/sun/corba/se/impl/orbutil/CacheTable.java \
 	com/sun/corba/se/impl/orbutil/CorbaResourceUtil.java \
 	com/sun/corba/se/impl/orbutil/DenseIntMapImpl.java \
+	com/sun/corba/se/impl/orbutil/GetPropertyAction.java \
 	com/sun/corba/se/impl/orbutil/HexOutputStream.java \
 	com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java \
 	com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java \
@@ -76,6 +77,7 @@
 	com/sun/corba/se/impl/copyobject/FallbackObjectCopierImpl.java \
 	com/sun/corba/se/impl/copyobject/ORBStreamObjectCopierImpl.java \
 	com/sun/corba/se/impl/copyobject/ReferenceObjectCopierImpl.java \
+	com/sun/corba/se/impl/copyobject/JavaStreamObjectCopierImpl.java \
 	com/sun/corba/se/impl/orbutil/graph/Node.java \
 	com/sun/corba/se/impl/orbutil/graph/NodeData.java \
 	com/sun/corba/se/impl/orbutil/graph/Graph.java \
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -63,6 +63,7 @@
 	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateRequestMessage_1_0.java \
 	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateRequestMessage_1_1.java \
 	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateRequestMessage_1_2.java \
+	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyOrReplyMessage.java \
 	com/sun/corba/se/impl/protocol/giopmsgheaders/Message.java \
 	com/sun/corba/se/impl/protocol/giopmsgheaders/MessageBase.java \
 	com/sun/corba/se/impl/protocol/giopmsgheaders/MessageHandler.java \
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_legacy_interceptor.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_legacy_interceptor.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -29,6 +29,7 @@
 
 com_sun_corba_se_spi_legacy_interceptor_java = \
 	com/sun/corba/se/spi/legacy/interceptor/IORInfoExt.java \
+	com/sun/corba/se/spi/legacy/interceptor/ORBInitInfoExt.java \
 	com/sun/corba/se/spi/legacy/interceptor/RequestInfoExt.java \
 	com/sun/corba/se/spi/legacy/interceptor/UnknownType.java
 
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -35,5 +35,6 @@
 	com/sun/corba/se/spi/monitoring/MonitoredObjectFactory.java \
 	com/sun/corba/se/spi/monitoring/MonitoredAttribute.java \
 	com/sun/corba/se/spi/monitoring/MonitoredAttributeInfoFactory.java \
+	com/sun/corba/se/spi/monitoring/MonitoringConstants.java \
 	com/sun/corba/se/spi/monitoring/MonitoringManager.java \
 	com/sun/corba/se/spi/monitoring/MonitoringManagerFactory.java 
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -27,6 +27,7 @@
 	com/sun/corba/se/spi/presentation/rmi/DynamicMethodMarshaller.java \
 	com/sun/corba/se/spi/presentation/rmi/DynamicStub.java \
 	com/sun/corba/se/spi/presentation/rmi/IDLNameTranslator.java \
+	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
 	com/sun/corba/se/spi/presentation/rmi/PresentationManager.java \
 	com/sun/corba/se/spi/presentation/rmi/StubAdapter.java
 
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_transport.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_transport.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -26,6 +26,7 @@
 com_sun_corba_se_spi_transport_java = \
 	com/sun/corba/se/spi/transport/CorbaAcceptor.java \
 	com/sun/corba/se/spi/transport/CorbaConnection.java \
+	com/sun/corba/se/spi/transport/CorbaConnectionCache.java \
 	com/sun/corba/se/spi/transport/CorbaContactInfo.java \
 	com/sun/corba/se/spi/transport/CorbaContactInfoList.java \
 	com/sun/corba/se/spi/transport/CorbaContactInfoListFactory.java \
--- a/corba/make/com/sun/corba/minclude/org_omg_CosNaming.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/org_omg_CosNaming.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -47,6 +47,7 @@
 	org/omg/CosNaming/NamingContext.java \
 	org/omg/CosNaming/NamingContextHelper.java \
 	org/omg/CosNaming/NamingContextHolder.java \
+	org/omg/CosNaming/NamingContextOperations.java \
 	org/omg/CosNaming/_NamingContextStub.java \
 	org/omg/CosNaming/NamingContextPackage/AlreadyBound.java \
 	org/omg/CosNaming/NamingContextPackage/AlreadyBoundHelper.java \
--- a/corba/make/com/sun/corba/minclude/org_omg_DynamicAny.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/org_omg_DynamicAny.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -47,6 +47,10 @@
 	org/omg/DynamicAny/DynUnionOperations.java \
 	org/omg/DynamicAny/DynValue.java \
 	org/omg/DynamicAny/DynValueOperations.java \
+	org/omg/DynamicAny/DynValueBox.java \
+	org/omg/DynamicAny/DynValueBoxOperations.java \
+	org/omg/DynamicAny/DynValueCommon.java \
+	org/omg/DynamicAny/DynValueCommonOperations.java \
 	org/omg/DynamicAny/NameDynAnyPair.java \
 	org/omg/DynamicAny/NameValuePair.java \
 	org/omg/DynamicAny/DynAnyPackage/InvalidValue.java \
@@ -70,8 +74,16 @@
 	org/omg/DynamicAny/DynSequenceHelper.java \
 	org/omg/DynamicAny/NameDynAnyPairSeqHelper.java \
 	org/omg/DynamicAny/NameValuePairHelper.java \
-	org/omg/DynamicAny/NameValuePairSeqHelper.java 
-
+	org/omg/DynamicAny/NameValuePairSeqHelper.java  \
+	org/omg/DynamicAny/_DynAnyFactoryStub.java \
+	org/omg/DynamicAny/_DynAnyStub.java \
+	org/omg/DynamicAny/_DynArrayStub.java \
+	org/omg/DynamicAny/_DynEnumStub.java \
+	org/omg/DynamicAny/_DynFixedStub.java \
+	org/omg/DynamicAny/_DynSequenceStub.java \
+	org/omg/DynamicAny/_DynStructStub.java \
+	org/omg/DynamicAny/_DynUnionStub.java \
+	org/omg/DynamicAny/_DynValueStub.java
 
 DYNANY_HELP_HOLD_java = \
 	org/omg/DynamicAny/AnySeqHolder.java \
--- a/corba/make/com/sun/corba/minclude/org_omg_PortableInterceptor.jmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/minclude/org_omg_PortableInterceptor.jmk	Thu Aug 14 22:16:00 2008 -0700
@@ -106,6 +106,7 @@
 	org/omg/IOP/CodecPackage/TypeMismatchHelper.java \
 	org/omg/IOP/ENCODING_CDR_ENCAPS.java \
 	org/omg/IOP/Encoding.java \
+	org/omg/IOP/ExceptionDetailMessage.java \
 	org/omg/Dynamic/Parameter.java 
 
 # Helper and Holder files to be removed:
--- a/corba/make/com/sun/corba/se/sources/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/com/sun/corba/se/sources/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -46,6 +46,8 @@
 include $(CORBA_JMK_DIRECTORY)com_sun_corba_se_PortableActivationIDL.jmk
 include $(CORBA_JMK_DIRECTORY)com_sun_corba_se_impl_logging.jmk
 
+FILES_java += com/sun/corba/se/org/omg/CORBA/ORB.java
+
 #
 # Dirs
 #
--- a/corba/make/common/shared/Compiler-sun.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/common/shared/Compiler-sun.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -31,11 +31,8 @@
 
 # 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
+  COMPILER_VERSION=SS12
+  REQUIRED_CC_VER=5.9
   CC             = $(COMPILER_PATH)cc
   CPP            = $(COMPILER_PATH)cc -E
   CXX            = $(COMPILER_PATH)CC
--- a/corba/make/javax/xa/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/javax/xa/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -35,7 +35,7 @@
 #
 # Files to compile
 #
-AUTO_FILES_JAVA_DIRS = javax/transaction/xa
+AUTO_FILES_JAVA_DIRS = javax/transaction
 
 #
 # Rules
--- a/corba/make/jprt.config	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/jprt.config	Thu Aug 14 22:16:00 2008 -0700
@@ -127,9 +127,7 @@
     if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
         compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
     else
-        # FIXUP: Change to SS12 when validated
-	#compiler_name=SS12
-        compiler_name=SS11
+	compiler_name=SS12
     fi
     compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/${compiler_name}/bin
     ALT_COMPILER_PATH="${compiler_path}"
--- a/corba/make/org/omg/CORBA/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/corba/make/org/omg/CORBA/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -47,8 +47,8 @@
 endif
 
 FILES_java = \
-        $(ORG_OMG_SENDINGCONTEXT_java) \
-        $(ORG_OMG_CORBA_2_3_java) \
+        $(org_omg_SendingContext_java) \
+        $(org_omg_CORBA_2_3_java) \
         $(ORG_OMG_CORBA_java)
 
 #
--- a/hotspot/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/hotspot/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 4f91c08b3e4498213a9c5a24898f7d9c38cf86fb jdk7-b29
 d1605aabd0a15ecf93787c47de63073c33fba52d jdk7-b30
 9c2ecc2ffb125f14fab3857fe7689598956348a0 jdk7-b31
+b727c32788a906c04839516ae7443a085185a300 jdk7-b32
--- a/jaxp/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/jaxp/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 617ee8607cfd5fd81f233f3c0b690f85084687a0 jdk7-b29
 2d94a238a1641d074e6032dcdceed461d6f85d6a jdk7-b30
 255d64ee287e926e8629dd80bc67690e65eeba30 jdk7-b31
+400a5ee432cc2db9031e06852ddde9264a192b48 jdk7-b32
--- a/jaxws/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/jaxws/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 836c55713abab186e4de0c6eabd06ff008c7b8d0 jdk7-b29
 7f2466f8cc7009702e548d1a763254f546024d7e jdk7-b30
 f978623825364a2ad9c6f51d02fc9424a8b0bc86 jdk7-b31
+e6daca2eced9d84b01255cabcfcc49164c26405e jdk7-b32
--- a/jdk/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -7,3 +7,4 @@
 b6d6877c1155621a175dccd12dc14c54f938fb8b jdk7-b30
 b7474b739d13bacd9972f88ac91f6350b7b0be12 jdk7-b31
 c51121419e30eac5f0fbbce45ff1711c4ce0de28 jdk7-b32
+fa4c0a6cdd25d97d4e6f5d7aa180bcbb0e0d56af jdk7-b33
--- a/jdk/make/ASSEMBLY_EXCEPTION	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-
-OPENJDK ASSEMBLY EXCEPTION
-
-The OpenJDK source code made available by Sun at openjdk.java.net and
-openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the
-GNU General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
-only ("GPL2"), with the following clarification and special exception.
-
-    Linking this OpenJDK Code statically or dynamically with other code
-    is making a combined work based on this library.  Thus, the terms
-    and conditions of GPL2 cover the whole combination.
-
-    As a special exception, Sun gives you permission to link this
-    OpenJDK Code with certain code licensed by Sun as indicated at
-    http://openjdk.java.net/legal/exception-modules-2007-05-08.html
-    ("Designated Exception Modules") to produce an executable,
-    regardless of the license terms of the Designated Exception Modules,
-    and to copy and distribute the resulting executable under GPL2,
-    provided that the Designated Exception Modules continue to be
-    governed by the licenses under which they were offered by Sun.
-
-As such, it allows licensees and sublicensees of Sun's GPL2 OpenJDK Code to
-build an executable that includes those portions of necessary code that Sun
-could not provide under GPL2 (or that Sun has provided under GPL2 with the
-Classpath exception).  If you modify or add to the OpenJDK code, that new
-GPL2 code may still be combined with Designated Exception Modules if the
-new code is made subject to this exception by its copyright holder.
--- a/jdk/make/LICENSE	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,347 +0,0 @@
-The GNU General Public License (GPL)
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this license
-document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom to share
-and change it.  By contrast, the GNU General Public License is intended to
-guarantee your freedom to share and change free software--to make sure the
-software is free for all its users.  This General Public License applies to
-most of the Free Software Foundation's software and to any other program whose
-authors commit to using it.  (Some other Free Software Foundation software is
-covered by the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not price.  Our
-General Public Licenses are designed to make sure that you have the freedom to
-distribute copies of free software (and charge for this service if you wish),
-that you receive source code or can get it if you want it, that you can change
-the software or use pieces of it in new free programs; and that you know you
-can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny
-you these rights or to ask you to surrender the rights.  These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for
-a fee, you must give the recipients all the rights that you have.  You must
-make sure that they, too, receive or can get the source code.  And you must
-show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy, distribute
-and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software.  If the
-software is modified by someone else and passed on, we want its recipients to
-know that what they have is not the original, so that any problems introduced
-by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents.  We
-wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program proprietary.
-To prevent this, we have made it clear that any patent must be licensed for
-everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms of
-this General Public License.  The "Program", below, refers to any such program
-or work, and a "work based on the Program" means either the Program or any
-derivative work under copyright law: that is to say, a work containing the
-Program or a portion of it, either verbatim or with modifications and/or
-translated into another language.  (Hereinafter, translation is included
-without limitation in the term "modification".) Each licensee is addressed as
-"you".
-
-Activities other than copying, distribution and modification are not covered by
-this License; they are outside its scope.  The act of running the Program is
-not restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made by
-running the Program).  Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as
-you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this License
-and to the absence of any warranty; and give any other recipients of the
-Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may
-at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus
-forming a work based on the Program, and copy and distribute such modifications
-or work under the terms of Section 1 above, provided that you also meet all of
-these conditions:
-
-    a) You must cause the modified files to carry prominent notices stating
-    that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in whole or
-    in part contains or is derived from the Program or any part thereof, to be
-    licensed as a whole at no charge to all third parties under the terms of
-    this License.
-
-    c) If the modified program normally reads commands interactively when run,
-    you must cause it, when started running for such interactive use in the
-    most ordinary way, to print or display an announcement including an
-    appropriate copyright notice and a notice that there is no warranty (or
-    else, saying that you provide a warranty) and that users may redistribute
-    the program under these conditions, and telling the user how to view a copy
-    of this License.  (Exception: if the Program itself is interactive but does
-    not normally print such an announcement, your work based on the Program is
-    not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If identifiable
-sections of that work are not derived from the Program, and can be reasonably
-considered independent and separate works in themselves, then this License, and
-its terms, do not apply to those sections when you distribute them as separate
-works.  But when you distribute the same sections as part of a whole which is a
-work based on the Program, the distribution of the whole must be on the terms
-of this License, whose permissions for other licensees extend to the entire
-whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your
-rights to work written entirely by you; rather, the intent is to exercise the
-right to control the distribution of derivative or collective works based on
-the Program.
-
-In addition, mere aggregation of another work not based on the Program with the
-Program (or with a work based on the Program) on a volume of a storage or
-distribution medium does not bring the other work under the scope of this
-License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1 and
-2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable source
-    code, which must be distributed under the terms of Sections 1 and 2 above
-    on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three years, to
-    give any third party, for a charge no more than your cost of physically
-    performing source distribution, a complete machine-readable copy of the
-    corresponding source code, to be distributed under the terms of Sections 1
-    and 2 above on a medium customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer to
-    distribute corresponding source code.  (This alternative is allowed only
-    for noncommercial distribution and only if you received the program in
-    object code or executable form with such an offer, in accord with
-    Subsection b above.)
-
-The source code for a work means the preferred form of the work for making
-modifications to it.  For an executable work, complete source code means all
-the source code for all modules it contains, plus any associated interface
-definition files, plus the scripts used to control compilation and installation
-of the executable.  However, as a special exception, the source code
-distributed need not include anything that is normally distributed (in either
-source or binary form) with the major components (compiler, kernel, and so on)
-of the operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the source
-code from the same place counts as distribution of the source code, even though
-third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License.  Any attempt otherwise to copy, modify,
-sublicense or distribute the Program is void, and will automatically terminate
-your rights under this License.  However, parties who have received copies, or
-rights, from you under this License will not have their licenses terminated so
-long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the Program
-or its derivative works.  These actions are prohibited by law if you do not
-accept this License.  Therefore, by modifying or distributing the Program (or
-any work based on the Program), you indicate your acceptance of this License to
-do so, and all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the Program),
-the recipient automatically receives a license from the original licensor to
-copy, distribute or modify the Program subject to these terms and conditions.
-You may not impose any further restrictions on the recipients' exercise of the
-rights granted herein.  You are not responsible for enforcing compliance by
-third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues), conditions
-are imposed on you (whether by court order, agreement or otherwise) that
-contradict the conditions of this License, they do not excuse you from the
-conditions of this License.  If you cannot distribute so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not distribute the Program at all.
-For example, if a patent license would not permit royalty-free redistribution
-of the Program by all those who receive copies directly or indirectly through
-you, then the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply and
-the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or
-other property right claims or to contest validity of any such claims; this
-section has the sole purpose of protecting the integrity of the free software
-distribution system, which is implemented by public license practices.  Many
-people have made generous contributions to the wide range of software
-distributed through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing to
-distribute software through any other system and a licensee cannot impose that
-choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original
-copyright holder who places the Program under this License may add an explicit
-geographical distribution limitation excluding those countries, so that
-distribution is permitted only in or among countries not thus excluded.  In
-such case, this License incorporates the limitation as if written in the body
-of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the
-General Public License from time to time.  Such new versions will be similar in
-spirit to the present version, but may differ in detail to address new problems
-or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any later
-version", you have the option of following the terms and conditions either of
-that version or of any later version published by the Free Software Foundation.
-If the Program does not specify a version number of this License, you may
-choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission.  For software which is copyrighted by the Free Software Foundation,
-write to the Free Software Foundation; we sometimes make exceptions for this.
-Our decision will be guided by the two goals of preserving the free status of
-all derivatives of our free software and of promoting the sharing and reuse of
-software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
-THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
-STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
-PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
-YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
-ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
-PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
-INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
-BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
-OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible
-use to the public, the best way to achieve this is to make it free software
-which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program.  It is safest to attach
-them to the start of each source file to most effectively convey the exclusion
-of warranty; and each file should have at least the "copyright" line and a
-pointer to where the full notice is found.
-
-    One line to give the program's name and a brief idea of what it does.
-
-    Copyright (C) <year> <name of author>
-
-    This program is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the Free
-    Software Foundation; either version 2 of the License, or (at your option)
-    any later version.
-
-    This program 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 for
-    more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc., 59
-    Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this when it
-starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
-    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
-    software, and you are welcome to redistribute it under certain conditions;
-    type 'show c' for details.
-
-The hypothetical commands 'show w' and 'show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may be
-called something other than 'show w' and 'show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
-is a sample; alter the names:
-
-    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-    'Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-    signature of Ty Coon, 1 April 1989
-
-    Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General Public
-License instead of this License.
-
-
-"CLASSPATH" EXCEPTION TO THE GPL
-
-Certain source files distributed by Sun Microsystems, Inc.  are subject to
-the following clarification and special exception to the GPL, but only where
-Sun has expressly included in the particular source file's header the words
-"Sun designates this particular file as subject to the "Classpath" exception
-as provided by Sun in the LICENSE file that accompanied this code."
-
-    Linking this library statically or dynamically with other modules is making
-    a combined work based on this library.  Thus, the terms and conditions of
-    the GNU General Public License cover the whole combination.
-
-    As a special exception, the copyright holders of this library give you
-    permission to link this library with independent modules to produce an
-    executable, regardless of the license terms of these independent modules,
-    and to copy and distribute the resulting executable under terms of your
-    choice, provided that you also meet, for each linked independent module,
-    the terms and conditions of the license of that module.  An independent
-    module is a module which is not derived from or based on this library.  If
-    you modify this library, you may extend this exception to your version of
-    the library, but you are not obligated to do so.  If you do not wish to do
-    so, delete this exception statement from your version.
--- a/jdk/make/README	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-README:
-  This file should be located at the top of the jdk Mercurial repository.
-
-  See http://openjdk.java.net/ for more information about the OpenJDK.
-
-Simple Build Instructions:
-
-  1. Download and install a JDK 6 from
-     http://java.sun.com/javase/downloads/index.jsp
-     Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
-
-  2. Download and install the Binary Plugs for the most recent JDK7 from
-     http://download.java.net/openjdk/jdk7/
-     Set the environment variable ALT_BINARY_PLUGS_PATH to the location of
-     these binary plugs.
-     
-  3. Either download and install the latest JDK7 from
-     http://download.java.net/openjdk/jdk7/, or build your own complete
-     OpenJDK7 by using the top level Makefile in the OpenJDK Mercurial forest.
-     Set the environment variable ALT_JDK_IMPORT_PATH to the location of
-     this latest JDK7 or OpenJDK7 build.
-     
-  4. Check the sanity of doing a build with the current machine:
-       cd make && gnumake sanity
-     See README-builds.html if you run into problems.
-  
-  5. Do a partial build of the jdk:
-       cd make && gnumake all
-  
-  6. Construct the images:
-       cd make && gnumake images
-     The resulting JDK image should be found in build/*/j2sdk-image
-
-
--- a/jdk/make/README-builds.html	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1452 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-<head><title>OpenJDK Build README</title></head>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<center>
-    <h1>OpenJDK Build README</h1>
-</center>
-
-<!-- ------------------------------------------------------ --> 
-<hr noshade="noshade" size="3">
-
-<h2><a name="introduction">Introduction</a></h2>
-
-<blockquote>
-    <p>
-    This README file contains build instructions for the 
-    <a href="http://openjdk.java.net">OpenJDK</a>.
-    Building the source code for the 
-    OpenJDK
-    requires
-    a certain degree of technical expertise.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="contents">Contents</a></h2>
-
-<blockquote>
-    <ul>
-        <li><a href="#introduction">Introduction</a></li>
-        <li><a href="#MBE">Minimum Build Environments</a></li>
-        <li><a href="#SDBE">Specific Developer Build Environments</a></li>
-        <li><a href="#directories">Source Directory Structure</a> </li>
-        <li><a href="#building">Build Information</a>
-            <ul type="disc">
-                <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
-                <li><a href="#linux">Basic Linux System Setup</a> </li>
-                <li><a href="#solaris">Basic Solaris System Setup</a> </li>
-                <li><a href="#windows">Basic Windows System Setup</a> </li>
-                <li><a href="#dependencies">Build Dependencies</a> </li>
-                <ul type="disc">
-                    <li><a href="#bootjdk">Bootstrap JDK</a> </li>
-                    <li><a href="#binaryplugs">Binary Plugs</a> </li>
-                    <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
-                    <li><a href="#compilers">Compilers</a> 
-                        <ul>
-                            <li><a href="#msvc">Microsoft Visual Studio</a> </li>
-                            <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
-                            <li><a href="#gcc">Linux gcc/binutils</a> </li>
-                            <li><a href="#studio">Sun Studio</a> </li>
-                        </ul>
-                    </li>
-                    <li>Linux and Solaris:
-                        <ul>
-                            <li><a href="#cups">CUPS Include files</a> </li>
-                        </ul>
-                    </li>
-                    <li>Windows only:
-                        <ul>
-                            <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
-                            <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
-                        </ul>
-                    </li>
-                </ul>
-            </ul>
-        </li>
-        <li><a href="#creating">Creating the Build</a> </li>
-        <li><a href="#testing">Testing the Build</a> </li>
-        <li><a href="#variables">Environment/Make Variables</a></li>
-        <li><a href="#troubleshooting">Troubleshooting</a></li>
-    </ul>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="MBE">Minimum Build Environments</a></h2>
-
-<blockquote>
-    <p>
-    This file often describes specific requirements for what we call the
-    "minimum build environments" (MBE) for the JDK.
-    Building with the MBE will generate the most compatible
-    bits that install on, and run correctly on, the most variations
-    of the same base OS and hardware architecture.
-    These usually represent what is often called the
-    least common denominator platforms.
-    It is understood that most developers will NOT be using these 
-    specific platforms, and in fact creating these specific platforms
-    may be difficult due to the age of some of this software.
-    <p>
-    
-    <p>
-    The minimum OS and C/C++ compiler versions needed for building the
-    OpenJDK:
-    <p>
-    <center>
-        <table border="1">
-            <thead>
-                <tr>
-                    <th>Base OS and Architecture</th>
-                    <th>OS</th>
-                    <th>Compiler</th>
-                </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td>Linux X86 (32bit)</td>
-                    <td>Red Hat Enterprise Linux 4 </td>
-                    <td>gcc 4 </td>
-                </tr>
-                <tr>
-                    <td>Linux X64 (64bit)</td>
-                    <td>Red Hat Enterprise Linux 4 </td>
-                    <td>gcc 4 </td>
-                </tr>
-                <tr>
-                    <td>Solaris SPARC (32bit)</td>
-                    <td>Solaris 10 + patches 
-                        <br>
-                        See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
-                    </td>
-                    <td>Sun Studio 11 </td>
-                </tr>
-                <tr>
-                    <td>Solaris SPARCV9 (64bit)</td>
-                    <td>Solaris 10 + patches
-                        <br>
-                        See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
-                    </td>
-                    <td>Sun Studio 11</td>
-                </tr>
-                <tr>
-                    <td>Solaris X86 (32bit)</td>
-                    <td>Solaris 10 + patches
-                        <br>
-                        See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
-                    </td>
-                    <td>Sun Studio 11</td>
-                </tr>
-                <tr>
-                    <td>Solaris X64 (64bit)</td>
-                    <td>Solaris 10 + patches
-                        <br>
-                        See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
-                    </td>
-                    <td>Sun Studio 11</td>
-                </tr>
-                <tr>
-                    <td>Windows X86 (32bit)</td>
-                    <td>Windows XP</td>
-                    <td>Microsoft Visual Studio .NET 2003 Professional</td>
-                </tr>
-                <tr>
-                    <td>Windows X64 (64bit)</td>
-                    <td>Windows Server 2003 - Enterprise x64 Edition</td>
-                    <td>Microsoft Platform SDK - April 2005</td>
-                </tr>
-            </tbody>
-        </table>
-    </center>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="SDBE">Specific Developer Build Environments</a></h2>
-
-<blockquote>
-    <p>
-    We won't be listing all the possible environments, but
-    we will try to provide what information we have available to us.
-</blockquote>
-
-<h3><a name="fedora">Fedora</a></h3>
-
-<blockquote>
-    TBD
-</blockquote>
-
-<h3><a name="debian">Debian</a></h3>
-
-<blockquote>
-    TBD
-</blockquote>
-
-<h3><a name="ubuntu">Ubuntu</a></h3>
-
-<blockquote>
-    <p>
-    In addition to needing the Bootstrap JDK and the Binary Plugs, 
-    when building on Ubuntu you will need to
-    make sure certain packages are installed.
-    In particular, certain X11 packages, make, m4, gawk, gcc 4, 
-    binutils, cups, freetype
-    and alsa.
-    
-    <h4>Ubuntu 6.06</h4>
-    
-    <p>
-    The following list of packages for Ubuntu 6.06 is a working set that
-    does appear to work. 
-    
-    <p>
-    <b>Note that it's quite possible that some of these
-        packages are not required, so anyone discovering that some of the
-        packages listed below are NOT required,
-        please let the
-        OpenJDK
-    team know.</b>
-    <p>
-    All the packages below can be installed with the
-    Synaptic Package manager provided with the base Ubuntu 6.06 release.
-    
-    <blockquote>
-        <ul>
-            <li>binutils (2.16.1cvs20060117-1ubuntu2.1)</li>
-            <li>cpp (4:4.0.3-1)</li>
-            <li>cpp-4.0 (4.0.3-1ubuntu5)</li>
-            <li>libfreetype6-dev</li>
-            <li>g++ (4:4.0.3-1)</li>
-            <li>g++-4.0 (4.0.3-1ubuntu5)</li>
-            <li>gawk (1:3.1.5-2build1)</li>
-            <li>gcc (4:4.0.3-1)</li>
-            <li>gcc-4.0 (4.0.3-1ubuntu5)</li>
-            <li>libasound2-dev (1.0.10-2ubuntu4)</li>
-            <li>libc6 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
-            <li>libc6-dev (2.3.6-0ubuntu20.4)</li>
-            <li>libc6-i686 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
-            <li>libcupsys2-dev (1.2.2-0ubuntu0.6.06)</li>
-            <li>libgcrypt11-dev (1.2.2-1)</li>
-            <li>libgnutls-dev (1.2.9-2ubuntu1.1)</li>
-            <li>libgnutls12 (1.2.9-2ubuntu1) to 1.2.9-2ubuntu1.1</li>
-            <li>libgpg-error-dev (1.1-4)</li>
-            <li>libice-dev (2:1.0.0-0ubuntu2)</li>
-            <li>liblockfile1 (1.06.1)</li>
-            <li>libopencdk8-dev (0.5.7-2)</li>
-            <li>libpopt-dev (1.7-5)</li>
-            <li>libsm-dev (2:1.0.0-0ubuntu2)</li>
-            <li>libstdc++6-4.0-dev (4.0.3-1ubuntu5)</li>
-            <li>libtasn1-2-dev (0.2.17-1ubuntu1)</li>
-            <li>libx11-dev (2:1.0.0-0ubuntu9)</li>
-            <li>libxau-dev (1:1.0.0-0ubuntu4)</li>
-            <li>libxaw-headers (2:1.0.1-0ubuntu3)</li>
-            <li>libxaw7-dev (2:1.0.1-0ubuntu3)</li>
-            <li>libxdmcp-dev (1:1.0.0-0ubuntu2)</li>
-            <li>libxext-dev (2:1.0.0-0ubuntu4)</li>
-            <li>libxi-dev (2:1.0.0-0ubuntu3) </li>
-            <li>libxmu-dev (2:1.0.0-0ubuntu3)</li>
-            <li>libxmu-headers (2:1.0.0-0ubuntu3)</li>
-            <li>libxmuu-dev (2:1.0.0-0ubuntu3)</li>
-            <li>libxp-dev (6.8.2-11ubuntu2)</li>
-            <li>libxpm-dev (1:3.5.4.2-0ubuntu3)</li>
-            <li>libxrandr-dev (1:1.1.0.2-0ubuntu4)</li>
-            <li>libxt-dev (1:1.0.0-0ubuntu3)</li>
-            <li>libxtrap-dev (2:1.0.0-0ubuntu2)</li>
-            <li>libxtst-dev (2:1.0.1-0ubuntu2)</li>
-            <li>libxv-dev (2:1.0.1-0ubuntu3)</li>
-            <li>linux-kernel-headers (2.6.11.2-0ubuntu18)</li>
-            <li>m4 (1.4.4-1)</li>
-            <li>make (3.80+3.81.b4-1)</li>
-            <li>ssl-cert (1.0.13)</li>
-            <li>x-dev (7.0.4-0ubuntu2)</li>
-            <li>x11proto-core-dev (7.0.4-0ubuntu2)</li>
-            <li>x11proto-input-dev (1.3.2-0ubuntu2)</li>
-            <li>x11proto-kb-dev (1.0.2-0ubuntu2)</li>
-            <li>x11proto-randr-dev (1.1.2-0ubuntu2)</li>
-            <li>x11proto-record-dev (1.13.2-0ubuntu2)</li>
-            <li>x11proto-trap-dev (3.4.3-0ubuntu2)</li>
-            <li>x11proto-video-dev (2.2.2-0ubuntu2)</li>
-            <li>x11proto-xext-dev (7.0.2-0ubuntu2)</li>
-            <li>xlibs-dev (7.0.0-0ubuntu45)</li>
-            <li>zlib1g-dev (1:1.2.3-6ubuntu4)</li>
-        </ul>
-    </blockquote>
-    
-    <h4>Ubuntu 7.04</h4>
-    
-    <p>
-    Using the Synaptic Package Manager, download the following
-    packages (double indented packages are automatically aquired
-    due to package dependencies):
-    
-    <blockquote>
-        <ul>
-            <li>build-essential</li>
-            <ul>
-                <li>dpkg-dev</li>
-                <li>g++</li>
-                <li>g++-4.1</li>
-                <li>libc6-dev</li>
-                <li>libstdc++6.4.1-dev</li>
-                <li>linux-libc-dev</li>
-            </ul>
-            <li>gawk</li>
-            <li>m4</li>
-            <li>libasound2-dev</li>
-            <li>libcupsys2-dev</li>
-            <ul>
-                <li>libgcrypt11-dev</li>
-                <li>lgnutls-dev</li>
-                <li>libgpg-error-dev</li>
-                <li>liblzo-dev</li>
-                <li>libopencdk8-dev</li>
-                <li>libpopt-dev</li>
-                <li>libtasn1-3-dev</li>
-                <li>zlib1g-dev</li>
-            </ul>
-            <li>sun-java6-jdk</li>
-            <ul>
-                <li>java-common</li>
-                <li>libltdl3</li>
-                <li>odbcinst1debian1</li>
-                <li>sun-java6-bin</li>
-                <li>sun-java6-jre</li>
-                <li>unixodbc</li>
-            </ul>
-            <li>xlibs-dev</li>
-            <ul>
-                <li>(many)</li>
-            </ul>
-            <li>x11proto-print-dev</li>
-            <li>libxaw7-dev</li>
-            <ul>
-                <li>libxaw-headers</li>
-            </ul>
-            <li>libxp-dev</li>
-            <li>libfreetype6-dev</li>
-        </ul>
-    </blockquote>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="directories">Source Directory Structure</a></h2>
-
-<blockquote>
-    <p>
-    The source code for the 
-    OpenJDK is
-    delivered in <i>3</i> sibling directories:
-    <tt>hotspot</tt>, 
-    <tt>langtools</tt>, 
-    <tt>corba</tt>, 
-    <tt>jaxws</tt>, 
-    <tt>jaxp</tt>, 
-    <tt>jdk</tt>
-    and
-    The <tt>hotspot</tt> directory contains the source code and make
-    files for
-    building the 
-    OpenJDK
-    Hotspot Virtual Machine. 
-    The <tt>jdk</tt>
-    directory contains the source code and make files for
-    building the 
-    OpenJDK
-    runtime libraries, tools and demos. 
-    The top level Makefile is used to build the complete OpenJDK 
-    release including building the hotspot
-    VM, staging the VM binaries, and building the 
-    OpenJDK 
-    runtime libraries,
-    tools and demos.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="building">Build Information</a></h2>
-
-<blockquote>
-    <p>
-    Building the 
-    OpenJDK
-    is done with a <tt><i>gmake</i></tt>
-    command line and various
-    environment or make variable settings that direct the make rules
-    to where various components have been installed.
-    Where possible the makefiles will attempt to located the various
-    components in the default locations or any component specific 
-    variable settings.
-    When the normal defaults fail or components cannot be found,
-    the various
-    <tt>ALT_*</tt> variables (alternates)
-    can be used to help the makefiles locate components.
-    <p>
-    Refer to the bash/sh/ksh setup file
-    <tt>jdk/make/jdk_generic_profile.sh</tt>
-    if you need help in setting up your environment variables.
-    A build could be as simple as:
-    <blockquote>
-        <pre><tt>
-                bash
-                . jdk/make/jdk_generic_profile.sh
-                <i>gmake</i> sanity &amp;&amp; <i>gmake</i>
-        </tt></pre>
-    </blockquote>
-    <p>
-    Of course ksh or sh would work too.
-    But some customization will probably be necessary.
-    The <tt>sanity</tt> rule will make some basic checks on build
-    dependencies and generate appropriate warning messages
-    regarding missing, out of date, or newer than expected components
-    found on your system.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
-
-<blockquote>
-    <p>
-    The Makefiles in the 
-    OpenJDK 
-    are only valid when used with the 
-    GNU version of the utility command <tt>make</tt>
-    (<tt><i>gmake</i></tt>).
-    A few notes about using GNU make:
-    <ul>
-        <li>
-            In general, you need GNU make version 3.78.1 or newer.
-        </li>
-        <li>
-            Place the location of the GNU make binary in the <tt>PATH</tt>. 
-        </li>
-        <li>
-            <strong>Linux:</strong>
-            The <tt>/usr/bin/make</tt> command should work fine for you.
-        </li>
-        <li>
-            <strong>Solaris:</strong>
-            Do NOT use <tt>/usr/bin/make</tt> on Solaris.
-            If your Solaris system has the software
-            from the Solaris Companion CD installed, 
-            you should use <tt>gmake</tt>
-            which will be located in either the <tt>/opt/sfw/bin</tt> or 
-            <tt>/usr/sfw/bin</tt> directory.
-        </li>
-        <li>
-            <strong>Windows:</strong>
-            Make sure you start your build inside a bash/sh/ksh shell.
-            <br>
-            <b>WARNING:</b> Watch out for make version 3.81, it may
-            not work due to a lack of support for drive letter paths
-            like <tt>C:/</tt>. Use a 3.80 version, or find a newer
-            version that has this problem fixed.
-        </li>
-    </ul>
-    <p>
-    Information on GNU make, and access to ftp download sites, are
-    available on the
-    <a href="http://www.gnu.org/software/make/make.html">
-        GNU make web site
-    </a>.
-    The latest source to GNU make is available at
-    <a href="http://ftp.gnu.org/pub/gnu/make/">ftp.gnu.org/pub/gnu/make/</a>.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h3><a name="linux">Basic Linux System Setup</a></h3>
-
-<blockquote>
-    <p>
-    <strong>i586 only:</strong>
-    The minimum recommended hardware for building the Linux version
-    is a Pentium class processor or better, at least 256 MB of RAM, and
-    approximately 1.5 GB of free disk space.
-    <p> 
-    <strong>X64 only:</strong>
-    The minimum recommended hardware for building the Linux
-    version is an AMD Opteron class processor, at least 512 MB of RAM, and
-    approximately 4 GB of free disk space.
-    <p> 
-    The build will use the tools contained in 
-    <tt>/bin</tt> and 
-    <tt>/usr/bin</tt>
-    of a standard installation of the Linux operating environment. 
-    You should ensure that these directories are in your 
-    <tt>PATH</tt>.
-    <p>
-    Note that some Linux systems have a habit of pre-populating
-    your environment variables for you, for example <tt>JAVA_HOME</tt>
-    might get pre-defined for you to refer to the JDK installed on
-    your Linux system. 
-    You will need to unset <tt>JAVA_HOME</tt>.
-    It's a good idea to run <tt>env</tt> and verify the
-    environment variables you are getting from the default system
-    settings make sense for building the 
-    OpenJDK.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-
-<h4><a name="linux_checklist">Basic Linux Check List</a></h4>
-
-<blockquote>
-    <ol>
-        <li>
-            Install the
-            <a href="#bootjdk">Bootstrap JDK</a>, set
-            <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
-        </li>
-        <li>
-            Install the
-            <a href="#binaryplugs">Binary Plugs</a>, set
-            <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
-        </li>
-        <li>
-            Install or upgrade the <a href="#freetype">FreeType development
-            package</a>.
-        </li>
-    </ol>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h3><a name="solaris">Basic Solaris System Setup</a></h3>
-
-<blockquote>
-    <p>
-    The minimum recommended hardware for building the
-    Solaris SPARC version is an UltraSPARC with 512 MB of RAM. 
-    For building
-    the Solaris x86 version, a Pentium class processor or better and at
-    least 128 MB of RAM are recommended. 
-    Approximately 1.4 GB of free disk
-    space is needed for a 32-bit build.
-    <p>
-    If you are building the 64bit version, you should
-    run the command "isainfo -v" to verify that you have a
-    64-bit installation. 
-    An additional 7 GB of free disk space is needed
-    for a 64-bit build.
-    <p> 
-    The build uses the tools contained in <tt>/usr/ccs/bin</tt>
-    and <tt>/usr/bin</tt> of a standard developer or full installation of
-    the Solaris operating environment.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-
-<h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
-
-<blockquote>
-    <ol>
-        <li>
-            Install the
-            <a href="#bootjdk">Bootstrap JDK</a>, set
-            <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
-        </li>
-        <li>
-            Install the
-            <a href="#binaryplugs">Binary Plugs</a>, set
-            <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
-        </li>
-        <li>
-            Install the
-            <a href="#studio">Sun Studio Compilers</a>, set
-            <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
-        </li>
-        <li>
-            Install the
-            <a href="#cups">CUPS Include files</a>, set
-            <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
-        </li>
-    </ol>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h3><a name="windows">Basic Windows System Setup</a></h3>
-
-<blockquote> 
-    <p>
-    <strong>i586 only:</strong>
-    The minimum recommended hardware for building the 32bit or X86
-    Windows version is an Pentium class processor or better, at least
-    512 MB of RAM, and approximately 600 MB of free disk space.
-    <strong>
-        NOTE: The Windows 2000 build machines need to use the
-        file system NTFS. 
-        Build machines formatted to FAT32 will not work 
-        because FAT32 doesn't support case-sensitivity in file names.
-    </strong>
-    <p> 
-    <strong>X64 only:</strong>
-    The minimum recommended hardware for building
-    the Windows X64 version is an AMD Opteron class processor, at least 1
-    GB of RAM, and approximately 10 GB of free disk space.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-
-<h4><a name="paths">Windows Paths</a></h4>
-
-<blockquote>
-    <p>
-    <strong>Windows:</strong>
-    Note that GNU make is a historic utility and is based very
-    heavily on shell scripting, so it does not tolerate the Windows habit
-    of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
-    Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
-    there is always a 'short' pathname without spaces for any path that 
-    contains spaces.
-    Unfortunately, this short pathname can be somewhat dynamic and the
-    formula is difficult to explain.
-    You can use <tt>cygpath</tt> utility to map pathnames with spaces
-    or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
-    (called 'mixed'), e.g.
-    <tt>cygpath -s -m "<i>path</i>"</tt>.
-    <p>
-    The makefiles will try to translate any pathnames supplied
-    to it into the <tt>C:/</tt> style automatically.
-    <p>
-    Note that use of CYGWIN creates a unique problem with regards to
-    setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
-    the <tt>PATH</tt> variable contains directories
-    separated with the ";" character (Solaris and Linux uses ":").
-    With CYGWIN, it uses ":", but that means that paths like "C:/path"
-    cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
-    instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
-    which CYGWIN understands, but only CYGWIN understands.
-    So be careful with paths on Windows.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-
-<h4><a name="windows_checklist">Basic Windows Check List</a></h4>
-
-<blockquote>
-    <ol>
-        <li>
-            Install the
-            <a href="#cygwin">CYGWIN product</a>. 
-        </li>
-        <li>
-            Install the 
-            <a href="#bootjdk">Bootstrap JDK</a>, set
-            <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
-        </li>
-        <li>
-            Install the
-            <a href="#binaryplugs">Binary Plugs</a>, set
-            <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
-        </li>
-        <li>
-            Install the
-            <a href="#msvc">Microsoft Visual Studio .NET 2003 Professional</a> or the 
-            <a href="#mssdk">Microsoft Platform SDK</a>.
-        </li>
-        <li>
-            Setup all environment variables for compilers 
-            (see <a href="#msvc">compilers</a>).
-        </li>
-        <li>
-            Install 
-            <a href="#dxsdk">Microsoft DirectX SDK</a>.
-        </li>
-    </ol>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h3><a name="dependencies">Build Dependencies</a></h3>
-
-<blockquote>
-    <p>
-    Depending on the platform, the 
-    OpenJDK 
-    build process has some basic
-    dependencies on components not part of the 
-    OpenJDK 
-    sources.
-    Some of these are specific to a platform, some even specific to
-    an architecture.
-    Each dependency will have a set of ALT variables that can be set
-    to tell the makefiles where to locate the component.
-    In most cases setting these ALT variables may not be necessary
-    and the makefiles will find defaults on the system in standard
-    install locations or through component specific variables.
-    
-    <h4><a name="bootjdk">Bootstrap JDK</a></h4>
-    
-    <blockquote>
-        <p>
-        All 
-        OpenJDK 
-        builds require access to the previously released 
-        JDK 6, this is often called a bootstrap JDK.
-        The JDK 6 binaries can be downloaded from Sun's 
-        <a href="http://java.sun.com/javase/1.6.0/download.html">JDK 6 download site</a>.
-        For build performance reasons
-        is very important that this bootstrap JDK be made available on the
-        local disk of the machine doing the build.
-        You should always set 
-        <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
-        to point to the location of
-        the bootstrap JDK installation, this is the directory pathname
-        that contains a <tt>bin, lib, and include</tt>
-        It's also a good idea to also place its <tt>bin</tt> directory
-        in the <tt>PATH</tt> environment variable, although it's
-        not required.
-        <p>
-        <strong>Solaris:</strong>
-        Some pre-installed JDK images may be available to you in the
-        directory <tt>/usr/jdk/instances</tt>.
-        If you don't set
-        <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
-        the makefiles will look in that location for a JDK it can use.
-    </blockquote>
-    
-    <h4><a name="binaryplugs">Binary Plugs</a></h4>
-    
-    <blockquote>
-        <p>
-        Not all of the source code that makes up the JDK is available
-        under an open-source license.
-        In order to build an OpenJDK binary from source code,
-        you must first download and install the appropriate
-        binary plug bundles from the OpenJDK Download area.
-        During the OpenJDK build process these "binary plugs"
-        for the encumbered components will be copied into your
-        resulting OpenJDK binary build image.
-        These binary plug files are only for the purpose of
-        building an OpenJDK binary.
-        Download the Binary Plugs by selecting the <b>Downloads</b>
-        link at
-        <a href="http://openjdk.java.net/">the OpenJDK site</a>,
-        install the bundle,
-        and make sure you set
-        <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
-        to the root of this installation.
-    </blockquote>
-    
-    <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
-    
-    <blockquote>
-        <p>
-        See <a href="http://en.wikipedia.org/wiki/CAcert">
-        www.wikipedia.org/wiki/CAcert</a>
-        for a better understanding of the Certificate Authority (CA).
-        A certificates file named "cacerts"
-        represents a system-wide keystore with CA certificates. 
-        In JDK and JRE
-        binary bundles, the "cacerts" file contains root CA certificates from
-        several public CAs (e.g., VeriSign, Thawte, and Baltimore).
-        The source contain a cacerts file
-        without CA root certificates. 
-        Formal JDK builders will need to secure
-        permission from each public CA and include the certificates into their
-        own custom cacerts file. 
-        Failure to provide a populated cacerts file
-        will result in verification errors of a certificate chain during runtime.
-        The variable 
-        <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
-        can be used to override the default location of the
-        cacerts file that will get placed in your build.
-        By default an empty cacerts file is provided and that should be
-        fine for most JDK developers.
-    </blockquote>
-    
-    <h4><a name="compilers">Compilers</a></h4>
-    
-    <blockquote>
-        
-        <a name="gcc">
-            <strong>Linux gcc/binutils</strong>
-        </a>
-        
-        <blockquote>
-            <p>
-            The GNU gcc compiler version should be 3.2.2 or newer.
-            The binutils package should be 2.11.93.0.2-11 or newer.
-            The compiler used should be the default compiler installed
-            in <tt>/usr/bin</tt>.
-        </blockquote>
-        
-        <strong><a name="studio">Solaris: Sun Studio</a></strong>
-        
-        <blockquote>
-            <p>
-            At a minimum, the
-            <a href="http://developers.sun.com/sunstudio/index.jsp">
-            Sun Studio 11 Compilers</a>
-            (containing version 5.8 of the C and C++ compilers) is required,
-            with patches from the
-            <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access">
-            SunSolve web site</a>.
-            <p> 
-            Set 
-            <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
-            to point to the location of
-            the compiler binaries, and place this location in the <tt>PATH</tt>.
-            <p>
-            The Sun Studio Express compilers at:
-            <a href="http://developers.sun.com/sunstudio/downloads/express.jsp">
-            Sun Studio Express Download site</a>
-            are also an option, although these compilers have not
-            been extensively used yet.
-        </blockquote>
-        
-        <a name="msvc">
-            <strong>Windows i586: Microsoft Visual Studio .NET 2003 Professional</strong>
-        </a>
-        
-        <blockquote>
-            <p>
-            The 32-bit 
-            OpenJDK
-            Windows build
-            requires Microsoft Visual Studio .NET 2003 (VS2003) Professional
-            Edition compiler. 
-            The compiler and other tools are expected to reside
-            in the location defined by the variable <tt>VS71COMNTOOLS</tt> which
-            is set by the Microsoft Visual Studio .NET installer.
-            <p> 
-            Once the compiler is installed, 
-            it is recommended that you run <tt>VCVARS32.BAT</tt> 
-            to set the compiler environment variables
-            <tt>MSVCDIR</tt>, 
-            <tt>INCLUDE</tt>,
-            <tt>LIB</tt>, and
-            <tt>PATH</tt> 
-            prior to building the 
-            OpenJDK.
-            The above environment variables <b>MUST</b> be set.
-            <p>
-            The Microsoft Visual Studio .NET 2005 (VS2005) compiler
-            will not work at this time due to the new runtime dll
-            and the manifest requirements.
-        </blockquote>
-        
-        <a name="mssdk">
-            <strong>Windows X64: Microsoft Platform SDK April 2005</strong>
-        </a>
-        
-        <blockquote>
-            <p>
-            On <b>X64</b>,
-            the Microsoft Platform Software
-            Development Kit (SDK), April 2005 Edition compiler, is required for
-            building the 
-            OpenJDK
-            because it contains the C/C++ compiler. 
-            You will need to minimally install the Core SDK and
-            the MDAC SDK features of this compiler.
-            <p>
-            Once the Platform SDK is installed,
-            it is recommended that you run <tt>SetEnv.Cmd /X64</tt> 
-            to set the compiler environment variables
-            <tt>MSSDK</tt>, 
-            <tt>MSTOOLS</tt>,
-            <tt>INCLUDE</tt>,
-            <tt>LIB</tt>, and
-            <tt>PATH</tt> 
-            prior to building the 
-            OpenJDK.
-            The above environment variables <b>MUST</b> be set.
-            <p>
-            Note that this compiler may say it's version is a
-            Microsoft Visual Studio .NET 2005 (VS2005), but be careful,
-            it will not match the official VS2005 product.
-            This Platform SDK compiler is only used on X64 builds.
-        </blockquote>
-        
-    </blockquote>
-    
-    <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris &amp; Linux)</a></h4>
-    
-    <blockquote>
-        <p>
-        <strong>Solaris:</strong>
-        CUPS header files are required for building the 
-        OpenJDK on Solaris.
-        The Solaris header files can be obtained by installing 
-        the package <strong>SFWcups</strong> from the Solaris Software
-        Companion CD/DVD, these often will be installed into 
-        <tt>/opt/sfw/cups</tt>.
-        <p>
-        <strong>Linux:</strong>
-        CUPS header files are required for building the 
-        OpenJDK on Linux.
-        The Linux header files are usually available from a "cups"
-        development package, it's recommended that you try and use
-        the package provided by the particular version of Linux that
-        you are using.
-        <p>
-        The CUPS header files can always be downloaded from 
-        <a href="http://www.cups.org">www.cups.org</a>.
-        The variable 
-        <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
-        can be used to override the default location of the
-        CUPS Header files.
-    </blockquote>
-    
-    <h4><a name="freetype">FreeType 2</a></h4>
-
-    <blockquote>
-        <p>
-        Version 2.3 or newer of FreeType is required for building the OpenJDK.
-        On Unix systems required files can be available as part of your
-        distribution (while you still may need to upgrade them).
-        Note that you need development version of package that 
-        includes both FreeType library and header files.
-        </p>
-        <p>
-        You can always download latest FreeType version from the
-        <a href="http://www.freetype.org">FreeType website</a>.
-        </p>
-        <p>
-        Makefiles will try to pick FreeType from /usr/lib and /usr/include.
-        In case it is installed elsewhere you will need to set environment
-        variables 
-        <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
-        and 
-        <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
-        to refer to place where library and header files are installed.
-        </p>
-    </blockquote>    
-
-    <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
-    
-    <blockquote>
-        <p>
-        <strong>Linux only:</strong>
-        Version 0.9.1 or newer of the ALSA files are
-        required for building the 
-        OpenJDK on Linux.
-        These Linux files are usually available from an "alsa"
-        of "libasound"
-        development package, it's recommended that you try and use
-        the package provided by the particular version of Linux that
-        you are using.
-        The makefiles will check this emit a sanity error if it is
-        missing or the wrong version.
-        As a last resort you can go to the
-        <a href="http://www.alsa-project.org" target="_blank">
-        Advanced Linux Sound Architecture Site</a>.
-    </blockquote>
-    
-    <h4>Windows Specific Dependencies</h4>
-    
-    <blockquote>
-        
-        <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
-        
-        <blockquote> 
-            <p>
-            The 
-            OpenJDK
-            requires access to a set of unix command tools
-            on Windows which can be supplied by 
-            <a href="http://www.cygwin.com">CYGWIN</a>. 
-            <p>
-            The 
-            OpenJDK 
-            build
-            requires CYGWIN version 1.5.12 or newer. 
-            Information about CYGWIN can
-            be obtained from the CYGWIN website at 
-            <a href="http://www.cygwin.com">www.cygwin.com</a>. 
-            <p>
-            By default CYGWIN doesn't install all the tools required for building
-            the OpenJDK.
-            Along with the default installation, you need to install
-            the following tools.
-            <blockquote>
-                <table border="1">
-                    <thead>
-                        <tr>
-                            <td>Binary Name</td>
-                            <td>Package</td>
-                            <td>Description</td>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        <tr>
-                            <td>ar.exe</td>
-                            <td>Devel</td>
-                            <td>binutils: The GNU assembler, linker and binary
-                            utilities</td>
-                        </tr>
-                        <tr>
-                            <td>make.exe</td>
-                            <td>Devel</td>
-                            <td>make: The GNU version of the 'make' utility</td>
-                        </tr>
-                        <tr>
-                            <td>m4.exe</td>
-                            <td>Interpreters</td>
-                            <td>m4: GNU implementation of the traditional Unix macro
-                            processor</td>
-                        </tr>
-                        <tr>
-                            <td>cpio.exe</td>
-                            <td>Utils</td>
-                            <td>cpio: A program to manage archives of files</td>
-                        </tr>
-                        <tr>
-                            <td>file.exe</td>
-                            <td>Utils</td>
-                            <td>file: Determines file type using 'magic' numbers</td>
-                        </tr>
-                    </tbody>
-                </table>
-            </blockquote>
-        </blockquote>
-        
-        <a name="dxsdk">
-            <strong>Microsoft DirectX 9.0 SDK header files and libraries</strong>
-        </a>
-        
-        <blockquote>
-            <p>
-            Microsoft DirectX 9.0 SDK (Summer 2004)
-            headers are required for building
-            OpenJDK.
-            This SDK can be downloaded from 
-            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en">
-            Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
-            If the link above becomes obsolete, the SDK can be found from 
-            <a href="http://download.microsoft.com">the Microsoft Download Site</a>
-            (search with "DirectX 9.0 SDK Update Summer 2004"). 
-            The location of this SDK can be set with 
-            <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
-            but it's normally found via the DirectX environment variable
-            <tt>DXSDK_DIR</tt>.
-        </blockquote>
-        
-        <a name="msvcrt">
-            <strong><tt>MSVCRT.DLL</tt></strong>
-        </a>
-        
-        <blockquote> 
-            <p>
-            <strong>i586 only:</strong>
-            The 
-            OpenJDK
-            32bit build requires
-            access to <tt>MSVCRT.DLL</tt> 
-            version 6.00.8337.0 or newer.
-            If the <tt>MSVCRT.DLL</tt> is not installed in 
-            the system32 directory set the 
-            <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
-            variable to the location.
-            <p> 
-            <strong>X64 only:</strong>
-            The OpenJDK 64bit build requires access to
-            <tt>MSVCRT.DLL</tt> version 7.0.3790.0 or newer, which is
-            usually supplied by the
-            <a href="#mssdk">Platform SDK</a>.
-            If it is not available from the Platform SDK,
-            set the 
-            <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
-            variable to the location.
-        </blockquote>
-        
-        <a name="msvcr71">
-            <strong><tt>MSVCR71.DLL</tt></strong>
-        </a>
-        
-        <blockquote>
-            <p>
-            <strong>i586 only:</strong>
-            The 
-            OpenJDK
-            build requires access to 
-            MSVCR71.DLL version 7.10.3052.4 or newer which should be
-            supplied by the
-            <a href="#msvc">Visual Studio product</a>
-            If the <tt>MSVCR71.DLL</tt> is not available from the
-            Visual Studio product
-            set the 
-            <a href="#ALT_MSVCR71_DLL_PATH"><tt>ALT_MSVCR71_DLL_PATH</tt></a>
-            variable to the location.
-        </blockquote>
-        
-    </blockquote>
-    
-    
-</blockquote>
-
-
-<hr noshade="noshade" size="3">
-
-<h2><a name="creating">Creating the Build</a></h2>
-
-<blockquote>
-    <p>
-    Once a machine is setup to build the 
-    OpenJDK,
-    the steps to create the
-    build are fairly simple.
-    The various ALT settings can either be made into  variables
-    or can be supplied on the 
-    <a href="#gmake"><tt><i>gmake</i></tt></a> 
-    command.
-    <p>
-    <ol>
-        <li>Use the sanity rule to double check all the ALT settings:
-            <blockquote>
-                <tt>
-                    <i>gmake</i> 
-                    sanity
-                    [ARCH_DATA_MODEL=<i>32 or 64</i>]
-                    [other "ALT_" overrides]
-                </tt>
-            </blockquote>
-        </li>
-        <li>Start the build with the command:
-            <blockquote>
-                <tt>
-                    <i>gmake</i> 
-                    [ARCH_DATA_MODEL=<i>32 or 64</i>]
-                    [ALT_OUTPUTDIR=<i>output_directory</i>] 
-                    [other "ALT_" overrides] 
-                </tt>
-            </blockquote>
-        </li>
-    </ol>
-    <p>
-    <strong>Solaris:</strong>
-    Note that ARCH_DATA_MODEL is really only needed on Solaris to
-    indicate you want to built the 64-bit version.
-    And before the Solaris 64-bit binaries can be used, they
-    must be merged with the binaries from a separate 32-bit build. 
-    The merged binaries may then be used in either 32-bit or 64-bit mode, with
-    the selection occurring at runtime 
-    with the <tt>-d32</tt> or <tt>-d64</tt> options. 
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="testing">Testing the Build</a></h2>
-
-<blockquote>
-    <p>
-    When the build is completed, you should see the generated
-    binaries and associated files in the <tt>j2sdk-image</tt> 
-    directory in the output directory. 
-    The default output directory is
-    <tt>build/<i>platform</i></tt>,
-    where <tt><i>platform</i></tt> is one of
-    <tt><ul>
-            <li>solaris-sparc</li>
-            <li>solaris-sparcv9</li>
-            <li>solaris-i586</li>
-            <li>solaris-amd64</li>
-            <li>linux-i586</li>
-            <li>linux-amd64</li>
-            <li>windows-i586</li>
-            <li>windows-amd64</li>
-    </ul></tt>
-    In particular, the 
-    <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
-    directory should contain executables for the 
-    OpenJDK
-    tools and utilities.
-    <p>
-    You can test that the build completed properly by using the build
-    to run the various demos that you will find in the 
-    <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
-    directory.
-    <p>
-    The provided regression tests can be run with the <tt>jtreg</tt>
-    utility from 
-    <a href="http://openjdk.java.net/jtreg/">the jtreg site</a>.
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="variables">Environment/Make Variables</a></h2>
-
-<p>
-Some of the
-environment or make variables (just called <b>variables</b> in this
-document) that can impact the build are:
-
-<blockquote>
-    
-    <dl>
-        
-        <dt><a name="path"><tt>PATH</tt></a> </dt>
-        <dd>Typically you want to set the <tt>PATH</tt> to include:
-            <ul>
-                <li>The location of the GNU make binary</li>
-                <li>The location of the JDK 6 <tt>java</tt> 
-                (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
-                <li>The location of the C/C++ compilers 
-                (see <a href="#compilers"><tt>compilers</tt></a>)</li>
-                <li>The location or locations for the Unix command utilities
-                (e.g. <tt>/usr/bin</tt>)</li>
-            </ul>
-        </dd>
-        
-        <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
-        <dd>The <tt>ARCH_DATA_MODEL</tt> variable
-            is used to specify whether the build is to generate 32-bit or 64-bit
-            binaries. 
-            The Solaris build supports either 32-bit or 64-bit builds, but
-            Windows and Linux will support only one, depending on the specific
-            OS being used.
-            Normally, setting this variable is only necessary on Solaris.
-            Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries, 
-            or to <tt>64</tt> for generating 64-bit binaries.
-        </dd>
-        
-        <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
-        <dd>
-            The location of the bootstrap JDK installation. 
-            See <a href="#bootjdk">Bootstrap JDK</a> for more information.
-            You should always install your own local Bootstrap JDK and
-            always set <tt>ALT_BOOTDIR</tt> explicitly.
-        </dd>
-        
-        <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
-        <dd>
-            An override for specifying the (absolute) path of where the
-            build output is to go.
-            The default output directory will be build/<i>platform</i>.
-        </dd>
-        
-        <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
-        <dd>
-            The location of the C/C++ compiler.
-            The default varies depending on the platform. 
-        </dd>
-        
-        <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
-        <dd>
-            The location of the <a href="#cacerts">cacerts</a> file.
-            The default will refer to 
-            <tt>jdk/src/share/lib/security/cacerts</tt>.
-        </dd>
-        
-        <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
-        <dd>
-            The location of the binary plugs installation.
-            See <a href="#binaryplugs">Binary Plugs</a> for more information.
-            You should always have a local copy of a
-            recent Binary Plugs install image
-            and set this variable to that location.
-        </dd>
-        
-        <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
-        <dd>
-            The location of the CUPS header files.
-            See <a href="#cups">CUPS information</a> for more information.
-            If this path does not exist the fallback path is 
-            <tt>/usr/include</tt>.
-        </dd>
-        
-        
-        <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
-        <dd>
-            The location of the FreeType shared library. 
-            See <a href="#freetype">FreeType information</a> for details. 
-        </dd>
-        
-        <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
-        <dd>
-            The location of the FreeType header files.
-            See <a href="#freetype">FreeType information</a> for details. 
-        </dd>
-        
-        <dt><strong>Windows specific:</strong></dt>
-        <dd>
-            <dl>
-                <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
-                <dd>
-                    The location of the Microsoft Visual Studio .NET 2003
-                    tools 'bin' directory.
-                    The default is usually derived from
-                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
-                </dd>
-                
-                <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
-                <dd>
-                    The location of the 
-                    <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
-                    The default will be to try and use the DirectX environment
-                    variable <tt>DXSDK_DIR</tt>,
-                    failing that, look in <tt>C:/DXSDK</tt>.
-                </dd>
-                
-                <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
-                <dd>
-                    The location of the 
-                    <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>. 
-                </dd>
-                
-                <dt><tt><a name="ALT_MSVCR71_DLL_PATH">ALT_MSVCR71_DLL_PATH</a></tt> </dt>
-                <dd>
-                    <strong>i586 only:</strong>
-                    The location of the 
-                    <a href="#msvcr71"><tt>MSVCR71.DLL</tt></a>. 
-                </dd>
-            </dl>
-        </dd>
-        
-    </dl>
-</blockquote>
-
-<!-- ------------------------------------------------------ -->
-<hr noshade="noshade" size="3">
-
-<h2><a name="troubleshooting">Troubleshooting</a></h2>
-
-<blockquote>
-    <p>
-    A build can fail for any number of reasons. 
-    Most failures
-    are a result of trying to build in an environment in which all the
-    pre-build requirements have not been met. 
-    The first step in
-    troubleshooting a build failure is to recheck that you have satisfied
-    all the pre-build requirements for your platform.
-    Look for the check list of the platform you are building on in the
-    <a href="#contents">Table of Contents</a>.
-    
-    <p>
-    You can validate your build environment by using the <tt>sanity</tt>
-    target.
-    Any errors listed
-    will stop the build from starting, and any warnings may result in
-    a flawed product build.
-    We strongly encourage you to evaluate every
-    sanity check warning and fix it if required, before you proceed
-    further with your build.
-    
-    <p>
-    Some of the more common problems with builds are briefly described
-    below, with suggestions for remedies.
-    
-    <ul>
-        <li>
-            <b>Slow Builds:</b>
-            <blockquote>
-                <p>
-                If your build machine seems to be overloaded from too many
-                simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
-                variable to <tt>1</tt> (if you're using a multiple CPU
-                machine, setting it to more than the the number of CPUs is probably
-                not a good idea).
-                <p>
-                Creating the javadocs can be very slow, if you are running
-                javadoc, consider skipping that step.
-                <p>
-                Faster hardware and more RAM always helps too.
-                The VM build tends to be CPU intensive (many C++ compiles),
-                and the rest of the JDK will often be disk intensive.
-                <p>
-                Faster compiles are possible using a tool called
-                <a href="http://ccache.samba.org/">ccache</a>.
-            </blockquote>
-        </li>
-        <li>
-            <b>File time issues:</b>
-            <blockquote>
-                <p>
-                If you see warnings that refer to file time stamps, e.g.
-                <blockquote>
-                    <i>Warning message:</i><tt> File `xxx' has modification time in
-                    the future.</tt>
-                    <br>
-                    <i>Warning message:</i> <tt> Clock skew detected. Your build may
-                    be incomplete.</tt> 
-                </blockquote>
-                <p>
-                These warnings can occur when the clock on the build machine is out of
-                sync with the timestamps on the source files. Other errors, apparently
-                unrelated but in fact caused by the clock skew, can occur along with
-                the clock skew warnings. These secondary errors may tend to obscure the
-                fact that the true root cause of the problem is an out-of-sync clock.
-                For example, an out-of-sync clock has been known to cause an old
-                version of javac to be used to compile some files, resulting in errors
-                when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
-                in the 1.4 source code.
-                <p>
-                If you see these warnings, reset the clock on the build
-                machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
-                containing the build output, and restart the build from the beginning.
-            </blockquote>
-        </li>
-        <li>
-            <b>Error message: <tt>Trouble writing out table to disk</tt></b>
-            <blockquote>
-                <p>
-                Increase the amount of swap space on your build machine.
-            </blockquote>
-        </li>
-        <li>
-            <b>Error Message: <tt>libstdc++ not found:</tt></b>
-            <blockquote>
-                This is caused by a missing libstdc++.a library.
-                This is installed as part of a specific package
-                (e.g. libstdc++.so.devel.386).
-                By default some 64bit Linux versions (e.g. Fedora)
-                only install the 64bit version of the libstdc++ package.
-                Various parts of the JDK build require a static
-                link of the C++ runtime libraries to allow for maximum
-                portability of the built images.
-            </blockquote>
-        </li>
-        <li>
-            <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
-            <blockquote>
-                This is probably an issue with SELinux (See
-                <a href="http://en.wikipedia.org/wiki/SELinux">http://en.wikipedia.org/wiki/SELinux</a>).
-                Parts of the VM is built without the <tt>-fPIC</tt> for
-                performance reasons.
-                <p>
-                To completely disable SELinux:
-                <ol><tt>
-                    
-                    <li>$ su root</li>
-                    <li># system-config-securitylevel</li>
-                    <li>In the window that appears, select the SELinux tab</li>
-                    <li>Disable SELinux</li>
-                </ol></tt>
-                <p>
-                Alternatively, instead of completely disabling it you could
-                disable just this one check.
-                <ol><tt>
-                    <li>Select System->Administration->SELinux Management</li>
-                    <li>In the SELinux Management Tool which appears, 
-                    select "Boolean" from the menu on the left</li>
-                    <li>Expand the "Memory Protection" group</li>
-                    <li>Check the first item, labeled
-                    "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
-                </ol></tt>
-            </blockquote>
-        </li>
-    </ul>
-</blockquote>
-
-<hr noshade="noshade" size="3">
--- a/jdk/make/README.html	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-    
-    <head> <title>OpenJDK README</title> </head>
-    
-    <!-- ====================================================== -->
-    <hr noshade="noshade" size="3">
-    <center>
-        <h1>OpenJDK README</h1>
-    </center>
-    
-    <!-- ------------------------------------------------------ --> 
-    <hr noshade="noshade" size="3">
-    
-    <h2>TBD</h2>
-    
-    <h2>Building the OpenJDK</h2>
-    
-    <p>
-    Refer to <a href="README-builds.html">the OpenJDK Build README</a>
-    for build instructions.
-    
-    <!-- ====================================================== -->
-    
-    <hr noshade="noshade" size="3">
-    
-    </body>
-</html>
--- a/jdk/make/THIRD_PARTY_README	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1616 +0,0 @@
-DO NOT TRANSLATE OR LOCALIZE.
-
-%% This notice is provided with respect to Thai dictionary for text breaking, which may be included with this software: 
-
---- begin of LICENSE file ---
-
-Copyright (C) 1982 The Royal Institute, Thai Royal Government.
-
-Copyright (C) 1998 National Electronics and Computer Technology Center,
- National Science and Technology Development Agency,
- Ministry of Science Technology and Environment,
- Thai Royal Government.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---- end of LICENSE file ---
-%% This notice is provided with respect to ASM, which may be included with this software: 
-Copyright (c) 2000-2005 INRIA, France Telecom
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holders nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-%% This notice is provided with respect to zlib 1.1.3, which may be included with this software:   
-
-Acknowledgments:
-
-  The deflate format used by zlib was defined by Phil Katz. The deflate
-  and zlib specifications were written by L. Peter Deutsch. Thanks to all the
-  people who reported problems and suggested various improvements in zlib;
-  they are too numerous to cite here.
-
-Copyright notice:
-
- (C) 1995-1998 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-If you use the zlib library in a product, we would appreciate *not*
-receiving lengthy legal documents to sign. The sources are provided
-for free but without warranty of any kind.  The library has been
-entirely written by Jean-loup Gailly and Mark Adler; it does not
-include third-party code.
-
-If you redistribute modified sources, we would appreciate that you include
-in the file ChangeLog history information documenting your changes.
-
-%% This notice is provided with respect to W3C (DTD for XML Signatures), which may be included with this software: 
-W3C® SOFTWARE NOTICE AND LICENSE
-Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
-This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
-Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
-1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. 
-2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" 
-3.Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) 
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
-____________________________________
-This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.

-%% This notice is provided with respect to jscheme.jar, which may be included with this software: 
-Software License Agreement
-Copyright © 1998-2002 by Peter Norvig. 
-Permission is granted to anyone to use this software, in source or object code form, on any computer system, and to modify, compile, decompile, run, and redistribute it to anyone else, subject to the following restrictions: 
-1.The author makes no warranty of any kind, either expressed or implied, about the suitability of this software for any purpose.
-2.The author accepts no liability of any kind for damages or other consequences of the use of this software, even if they arise from defects in the software.
-3.The origin of this software must not be misrepresented, either by explicit claim or by omission.
-4.Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Altered versions may be distributed in packages under other licenses (such as the GNU license). 
-If you find this software useful, it would be nice if you let me (peter@norvig.com) know about it, and nicer still if you send me modifications that you are willing to share. However, you are not required to do so.
-
-
-%% This notice is provided with respect to PC/SC Lite for Suse Linux v. 1.1.1, which may be included with this software: 
-
-Copyright (c) 1999-2004 David Corcoran 
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-Changes to this license can be made only by the copyright author with 
-explicit written consent.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-%% This notice is provided with respect to IAIK PKCS Wrapper, which may be included with this software: 
-
-Copyright (c) 2002 Graz University of Technology. All rights reserved.
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-
-
-1. Redistributions of source code must retain the above copyright notice, this   list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,   this list of conditions and the following disclaimer in the documentation   and/or other materials provided with the distribution.
-
-3. The end-user documentation included with the redistribution, if any, must   include the following acknowledgment:
-
-   "This product includes software developed by IAIK of Graz University of    Technology."
-
-   Alternately, this acknowledgment may appear in the software itself, if and   wherever such third-party acknowledgments normally appear.
-
-4. The names "Graz University of Technology" and "IAIK of Graz University of   Technology" must not be used to endorse or promote products derived from this   software without prior written permission.
-
-5. Products derived from this software may not be called "IAIK PKCS Wrapper",   nor may "IAIK" appear in their name, without prior written permission of   Graz University of Technology.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-%% This notice is provided with respect to Document Object Model (DOM) v. Level 3, which may be included with this software: 
-
-W3Cýý SOFTWARE NOTICE AND LICENSE
-
-http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
-
-This work (and included software, documentation such as READMEs, or other related items) is being
-provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you
-(the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
-
-Permission to copy, modify, and distribute this software and its documentation, with or without modification, for
-any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies
-of the software and documentation or portions thereof, including modifications:
-   1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. 
-   2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the
-     W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body
-     of any redistributed or derivative code. 
-   3.Notice of any changes or modifications to the files, including the date changes were made. (We
-     recommend you provide URIs to the location from which the code is derived.) 
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,
-WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the
-software without specific, written prior permission. Title to copyright in this software and any associated
-documentation will at all times remain with copyright holders.
-
-____________________________________
-
-This formulation of W3C's notice and license became active on December 31 2002. This version removes the
-copyright ownership notice such that this license can be used with materials other than those owned by the
-W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the
-license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous
-version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and
-OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions
-about using materials from our site, including specific terms and conditions for packages like libwww, Amaya,
-and Jigsaw. Other questions about this notice can be directed to 
-site-policy@w3.org.
-
-%% This notice is provided with respect to Xalan, Xerces, which may be included with this software: 
-
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights  * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.  *
- * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. *
- * 4. The names "Xerces" and "Apache Software Foundation" must
- *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- *    nor may "Apache" appear in their name, without prior written
- *    permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ==================================================================== *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, International
- * Business Machines, Inc., http://www.ibm.com.  For more
- * information on the Apache Software Foundation, please see
- * 
-
-%% This notice is provided with respect to JavaScript, which may be included with this software: 
-
-AMENDMENTS 
-The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public License Version 1.1 with the following Amendments, including Exhibit A-Netscape Public License.  Files identified with "Exhibit A-Netscape Public License" are governed by the Netscape Public License Version 1.1. 
-Additional Terms applicable to the Netscape Public License. 
-I. Effect. 
-These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License. 
-II. ''Netscape's Branded Code'' means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License. 
-III. Netscape and logo. 
-This License does not grant any rights to use the trademarks "Netscape'', the "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are included in the Original Code or Modifications. 
-IV. Inability to Comply Due to Contractual Obligation. 
-Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in Source Code form, even if such code would otherwise be considered ''Modifications'' under this License. 
-V. Use of Modifications and Covered Code by Initial Developer. 
-V.1. In General. 
-The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3. 
-V.2. Other Products. 
-Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License. 
-V.3. Alternative Licensing. 
-Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such Netscape Branded Code becoming subject to the terms of this License, and may license such Netscape Branded Code on different terms from those contained in this License. 

-VI. Litigation. 
-Notwithstanding the limitations of Section 11 above, the provisions regarding litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License.
-
-EXHIBIT A-Netscape Public License. 

-''The contents of this file are subject to the Netscape Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ 
-Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. 
-The Original Code is Mozilla Communicator client code, released March 31, 1998. 
-The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications Corporation. All Rights Reserved. 
-Contributor(s): ______________________________________.

-Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the NPL or the [___] License."
-
-MOZILLA PUBLIC LICENSE 
-Version 1.1 
-
-1. Definitions. 
-1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 
-1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications. 
-1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 
-1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 
-1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data. 
-1.5. ''Executable'' means Covered Code in any form other than Source Code. 
-1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 
-1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 
-1.8. ''License'' means this document. 
-1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 
-1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: 
-A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. 
-B. Any new file that contains any part of the Original Code or previous Modifications. 

-1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 
-1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation,  method, process, and apparatus claims, in any patent Licensable by grantor. 
-1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 
-1.12. "You'' (or "Your")  means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-2. Source Code License. 
-2.1. The Initial Developer Grant. 
-The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: 
-(a)  under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and 
-(b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). 

-(c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. 
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code;  or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 

-2.2. Contributor Grant. 
-Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license 

-(a)  under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and 
-(b) under Patent Claims infringed by the making, using, or selling of  Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of  Modifications made by that Contributor with its Contributor Version (or portions of such combination). 
-(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. 
-(d)    Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2)  separate from the Contributor Version;  3)  for infringements caused by: i) third party modifications of Contributor Version or ii)  the combination of Modifications made by that Contributor with other software  (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
-
-3. Distribution Obligations. 
-3.1. Application of License. 
-The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 
-3.2. Availability of Source Code. 
-Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 
-3.3. Description of Modifications. 
-You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 
-3.4. Intellectual Property Matters 
-(a) Third Party Claims. 
-If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. 
-(b) Contributor APIs. 
-If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. 

-          (c)    Representations. 
-Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
-
-3.5. Required Notices. 
-You must duplicate the notice in Exhibit A in each file of the Source Code.  If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A.  You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code.  You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 
-3.6. Distribution of Executable Versions. 
-You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 
-3.7. Larger Works. 
-You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
-4. Inability to Comply Due to Statute or Regulation. 
-If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
-5. Application of this License. 
-This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
-6. Versions of the License. 
-6.1. New Versions. 
-Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 
-6.2. Effect of New Versions. 
-Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 
-6.3. Derivative Works. 
-If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
-7. DISCLAIMER OF WARRANTY. 
-COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-8. TERMINATION. 
-8.1.  This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 
-8.2.  If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant")  alleging that: 
-(a)  such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i)  agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant.  If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. 
-(b)  any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 
-8.3.  If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 
-8.4.  In the event of termination under Sections 8.1 or 8.2 above,  all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
-9. LIMITATION OF LIABILITY. 
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-10. U.S. GOVERNMENT END USERS. 
-The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
-11. MISCELLANEOUS. 
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
-12. RESPONSIBILITY FOR CLAIMS. 
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-13. MULTIPLE-LICENSED CODE. 
-Initial Developer may designate portions of the Covered Code as "Multiple-Licensed".  "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License. 
-``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at 
-http://www.mozilla.org/MPL/ 
-Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
-ANY KIND, either express or implied. See the License for the specific language governing rights and 
-limitations under the License. 
-The Original Code is ______________________________________. 
-The Initial Developer of the Original Code is ________________________. Portions created by 
- ______________________ are Copyright (C) ______ _______________________. All Rights 
-Reserved. 
-Contributor(s): ______________________________________. 
-Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." 
-[NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] 
-
-%% This notice is provided with respect to Mesa 3-D graphics library v. 5, which may be included with this software: 
-
-Copyright (c) 2007 The Khronos Group Inc. 
-
-Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and/or associated documentation files (the 
-"Materials"), to deal in the Materials without restriction, including 
-without limitation the rights to use, copy, modify, merge, publish, 
-distribute, sublicense, and/or sell copies of the Materials, and to 
-permit persons to whom the Materials are furnished to do so, subject to 
-the following conditions: 
-
-The above copyright notice and this permission notice shall be included 
-in all copies or substantial portions of the Materials. 
-
-THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 
-
-%% This notice is provided with respect to Byte Code Engineering Library (BCEL), which may be included with this software: 
-
-                     Apache Software License 
-
-                     /*
-====================================================================                      * The Apache Software License, Version 1.1
-                      *
-                      * Copyright (c) 2001 The Apache Software Foundation.  Allrights
-                      * reserved.
-                      *
-                      * Redistribution and use in source and binary forms, withor without
-                      * modification, are permitted provided that the followingconditions
-                      * are met:
-                      *
-                      * 1. Redistributions of source code must retain the abovecopyright
-                      *    notice, this list of conditions and the followingdisclaimer.
-                      *
-                      * 2. Redistributions in binary form must reproduce theabove copyright
-                      *    notice, this list of conditions and the followingdisclaimer in
-                      *    the documentation and/or other materials providedwith the
-                      *    distribution.
-                      *
-                      * 3. The end-user documentation included with theredistribution,
-                      *    if any, must include the following acknowledgment:                      *       "This product includes software developed by the                      *        Apache Software Foundation
-(http://www.apache.org/)."
-                      *    Alternately, this acknowledgment may appear in thesoftware itself,
-                      *    if and wherever such third-party acknowledgmentsnormally appear.
-                      *
-                      * 4. The names "Apache" and "Apache Software Foundation"and 
-                      *    "Apache BCEL" must not be used to endorse or promoteproducts 
-                      *    derived from this software without prior writtenpermission. For 
-                      *    written permission, please contact apache@apache.org.                      *
-                      * 5. Products derived from this software may not be called"Apache",
-                      *    "Apache BCEL", nor may "Apache" appear in their name,without 
-                      *    prior written permission of the Apache SoftwareFoundation.
-                      *
-                      * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED
-                      * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES
-                      * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE
-                      * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWAREFOUNDATION OR
-                      * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL,
-                      * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT NOT
-                      * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF
-                      * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND
-                      * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY,
-                      * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT
-                      * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
-                      * SUCH DAMAGE.
-                      *
-====================================================================                      *
-                      * This software consists of voluntary contributions madeby many
-                      * individuals on behalf of the Apache Software
-Foundation.  For more
-                      * information on the Apache Software Foundation, pleasesee
-                      * .
-                      */
-
-%% This notice is provided with respect to Regexp, Regular Expression Package, which may be included with this software: 
-
-The Apache Software License, Version 1.1
-Copyright (c) 2001 The Apache Software Foundation.  All rights
-reserved.
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in
-the documentation and/or other materials provided with the
-distribution.
-
-3. The end-user documentation included with the redistribution,
-if any, must include the following acknowledgment:
-"This product includes software developed by the
-Apache Software Foundation (http://www.apache.org/)."
-Alternately, this acknowledgment may appear in the software itself,
-if and wherever such third-party acknowledgments normally appear.
-
-4. The names "Apache" and "Apache Software Foundation" and 
-"Apache Turbine" must not be used to endorse or promote products 
-derived from this software without prior written permission. For 
-written permission, please contact apache@apache.org.
-
-5. Products derived from this software may not be called "Apache",
-"Apache Turbine", nor may "Apache" appear in their name, without 
-prior written permission of the Apache Software Foundation.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
-ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-                                                             
-====================================================================
-This software consists of voluntary contributions made by many
-individuals on behalf of the Apache Software Foundation.  For more
-information on the Apache Software Foundation, please see
-                                                             
-http://www.apache.org.
-
-%% This notice is provided with respect to CUP Parser Generator for Java, which may be included with this software: 
-
-CUP Parser Generator Copyright Notice, License, and Disclaimer
-
-Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian 
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided thatthe above copyright notice appear in all copies and that both the copyrightnotice and this permission notice and warranty disclaimer appear in
-supporting documentation, and that the names of the authors or their employersnot be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. 
-
-The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and
-fitness. In no event shall the authors or their employers be liable for anyspecial, indirect or consequential damages or any damages whatsoever
-resulting from loss of use, data or profits, whether in an action of contract,negligence or other tortious action, arising out of or in connection withthe use or performance of this software. 
-
-%% This notice is provided with respect to SAX v. 2.0.1, which may be included with this software: 
-
-Copyright Status
-
-                         SAX is free!
-
-                         In fact, it's not possible to own a license to SAX, since it's been placed in the public
-                         domain. 
-
-                         No Warranty
-
-                         Because SAX is released to the public domain, there is no warranty for the design or for
-                         the software implementation, to the extent permitted by applicable law. Except when
-                         otherwise stated in writing the copyright holders and/or other parties provide SAX "as is"
-                         without warranty of any kind, either expressed or implied, including, but not limited to, the
-                         implied warranties of merchantability and fitness for a particular purpose. The entire risk as
-                         to the quality and performance of SAX is with you. Should SAX prove defective, you
-                         assume the cost of all necessary servicing, repair or correction.
-
-                         In no event unless required by applicable law or agreed to in writing will any copyright
-                         holder, or any other party who may modify and/or redistribute SAX, be liable to you for
-                         damages, including any general, special, incidental or consequential damages arising out of
-                         the use or inability to use SAX (including but not limited to loss of data or data being
-                         rendered inaccurate or losses sustained by you or third parties or a failure of the SAX to
-                         operate with any other programs), even if such holder or other party has been advised of
-                         the possibility of such damages.
-
-                         Copyright Disclaimers 
-
-                         This page includes statements to that effect by David Megginson, who would have been
-                         able to claim copyright for the original work. 
-                         SAX 1.0 
-
-                         Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of
-                         the XML-DEV mailing list, is hereby released into the public domain.
-
-                         No one owns SAX: you may use it freely in both commercial and non-commercial
-                         applications, bundle it with your software distribution, include it on a CD-ROM, list the
-                         source code in a book, mirror the documentation at your own web site, or use it in any
-                         other way you see fit.
-
-                         David Megginson, sax@megginson.com
-                         1998-05-11
-
-                         SAX 2.0 
-
-                         I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release
-                         all of the SAX 2.0 source code, compiled code, and documentation contained in this
-                         distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of
-                         fitness for any purpose.
-
-                         David Megginson, david@megginson.com
-                         2000-05-05
-
-%% This notice is provided with respect to Cryptix, which may be included with this software: 
-
-Cryptix General License
-
-Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions aremet:
-
-   1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.    2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the     documentation and/or other materials provided with the distribution. 
-THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE.
-
-%% This notice is provided with respect to X Window System, which may be included with this software: 
-
-Copyright  The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and itsdocumentation for any purpose is hereby granted without fee, provided that theabove copyright notice appear in all copies and that both that copyright noticeand this permission notice appear in supporting documentation.
-
-The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group.
-
-Portions also covered by other licenses as noted in the above URL.
-
-%% This notice is provided with respect to Retroweaver, which may be included with this software: 
-
-Copyright (c) February 2004, Toby Reyelts
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
-Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 
-Neither the name of Toby Reyelts nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. 
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%% This notice is provided with respect to stripper, which may be included with this software: 
-
-Stripper : debug information stripper
- Copyright (c) 2003 Kohsuke Kawaguchi
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the    documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its
-    contributors may be used to endorse or promote products derived from    this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%% This notice is provided with respect to libpng official PNG reference library, which may be included with this software: 
-
-This copy of the libpng notices is provided for your convenience.  In case ofany discrepancy between this copy and the notices in the file png.h that isincluded in the libpng distribution, the latter shall prevail.
-
-COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
-
-If you modify libpng you may insert additional notices immediately followingthis sentence.
-
-libpng version 1.2.6, December 3, 2004, is
-Copyright (c) 2004 Glenn Randers-Pehrson, and is
-distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors
-   Cosmin Truta
-
-libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, areCopyright (c) 2000-2002 Glenn Randers-Pehrson, and are
-distributed according to the same disclaimer and license as libpng-1.0.6with the following individuals added to the list of Contributing Authors
-   Simon-Pierre Cadieux
-   Eric S. Raymond
-   Gilles Vollant
-
-and with the following additions to the disclaimer:
-
-   There is no warranty against interference with your enjoyment of the   library or against infringement.  There is no warranty that our
-   efforts or the library will fulfill any of your particular purposes   or needs.  This library is provided with all faults, and the entire   risk of satisfactory quality, performance, accuracy, and effort is with   the user.
-
-libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
-distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors:
-   Tom Lane
-   Glenn Randers-Pehrson
-   Willem van Schaik
-
-libpng versions 0.89, June 1996, through 0.96, May 1997, are
-Copyright (c) 1996, 1997 Andreas Dilger
-Distributed according to the same disclaimer and license as libpng-0.88,with the following individuals added to the list of Contributing Authors:
-   John Bowler
-   Kevin Bracey
-   Sam Bushell
-   Magnus Holmgren
-   Greg Roelofs
-   Tom Tanner
-
-libpng versions 0.5, May 1995, through 0.88, January 1996, are
-Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
-
-For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals:
-
-   Andreas Dilger
-   Dave Martindale
-   Guy Eric Schalnat
-   Paul Schmidt
-   Tim Wegner
-
-The PNG Reference Library is supplied "AS IS".  The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied,
-including, without limitation, the warranties of merchantability and offitness for any purpose.  The Contributing Authors and Group 42, Inc.
-assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG
-Reference Library, even if advised of the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions:
-
-1. The origin of this source code must not be misrepresented.
-
-2. Altered versions must be plainly marked as such and must not
-   be misrepresented as being the original source.
-
-3. This Copyright notice may not be removed or altered from any
-   source or altered source distribution.
-
-The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to
-supporting the PNG file format in commercial products.  If you use thissource code in a product, acknowledgment is not required but would be
-appreciated.
-
-
-A "png_get_copyright" function is available, for convenient use in "about"boxes and the like:
-
-   printf("%s",png_get_copyright(NULL));
-
-Also, the PNG logo (in PNG format, of course) is supplied in the
-files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
-
-Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is acertification mark of the Open Source Initiative.
-
-Glenn Randers-Pehrson
-glennrp at users.sourceforge.net
-December 3, 2004
-
-%% This notice is provided with respect to Libungif - An uncompressed GIF library, which may be included with this software: 
-
-The GIFLIB distribution is Copyright (c) 1997  Eric S. Raymond
-
-Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE.
-
-%% This notice is provided with respect to XML Resolver library, Xalan J2, and StAX API, which may be included with this software: 
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,      and distribution as defined by Sections 1 through 9 of this document.
-      "Licensor" shall mean the copyright owner or entity authorized by      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all      other entities that control, are controlled by, or are under common      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the      outstanding shares, or (iii) beneficial ownership of such entity.
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,      including but not limited to software source code, documentation      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object      form, that is based on (or derived from) the Work and for which the      editorial revisions, annotations, elaborations, or other modifications      represent, as a whole, an original work of authorship. For the purposes      of this License, Derivative Works shall not include works that remain      separable from, or merely link (or bind by name) to the interfaces of,      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner      or by an individual or Legal Entity authorized to submit on behalf of      the copyright owner. For the purposes of this definition, "submitted"      means any form of electronic, verbal, or written communication sent      to the Licensor or its representatives, including but not limited to      communication on electronic mailing lists, source code control systems,      and issue tracking systems that are managed by, or on behalf of, the      Licensor for the purpose of discussing and improving the Work, but      excluding communication that is conspicuously marked or otherwise      designated in writing by the copyright owner as "Not a Contribution."
-      "Contributor" shall mean Licensor and any individual or Legal Entity      on behalf of whom a Contribution has been received by Licensor and      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of      this License, each Contributor hereby grants to You a perpetual,      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,      use, offer to sell, sell, import, and otherwise transfer the Work,      where such license applies only to those patent claims licensable      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)      with the Work to which such Contribution(s) was submitted. If You      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work      or a Contribution incorporated within the Work constitutes direct      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must          include a readable copy of the attribution notices contained          within such NOTICE file, excluding those notices that do not          pertain to any part of the Derivative Works, in at least one          of the following places: within a NOTICE text file distributed          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside          or as an addendum to the NOTICE text from the Work, provided          that such additional attribution notices cannot be construed          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and      may provide additional or different license terms and conditions      for use, reproduction, or distribution of Your modifications, or      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,      any Contribution intentionally submitted for inclusion in the Work      by You to the Licensor shall be under the terms and conditions of      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify      the terms of any separate license agreement you may have executed      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade      names, trademarks, service marks, or product names of the Licensor,      except as required for reasonable and customary use in describing the      origin of the Work and reproducing the content of the NOTICE file.
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the      appropriateness of using or redistributing the Work and assume any      risks associated with Your exercise of permissions under this License.
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly      negligent acts) or agreed to in writing, shall any Contributor be      liable to You for damages, including any direct, indirect, special,      incidental, or consequential damages of any character arising as a      result of this License or out of the use or inability to use the      Work (including but not limited to damages for loss of goodwill,      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,      or other liability obligations and/or rights consistent with this      License. However, in accepting such obligations, You may act only      on Your own behalf and on Your sole responsibility, not on behalf      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License.
-
-%% Some Portions licensed from IBM are available at: 
-http://www.ibm.com/software/globalization/icu/
-
-%% This notice is provided with respect to ICU4J, ICU 1.8.1 and later, which may be included with this software: 
-
-ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Cop
-yright (c)
-1995-2003 International Business Machines Corporation and others All rightsreserved. Permission is hereby granted, free of charge, to any person obtaininga copy of this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,provided that the above copyright notice(s) and this permission notice appear inall copies of the Software and that both the above copyright notice(s) and thispermission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY C
- LAIM, OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of acopyright holder shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior written authorizationof the copyright holder.
-
-%% This notice is provided with respect to Jing, which may be included with this software: 
-
-Jing Copying Conditions
-
-Copyright (c) 2001-2003 Thai Open Source Software Center Ltd
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution.
-    * Neither the name of the Thai Open Source Software Center Ltd nor the namesof its contributors may be used to endorse or promote products derived from thissoftware without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%% This notice is provided with respect to RELAX NG Object Model/Parser, which may be included with this software: 
-
-
-The MIT License
-
-Copyright (c)  
-
-Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-%% This notice is provided with respect to XFree86-VidMode Extension, which may be included with this software: 
-
-Version 1.1 of XFree86 ProjectLicence.
-
-    Copyright (C) 1994-2004 The XFree86 Project, Inc.    All rights reserved.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicence, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
-
-       1. Redistributions of source code must retain the above copyright notice,this list of conditions, and the following disclaimer.
-       2. Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution, and in thesame place and form as other copyright, license and disclaimer information.       3. The end-user documentation included with the redistribution, if any,must include the following acknowledgment: "This product includes softwaredeveloped by The XFree86 Project, Inc (http://www.xfree86.org/) and itscontributors", in the same place and form as other third-party acknowledgments.Alternately, this acknowledgment may appear in the software itself, in the sameform and location as other such third-party acknowledgments.
-       4. Except as contained in this notice, the name of The XFree86 Project,Inc shall not be used in advertising or otherwise to promote the sale, use orother dealings in this Software without prior written authorization from TheXFree86 Project, Inc.
-
-    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE.
-
-%% This notice is provided with respect to XML Security, which may be included with this software: 
-
-  The Apache Software License,
-                                       Version 1.1
-
-
-                                                                                 PDF
-
-
-                                       Copyright (C) 2002 The Apache SoftwareFoundation.
-                                       All rights reserved. Redistribution anduse in
-                                       source and binary forms, with or withoutmodifica-
-                                       tion, are permitted provided that thefollowing
-                                       conditions are met: 1. Redistributions ofsource
-                                       code must retain the above copyrightnotice, this
-                                       list of conditions and the followingdisclaimer.
-                                       2. Redistributions in binary form mustreproduce
-                                       the above copyright notice, this list of                                       conditions and the following disclaimerin the
-                                       documentation and/or other materialsprovided with
-                                       the distribution. 3. The end-userdocumentation
-                                       included with the redistribution, if any,must
-                                       include the following acknowledgment:"This
-                                       product includes software developed bythe Apache
-                                       Software Foundation
-(http://www.apache.org/)."
-                                       Alternately, this acknowledgment mayappear in the
-                                       software itself, if and wherever suchthird-party
-                                       acknowledgments normally appear. 4. Thenames
-                                       "Apache Forrest" and "Apache SoftwareFoundation"
-                                       must not be used to endorse or promoteproducts
-                                       derived from this software without priorwritten
-                                       permission. For written permission,please contact
-                                       apache@apache.org. 5. Products derivedfrom this
-                                       software may not be called "Apache", normay
-                                       "Apache" appear in their name, withoutprior
-                                       written permission of the Apache Software                                       Foundation. THIS SOFTWARE IS PROVIDED``AS IS''
-                                       AND ANY EXPRESSED OR IMPLIED WARRANTIES,                                       INCLUDING, BUT NOT LIMITED TO, THEIMPLIED
-                                       WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A
-                                       PARTICULAR PURPOSE ARE DISCLAIMED. IN NOEVENT
-                                       SHALL THE APACHE SOFTWARE FOUNDATION ORITS
-                                       CONTRIBUTORS BE LIABLE FOR ANY DIRECT,INDIRECT,
-                                       INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL
-                                       DAMAGES (INCLU- DING, BUT NOT LIMITED TO,                                       PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS
-                                       OF USE, DATA, OR PROFITS; OR BUSINESS                                       INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF
-                                       LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY,
-                                       OR TORT (INCLUDING NEGLIGENCE OROTHERWISE)
-                                       ARISING IN ANY WAY OUT OF THE USE OF THIS                                       SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
-                                       SUCH DAMAGE. This software consists ofvoluntary
-                                       contributions made by many individuals onbehalf
-                                       of the Apache Software Foundation. Formore
-                                       information on the Apache SoftwareFoundation,
-                                       please see .
-
-%% This notice is provided with respect to Independent JPEG Group's software (libjpeg), which may be included with this software: 
-
-In plain English:
-
-1. We don't promise that this software works.  (But if you find any bugs,
-   please let us know!)
-2. You can use this software for whatever you want.  You don't have to pay us.
-3. You may not pretend that you wrote this software.  If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code.
-
-In legalese:
-
-The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose.  This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy.
-
-This software is copyright (C) 1991-1998, Thomas G. Lane.
-All Rights Reserved except as specified below.
-
-Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions:
-
-(1) If any part of the source code for this software is distributed, then this
-README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation.
-
-(2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group".
-
-(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.
-
-These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library.  If you use our work, you ought to acknowledge us.
-
-Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it.  This software may be referred to only as "the Independent JPEG Group's software".
-
-We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor.
-
-ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it.  (See the file ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do.
-
-The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh).  Another support script, install-sh, is copyright by M.I.T. but is also freely distributable.
-
-It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot legally be used without obtaining one or more licenses.  For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code.
-
-The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs".  This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders.
-
-We are required to state that
-    "The Graphics Interchange Format(c) is the Copyright property of
-    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
-    CompuServe Incorporated."
-
-%% This notice is provided with respect to X Resize and Rotate (Xrandr) Extension, which may be included with this software: 
-2. XFree86 License
-
-XFree86 code without an explicit copyright is covered by the following
-copyright/license:
-
-Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86
-PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the XFree86 Project shall not be
-used in advertising or otherwise to promote the sale, use or other dealings in
-this Software without prior written authorization from the XFree86 Project.
-
-%% This notice is provided with respect to fontconfig, which may be included with this software: 
-Id: COPYING,v 1.3 2003/04/04 20:17:40 keithp Exp $
-Copyright 2001,2003 Keith Packard
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of Keith Packard not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission.  Keith Packard makes no
-representations about the suitability of this software for any purpose.  It
-is provided "as is" without express or implied warranty.
-
-KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-%% This notice is provided with respect to XFree86, which may be included with this software: 
-Copyright (C) 1994-2002 The XFree86 Project, Inc. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated
-documentation files (the "Software"), to deal in the Software without
-restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to the
-following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT
-NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the XFree86 Project shall not be
-used in advertising or otherwise
-to promote the sale, use or other dealings in this Software without prior
-written authorization from the XFree86
-Project.
-%% This notice is provided with respect to Fast Infoset, which may be included with this software: 
-* Fast Infoset ver. 0.1 software ("Software") 
-* 
-* Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved. 
-* 
-* Software is licensed under the Apache License, Version 2.0 (the "License"); 
-* you may not use this file except in compliance with the License. You may 
-* obtain a copy of the License at: 
- * 
- * http://www.apache.org/licenses/LICENSE-2.0 
- * 
- * Unless required by applicable law or agreed to in writing, software 
-* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
-* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
-* License for the specific language governing permissions and limitations. 
-* 
-* Sun supports and benefits from the global community of open source 
-* developers, and thanks the community for its important contributions and 
-* open standards-based technology, which Sun has adopted into many of its 
-* products. 
-* 
-* Please note that portions of Software may be provided with notices and 
-* open source licenses from such communities and third parties that govern the 
-* use of those portions, and any licenses granted hereunder do not alter any 
-* rights and obligations you may have under such open source licenses, 
-* however, the disclaimer of warranty and limitation of liability provisions 
-* in this License will apply to all Software in this distribution. 
-* 
-* You acknowledge that the Software is not designed, licensed or intended 
-* for use in the design, construction, operation or maintenance of any nuclear 
-* facility. 
-* 
-* Apache License 
-* Version 2.0, January 2004 
-* http://www.apache.org/licenses/ 
-* 
-*/ 
-/* 
-* ==================================================================== 
-* 
-* This code is subject to the freebxml License, Version 1.1 
-* 
-* Copyright (c) 2001 - 2005 freebxml.org. All rights reserved. 
-* 
-* $Header: /cvs/fi/FastInfoset/src/com/sun/xml/internal/fastinfoset/AbstractResourceBundle.java,v 1.2 
-*  ==================================================================== 
-*/ 
-%% This notice is provided with respect to Kerberos, which may be included with this software: 
-
-/* 
- * Copyright (C) 1998 by the FundsXpress, INC. 
- * 
- * All rights reserved. 
- * 
- * Export of this software from the United States of America may require 
- * a specific license from the United States Government.  It is the 
- * responsibility of any person or organization contemplating export to 
- * obtain such a license before exporting. 
- * 
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 
- * distribute this software and its documentation for any purpose and 
- * without fee is hereby granted, provided that the above copyright 
- * notice appear in all copies and that both that copyright notice and 
- * this permission notice appear in supporting documentation, and that 
- * the name of FundsXpress. not be used in advertising or publicity pertaining 
- * to distribution of the software without specific, written prior 
- * permission. FundsXpress makes no representations about the suitability of 
- * this software for any purpose. It is provided "as is" without express 
- * or implied warranty. 
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
- */ 
-
-%% This notice is provided with respect to Unicode's CLDR data repository, which may be included with this software: 
-
- Unicode Copyright
-
-    For the general privacy policy governing access to this site, see the 
-Unicode Privacy Policy. For trademark usage, see the the Unicode Consortium
-Trademarks and Logo Policy.
-    Notice to End User: Terms of Use
-    Carefully read the following legal agreement ("Agreement"). Use or copying
-of the software and/or codes provided with this agreement (The "Software")
-constitutes your acceptance of these terms
-
-       1. Unicode Copyright.
-             1. Copyright © 1991-2005 Unicode, Inc. All rights reserved.
-             2. Certain documents and files on this website contain a legend
-indicating that "Modification is permitted." Any person is hereby authorized,
-without fee, to modify such documents and files to create derivative works
-conforming to the Unicode® Standard, subject to Terms and Conditions herein.
-             3. Any person is hereby authorized, without fee, to view, use,
-reproduce, and distribute all documents and files solely for informational
-purposes in the creation of products supporting the Unicode Standard, subject to
-the Terms and Conditions herein.
-             4. Further specifications of rights and restrictions pertaining to
-the use of the particular set of data files known as the "Unicode Character
-Database" can be found in Exhibit 1.
-             5. Further specifications of rights and restrictions pertaining to
-the use of the particular set of files that constitute the online edition of The
-Unicode Standard, Version 4.0, may be found in V4.0 online edition.
-             6. No license is granted to "mirror" the Unicode website where a
-fee is charged for access to the "mirror" site.
-             7. Modification is not permitted with respect to this document. All
-copies of this document must be verbatim.
-       2. Restricted Rights Legend. Any technical data or software which is
-licensed to the United States of America, its agencies and/or instrumentalities
-under this Agreement is commercial technical data or commercial computer
-software developed exclusively at private expense as defined in FAR 2.101, or
-DFARS 252.227-7014 (June 1995), as applicable. For technical data, use,
-duplication, or disclosure by the Government is subject to restrictions as set
-forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and
-this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202,
-as applicable, use, duplication or disclosure by the Government is subject to
-the restrictions set forth in this Agreement.
-       3. Warranties and Disclaimers.
-             1. This publication and/or website may include technical or
-typographical errors or other inaccuracies . Changes are periodically added to
-the information herein; these changes will be incorporated in new editions of
-the publication and/or website. Unicode may make improvements and/or changes in
-the product(s) and/or program(s) described in this publication and/or website at
-any time.
-             2. If this file has been purchased on magnetic or optical media
-from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange
-of the defective media within ninety (90) days of original purchase.
-             3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR
-SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS,
-IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE
-AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS
-PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED
-TO THIS PUBLICATION OR THE UNICODE WEBSITE.
-       4. Waiver of Damages. In no event shall Unicode or its licensors be
-liable for any special, incidental, indirect or consequential damages of any
-kind, or any damages whatsoever, whether or not Unicode was advised of the
-possibility of the damage, including, without limitation, those resulting from
-the following: loss of use, data or profits, in connection with the use,
-modification or distribution of this information or its derivatives.
-       5. Trademarks.
-             1. Unicode and the Unicode logo are registered trademarks of
-Unicode, Inc. 
-             2. This site contains product names and corporate names of other
-companies. All product names and company names and logos mentioned herein are
-the trademarks or registered trademarks of their respective owners. Other
-products and corporate names mentioned herein which are trademarks of a third
-party are used only for explanation and for the owners' benefit and with no
-intent to infringe.
-             3. Use of third party products or information referred to herein is
-at the user's risk.
-       6. Miscellaneous.
-             1. Jurisdiction and Venue. This server is operated from a location
-in the State of California, United States of America. Unicode makes no
-representation that the materials are appropriate for use in other locations. If
-you access this server from other locations, you are responsible for compliance
-with local laws. This Agreement, all use of this site and any claims and damages
-resulting from use of this site are governed solely by the laws of the State of
-California without regard to any principles which would apply the laws of a
-different jurisdiction. The user agrees that any disputes regarding this site
-shall be resolved solely in the courts located in Santa Clara County,
-California. The user agrees said courts have personal jurisdiction and agree to
-waive any right to transfer the dispute to any other forum.
-             2. Modification by Unicode Unicode shall have the right to modify
-this Agreement at any time by posting it to this site. The user may not assign
-any part of this Agreement without Unicode's prior written consent.
-             3. Taxes. The user agrees to pay any taxes arising from access to
-this website or use of the information herein, except for those based on
-Unicode's net income.
-             4. Severability.  If any provision of this Agreement is declared
-invalid or unenforceable, the remaining provisions of this Agreement shall
-remain in effect.
-             5. Entire Agreement. This Agreement constitutes the entire
-agreement between the parties. 
-
-EXHIBIT 1
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-    Unicode Data Files include all data files under the directories
-http://www.unicode.org/Public/ and http://www.unicode.org/reports/. Unicode
-Software includes any source code under the directories
-http://www.unicode.org/Public/ and http://www.unicode.org/reports/.
-
-    NOTICE TO USER: Carefully read the following legal agreement. BY
-DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
-("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
-AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU
-DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES
-OR SOFTWARE.
-
-    COPYRIGHT AND PERMISSION NOTICE
-
-    Copyright Ã?Â,Ã,© 1991-2004 Unicode, Inc. All rights reserved. Distributed under
-the Terms of Use in http://www.unicode.org/copyright.html.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-of the Unicode data files and associated documentation (the "Data Files") or
-Unicode software and associated documentation (the "Software") to deal in the
-Data Files or Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files or
-Software are furnished to do so, provided that (a) the above copyright notice(s)
-and this permission notice appear with all copies of the Data Files or Software,
-(b) both the above copyright notice(s) and this permission notice appear in
-associated documentation, and (c) there is clear notice in each modified Data
-File or in the Software as well as in the documentation associated with the Data
-File(s) or Software that the data or software has been modified.
-
-    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
-PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-    Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in these Data Files or Software without prior written authorization of the
-copyright holder.
-
-    Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
-registered in some jurisdictions. All other trademarks and registered trademarks
-mentioned herein are the property of their respective owners.
-%% This notice is provided with respect to RSA PKCS#11 Header Files & Specification, which may be included with this software: 
-
-/* 
- * Copyright (C) 1998 by the FundsXpress, INC. 
- * 
- * All rights reserved. 
- * 
- * Export of this software from the United States of America may require 
- * a specific license from the United States Government.  It is the 
- * responsibility of any person or organization contemplating export to 
- * obtain such a license before exporting. 
- * 
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 
- * distribute this software and its documentation for any purpose and 
- * without fee is hereby granted, provided that the above copyright 
- * notice appear in all copies and that both that copyright notice and 
- * this permission notice appear in supporting documentation, and that 
- * the name of FundsXpress. not be used in advertising or publicity pertaining 
- * to distribution of the software without specific, written prior 
- * permission.  FundsXpress makes no representations about the suitability of 
- * this software for any purpose.  It is provided "as is" without express 
- * or implied warranty. 
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
- */ 
-
-%% This notice is provided with respect to certain files/code which may included in the implementation of AWT within the software: 
-
-****************************************************** 
-BEGIN  src/solaris/native/sun/awt/HPkeysym.h 
-Copyright 1987, 1998  The Open Group 
-
-All Rights Reserved. 
-
-The above copyright notice and this permission notice shall be included 
-in all copies or substantial portions of the Software. 
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR 
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
-OTHER DEALINGS IN THE SOFTWARE. 
-
-Except as contained in this notice, the name of The Open Group shall 
-not be used in advertising or otherwise to promote the sale, use or 
-other dealings in this Software without prior written authorization 
-from The Open Group. 
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, 
-
-All Rights Reserved 
-
-Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose and without fee is hereby granted, 
-provided that the above copyright notice appear in all copies and that 
-both that copyright notice and this permission notice appear in 
-supporting documentation, and that the names of Hewlett Packard 
-or Digital not be 
-used in advertising or publicity pertaining to distribution of the 
-software without specific, written prior permission. 
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 
-SOFTWARE. 
-
-HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD 
-TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
-PURPOSE.  Hewlett-Packard shall not be liable for errors 
-contained herein or direct, indirect, special, incidental or 
-consequential damages in connection with the furnishing, 
-performance, or use of this material. 
-
-END  src/solaris/native/sun/awt/HPkeysym.h 
-****************************************************** 
-****************************************************** 
-BEGIN src/solaris/native/sun/awt/Xrandr.h 
-/* 
- * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $ 
- * 
- * Copyright © 2000 Compaq Computer Corporation, Inc. 
- * Copyright © 2002 Hewlett-Packard Company, Inc. 
- * 
- * Permission to use, copy, modify, distribute, and sell this software and its 
- * documentation for any purpose is hereby granted without fee, provided that 
- * the above copyright notice appear in all copies and that both that 
- * copyright notice and this permission notice appear in supporting 
- * documentation, and that the name of Compaq not be used in advertising or 
- * publicity pertaining to distribution of the software without specific, 
- * written prior permission.  HP makes no representations about the 
- * suitability of this software for any purpose.  It is provided "as is" 
- * without express or implied warranty. 
- * 
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ 
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
- * 
- * Author:  Jim Gettys, HP Labs, HP. 
- */ 
-
-
-END src/solaris/native/sun/awt/Xrandr.h 
-****************************************************** 
-BEGIN src/solaris/native/sun/awt/extutil.h 
-/* 
- * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ 
- * 
-Copyright 1989, 1998  The Open Group 
-
-All Rights Reserved. 
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE 
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-
-Except as contained in this notice, the name of The Open Group shall not be 
-used in advertising or otherwise to promote the sale, use or other dealings 
-in this Software without prior written authorization from The Open Group. 
- * 
- * Author:  Jim Fulton, MIT The Open Group 
- * 
- *                     Xlib Extension-Writing Utilities 
- * 
- * This package contains utilities for writing the client API for various 
- * protocol extensions.  THESE INTERFACES ARE NOT PART OF THE X STANDARD AND 
- * ARE SUBJECT TO CHANGE! 
- */ 
-/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ 
-
-END src/solaris/native/sun/awt/extutil.h 
-****************************************************** 
-BEGIN   src/solaris/native/sun/awt/fontconfig.h 
-/* 
- * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 
-keithp Exp $ 
- * 
- * Copyright © 2001 Keith Packard 
- * 
- * Permission to use, copy, modify, distribute, and sell this software and its 
- * documentation for any purpose is hereby granted without fee, provided that 
- * the above copyright notice appear in all copies and that both that 
- * copyright notice and this permission notice appear in supporting 
- * documentation, and that the name of Keith Packard not be used in 
- * advertising or publicity pertaining to distribution of the software without 
- * specific, written prior permission.  Keith Packard makes no 
- * representations about the suitability of this software for any purpose.  It 
- * is provided "as is" without express or implied warranty. 
- * 
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
- * PERFORMANCE OF THIS SOFTWARE. 
-
-END   src/solaris/native/sun/awt/fontconfig.h 
-****************************************************** 
-BEGIN src/solaris/native/sun/awt/list.c 
-AND  src/solaris/native/sun/awt/list.h 
-AND src/solaris/native/sun/awt/multiVis.c 
-AND  src/solaris/native/sun/awt/multiVis.h 
-AND  src/solaris/native/sun/awt/wsutils.h 
-
-Copyright (c) 1994 Hewlett-Packard Co. 
-Copyright (c) 1996  X Consortium 
-
-Permission is hereby granted, free of charge, to any person obtaining 
-a copy of this software and associated documentation files (the 
-"Software"), to deal in the Software without restriction, including 
-without limitation the rights to use, copy, modify, merge, publish, 
-distribute, sublicense, and sell copies of the Software, and to 
-permit persons to whom the Software is furnished to do so, subject to 
-the following conditions: 
-
-The above copyright notice and this permission notice shall be included 
-in all copies or substantial portions of the Software. 
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR 
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
-OTHER DEALINGS IN THE SOFTWARE. 
-
-Except as contained in this notice, the name of the X Consortium shall 
-not be used in advertising or otherwise to promote the sale, use or 
-other dealings in this Software without prior written authorization 
-from the X Consortium. 
-
-END src/solaris/native/sun/awt/list.c 
-AND  src/solaris/native/sun/awt/list.h 
-AND src/solaris/native/sun/awt/multiVis.c 
-AND  src/solaris/native/sun/awt/multiVis.h 
-AND  src/solaris/native/sun/awt/wsutils.h 
-
-***************************************************************** 
-BEGIN src/solaris/native/sun/awt/randr.h 
-
- * 
- * Copyright © 2000, Compaq Computer Corporation, 
- * Copyright © 2002, Hewlett Packard, Inc. 
- * 
- * Permission to use, copy, modify, distribute, and sell this software and its 
- * documentation for any purpose is hereby granted without fee, provided that 
- * the above copyright notice appear in all copies and that both that 
- * copyright notice and this permission notice appear in supporting 
- * documentation, and that the name of Compaq or HP not be used in advertising 
- * or publicity pertaining to distribution of the software without specific, 
- * written prior permission.  HP makes no representations about the 
- * suitability of this software for any purpose.  It is provided "as is" 
- * without express or implied warranty. 
- * 
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP 
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
- * 
- * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc. 
-
-END src/solaris/native/sun/awt/randr.h 
-***************************************************** 
-
-BEGIN src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h 
- * Mesa 3-D graphics library 
- * Version:  4.1 
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved. 
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions: 
- * 
- * The above copyright notice and this permission notice shall be included 
- * in all copies or substantial portions of the Software. 
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL 
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-
-END src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h 
--- a/jdk/make/com/sun/crypto/provider/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/com/sun/crypto/provider/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -193,7 +193,7 @@
 $(UNSIGNED_DIR)/sunjce_provider.jar: build $(JCE_MANIFEST_FILE)
 	$(prep-target)
 	$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 
@@ -253,7 +253,7 @@
 	@$(CD) $(OBFUS_DIR); $(java-vm-cleanup)
 	$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ \
 	    -C $(OBFUS_DIR)/build com \
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	$(sign-target)
 	@$(java-vm-cleanup)
 
--- a/jdk/make/com/sun/inputmethods/indicim/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/com/sun/inputmethods/indicim/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -71,7 +71,7 @@
 	$(BOOT_JAR_CMD) -cf $@ \
 	     -C $(CLASSDESTDIR) com \
 	     -C $(CLASSDESTDIR) $(SERVICESDIR) \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 clean::
--- a/jdk/make/com/sun/inputmethods/thaiim/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/com/sun/inputmethods/thaiim/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -71,7 +71,7 @@
 	$(BOOT_JAR_CMD) -cf $@ \
 	     -C $(CLASSDESTDIR) com \
 	     -C $(CLASSDESTDIR) $(SERVICESDIR) \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 clean::
--- a/jdk/make/common/BuildToolJar.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/BuildToolJar.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -46,7 +46,7 @@
 	    -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE)
 	$(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
 	    -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \
-	    $(JAR_JFLAGS) || $(RM) $@
+	    $(BOOT_JAR_JFLAGS) || $(RM) $@
 	@$(java-vm-cleanup)
 
 # Printing out a build tool information line
--- a/jdk/make/common/Defs-linux.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Defs-linux.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -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
 #
@@ -162,19 +154,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) \
@@ -186,6 +178,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
--- a/jdk/make/common/Defs-solaris.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Defs-solaris.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -86,15 +86,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.
 #
@@ -123,8 +124,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
@@ -142,9 +143,8 @@
 #        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   = -L$(OBJDIR)
@@ -160,7 +160,7 @@
 CXXFLAGS_COMMON += -errtags=yes
 
 # Optimization flags
-CFLAGS_OPT      = $(POPT)
+CFLAGS_OPT      = $(CC_OPT)
 
 # Debug version flags
 CFLAGS_DBG      = $(CFLAGS_DEBUG_OPTION)
@@ -197,7 +197,7 @@
   CXXFLAGS_COMMON += -errwarn=%all
 endif
 
-CXXFLAGS_OPT	= $(POPT)
+CXXFLAGS_OPT	= $(CXX_OPT)
 CXXFLAGS_DBG	= $(CXXFLAGS_DEBUG_OPTION)
 CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
 
@@ -267,6 +267,10 @@
 CPPFLAGS_OPT    = -DNDEBUG
 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
@@ -410,63 +414,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
@@ -476,9 +568,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?)
@@ -492,77 +581,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
--- a/jdk/make/common/Defs-windows.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Defs-windows.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -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
--- a/jdk/make/common/Defs.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Defs.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -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
 #
 
--- a/jdk/make/common/Demo.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Demo.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -251,7 +251,7 @@
 	    @$(DEMO_JAVAC_INPUT)
 	$(BOOT_JAR_CMD) -cfm $@ $(DEMO_MANIFEST) \
 	     -C $(DEMO_JAR_IMAGE) . \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 endif
@@ -317,7 +317,11 @@
 # Applets are special, no jar file, no src.zip, everything expanded.
 ifdef DEMO_IS_APPLET
 	@$(ECHO) "Expanding jar file into demos area at $(DEMO_DESTDIR)"
-	( $(CD) $(DEMO_DESTDIR) && $(BOOT_JAR_CMD) -xfv $(DEMONAME).jar && $(RM) -r META-INF $(DEMONAME).jar )
+	( $(CD) $(DEMO_DESTDIR) && \
+	  $(BOOT_JAR_CMD) -xfv $(DEMONAME).jar \
+	     $(BOOT_JAR_JFLAGS) && \
+	  $(RM) -r META-INF $(DEMONAME).jar  && \
+	  $(java-vm-cleanup) )
 	@( $(CD) $(DEMO_DESTDIR) && $(java-vm-cleanup) )
 	@$(ECHO) "Expanding source into demos area at $(DEMO_DESTDIR)"
 	( $(CD) $(DEMO_DESTDIR) && $(UNZIP) -o src.zip && $(RM) src.zip )
--- a/jdk/make/common/Library.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Library.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -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)
--- a/jdk/make/common/Release.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/Release.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -63,15 +63,6 @@
 
 JTG_DOCS            = $(JDK_TOPDIR)/src/solaris/doc
 
-# Choose the right set of documents for the images
-ifdef OPENJDK
-  SHARE_JDK_DOC_SRC = $(JDK_TOPDIR)/make
-  SHARE_JRE_DOC_SRC = $(JDK_TOPDIR)/make
-else
-  SHARE_JDK_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jdk
-  SHARE_JRE_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jre
-endif
-
 #We use this for man page header
 jdkversion := $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
 
@@ -81,13 +72,20 @@
 endif
 
 # The base names of all the license and document files for the jdk and jre
+#   (These files get placed in the jdk and jre install images)
 ifdef OPENJDK
+  # Where to find these files
+  SHARE_JDK_DOC_SRC = $(JDK_TOPDIR)
+  SHARE_JRE_DOC_SRC = $(JDK_TOPDIR)
   # Same files for jdk and jre, no name changes
   LICENSE_DOCLIST_JDK = LICENSE     ASSEMBLY_EXCEPTION
   LICENSE_DOCLIST_JRE = LICENSE     ASSEMBLY_EXCEPTION
-  OTHER_DOCLIST_JDK   = README.html THIRD_PARTY_README
-  OTHER_DOCLIST_JRE   = README.html THIRD_PARTY_README
+  OTHER_DOCLIST_JDK   = THIRD_PARTY_README
+  OTHER_DOCLIST_JRE   = THIRD_PARTY_README
 else
+  # Where to find these files
+  SHARE_JDK_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jdk
+  SHARE_JRE_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jre
   # Select the pre-release or FCS license version based on the build milestone.
   LICENSE_VERSION=.pre
   ifeq ($(MILESTONE), fcs)
@@ -662,7 +660,7 @@
 $(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
 	$(prep-target)
 	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
-	    @$(RES_JAR_ARGLIST) $(JAR_JFLAGS)
+	    @$(RES_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 # Create jsse.jar containing SunJSSE implementation classes
@@ -671,7 +669,7 @@
 	$(prep-target)
 	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
 		$(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
-		$(JAR_JFLAGS)
+		$(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 # Create sec-bin.zip
@@ -721,7 +719,7 @@
 $(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
 	$(prep-target)
 	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
-	    @$(RT_JAR_ARGLIST) $(JAR_JFLAGS)
+	    @$(RT_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 # Meta-index construction to make core class loaders lazier
@@ -955,7 +953,7 @@
 	@#
 	$(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
 		-C $(CLASSBINDIR) , $(TOOLS)) \
-	        $(JAR_JFLAGS)
+	        $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 	$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
 	@#
@@ -968,7 +966,7 @@
 	    -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
 	    $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS)
 	$(BOOT_JAR_CMD) c0f $(LIBDIR)/ct.sym \
-	    -C $(OUTPUTDIR)/symbols META-INF $(JAR_JFLAGS)
+	    -C $(OUTPUTDIR)/symbols META-INF $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 	$(CP) $(LIBDIR)/ct.sym $(JDK_IMAGE_DIR)/lib/ct.sym
 	@#
@@ -1132,11 +1130,11 @@
 COMPARE_FILTER = | $(EGREP) -v /fastdebug/ | $(EGREP) -v /demo/ | $(EGREP) -v /sample/
 
 # If a previuous image is provided, no need to install it.
-ifdef PREVIOUS_JDK_IMAGE
+ifdef PREVIOUS_RELEASE_IMAGE
 
   # Just use the pre-installed images
-  PREV_JRE_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)/jre
-  PREV_JDK_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)
+  PREV_JRE_IMAGE_DIR=$(PREVIOUS_RELEASE_IMAGE)/jre
+  PREV_JDK_IMAGE_DIR=$(PREVIOUS_RELEASE_IMAGE)
 
 else
 
--- a/jdk/make/common/internal/BinaryPlugs.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/internal/BinaryPlugs.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -185,7 +185,8 @@
 define import-binary-plug-classes
 @$(MKDIR) -p $(CLASSDESTDIR)
 @$(CAT) $1 | $(SED) -e 's/^/PLUG IMPORT: /'
-($(CD) $(CLASSDESTDIR) && $(BOOT_JAR_CMD) xf $(PLUG_IMPORT_JARFILE) @$1)
+($(CD) $(CLASSDESTDIR) && $(BOOT_JAR_CMD) xf $(PLUG_IMPORT_JARFILE) @$1 $(BOOT_JAR_JFLAGS) )
+($(CD) $(CLASSDESTDIR) && $(java-vm-cleanup) )
 endef # import-binary-plug-classes
 
 # Import specific area classes (the classes are always created)
@@ -275,7 +276,8 @@
 	@$(prep-target)
 	@$(ECHO) "PLUG EXPORT: $(@F)"
 	@$(CAT) $(PLUG_TEMPDIR)/all.clist | $(SED) -e 's/^/PLUG EXPORT: /'
-	$(BOOT_JAR_CMD) cf $@ @$(PLUG_TEMPDIR)/all.jargs
+	$(BOOT_JAR_CMD) cf $@ @$(PLUG_TEMPDIR)/all.jargs $(BOOT_JAR_JFLAGS)
+	@$(java-vm-cleanup)
 export-binary-plugs-jar: $(PLUG_EXPORT_JARFILE)
 
 # Export native libraries
--- a/jdk/make/common/internal/ImportComponents.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/internal/ImportComponents.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -107,8 +107,9 @@
 define Unjar
 ( \
   $(MKDIR) -p $1; \
-  $(ECHO) "( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 )" ; \
-  ( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 ) \
+  $(ECHO) "( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 $(BOOT_JAR_JFLAGS) )" ; \
+  ( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 $(BOOT_JAR_JFLAGS) ) && \
+  ( $(CD) $1 && $(java-vm-cleanup) ) \
 )
 endef
 
--- a/jdk/make/common/shared/Compiler-sun.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/shared/Compiler-sun.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -31,11 +31,8 @@
 
 # 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
+  COMPILER_VERSION=SS12
+  REQUIRED_CC_VER=5.9
   CC             = $(COMPILER_PATH)cc
   CPP            = $(COMPILER_PATH)cc -E
   CXX            = $(COMPILER_PATH)CC
--- a/jdk/make/common/shared/Defs-java.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/shared/Defs-java.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -190,6 +190,7 @@
   BOOT_JAVACFLAGS  += -Werror
 endif
 BOOT_JAVACFLAGS  += -encoding ascii
+BOOT_JAR_JFLAGS += $(JAR_JFLAGS)
 
 BOOT_JAVA_CMD      = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
 BOOT_JAVAC_CMD     = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
--- a/jdk/make/common/shared/Defs.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/common/shared/Defs.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -279,9 +279,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.
--- a/jdk/make/java/fdlibm/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/java/fdlibm/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -33,6 +33,7 @@
 BUILDDIR     = ../..
 LIBRARY      = fdlibm
 PRODUCT      = java
+
 include $(BUILDDIR)/common/Defs.gmk
 
 #
@@ -40,15 +41,24 @@
 #
 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
 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
@@ -69,15 +79,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
--- a/jdk/make/java/java_hprof_demo/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/java/java_hprof_demo/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -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
 
--- a/jdk/make/java/management/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/java/management/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -93,7 +93,8 @@
 include $(BUILDDIR)/common/Library.gmk
 
 $(AGENTJAR): $(LIBDIR) $(TEMPDIR)/manifest
-	$(BOOT_JAR_CMD) -cfm $(AGENTJAR) $(TEMPDIR)/manifest
+	$(BOOT_JAR_CMD) -cfm $(AGENTJAR) $(TEMPDIR)/manifest $(BOOT_JAR_JFLAGS)
+	@$(java-vm-cleanup)
 
 $(TEMPDIR)/manifest: $(MANIFEST)
 	$(install-file)
--- a/jdk/make/javax/crypto/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/javax/crypto/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -230,7 +230,7 @@
 $(UNSIGNED_DIR)/jce.jar: prebuild build $(JCE_MANIFEST_FILE)
 	$(prep-target)
 	$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	$(CP) -r $(CLASSDESTDIR)/* $(CLASSBINDIR)
 	@$(java-vm-cleanup)
 
@@ -268,7 +268,7 @@
 	$(prep-target)
 	$(BOOT_JAR_CMD) cmf policy/unlimited/UNLIMITED $@		\
 	    -C policy/unlimited default_US_export.policy		\
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 $(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar:			\
@@ -277,7 +277,7 @@
 	$(prep-target)
 	$(BOOT_JAR_CMD) cmf policy/unlimited/UNLIMITED $@		\
 	    -C policy/unlimited default_local.policy			\
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 #
@@ -302,7 +302,7 @@
 	$(BOOT_JAR_CMD) cmf policy/limited/LIMITED $@			\
 	    -C policy/limited default_local.policy			\
 	    -C policy/limited exempt_local.policy			\
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 UNSIGNED_POLICY_FILES = \
@@ -402,7 +402,7 @@
 	$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@	\
 	    -C $(OBFUS_DIR)/build javax			\
 	    -C $(OBFUS_DIR)/build sun			\
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	$(sign-target)
 	@$(java-vm-cleanup)
 
--- a/jdk/make/javax/swing/beaninfo/SwingBeans.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/javax/swing/beaninfo/SwingBeans.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -170,7 +170,7 @@
 	$(BOOT_JAR_CMD) cf $(TEMPDIR)/tmp.jar \
 	     -C $(BEANCLASSDIR) javax \
 	     -C $(BEANCLASSDIR) sun \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	$(MV) $(TEMPDIR)/tmp.jar $(JDK_IMAGE_DIR)/lib/dt.jar
 	@$(java-vm-cleanup)
 
--- a/jdk/make/jprt.config	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/jprt.config	Thu Aug 14 22:16:00 2008 -0700
@@ -137,9 +137,7 @@
     if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
         compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
     else
-        # FIXUP: Change to SS12 when validated
-	#compiler_name=SS12
-	compiler_name=SS11
+	compiler_name=SS12
     fi
     compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/${compiler_name}/bin
     ALT_COMPILER_PATH="${compiler_path}"
--- a/jdk/make/sun/awt/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/awt/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -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
 
 #
--- a/jdk/make/sun/font/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/font/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -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
--- a/jdk/make/sun/font/t2k/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/font/t2k/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -41,12 +41,10 @@
 # for a few ones with native methods) so shouldn't clobber them.
 DONT_CLOBBER_CLASSES=true
 
-include $(BUILDDIR)/common/Defs.gmk
+# Use higher optimization level
+OPTIMIZATION_LEVEL = HIGHER
 
-#
-# Use higher optimization level
-#
-_OPT = $(CC_HIGHER_OPT)
+include $(BUILDDIR)/common/Defs.gmk
 
 #
 # Files
--- a/jdk/make/sun/image/generic/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/image/generic/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -31,12 +31,11 @@
 PACKAGE = sun.awt.medialib
 LIBRARY = mlib_image
 PRODUCT = sun
-include $(BUILDDIR)/common/Defs.gmk
 
-#
 # Use highest level of optimization on this library
-#
-_OPT = $(CC_HIGHEST_OPT)
+OPTIMIZATION_LEVEL = HIGHEST
+
+include $(BUILDDIR)/common/Defs.gmk
 
 #
 # Use mapfile
--- a/jdk/make/sun/image/vis/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/image/vis/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -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
--- a/jdk/make/sun/jconsole/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/jconsole/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -82,7 +82,7 @@
 	$(BOOT_JAR_CMD) -cfm $(JARFILE) $(TEMPDIR)/manifest \
                -C $(CLASSBINDIR) sun/tools/jconsole \
                -C $(CLASSBINDIR) com/sun/tools/jconsole \
-		    $(JAR_JFLAGS)
+		    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 clean clobber::
--- a/jdk/make/sun/jpeg/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/jpeg/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -27,12 +27,11 @@
 PACKAGE = sun.awt
 LIBRARY = jpeg
 PRODUCT = sun
-include $(BUILDDIR)/common/Defs.gmk
 
-#
 # Use highest optimization level
-#
-_OPT = $(CC_HIGHEST_OPT)
+OPTIMIZATION_LEVEL = HIGHEST
+
+include $(BUILDDIR)/common/Defs.gmk
 
 #
 # Files
--- a/jdk/make/sun/net/spi/nameservice/dns/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/net/spi/nameservice/dns/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -67,7 +67,7 @@
 	$(BOOT_JAR_CMD) -cf $(JARFILE) \
 	     -C $(CLASSDESTDIR) sun \
 	     -C $(CLASSDESTDIR) META-INF \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 include $(BUILDDIR)/common/Classes.gmk
--- a/jdk/make/sun/nio/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/nio/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -91,7 +91,7 @@
 	$(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
 	      -C $(CLASSDESTDIR) sun \
 	      -C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH)  \
-	      $(JAR_JFLAGS)
+	      $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 clean::
--- a/jdk/make/sun/security/mscapi/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/security/mscapi/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -210,7 +210,7 @@
 $(UNSIGNED_DIR)/sunmscapi.jar: build
 	$(prep-target)
 	$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 
--- a/jdk/make/sun/security/pkcs11/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/security/pkcs11/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -210,7 +210,7 @@
 $(UNSIGNED_DIR)/sunpkcs11.jar: build
 	$(prep-target)
 	$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
-	    $(JAR_JFLAGS)
+	    $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 
--- a/jdk/make/sun/text/Makefile	Sun Aug 10 18:35:53 2008 -0700
+++ b/jdk/make/sun/text/Makefile	Thu Aug 14 22:16:00 2008 -0700
@@ -112,7 +112,7 @@
 $(LOCALEDATA_JAR): $(EXTDIR) $(FILES_class) $(BIFILES) $(SPECIALFILES)
 	$(prep-target)
 	$(BOOT_JAR_CMD) -cf $@ -C $(CLASSDESTDIR) sun \
-	     $(JAR_JFLAGS)
+	     $(BOOT_JAR_JFLAGS)
 	@$(java-vm-cleanup)
 
 build: $(LOCALEDATA_JAR)
--- a/langtools/.hgtags	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/.hgtags	Thu Aug 14 22:16:00 2008 -0700
@@ -6,3 +6,4 @@
 dec081837b01d509dcc2b9de86a4299c1ec17e04 jdk7-b29
 eaf608c64fecf70f955dc9f29f94c055b183aeec jdk7-b30
 07c916ecfc71f6bf432e4ff09bfbfb6290b5703c jdk7-b31
+13aee98cc0d8e24a084b62ad1d48d2a49792416c jdk7-b32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/DiagnosticFormatter.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2008 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.
+ */
+package com.sun.tools.javac.api;
+
+import java.util.Locale;
+import javax.tools.Diagnostic;
+
+/**
+ * Provides simple functionalities for javac diagnostic formatting
+ * @param <D> type of diagnostic handled by this formatter
+ */
+public interface DiagnosticFormatter<D extends Diagnostic<?>> {
+
+    /**
+     * Whether the source code output for this diagnostic is to be displayed
+     *
+     * @param diag diagnostic to be formatted
+     * @return true if the source line this diagnostic refers to is to be displayed
+     */
+    boolean displaySource(D diag);
+
+    /**
+     * Format the contents of a diagnostics
+     *
+     * @param diag the diagnostic to be formatted
+     * @param l locale object to be used for i18n
+     * @return a string representing the diagnostic
+     */
+    public String format(D diag, Locale l);
+
+    /**
+     * Controls the way in which a diagnostic message is displayed.
+     *
+     * @param diag diagnostic to be formatted
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic message
+     */
+    public String formatMessage(D diag,Locale l);
+
+    /**
+     * Controls the way in which a diagnostic kind is displayed.
+     *
+     * @param diag diagnostic to be formatted
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic prefix
+     */
+    public String formatKind(D diag, Locale l);
+
+    /**
+     * Controls the way in which a diagnostic source is displayed.
+     *
+     * @param diag diagnostic to be formatted
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic source
+     */
+    public String formatSource(D diag, Locale l);
+
+    /**
+     * Controls the way in which a diagnostic position is displayed.
+     *
+     * @param diag diagnostic to be formatted
+     * @param pk enum constant representing the position kind
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic position
+     */
+    public String formatPosition(D diag, PositionKind pk, Locale l);
+    //where
+    /**
+     * This enum defines a set of constants for all the kinds of position
+     * that a diagnostic can be asked for. All positions are intended to be
+     * relative to a given diagnostic source.
+     */
+    public enum PositionKind {
+        /**
+         * Start position
+         */
+        START,
+        /**
+         * End position
+         */
+        END,
+        /**
+         * Line number
+         */
+        LINE,
+        /**
+         * Column number
+         */
+        COLUMN,
+        /**
+         * Offset position
+         */
+        OFFSET
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/Formattable.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2008 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.
+ */
+
+package com.sun.tools.javac.api;
+
+import java.util.ResourceBundle;
+
+/**
+ * This interface must be implemented by any javac class that has non-trivial
+ * formatting needs (e.g. where toString() does not apply because of localization).
+ *
+ * @author Maurizio Cimadamore
+ */
+public interface Formattable {
+
+    /**
+     * Used to obtain a localized String representing the object accordingly
+     * to a given locale
+     *
+     * @param bundle resource bundle class used for localization
+     * @return a locale-dependent string representing the object
+     */
+    public String toString(ResourceBundle bundle);
+    /**
+     * Retrieve a pretty name of this object's kind
+     * @return a string representing the object's kind
+     */
+    String getKind();
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Flags.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Flags.java	Thu Aug 14 22:16:00 2008 -0700
@@ -25,6 +25,7 @@
 
 package com.sun.tools.javac.code;
 
+import java.util.EnumSet;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
@@ -43,38 +44,49 @@
 
     public static String toString(long flags) {
         StringBuffer buf = new StringBuffer();
-        if ((flags&PUBLIC) != 0) buf.append("public ");
-        if ((flags&PRIVATE) != 0) buf.append("private ");
-        if ((flags&PROTECTED) != 0) buf.append("protected ");
-        if ((flags&STATIC) != 0) buf.append("static ");
-        if ((flags&FINAL) != 0) buf.append("final ");
-        if ((flags&SYNCHRONIZED) != 0) buf.append("synchronized ");
-        if ((flags&VOLATILE) != 0) buf.append("volatile ");
-        if ((flags&TRANSIENT) != 0) buf.append("transient ");
-        if ((flags&NATIVE) != 0) buf.append("native ");
-        if ((flags&INTERFACE) != 0) buf.append("interface ");
-        if ((flags&ABSTRACT) != 0) buf.append("abstract ");
-        if ((flags&STRICTFP) != 0) buf.append("strictfp ");
-        if ((flags&BRIDGE) != 0) buf.append("bridge ");
-        if ((flags&SYNTHETIC) != 0) buf.append("synthetic ");
-        if ((flags&DEPRECATED) != 0) buf.append("deprecated ");
-        if ((flags&HASINIT) != 0) buf.append("hasinit ");
-        if ((flags&ENUM) != 0) buf.append("enum ");
-        if ((flags&IPROXY) != 0) buf.append("iproxy ");
-        if ((flags&NOOUTERTHIS) != 0) buf.append("noouterthis ");
-        if ((flags&EXISTS) != 0) buf.append("exists ");
-        if ((flags&COMPOUND) != 0) buf.append("compound ");
-        if ((flags&CLASS_SEEN) != 0) buf.append("class_seen ");
-        if ((flags&SOURCE_SEEN) != 0) buf.append("source_seen ");
-        if ((flags&LOCKED) != 0) buf.append("locked ");
-        if ((flags&UNATTRIBUTED) != 0) buf.append("unattributed ");
-        if ((flags&ANONCONSTR) != 0) buf.append("anonconstr ");
-        if ((flags&ACYCLIC) != 0) buf.append("acyclic ");
-        if ((flags&PARAMETER) != 0) buf.append("parameter ");
-        if ((flags&VARARGS) != 0) buf.append("varargs ");
+        String sep = "";
+        for (Flag s : asFlagSet(flags)) {
+            buf.append(sep);
+            buf.append(s);
+            sep = " ";
+        }
         return buf.toString();
     }
 
+    public static EnumSet<Flag> asFlagSet(long mask) {
+        EnumSet<Flag> flags = EnumSet.noneOf(Flag.class);
+        if ((mask&PUBLIC) != 0) flags.add(Flag.PUBLIC);
+        if ((mask&PRIVATE) != 0) flags.add(Flag.PRIVATE);
+        if ((mask&PROTECTED) != 0) flags.add(Flag.PROTECTED);
+        if ((mask&STATIC) != 0) flags.add(Flag.STATIC);
+        if ((mask&FINAL) != 0) flags.add(Flag.FINAL);
+        if ((mask&SYNCHRONIZED) != 0) flags.add(Flag.SYNCHRONIZED);
+        if ((mask&VOLATILE) != 0) flags.add(Flag.VOLATILE);
+        if ((mask&TRANSIENT) != 0) flags.add(Flag.TRANSIENT);
+        if ((mask&NATIVE) != 0) flags.add(Flag.NATIVE);
+        if ((mask&INTERFACE) != 0) flags.add(Flag.INTERFACE);
+        if ((mask&ABSTRACT) != 0) flags.add(Flag.ABSTRACT);
+        if ((mask&STRICTFP) != 0) flags.add(Flag.STRICTFP);
+        if ((mask&BRIDGE) != 0) flags.add(Flag.BRIDGE);
+        if ((mask&SYNTHETIC) != 0) flags.add(Flag.SYNTHETIC);
+        if ((mask&DEPRECATED) != 0) flags.add(Flag.DEPRECATED);
+        if ((mask&HASINIT) != 0) flags.add(Flag.HASINIT);
+        if ((mask&ENUM) != 0) flags.add(Flag.ENUM);
+        if ((mask&IPROXY) != 0) flags.add(Flag.IPROXY);
+        if ((mask&NOOUTERTHIS) != 0) flags.add(Flag.NOOUTERTHIS);
+        if ((mask&EXISTS) != 0) flags.add(Flag.EXISTS);
+        if ((mask&COMPOUND) != 0) flags.add(Flag.COMPOUND);
+        if ((mask&CLASS_SEEN) != 0) flags.add(Flag.CLASS_SEEN);
+        if ((mask&SOURCE_SEEN) != 0) flags.add(Flag.SOURCE_SEEN);
+        if ((mask&LOCKED) != 0) flags.add(Flag.LOCKED);
+        if ((mask&UNATTRIBUTED) != 0) flags.add(Flag.UNATTRIBUTED);
+        if ((mask&ANONCONSTR) != 0) flags.add(Flag.ANONCONSTR);
+        if ((mask&ACYCLIC) != 0) flags.add(Flag.ACYCLIC);
+        if ((mask&PARAMETER) != 0) flags.add(Flag.PARAMETER);
+        if ((mask&VARARGS) != 0) flags.add(Flag.VARARGS);
+        return flags;
+    }
+
     /* Standard Java flags.
      */
     public static final int PUBLIC       = 1<<0;
@@ -271,4 +283,48 @@
     public static boolean isConstant(Symbol.VarSymbol symbol) {
         return symbol.getConstValue() != null;
     }
+
+    public enum Flag {
+
+        PUBLIC("public"),
+        PRIVATE("private"),
+        PROTECTED("protected"),
+        STATIC("static"),
+        FINAL("final"),
+        SYNCHRONIZED("synchronized"),
+        VOLATILE("volatile"),
+        TRANSIENT("transient"),
+        NATIVE("native"),
+        INTERFACE("interface"),
+        ABSTRACT("abstract"),
+        STRICTFP("strictfp"),
+        BRIDGE("bridge"),
+        SYNTHETIC("synthetic"),
+        DEPRECATED("deprecated"),
+        HASINIT("hasinit"),
+        ENUM("enum"),
+        IPROXY("iproxy"),
+        NOOUTERTHIS("noouterthis"),
+        EXISTS("exists"),
+        COMPOUND("compound"),
+        CLASS_SEEN("class_seen"),
+        SOURCE_SEEN("source_seen"),
+        LOCKED("locked"),
+        UNATTRIBUTED("unattributed"),
+        ANONCONSTR("anonconstr"),
+        ACYCLIC("acyclic"),
+        PARAMETER("parameter"),
+        VARARGS("varargs"),
+        PACKAGE("package");
+
+        String name;
+
+        Flag(String name) {
+            this.name = name;
+        }
+
+        public String toString() {
+            return name;
+        }
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Kinds.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Kinds.java	Thu Aug 14 22:16:00 2008 -0700
@@ -25,6 +25,13 @@
 
 package com.sun.tools.javac.code;
 
+import java.util.EnumSet;
+import java.util.ResourceBundle;
+
+import com.sun.tools.javac.api.Formattable;
+
+import static com.sun.tools.javac.code.TypeTags.*;
+import static com.sun.tools.javac.code.Flags.*;
 
 /** Internal symbol kinds, which distinguish between elements of
  *  different subclasses of Symbol. Symbol kinds are organized so they can be
@@ -82,4 +89,133 @@
     public static final int WRONG_MTH    = ERRONEOUS+6; // one method with wrong arguments
     public static final int ABSENT_MTH   = ERRONEOUS+7; // missing method
     public static final int ABSENT_TYP   = ERRONEOUS+8; // missing type
+
+    public enum KindName implements Formattable {
+        ANNOTATION("kindname.interface"),
+        CONSTRUCTOR("kindname.constructor"),
+        INTERFACE("kindname.interface"),
+        STATIC("kindname.static"),
+        TYPEVAR("kindname.type.variable"),
+        BOUND("kindname.type.variable.bound"),
+        VAR("kindname.variable"),
+        VAL("kindname.value"),
+        METHOD("kindname.method"),
+        CLASS("kindname.class"),
+        PACKAGE("kindname.package");
+
+        private String name;
+
+        KindName(String name) {
+            this.name = name;
+        }
+
+        public String toString() {
+            return name;
+        }
+
+        public String getKind() {
+            return "Kindname";
+        }
+
+        public String toString(ResourceBundle bundle) {
+            String s = toString();
+            return bundle.getString("compiler.misc." + s);
+        }
+    }
+
+    /** A KindName representing a given symbol kind
+     */
+    public static KindName kindName(int kind) {
+        switch (kind) {
+        case PCK: return KindName.PACKAGE;
+        case TYP: return KindName.CLASS;
+        case VAR: return KindName.VAR;
+        case VAL: return KindName.VAL;
+        case MTH: return KindName.METHOD;
+            default : throw new AssertionError("Unexpected kind: "+kind);
+        }
+    }
+
+    /** A KindName representing a given symbol
+     */
+    public static KindName kindName(Symbol sym) {
+        switch (sym.getKind()) {
+        case PACKAGE:
+            return KindName.PACKAGE;
+
+        case ENUM:
+        case ANNOTATION_TYPE:
+        case INTERFACE:
+        case CLASS:
+            return KindName.CLASS;
+
+        case TYPE_PARAMETER:
+            return KindName.TYPEVAR;
+
+        case ENUM_CONSTANT:
+        case FIELD:
+        case PARAMETER:
+        case LOCAL_VARIABLE:
+        case EXCEPTION_PARAMETER:
+            return KindName.VAR;
+
+        case METHOD:
+        case CONSTRUCTOR:
+        case STATIC_INIT:
+        case INSTANCE_INIT:
+            return KindName.METHOD;
+
+        default:
+            if (sym.kind == VAL)
+                // I don't think this can happen but it can't harm
+                // playing it safe --ahe
+                return KindName.VAL;
+            else
+                throw new AssertionError("Unexpected kind: "+sym.getKind());
+        }
+    }
+
+    /** A set of KindName(s) representing a set of symbol's kinds.
+     */
+    public static EnumSet<KindName> kindNames(int kind) {
+        EnumSet<KindName> kinds = EnumSet.noneOf(KindName.class);
+        if ((kind & VAL) != 0)
+            kinds.add(((kind & VAL) == VAR) ? KindName.VAR : KindName.VAL);
+        if ((kind & MTH) != 0) kinds.add(KindName.METHOD);
+        if ((kind & TYP) != 0) kinds.add(KindName.CLASS);
+        if ((kind & PCK) != 0) kinds.add(KindName.PACKAGE);
+        return kinds;
+    }
+
+    /** A KindName representing the kind of a given class/interface type.
+     */
+    public static KindName typeKindName(Type t) {
+        if (t.tag == TYPEVAR ||
+            t.tag == CLASS && (t.tsym.flags() & COMPOUND) != 0)
+            return KindName.BOUND;
+        else if (t.tag == PACKAGE)
+            return KindName.PACKAGE;
+        else if ((t.tsym.flags_field & ANNOTATION) != 0)
+            return KindName.ANNOTATION;
+        else if ((t.tsym.flags_field & INTERFACE) != 0)
+            return KindName.INTERFACE;
+        else
+            return KindName.CLASS;
+    }
+
+    /** A KindName representing the kind of a a missing symbol, given an
+     *  error kind.
+     * */
+    public static KindName absentKind(int kind) {
+        switch (kind) {
+        case ABSENT_VAR:
+            return KindName.VAR;
+        case WRONG_MTHS: case WRONG_MTH: case ABSENT_MTH:
+            return KindName.METHOD;
+        case ABSENT_TYP:
+            return KindName.CLASS;
+        default:
+            throw new AssertionError("Unexpected kind: "+kind);
+        }
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java	Thu Aug 14 22:16:00 2008 -0700
@@ -140,25 +140,27 @@
     }
 
     /** A Java source description of the location of this symbol; used for
-     *  error reporting.  Use of this method may result in the loss of the
-     *  symbol's description.
+     *  error reporting.
+     *
+     * @return null if the symbol is a package or a toplevel class defined in
+     * the default package; otherwise, the owner symbol is returned
      */
-    public String location() {
+    public Symbol location() {
         if (owner.name == null || (owner.name.len == 0 && owner.kind != PCK)) {
-            return "";
+            return null;
         }
-        return owner.toString();
+        return owner;
     }
 
-    public String location(Type site, Types types) {
+    public Symbol location(Type site, Types types) {
         if (owner.name == null || owner.name.len == 0) {
             return location();
         }
         if (owner.type.tag == CLASS) {
             Type ownertype = types.asOuterSuper(site, owner);
-            if (ownertype != null) return ownertype.toString();
+            if (ownertype != null) return ownertype.tsym;
         }
-        return owner.toString();
+        return owner;
     }
 
     /** The symbol's erased type.
@@ -451,8 +453,8 @@
             this.other = other;
         }
         public String toString() { return other.toString(); }
-        public String location() { return other.location(); }
-        public String location(Type site, Types types) { return other.location(site, types); }
+        public Symbol location() { return other.location(); }
+        public Symbol location(Type site, Types types) { return other.location(site, types); }
         public Type erasure(Types types) { return other.erasure(types); }
         public Type externalType(Types types) { return other.externalType(types); }
         public boolean isLocal() { return other.isLocal(); }
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Thu Aug 14 22:16:00 2008 -0700
@@ -979,6 +979,10 @@
             return TypeKind.TYPEVAR;
         }
 
+        public boolean isCaptured() {
+            return false;
+        }
+
         public <R, P> R accept(TypeVisitor<R, P> v, P p) {
             return v.visitTypeVariable(this, p);
         }
@@ -1015,6 +1019,11 @@
         }
 
         @Override
+        public boolean isCaptured() {
+            return true;
+        }
+
+        @Override
         public String toString() {
             return "capture#"
                 + (hashCode() & 0xFFFFFFFFL) % PRIME
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Thu Aug 14 22:16:00 2008 -0700
@@ -835,7 +835,7 @@
         };
 
     public boolean isCaptureOf(Type s, WildcardType t) {
-        if (s.tag != TYPEVAR || !(s instanceof CapturedType))
+        if (s.tag != TYPEVAR || !((TypeVar)s).isCaptured())
             return false;
         return isSameWildcard(t, ((CapturedType)s).wildcard);
     }
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Thu Aug 14 22:16:00 2008 -0700
@@ -172,8 +172,8 @@
                 owntype = chk.checkType(tree.pos(), owntype, pt);
             } else {
                 log.error(tree.pos(), "unexpected.type",
-                          Resolve.kindNames(pkind),
-                          Resolve.kindName(ownkind));
+                          kindNames(pkind),
+                          kindName(ownkind));
                 owntype = syms.errType;
             }
         }
@@ -2664,7 +2664,7 @@
                 // Enums may not be extended by source-level classes
                 if (st.tsym != null &&
                     ((st.tsym.flags_field & Flags.ENUM) != 0) &&
-                    ((c.flags_field & Flags.ENUM) == 0) &&
+                    ((c.flags_field & (Flags.ENUM | Flags.COMPOUND)) == 0) &&
                     !target.compilerBootstrap(c)) {
                     log.error(env.tree.pos(), "enum.types.not.extensible");
                 }
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Thu Aug 14 22:16:00 2008 -0700
@@ -422,9 +422,34 @@
      *  @param bs            The bound.
      */
     private void checkExtends(DiagnosticPosition pos, Type a, TypeVar bs) {
-        if (a.isUnbound()) {
-            return;
-        } else if (a.tag != WILDCARD) {
+        if (a.tag == TYPEVAR && ((TypeVar)a).isCaptured()) {
+            CapturedType ct = (CapturedType)a;
+            boolean ok;
+            if (ct.bound.isErroneous()) {//capture doesn't exist
+                ok = false;
+            }
+            else {
+                switch (ct.wildcard.kind) {
+                    case EXTENDS:
+                        ok = types.isCastable(bs.getUpperBound(),
+                                types.upperBound(a),
+                                Warner.noWarnings);
+                        break;
+                    case SUPER:
+                        ok = !types.notSoftSubtype(types.lowerBound(a),
+                                bs.getUpperBound());
+                        break;
+                    case UNBOUND:
+                        ok = true;
+                        break;
+                    default:
+                        throw new AssertionError("Invalid bound kind");
+                }
+            }
+            if (!ok)
+                log.error(pos, "not.within.bounds", a);
+        }
+        else {
             a = types.upperBound(a);
             for (List<Type> l = types.getBounds(bs); l.nonEmpty(); l = l.tail) {
                 if (!types.isSubtype(a, l.head)) {
@@ -432,12 +457,6 @@
                     return;
                 }
             }
-        } else if (a.isExtendsBound()) {
-            if (!types.isCastable(bs.getUpperBound(), types.upperBound(a), Warner.noWarnings))
-                log.error(pos, "not.within.bounds", a);
-        } else if (a.isSuperBound()) {
-            if (types.notSoftSubtype(types.lowerBound(a), bs.getUpperBound()))
-                log.error(pos, "not.within.bounds", a);
         }
     }
 
@@ -557,8 +576,8 @@
         if ((flags & set1) != 0 && (flags & set2) != 0) {
             log.error(pos,
                       "illegal.combination.of.modifiers",
-                      TreeInfo.flagNames(TreeInfo.firstFlag(flags & set1)),
-                      TreeInfo.flagNames(TreeInfo.firstFlag(flags & set2)));
+                      asFlagSet(TreeInfo.firstFlag(flags & set1)),
+                      asFlagSet(TreeInfo.firstFlag(flags & set2)));
             return false;
         } else
             return true;
@@ -651,7 +670,7 @@
             }
             else {
                 log.error(pos,
-                          "mod.not.allowed.here", TreeInfo.flagNames(illegal));
+                          "mod.not.allowed.here", asFlagSet(illegal));
             }
         }
         else if ((sym.kind == TYP ||
@@ -776,7 +795,7 @@
         public void visitTypeApply(JCTypeApply tree) {
             if (tree.type.tag == CLASS) {
                 List<Type> formals = tree.type.tsym.type.getTypeArguments();
-                List<Type> actuals = tree.type.getTypeArguments();
+                List<Type> actuals = types.capture(tree.type).getTypeArguments();
                 List<JCExpression> args = tree.arguments;
                 List<Type> forms = formals;
                 ListBuffer<TypeVar> tvars_buf = new ListBuffer<TypeVar>();
@@ -792,7 +811,7 @@
                     // bounds substed with actuals.
                     tvars_buf.append(types.substBound(((TypeVar)forms.head),
                                                       formals,
-                                                      Type.removeBounds(actuals)));
+                                                      actuals));
 
                     args = args.tail;
                     forms = forms.tail;
@@ -811,10 +830,11 @@
                 tvars = tvars_buf.toList();
                 while (args.nonEmpty() && tvars.nonEmpty()) {
                     checkExtends(args.head.pos(),
-                                 args.head.type,
+                                 actuals.head,
                                  tvars.head);
                     args = args.tail;
                     tvars = tvars.tail;
+                    actuals = actuals.tail;
                 }
 
                 // Check that this type is either fully parameterized, or
@@ -1003,14 +1023,6 @@
         }
     }
 
-    /** A string describing the access permission given by a flag set.
-     *  This always returns a space-separated list of Java Keywords.
-     */
-    private static String protectionString(long flags) {
-        long flags1 = flags & AccessFlags;
-        return (flags1 == 0) ? "package" : TreeInfo.flagNames(flags1);
-    }
-
     /** A customized "cannot override" error message.
      *  @param m      The overriding method.
      *  @param other  The overridden method.
@@ -1104,7 +1116,7 @@
                  (other.flags() & STATIC) != 0) {
             log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.meth",
                       cannotOverride(m, other),
-                      TreeInfo.flagNames(other.flags() & (FINAL | STATIC)));
+                      asFlagSet(other.flags() & (FINAL | STATIC)));
             return;
         }
 
@@ -1118,9 +1130,10 @@
                  protection(m.flags()) > protection(other.flags())) {
             log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.weaker.access",
                       cannotOverride(m, other),
-                      protectionString(other.flags()));
+                      other.flags() == 0 ?
+                          Flag.PACKAGE :
+                          asFlagSet(other.flags() & AccessFlags));
             return;
-
         }
 
         Type mt = types.memberType(origin.type, m);
@@ -2015,7 +2028,7 @@
             log.error(pos,
                       "operator.cant.be.applied",
                       treeinfo.operatorName(tag),
-                      left + "," + right);
+                      List.of(left, right));
         }
         return operator.opcode;
     }
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Thu Aug 14 22:16:00 2008 -0700
@@ -2944,8 +2944,10 @@
                                        itvar.type,
                                        List.<Type>nil());
             JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next));
-            if (iteratorTarget != syms.objectType)
-                vardefinit = make.TypeCast(iteratorTarget, vardefinit);
+            if (tree.var.type.isPrimitive())
+                vardefinit = make.TypeCast(types.upperBound(iteratorTarget), vardefinit);
+            else
+                vardefinit = make.TypeCast(tree.var.type, vardefinit);
             JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods,
                                                   tree.var.name,
                                                   tree.var.vartype,
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Thu Aug 14 22:16:00 2008 -0700
@@ -317,8 +317,9 @@
                     importFrom(tsym);
                     if (!found) {
                         log.error(pos, "cant.resolve.location",
-                                  JCDiagnostic.fragment("kindname.static"),
-                                  name, "", "", Resolve.typeKindName(tsym.type),
+                                  KindName.STATIC,
+                                  name, List.<Type>nil(), List.<Type>nil(),
+                                  typeKindName(tsym.type),
                                   tsym.type);
                     }
                 } finally {
@@ -719,7 +720,7 @@
                             annotations.nonEmpty())
                             log.error(annotations.head.pos,
                                       "already.annotated",
-                                      Resolve.kindName(s), s);
+                                      kindName(s), s);
                         enterAnnotations(annotations, localEnv, s);
                     } finally {
                         log.useSource(prev);
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Thu Aug 14 22:16:00 2008 -0700
@@ -1442,107 +1442,6 @@
     }
 
 /* ***************************************************************************
- *  Methods related to kinds
- ****************************************************************************/
-
-    /** A localized string describing a given kind.
-     */
-    static JCDiagnostic kindName(int kind) {
-        switch (kind) {
-        case PCK: return JCDiagnostic.fragment("kindname.package");
-        case TYP: return JCDiagnostic.fragment("kindname.class");
-        case VAR: return JCDiagnostic.fragment("kindname.variable");
-        case VAL: return JCDiagnostic.fragment("kindname.value");
-        case MTH: return JCDiagnostic.fragment("kindname.method");
-        default : return JCDiagnostic.fragment("kindname",
-                                               Integer.toString(kind)); //debug
-        }
-    }
-
-    static JCDiagnostic kindName(Symbol sym) {
-        switch (sym.getKind()) {
-        case PACKAGE:
-            return JCDiagnostic.fragment("kindname.package");
-
-        case ENUM:
-        case ANNOTATION_TYPE:
-        case INTERFACE:
-        case CLASS:
-            return JCDiagnostic.fragment("kindname.class");
-
-        case TYPE_PARAMETER:
-            return JCDiagnostic.fragment("kindname.type.variable");
-
-        case ENUM_CONSTANT:
-        case FIELD:
-        case PARAMETER:
-        case LOCAL_VARIABLE:
-        case EXCEPTION_PARAMETER:
-            return JCDiagnostic.fragment("kindname.variable");
-
-        case METHOD:
-        case CONSTRUCTOR:
-        case STATIC_INIT:
-        case INSTANCE_INIT:
-            return JCDiagnostic.fragment("kindname.method");
-
-        default:
-            if (sym.kind == VAL)
-                // I don't think this can happen but it can't harm
-                // playing it safe --ahe
-                return JCDiagnostic.fragment("kindname.value");
-            else
-                return JCDiagnostic.fragment("kindname", sym.getKind()); // debug
-        }
-    }
-
-    /** A localized string describing a given set of kinds.
-     */
-    static JCDiagnostic kindNames(int kind) {
-        StringBuffer key = new StringBuffer();
-        key.append("kindname");
-        if ((kind & VAL) != 0)
-            key.append(((kind & VAL) == VAR) ? ".variable" : ".value");
-        if ((kind & MTH) != 0) key.append(".method");
-        if ((kind & TYP) != 0) key.append(".class");
-        if ((kind & PCK) != 0) key.append(".package");
-        return JCDiagnostic.fragment(key.toString(), kind);
-    }
-
-    /** A localized string describing the kind -- either class or interface --
-     *  of a given type.
-     */
-    static JCDiagnostic typeKindName(Type t) {
-        if (t.tag == TYPEVAR ||
-            t.tag == CLASS && (t.tsym.flags() & COMPOUND) != 0)
-            return JCDiagnostic.fragment("kindname.type.variable.bound");
-        else if (t.tag == PACKAGE)
-            return JCDiagnostic.fragment("kindname.package");
-        else if ((t.tsym.flags_field & ANNOTATION) != 0)
-            return JCDiagnostic.fragment("kindname.annotation");
-        else if ((t.tsym.flags_field & INTERFACE) != 0)
-            return JCDiagnostic.fragment("kindname.interface");
-        else
-            return JCDiagnostic.fragment("kindname.class");
-    }
-
-    /** A localized string describing the kind of a missing symbol, given an
-     *  error kind.
-     */
-    static JCDiagnostic absentKindName(int kind) {
-        switch (kind) {
-        case ABSENT_VAR:
-            return JCDiagnostic.fragment("kindname.variable");
-        case WRONG_MTHS: case WRONG_MTH: case ABSENT_MTH:
-            return JCDiagnostic.fragment("kindname.method");
-        case ABSENT_TYP:
-            return JCDiagnostic.fragment("kindname.class");
-        default:
-            return JCDiagnostic.fragment("kindname", kind);
-        }
-    }
-
-/* ***************************************************************************
  *  ResolveError classes, indicating error situations when accessing symbols
  ****************************************************************************/
 
@@ -1633,55 +1532,77 @@
          */
         void report(Log log, DiagnosticPosition pos, Type site, Name name,
                     List<Type> argtypes, List<Type> typeargtypes) {
+            if (argtypes == null)
+                argtypes = List.nil();
+            if (typeargtypes == null)
+                typeargtypes = List.nil();
             if (name != name.table.error) {
-                JCDiagnostic kindname = absentKindName(kind);
-                String idname = name.toString();
-                String args = "";
-                String typeargs = "";
+                KindName kindname = absentKind(kind);
+                Name idname = name;
                 if (kind >= WRONG_MTHS && kind <= ABSENT_MTH) {
                     if (isOperator(name)) {
                         log.error(pos, "operator.cant.be.applied",
-                                  name, Type.toString(argtypes));
+                                  name, argtypes);
                         return;
                     }
                     if (name == name.table.init) {
-                        kindname = JCDiagnostic.fragment("kindname.constructor");
-                        idname = site.tsym.name.toString();
+                        kindname = KindName.CONSTRUCTOR;
+                        idname = site.tsym.name;
                     }
-                    args = "(" + Type.toString(argtypes) + ")";
-                    if (typeargtypes != null && typeargtypes.nonEmpty())
-                        typeargs = "<" + Type.toString(typeargtypes) + ">";
                 }
                 if (kind == WRONG_MTH) {
+                    Symbol ws = wrongSym.asMemberOf(site, types);
                     log.error(pos,
                               "cant.apply.symbol" + (explanation != null ? ".1" : ""),
-                              wrongSym.asMemberOf(site, types),
-                              wrongSym.location(site, types),
-                              typeargs,
-                              Type.toString(argtypes),
+                              kindname,
+                              ws.name == names.init ? ws.owner.name : ws.name,
+                              ws.type.getParameterTypes(),
+                              argtypes,
+                              kindName(ws.owner),
+                              ws.owner.type,
                               explanation);
                 } else if (site.tsym.name.len != 0) {
                     if (site.tsym.kind == PCK && !site.tsym.exists())
                         log.error(pos, "doesnt.exist", site.tsym);
-                    else
-                        log.error(pos, "cant.resolve.location",
-                                  kindname, idname, args, typeargs,
-                                  typeKindName(site), site);
+                    else {
+                        String errKey = getErrorKey("cant.resolve.location",
+                                                    argtypes, typeargtypes,
+                                                    kindname);
+                        log.error(pos, errKey, kindname, idname, //symbol kindname, name
+                                  typeargtypes, argtypes, //type parameters and arguments (if any)
+                                  typeKindName(site), site); //location kindname, type
+                    }
                 } else {
-                    log.error(pos, "cant.resolve", kindname, idname, args, typeargs);
+                    String errKey = getErrorKey("cant.resolve",
+                                                argtypes, typeargtypes,
+                                                kindname);
+                    log.error(pos, errKey, kindname, idname, //symbol kindname, name
+                              typeargtypes, argtypes); //type parameters and arguments (if any)
                 }
             }
         }
-//where
-            /** A name designates an operator if it consists
-             *  of a non-empty sequence of operator symbols +-~!/*%&|^<>=
-             */
-            boolean isOperator(Name name) {
-                int i = 0;
-                while (i < name.len &&
-                       "+-~!*/%&|^<>=".indexOf(name.byteAt(i)) >= 0) i++;
-                return i > 0 && i == name.len;
+        //where
+        String getErrorKey(String key, List<Type> argtypes, List<Type> typeargtypes, KindName kindname) {
+            String suffix = "";
+            switch (kindname) {
+                case METHOD:
+                case CONSTRUCTOR: {
+                    suffix += ".args";
+                    suffix += typeargtypes.nonEmpty() ? ".params" : "";
+                }
             }
+            return key + suffix;
+        }
+
+        /** A name designates an operator if it consists
+         *  of a non-empty sequence of operator symbols +-~!/*%&|^<>=
+         */
+        boolean isOperator(Name name) {
+            int i = 0;
+            while (i < name.len &&
+                   "+-~!*/%&|^<>=".indexOf(name.byteAt(i)) >= 0) i++;
+            return i > 0 && i == name.len;
+        }
     }
 
     /** Resolve error class indicating that a symbol is not accessible.
@@ -1726,7 +1647,7 @@
                         sym, sym.location());
                 else if ((sym.flags() & (PRIVATE | PROTECTED)) != 0)
                     log.error(pos, "report.access", sym,
-                              TreeInfo.flagNames(sym.flags() & (PRIVATE | PROTECTED)),
+                              asFlagSet(sym.flags() & (PRIVATE | PROTECTED)),
                               sym.location());
                 else
                     log.error(pos, "not.def.public.cant.access",
@@ -1759,11 +1680,11 @@
                     Name name,
                     List<Type> argtypes,
                     List<Type> typeargtypes) {
-            String symstr = ((sym.kind == TYP && sym.type.tag == CLASS)
-                ? types.erasure(sym.type)
-                : sym).toString();
+            Symbol errSym = ((sym.kind == TYP && sym.type.tag == CLASS)
+                ? types.erasure(sym.type).tsym
+                : sym);
             log.error(pos, "non-static.cant.be.ref",
-                      kindName(sym), symstr);
+                      kindName(sym), errSym);
         }
     }
 
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Thu Aug 14 22:16:00 2008 -0700
@@ -1331,7 +1331,7 @@
                     log.warning("annotation.method.not.found.reason",
                                 container,
                                 name,
-                                failure.getMessage());
+                                failure.getDetailValue());//diagnostic, if present
                 }
             } finally {
                 log.useSource(prevSource);
--- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Thu Aug 14 22:16:00 2008 -0700
@@ -63,6 +63,7 @@
 // TEMP, until we have a more efficient way to save doc comment info
 import com.sun.tools.javac.parser.DocCommentScanner;
 
+import java.util.HashMap;
 import java.util.Queue;
 import javax.lang.model.SourceVersion;
 
@@ -444,7 +445,25 @@
      */
     public Todo todo;
 
-    private Set<Env<AttrContext>> deferredSugar = new HashSet<Env<AttrContext>>();
+    protected enum CompileState {
+        TODO(0),
+        ATTR(1),
+        FLOW(2);
+        CompileState(int value) {
+            this.value = value;
+        }
+        boolean isDone(CompileState other) {
+            return value >= other.value;
+        }
+        private int value;
+    };
+    protected class CompileStates extends HashMap<Env<AttrContext>,CompileState> {
+        boolean isDone(Env<AttrContext> env, CompileState cs) {
+            CompileState ecs = get(env);
+            return ecs != null && ecs.isDone(cs);
+        }
+    }
+    private CompileStates compileStates = new CompileStates();
 
     /** The set of currently compiled inputfiles, needed to ensure
      *  we don't accidentally overwrite an input file when -s is set.
@@ -1039,6 +1058,9 @@
      * @returns the attributed parse tree
      */
     public Env<AttrContext> attribute(Env<AttrContext> env) {
+        if (compileStates.isDone(env, CompileState.ATTR))
+            return env;
+
         if (verboseCompilePolicy)
             log.printLines(log.noticeWriter, "[attribute " + env.enclClass.sym + "]");
         if (verbose)
@@ -1055,6 +1077,7 @@
                                   env.toplevel.sourcefile);
         try {
             attr.attribClass(env.tree.pos(), env.enclClass.sym);
+            compileStates.put(env, CompileState.ATTR);
         }
         finally {
             log.useSource(prev);
@@ -1094,7 +1117,7 @@
             if (errorCount() > 0)
                 return;
 
-            if (relax || deferredSugar.contains(env)) {
+            if (relax || compileStates.isDone(env, CompileState.FLOW)) {
                 results.append(env);
                 return;
             }
@@ -1109,6 +1132,7 @@
                 make.at(Position.FIRSTPOS);
                 TreeMaker localMake = make.forToplevel(env.toplevel);
                 flow.analyzeTree(env.tree, localMake);
+                compileStates.put(env, CompileState.FLOW);
 
                 if (errorCount() > 0)
                     return;
@@ -1146,7 +1170,7 @@
      * the current implicitSourcePolicy is taken into account.
      * The preparation stops as soon as an error is found.
      */
-    protected void desugar(Env<AttrContext> env, Queue<Pair<Env<AttrContext>, JCClassDecl>> results) {
+    protected void desugar(final Env<AttrContext> env, Queue<Pair<Env<AttrContext>, JCClassDecl>> results) {
         if (errorCount() > 0)
             return;
 
@@ -1155,13 +1179,30 @@
             return;
         }
 
-        if (desugarLater(env)) {
-            if (verboseCompilePolicy)
-                log.printLines(log.noticeWriter, "[defer " + env.enclClass.sym + "]");
-            todo.append(env);
-            return;
+        /**
+         * As erasure (TransTypes) destroys information needed in flow analysis,
+         * including information in supertypes, we need to ensure that supertypes
+         * are processed through attribute and flow before subtypes are translated.
+         */
+        class ScanNested extends TreeScanner {
+            Set<Env<AttrContext>> dependencies = new HashSet<Env<AttrContext>>();
+            public void visitClassDef(JCClassDecl node) {
+                Type st = types.supertype(node.sym.type);
+                if (st.tag == TypeTags.CLASS) {
+                    ClassSymbol c = st.tsym.outermostClass();
+                    Env<AttrContext> stEnv = enter.getEnv(c);
+                    if (stEnv != null && env != stEnv)
+                        dependencies.add(stEnv);
+                }
+                super.visitClassDef(node);
+            }
         }
-        deferredSugar.remove(env);
+        ScanNested scanner = new ScanNested();
+        scanner.scan(env.tree);
+        for (Env<AttrContext> dep: scanner.dependencies) {
+            if (!compileStates.isDone(dep, CompileState.FLOW))
+                flow(attribute(dep));
+        }
 
         if (verboseCompilePolicy)
             log.printLines(log.noticeWriter, "[desugar " + env.enclClass.sym + "]");
@@ -1234,43 +1275,6 @@
 
     }
 
-    /**
-     * Determine if a class needs to be desugared later.  As erasure
-     * (TransTypes) destroys information needed in flow analysis, we
-     * need to ensure that supertypes are translated before derived
-     * types are translated.
-     */
-    public boolean desugarLater(final Env<AttrContext> env) {
-        if (compilePolicy == CompilePolicy.BY_FILE)
-            return false;
-        if (!devVerbose && deferredSugar.contains(env))
-            // guarantee that compiler terminates
-            return false;
-        class ScanNested extends TreeScanner {
-            Set<Symbol> externalSupers = new HashSet<Symbol>();
-            public void visitClassDef(JCClassDecl node) {
-                Type st = types.supertype(node.sym.type);
-                if (st.tag == TypeTags.CLASS) {
-                    ClassSymbol c = st.tsym.outermostClass();
-                    Env<AttrContext> stEnv = enter.getEnv(c);
-                    if (stEnv != null && env != stEnv)
-                        externalSupers.add(st.tsym);
-                }
-                super.visitClassDef(node);
-            }
-        }
-        ScanNested scanner = new ScanNested();
-        scanner.scan(env.tree);
-        if (scanner.externalSupers.isEmpty())
-            return false;
-        if (!deferredSugar.add(env) && devVerbose) {
-            throw new AssertionError(env.enclClass.sym + " was deferred, " +
-                                     "second time has these external super types " +
-                                     scanner.externalSupers);
-        }
-        return true;
-    }
-
     /** Generates the source or class file for a list of classes.
      * The decision to generate a source file or a class file is
      * based upon the compiler's options.
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/Keywords.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Keywords.java	Thu Aug 14 22:16:00 2008 -0700
@@ -91,34 +91,6 @@
      */
     private Name[] tokenName = new Name[Token.values().length];
 
-    public String token2string(Token token) {
-        switch (token) {
-        case IDENTIFIER:
-            return log.getLocalizedString("token.identifier");
-        case CHARLITERAL:
-            return log.getLocalizedString("token.character");
-        case STRINGLITERAL:
-            return log.getLocalizedString("token.string");
-        case INTLITERAL:
-            return log.getLocalizedString("token.integer");
-        case LONGLITERAL:
-            return log.getLocalizedString("token.long-integer");
-        case FLOATLITERAL:
-            return log.getLocalizedString("token.float");
-        case DOUBLELITERAL:
-            return log.getLocalizedString("token.double");
-        case ERROR:
-            return log.getLocalizedString("token.bad-symbol");
-        case EOF:
-            return log.getLocalizedString("token.end-of-input");
-        case DOT: case COMMA: case SEMI: case LPAREN: case RPAREN:
-        case LBRACKET: case RBRACKET: case LBRACE: case RBRACE:
-            return "'" + token.name + "'";
-        default:
-            return token.name;
-        }
-    }
-
     private void enterKeyword(String s, Token token) {
         Name n = names.fromString(s);
         tokenName[token.ordinal()] = n;
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/Parser.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Parser.java	Thu Aug 14 22:16:00 2008 -0700
@@ -272,13 +272,13 @@
         }
     }
 
-    private JCErroneous syntaxError(int pos, String key, Object... arg) {
-        return syntaxError(pos, null, key, arg);
+    private JCErroneous syntaxError(int pos, String key, Token... args) {
+        return syntaxError(pos, null, key, args);
     }
 
-    private JCErroneous syntaxError(int pos, List<JCTree> errs, String key, Object... arg) {
+    private JCErroneous syntaxError(int pos, List<JCTree> errs, String key, Token... args) {
         setErrorEndPos(pos);
-        reportSyntaxError(pos, key, arg);
+        reportSyntaxError(pos, key, (Object[])args);
         return toP(F.at(pos).Erroneous(errs));
     }
 
@@ -287,12 +287,12 @@
      * Report a syntax error at given position using the given
      * argument unless one was already reported at the same position.
      */
-    private void reportSyntaxError(int pos, String key, Object... arg) {
+    private void reportSyntaxError(int pos, String key, Object... args) {
         if (pos > S.errPos() || pos == Position.NOPOS) {
             if (S.token() == EOF)
                 log.error(pos, "premature.eof");
             else
-                log.error(pos, key, arg);
+                log.error(pos, key, args);
         }
         S.errPos(pos);
         if (S.pos() == errorPos)
@@ -311,7 +311,7 @@
     /** Generate a syntax error at current position unless one was
      *  already reported at the same position.
      */
-    private JCErroneous syntaxError(String key, String arg) {
+    private JCErroneous syntaxError(String key, Token arg) {
         return syntaxError(S.pos(), key, arg);
     }
 
@@ -323,7 +323,7 @@
             S.nextToken();
         } else {
             setErrorEndPos(S.pos());
-            reportSyntaxError(S.prevEndPos(), "expected", keywords.token2string(token));
+            reportSyntaxError(S.prevEndPos(), "expected", token);
         }
     }
 
@@ -349,7 +349,7 @@
         if (mods != 0) {
             long lowestMod = mods & -mods;
             log.error(S.pos(), "mod.not.allowed.here",
-                      Flags.toString(lowestMod).trim());
+                      Flags.asFlagSet(lowestMod));
         }
     }
 
@@ -1180,7 +1180,7 @@
             }
             accept(RPAREN);
         } else {
-            syntaxError(S.pos(), "expected", keywords.token2string(LPAREN));
+            syntaxError(S.pos(), "expected", LPAREN);
         }
         return args.toList();
     }
@@ -1253,7 +1253,7 @@
                 break;
             }
         } else {
-            syntaxError(S.pos(), "expected", keywords.token2string(LT));
+            syntaxError(S.pos(), "expected", LT);
         }
         return args.toList();
     }
@@ -1278,9 +1278,7 @@
         } else if (S.token() == IDENTIFIER) {
             //error recovery
             reportSyntaxError(S.prevEndPos(), "expected3",
-                    keywords.token2string(GT),
-                    keywords.token2string(EXTENDS),
-                    keywords.token2string(SUPER));
+                    GT, EXTENDS, SUPER);
             TypeBoundKind t = F.at(Position.NOPOS).TypeBoundKind(BoundKind.UNBOUND);
             JCExpression wc = toP(F.at(pos).Wildcard(t, null));
             JCIdent id = toP(F.at(S.pos()).Ident(ident()));
@@ -1392,8 +1390,7 @@
             return classCreatorRest(newpos, null, typeArgs, t);
         } else {
             reportSyntaxError(S.pos(), "expected2",
-                               keywords.token2string(LPAREN),
-                               keywords.token2string(LBRACKET));
+                               LPAREN, LBRACKET);
             t = toP(F.at(newpos).NewClass(null, typeArgs, t, List.<JCExpression>nil(), null));
             return toP(F.at(newpos).Erroneous(List.<JCTree>of(t)));
         }
@@ -1500,7 +1497,7 @@
         List<JCStatement> stats = blockStatements();
         JCBlock t = F.at(pos).Block(flags, stats);
         while (S.token() == CASE || S.token() == DEFAULT) {
-            syntaxError("orphaned", keywords.token2string(S.token()));
+            syntaxError("orphaned", S.token());
             switchBlockStatementGroups();
         }
         // the Block node has a field "endpos" for first char of last token, which is
@@ -1842,9 +1839,7 @@
             default:
                 S.nextToken(); // to ensure progress
                 syntaxError(pos, "expected3",
-                    keywords.token2string(CASE),
-                    keywords.token2string(DEFAULT),
-                    keywords.token2string(RBRACE));
+                    CASE, DEFAULT, RBRACE);
             }
         }
     }
@@ -2110,7 +2105,7 @@
             S.nextToken();
             init = variableInitializer();
         }
-        else if (reqInit) syntaxError(S.pos(), "expected", keywords.token2string(EQ));
+        else if (reqInit) syntaxError(S.pos(), "expected", EQ);
         JCVariableDecl result =
             toP(F.at(pos).VarDef(mods, name, type, init));
         attach(result, dc);
@@ -2241,9 +2236,7 @@
                     errs = List.<JCTree>of(mods);
                 }
                 return toP(F.Exec(syntaxError(pos, errs, "expected3",
-                                              keywords.token2string(CLASS),
-                                              keywords.token2string(INTERFACE),
-                                              keywords.token2string(ENUM))));
+                                              CLASS, INTERFACE, ENUM)));
             }
         } else {
             if (S.token() == ENUM) {
@@ -2260,8 +2253,7 @@
                 errs = List.<JCTree>of(mods);
             }
             return toP(F.Exec(syntaxError(pos, errs, "expected2",
-                                          keywords.token2string(CLASS),
-                                          keywords.token2string(INTERFACE))));
+                                          CLASS, INTERFACE)));
         }
     }
 
@@ -2360,9 +2352,7 @@
             }
             if (S.token() != SEMI && S.token() != RBRACE) {
                 defs.append(syntaxError(S.pos(), "expected3",
-                                keywords.token2string(COMMA),
-                                keywords.token2string(RBRACE),
-                                keywords.token2string(SEMI)));
+                                COMMA, RBRACE, SEMI));
                 S.nextToken();
             }
         }
@@ -2531,7 +2521,7 @@
                             ? List.<JCTree>of(toP(F.at(pos).MethodDef(mods, name, type, typarams,
                                 List.<JCVariableDecl>nil(), List.<JCExpression>nil(), null, null)))
                             : null;
-                        return List.<JCTree>of(syntaxError(S.pos(), err, "expected", keywords.token2string(LPAREN)));
+                        return List.<JCTree>of(syntaxError(S.pos(), err, "expected", LPAREN));
                     }
                 }
             }
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/Token.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Token.java	Thu Aug 14 22:16:00 2008 -0700
@@ -25,6 +25,9 @@
 
 package com.sun.tools.javac.parser;
 
+import java.util.ResourceBundle;
+
+import com.sun.tools.javac.api.Formattable;
 
 /** An interface that defines codes for Java source tokens
  *  returned from lexical analysis.
@@ -34,7 +37,7 @@
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
-public enum Token {
+public enum Token implements Formattable {
     EOF,
     ERROR,
     IDENTIFIER,
@@ -155,4 +158,41 @@
     }
 
     public final String name;
+
+    public String toString() {
+        switch (this) {
+        case IDENTIFIER:
+            return "token.identifier";
+        case CHARLITERAL:
+            return "token.character";
+        case STRINGLITERAL:
+            return "token.string";
+        case INTLITERAL:
+            return "token.integer";
+        case LONGLITERAL:
+            return "token.long-integer";
+        case FLOATLITERAL:
+            return "token.float";
+        case DOUBLELITERAL:
+            return "token.double";
+        case ERROR:
+            return "token.bad-symbol";
+        case EOF:
+            return "token.end-of-input";
+        case DOT: case COMMA: case SEMI: case LPAREN: case RPAREN:
+        case LBRACKET: case RBRACKET: case LBRACE: case RBRACE:
+            return "'" + name + "'";
+        default:
+            return name;
+        }
+    }
+
+    public String getKind() {
+        return "Token";
+    }
+
+    public String toString(ResourceBundle bundle) {
+        String s = toString();
+        return s.startsWith("token.") ? bundle.getString("compiler.misc." + s) : s;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Thu Aug 14 22:16:00 2008 -0700
@@ -81,9 +81,14 @@
 compiler.err.call.must.be.first.stmt.in.ctor=\
     call to {0} must be first statement in constructor
 compiler.err.cant.apply.symbol=\
-    {0} in {1} cannot be applied to {2}({3})
-compiler.err.cant.apply.symbol.1=\
-    {0} in {1} cannot be applied to {2}({3}); {4}
+    {0} {1} in {4} {5} cannot be applied to given types\n\
+    required: {2}\n\
+    found: {3}
+ compiler.err.cant.apply.symbol.1=\
+    {0} {1} in {4} {5} cannot be applied to given types;\n\
+    required: {2}\n\
+    found: {3}\n\
+    reason: {6}
 compiler.err.cant.assign.val.to.final.var=\
     cannot assign a value to final variable {0}
 compiler.err.cant.deref=\
@@ -940,7 +945,7 @@
 compiler.misc.type.req.exact=\
     class or interface without bounds
 compiler.misc.type.parameter=\
-    type parameter {0} 
+    type parameter {0}
 
 #####
 
@@ -980,16 +985,39 @@
 required: {0}\n\
 found   : {1}
 
-## The first argument ({0}) is a "kindname".
+## The first argument {0} is a "kindname" (e.g. 'constructor', 'field', etc.)
+## The second argument {1} is the non-resolved symbol
+## The third argument {2} is a list of type parameters (non-empty if {1} is a method)
+## The fourth argument {3} is a list of argument types (non-empty if {1} is a method)
 compiler.err.cant.resolve=\
-cannot find symbol\n\
-symbol: {0} {3}{1}{2}
+    cannot find symbol\n\
+    symbol: {0} {1}
+
+compiler.err.cant.resolve.args=\
+    cannot find symbol\n\
+    symbol: {0} {1}({3})
+
+compiler.err.cant.resolve.args.params=\
+    cannot find symbol\n\
+    symbol: {0} <{2}>{1}({3})
 
-## The first argument ({0}) and fifth argument ({4}) are "kindname"s.
+## arguments from {0} to {3} have the same meaning as above
+## The fifth argument {4} is the location "kindname" (e.g. 'constructor', 'field', etc.)
+## The sixth argument {5} is the location type
 compiler.err.cant.resolve.location=\
-cannot find symbol\n\
-symbol  : {0} {3}{1}{2}\n\
-location: {4} {5}
+    cannot find symbol\n\
+    symbol  : {0} {1}\n\
+    location: {4} {5}
+
+compiler.err.cant.resolve.location.args=\
+    cannot find symbol\n\
+    symbol  : {0} {1}({3})\n\
+    location: {4} {5}
+
+compiler.err.cant.resolve.location.args.params=\
+    cannot find symbol\n\
+    symbol  : {0} <{2}>{1}({3})\n\
+    location: {4} {5}
 
 ## The following are all possible string for "kindname".
 ## They should be called whatever the JLS calls them after it been translated
@@ -1008,55 +1036,16 @@
     type variable
 compiler.misc.kindname.type.variable.bound=\
     bound of type variable
-compiler.misc.kindname=\
-    identifier({0})
 compiler.misc.kindname.variable=\
     variable
 compiler.misc.kindname.value=\
     value
 compiler.misc.kindname.method=\
     method
-compiler.misc.kindname.variable.method=\
-    variable, method
-compiler.misc.kindname.value.method=\
-    value, method
 compiler.misc.kindname.class=\
     class
-compiler.misc.kindname.variable.class=\
-    variable, class
-compiler.misc.kindname.value.class=\
-    value, class
-compiler.misc.kindname.method.class=\
-    method, class
-compiler.misc.kindname.variable.method.class=\
-    variable, method, class
-compiler.misc.kindname.value.method.class=\
-    value, method, class
 compiler.misc.kindname.package=\
     package
-compiler.misc.kindname.variable.package=\
-    variable, package
-compiler.misc.kindname.value.package=\
-    value, package
-compiler.misc.kindname.method.package=\
-    method, package
-compiler.misc.kindname.variable.method.package=\
-    variable, method, package
-compiler.misc.kindname.value.method.package=\
-    value, method, package
-compiler.misc.kindname.class.package=\
-    class, package
-compiler.misc.kindname.variable.class.package=\
-    variable, class, package
-compiler.misc.kindname.value.class.package=\
-    value, class, package
-compiler.misc.kindname.method.class.package=\
-    method, class, package
-compiler.misc.kindname.variable.method.class.package=\
-    variable, method, class, package
-compiler.misc.kindname.value.method.class.package=\
-    value, method, class, package
-
 #####
 
 compiler.err.override.static=\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2008 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.
+ */
+package com.sun.tools.javac.util;
+
+import java.util.Collection;
+import java.util.Locale;
+import javax.tools.JavaFileObject;
+
+import com.sun.tools.javac.api.DiagnosticFormatter;
+import com.sun.tools.javac.api.Formattable;
+import com.sun.tools.javac.api.DiagnosticFormatter.PositionKind;
+import com.sun.tools.javac.file.JavacFileManager;
+
+/**
+ * This abstract class provides a basic implementation of the functionalities that should be provided
+ * by any formatter used by javac. Among the main features provided by AbstractDiagnosticFormatter are:
+ *
+ * <ul>
+ *  <li> Provides a standard implementation of the visitor-like methods defined in the interface DiagnisticFormatter.
+ *  Those implementations are specifically targeting JCDiagnostic objects.
+ *  <li> Provides basic support for i18n and a method for executing all locale-dependent conversions
+ *  <li> Provides the formatting logic for rendering the arguments of a JCDiagnostic object.
+ * <ul>
+ *
+ */
+public abstract class AbstractDiagnosticFormatter implements DiagnosticFormatter<JCDiagnostic> {
+
+    /**
+     * Messages object used by this formatter for i18n
+     */
+    protected Messages messages;
+
+    /**
+     * Initialize an AbstractDiagnosticFormatter by setting its Messages object
+     * @param messages
+     */
+    protected AbstractDiagnosticFormatter(Messages messages) {
+        this.messages = messages;
+    }
+
+    public String formatMessage(JCDiagnostic d, Locale l) {
+        //this code should rely on the locale settings but it's not! See RFE 6443132
+        Collection<String> args = formatArguments(d, l);
+        return localize(l, d.getCode(), args.toArray());
+    }
+
+    public String formatKind(JCDiagnostic d, Locale l) {
+        switch (d.getType()) {
+            case FRAGMENT: return "";
+            case NOTE:     return localize(l, "compiler.note.note");
+            case WARNING:  return localize(l, "compiler.warn.warning");
+            case ERROR:    return localize(l, "compiler.err.error");
+            default:
+                throw new AssertionError("Unknown diagnostic type: " + d.getType());
+        }
+    }
+
+    public String formatPosition(JCDiagnostic d, PositionKind pk,Locale l) {
+        assert (d.getPosition() != Position.NOPOS);
+        return String.valueOf(getPosition(d, pk));
+    }
+    //WHERE
+    public long getPosition(JCDiagnostic d, PositionKind pk) {
+        switch (pk) {
+            case START: return d.getIntStartPosition();
+            case END: return d.getIntEndPosition();
+            case LINE: return d.getLineNumber();
+            case COLUMN: return d.getColumnNumber();
+            case OFFSET: return d.getIntPosition();
+            default:
+                throw new AssertionError("Unknown diagnostic position: " + pk);
+        }
+    }
+
+    public String formatSource(JCDiagnostic d,Locale l) {
+        assert (d.getSource() != null);
+        return d.getSource().getName();
+    }
+
+    /**
+     * Format the arguments of a given diagnostic.
+     *
+     * @param d diagnostic whose arguments are to be formatted
+     * @param l locale object to be used for i18n
+     * @return a Collection whose elements are the formatted arguments of the diagnostic
+     */
+    protected Collection<String> formatArguments(JCDiagnostic d, Locale l) {
+        ListBuffer<String> buf = new ListBuffer<String>();
+        for (Object o : d.getArgs()) {
+           buf.append(formatArgument(d, o, l));
+        }
+        return buf.toList();
+    }
+
+    /**
+     * Format a single argument of a given diagnostic.
+     *
+     * @param d diagnostic whose argument is to be formatted
+     * @param arg argument to be formatted
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic argument
+     */
+    protected String formatArgument(JCDiagnostic d, Object arg, Locale l) {
+        if (arg instanceof JCDiagnostic)
+            return format((JCDiagnostic)arg, l);
+        else if (arg instanceof Iterable<?>) {
+            return formatIterable(d, (Iterable<?>)arg, l);
+        }
+        else if (arg instanceof JavaFileObject)
+            return JavacFileManager.getJavacBaseFileName((JavaFileObject)arg);
+        else if (arg instanceof Formattable)
+            return ((Formattable)arg).toString(Messages.getDefaultBundle());
+        else
+            return String.valueOf(arg);
+    }
+
+    /**
+     * Format an iterable argument of a given diagnostic.
+     *
+     * @param d diagnostic whose argument is to be formatted
+     * @param it iterable argument to be formatted
+     * @param l locale object to be used for i18n
+     * @return string representation of the diagnostic iterable argument
+     */
+    protected String formatIterable(JCDiagnostic d, Iterable<?> it, Locale l) {
+        StringBuilder sbuf = new StringBuilder();
+        String sep = "";
+        for (Object o : it) {
+            sbuf.append(sep);
+            sbuf.append(formatArgument(d, o, l));
+            sep = ",";
+        }
+        return sbuf.toString();
+    }
+
+    /**
+     * Converts a String into a locale-dependent representation accordingly to a given locale
+     *
+     * @param l locale object to be used for i18n
+     * @param key locale-independent key used for looking up in a resource file
+     * @param args localization arguments
+     * @return a locale-dependent string
+     */
+    protected String localize(Locale l, String key, Object... args) {
+        return messages.getLocalizedString(key, args);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2005-2008 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.
+ */
+
+package com.sun.tools.javac.util;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import javax.tools.JavaFileObject;
+
+import static com.sun.tools.javac.util.BasicDiagnosticFormatter.BasicFormatKind.*;
+import static com.sun.tools.javac.api.DiagnosticFormatter.PositionKind.*;
+
+/**
+ * A basic formatter for diagnostic messages.
+ * The basic formatter will format a diagnostic according to one of three format patterns, depending on whether
+ * or not the source name and position are set. The formatter supports a printf-like string for patterns
+ * with the following special characters:
+ * <ul>
+ * <li>%b: the base of the source name
+ * <li>%f: the source name (full absolute path)
+ * <li>%l: the line number of the diagnostic, derived from the character offset
+ * <li>%c: the column number of the diagnostic, derived from the character offset
+ * <li>%o: the character offset of the diagnostic if set
+ * <li>%p: the prefix for the diagnostic, derived from the diagnostic type
+ * <li>%t: the prefix as it normally appears in standard diagnostics. In this case, no prefix is
+ *        shown if the type is ERROR and if a source name is set
+ * <li>%m: the text or the diagnostic, including any appropriate arguments
+ * <li>%_: space delimiter, useful for formatting purposes
+ * </ul>
+ */
+public class BasicDiagnosticFormatter extends AbstractDiagnosticFormatter {
+
+    protected Map<BasicFormatKind, String> availableFormats;
+
+    /**
+     * Create a basic formatter based on the supplied options.
+     *
+     * @param opts list of command-line options
+     * @param msgs Messages object used for i18n
+     */
+    BasicDiagnosticFormatter(Options opts, Messages msgs) {
+        this(msgs); //common init
+        String fmt = opts.get("diags");
+        if (fmt != null) {
+            String[] formats = fmt.split("\\|");
+            switch (formats.length) {
+                case 3:
+                    availableFormats.put(DEFAULT_CLASS_FORMAT, formats[2]);
+                case 2:
+                    availableFormats.put(DEFAULT_NO_POS_FORMAT, formats[1]);
+                default:
+                    availableFormats.put(DEFAULT_POS_FORMAT, formats[0]);
+            }
+        }
+    }
+
+    /**
+     * Create a standard basic formatter
+     *
+     * @param msgs Messages object used for i18n
+     */
+    public BasicDiagnosticFormatter(Messages msgs) {
+        super(msgs);
+        availableFormats = new HashMap<BasicFormatKind, String>();
+        availableFormats.put(DEFAULT_POS_FORMAT, "%f:%l:%_%t%m");
+        availableFormats.put(DEFAULT_NO_POS_FORMAT, "%p%m");
+        availableFormats.put(DEFAULT_CLASS_FORMAT, "%f:%_%t%m");
+    }
+
+    public String format(JCDiagnostic d, Locale l) {
+        String format = selectFormat(d);
+        StringBuilder buf = new StringBuilder();
+        for (int i = 0; i < format.length(); i++) {
+            char c = format.charAt(i);
+            boolean meta = false;
+            if (c == '%' && i < format.length() - 1) {
+                meta = true;
+                c = format.charAt(++i);
+            }
+            buf.append(meta ? formatMeta(c, d, l) : String.valueOf(c));
+        }
+        return buf.toString();
+    }
+
+    protected String formatMeta(char c, JCDiagnostic d, Locale l) {
+        switch (c) {
+            case 'b':
+                return formatSource(d, l);
+            case 'e':
+                return formatPosition(d, END, l);
+            case 'f':
+                return formatSource(d, l);
+            case 'l':
+                return formatPosition(d, LINE, l);
+            case 'c':
+                return formatPosition(d, COLUMN, l);
+            case 'o':
+                return formatPosition(d, OFFSET, l);
+            case 'p':
+                return formatKind(d, l);
+            case 's':
+                return formatPosition(d, START, l);
+            case 't': {
+                boolean usePrefix;
+                switch (d.getType()) {
+                case FRAGMENT:
+                    usePrefix = false;
+                    break;
+                case ERROR:
+                    usePrefix = (d.getIntPosition() == Position.NOPOS);
+                    break;
+                default:
+                    usePrefix = true;
+                }
+                if (usePrefix)
+                    return formatKind(d, l);
+                else
+                    return "";
+            }
+            case 'm':
+                return formatMessage(d, l);
+            case '_':
+                return " ";
+            case '%':
+                return "%";
+            default:
+                return String.valueOf(c);
+        }
+    }
+
+    private String selectFormat(JCDiagnostic d) {
+        DiagnosticSource source = d.getDiagnosticSource();
+        String format = availableFormats.get(DEFAULT_NO_POS_FORMAT);
+        if (source != null) {
+            if (d.getIntPosition() != Position.NOPOS) {
+                format = availableFormats.get(DEFAULT_POS_FORMAT);
+            } else if (source.getFile() != null &&
+                       source.getFile().getKind() == JavaFileObject.Kind.CLASS) {
+                format = availableFormats.get(DEFAULT_CLASS_FORMAT);
+            }
+        }
+        return format;
+    }
+
+    public boolean displaySource(JCDiagnostic d) {
+        return true;
+    }
+
+    /**
+     * This enum contains all the kinds of formatting patterns supported
+     * by a basic diagnostic formatter.
+     */
+    public enum BasicFormatKind {
+        /**
+        * A format string to be used for diagnostics with a given position.
+        */
+        DEFAULT_POS_FORMAT,
+        /**
+        * A format string to be used for diagnostics without a given position.
+        */
+        DEFAULT_NO_POS_FORMAT,
+        /**
+        * A format string to be used for diagnostics regarding classfiles
+        */
+        DEFAULT_CLASS_FORMAT;
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/*
- * Copyright 2005-2008 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.
- */
-
-package com.sun.tools.javac.util;
-
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
-
-/**
- * A formatter for diagnostic messages.
- * The formatter will format a diagnostic according to one of two format strings, depending on whether
- * or not the source name and position are set. The format is a printf-like string,
- * with the following special characters:
- * <ul>
- * <li>%b: the base of the source name, or "-" if not set
- * <li>%f: the source name, or "-" if not set
- * <li>%l: the line number of the diagnostic, derived from the character offset if set, or "-" otherwise
- * <li>%c: the column number of the diagnostic, derived from the character offset if set, or "-" otherwise
- * <li>%o: the character offset of the diagnostic if set, or "-" otherwise
- * <li>%p: the prefix for the diagnostic, derived from the diagnostic type
- * <li>%t: the prefix as it normally appears in standard diagnostics. In this case, no prefix is
- *        shown if the type is ERROR and if a source name is set
- * <li>%m: the text or the diagnostic, including any appropriate arguments
- * </ul>
- */
-public class DiagnosticFormatter {
-    /**
-     * A format string to be used for diagnostics with a given position.
-     */
-    protected String posFormat;
-
-    /**
-     * A format string to be used for diagnostics regarding classfiles
-     */
-    protected String classFormat = DEFAULT_CLASS_FORMAT;
-
-    /**
-     * A format string to be used for diagnostics without a given position.
-     */
-    protected String noPosFormat;
-
-    /**
-     * A value to indicate whether to output the i18n key and args, instead of
-     * the derived l10n message.
-     */
-    protected boolean raw;
-
-    /** The context key for the formatter. */
-    protected static final Context.Key<DiagnosticFormatter> formatterKey =
-        new Context.Key<DiagnosticFormatter>();
-
-    /** Get the DiagnosticFormatter instance for this context. */
-    public static DiagnosticFormatter instance(Context context) {
-        DiagnosticFormatter instance = context.get(formatterKey);
-        if (instance == null)
-            instance = new DiagnosticFormatter(context);
-        return instance;
-    }
-
-    /**
-     * Create a formatter based on the supplied options.
-     */
-    protected DiagnosticFormatter(Context context) {
-        Options options = Options.instance(context);
-        raw = options.get("rawDiagnostics") != null;
-        String fmt = options.get("diags");
-        if (fmt != null) {
-            int sep = fmt.indexOf('|');
-            if (sep == -1)
-                posFormat = noPosFormat = fmt;
-            else {
-                posFormat = fmt.substring(0, sep);
-                noPosFormat = fmt.substring(sep + 1);
-            }
-        }
-        else {
-            posFormat = DEFAULT_POS_FORMAT;
-            noPosFormat = DEFAULT_NO_POS_FORMAT;
-        }
-    }
-
-    public static final String DEFAULT_POS_FORMAT = "%f:%l: %t%m";
-    public static final String DEFAULT_CLASS_FORMAT = "%f: %t%m";
-    public static final String DEFAULT_NO_POS_FORMAT = "%p%m";
-
-    public DiagnosticFormatter() {
-        posFormat = DEFAULT_POS_FORMAT;
-        noPosFormat = DEFAULT_NO_POS_FORMAT;
-        raw = false;
-    }
-
-    public DiagnosticFormatter(String pos, String noPos) {
-        posFormat = pos;
-        noPosFormat = noPos;
-        raw = false;
-    }
-
-    String format(JCDiagnostic d) {
-        return (raw ? format_raw(d) : format_std(d));
-    }
-
-    private String format_raw(JCDiagnostic d) {
-        DiagnosticSource source = d.getDiagnosticSource();
-        int position = d.getIntPosition();
-
-        StringBuilder sb = new StringBuilder();
-        if (position == Position.NOPOS)
-            sb.append("-");
-        else {
-            sb.append(source.getName() + ":" + source.getLineNumber(position) + ":" + source.getColumnNumber(position) + ":");
-        }
-        sb.append(" ");
-        sb.append(d.getCode());
-        String sep = ": ";
-        for (Object arg: d.getArgs()) {
-            sb.append(sep);
-            if (arg instanceof JCDiagnostic) {
-                sb.append('(');
-                sb.append(format_raw((JCDiagnostic) arg));
-                sb.append(')');
-            }
-            else if (arg instanceof JavaFileObject)
-                sb.append(JavacFileManager.getJavacBaseFileName((JavaFileObject) arg));
-            else
-                sb.append(arg);
-            sep = ", ";
-        }
-        return sb.toString();
-    }
-
-    private String format_std(JCDiagnostic d) {
-        DiagnosticSource source = d.getDiagnosticSource();
-        DiagnosticType type = d.getType();
-        int position = d.getIntPosition();
-
-
-        String format = noPosFormat;
-        if (source != null) {
-            if (position != Position.NOPOS) {
-                format = posFormat;
-            } else if (source.getFile() != null &&
-                       source.getFile().getKind() == JavaFileObject.Kind.CLASS) {
-                format = classFormat;
-            }
-        }
-
-        StringBuilder sb = new StringBuilder();
-
-        for (int i = 0; i < format.length(); i++) {
-            char c = format.charAt(i);
-            if (c == '%' && i < format.length() - 1) {
-                c = format.charAt(++i);
-                switch (c) {
-                case 'b':
-                    sb.append(source == null ? "-" : source.getName());
-                    break;
-
-                case 'e':
-                    sb.append(position == Position.NOPOS ? "-" : String.valueOf(d.getEndPosition()));
-                    break;
-
-                case 'f':
-                    sb.append(source == null ? "-" : d.getSourceName());
-                    break;
-
-                case 'l':
-                    sb.append(position == Position.NOPOS ? "-" : String.valueOf(d.getLineNumber()));
-                    break;
-
-                case 'c':
-                    sb.append(position == Position.NOPOS ? "-" : String.valueOf(d.getColumnNumber()));
-                    break;
-
-                case 'o':
-                    sb.append(position == Position.NOPOS ? "-" : String.valueOf(position));
-                    break;
-
-                case 'p':
-                    sb.append(d.getPrefix());
-                    break;
-
-                case 's':
-                    sb.append(position == Position.NOPOS ? "-" : String.valueOf(d.getStartPosition()));
-                    break;
-
-                case 't': {
-                    boolean usePrefix;
-                    switch (type) {
-                    case FRAGMENT:
-                        usePrefix = false;
-                        break;
-
-                    case ERROR:
-                        usePrefix = (position == Position.NOPOS);
-                        break;
-
-                    default:
-                        usePrefix = true;
-                    }
-
-                    if (usePrefix)
-                        sb.append(d.getPrefix());
-                    break;
-                }
-
-                case 'm':
-                    sb.append(d.getMessage(null));
-                    break;
-
-                case '_':
-                    sb.append(' ');
-                    break;
-
-                case '%':
-                    sb.append('%');
-                    break;
-
-                default:
-                    sb.append(c);
-                    break;
-                }
-            }
-            else
-                sb.append(c);
-        }
-        return sb.toString();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Thu Aug 14 22:16:00 2008 -0700
@@ -31,6 +31,7 @@
 import javax.tools.Diagnostic;
 import javax.tools.JavaFileObject;
 
+import com.sun.tools.javac.api.DiagnosticFormatter;
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.tree.JCTree;
 
@@ -253,7 +254,7 @@
     private final int line;
     private final int column;
     private final String key;
-    private final Object[] args;
+    protected Object[] args;
     private boolean mandatory;
 
     /**
@@ -397,46 +398,25 @@
      * @return the prefix string associated with a particular type of diagnostic
      */
     public String getPrefix(DiagnosticType dt) {
-        switch (dt) {
-        case FRAGMENT: return "";
-        case NOTE:     return getLocalizedString("compiler.note.note");
-        case WARNING:  return getLocalizedString("compiler.warn.warning");
-        case ERROR:    return getLocalizedString("compiler.err.error");
-        default:
-            throw new AssertionError("Unknown diagnostic type: " + dt);
+        return getFormatter().formatKind(this, Locale.getDefault());
+    }
+
+     private DiagnosticFormatter<JCDiagnostic> getFormatter() {
+        if (defaultFormatter == null) {
+            defaultFormatter = new BasicDiagnosticFormatter(messages);
         }
+        return defaultFormatter;
     }
 
+
     /**
      * Return the standard presentation of this diagnostic.
      */
     public String toString() {
-        if (defaultFormatter == null) {
-            defaultFormatter =
-                new DiagnosticFormatter();
-        }
-        return defaultFormatter.format(this);
+        return getFormatter().format(this,Locale.getDefault());
     }
 
-    private static DiagnosticFormatter defaultFormatter;
-
-    private static final String messageBundleName =
-        "com.sun.tools.javac.resources.compiler";
-
-    private String getLocalizedString(String key, Object... args) {
-        String[] strings = new String[args.length];
-        for (int i = 0; i < strings.length; i++) {
-            Object arg = args[i];
-            if (arg == null)
-                strings[i] = null;
-            else if (arg instanceof JCDiagnostic)
-                strings[i] = ((JCDiagnostic) arg).getMessage(null);
-            else
-                strings[i] = arg.toString();
-        }
-
-        return messages.getLocalizedString(key, (Object[]) strings);
-    }
+    private static DiagnosticFormatter<JCDiagnostic> defaultFormatter;
 
     // Methods for javax.tools.Diagnostic
 
@@ -460,7 +440,6 @@
 
     public String getMessage(Locale locale) {
         // RFE 6406133: JCDiagnostic.getMessage ignores locale argument
-        return getLocalizedString(key, args);
+        return getFormatter().formatMessage(this, locale);
     }
-
 }
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Thu Aug 14 22:16:00 2008 -0700
@@ -29,11 +29,13 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.Locale;
 import javax.tools.DiagnosticListener;
 import javax.tools.JavaFileObject;
 
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.api.DiagnosticFormatter;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
 
@@ -68,10 +70,6 @@
     public final int MaxErrors;
     public final int MaxWarnings;
 
-    /** Whether or not to display the line of source containing a diagnostic.
-     */
-    private final boolean showSourceLine;
-
     /** Switch: prompt user on each error.
      */
     public boolean promptOnError;
@@ -97,7 +95,7 @@
     /**
      * Formatter for diagnostics
      */
-    private DiagnosticFormatter diagFormatter;
+    private DiagnosticFormatter<JCDiagnostic> diagFormatter;
 
     /** Construct a log with given I/O redirections.
      */
@@ -115,9 +113,11 @@
         this.emitWarnings = options.get("-Xlint:none") == null;
         this.MaxErrors = getIntOption(options, "-Xmaxerrs", 100);
         this.MaxWarnings = getIntOption(options, "-Xmaxwarns", 100);
-        this.showSourceLine = options.get("rawDiagnostics") == null;
 
-        this.diagFormatter = DiagnosticFormatter.instance(context);
+        boolean rawDiagnostics = options.get("rawDiagnostics") != null;
+        Messages msgs = Messages.instance(context);
+        this.diagFormatter = rawDiagnostics ? new RawDiagnosticFormatter(msgs) :
+                                              new BasicDiagnosticFormatter(options, msgs);
         @SuppressWarnings("unchecked") // FIXME
         DiagnosticListener<? super JavaFileObject> diagListener =
             context.get(DiagnosticListener.class);
@@ -335,8 +335,8 @@
 
         PrintWriter writer = getWriterForDiagnosticType(diag.getType());
 
-        printLines(writer, diagFormatter.format(diag));
-        if (showSourceLine) {
+        printLines(writer, diagFormatter.format(diag, Locale.getDefault()));
+        if (diagFormatter.displaySource(diag)) {
             int pos = diag.getIntPosition();
             if (pos != Position.NOPOS) {
                 JavaFileObject prev = useSource(diag.getSource());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/RawDiagnosticFormatter.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2008 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.
+ */
+package com.sun.tools.javac.util;
+
+import java.util.Locale;
+
+import com.sun.tools.javac.api.Formattable;
+import static com.sun.tools.javac.api.DiagnosticFormatter.PositionKind.*;
+
+/**
+ * A raw formatter for diagnostic messages.
+ * The raw formatter will format a diagnostic according to one of two format patterns, depending on whether
+ * or not the source name and position are set. This formatter provides a standardized, localize-independent
+ * implementation of a diagnostic formatter; as such, this formatter is best suited for testing purposes.
+ */
+public class RawDiagnosticFormatter extends AbstractDiagnosticFormatter {
+
+    /**
+     * Create a formatter based on the supplied options.
+     * @param msgs
+     */
+    public RawDiagnosticFormatter(Messages msgs) {
+        super(null);
+    }
+
+    //provide common default formats
+    public String format(JCDiagnostic d, Locale l) {
+        try {
+            StringBuffer buf = new StringBuffer();
+            if (d.getPosition() != Position.NOPOS) {
+                buf.append(formatSource(d, null));
+                buf.append(':');
+                buf.append(formatPosition(d, LINE, null));
+                buf.append(':');
+                buf.append(formatPosition(d, COLUMN, null));
+                buf.append(':');
+            }
+            else
+                buf.append('-');
+            buf.append(' ');
+            buf.append(formatMessage(d, null));
+            return buf.toString();
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @Override
+    public String formatSource(JCDiagnostic d,Locale l) {
+        assert(d.getSource() != null);
+        return d.getSource().getName();
+    }
+
+    @Override
+    protected String formatArgument(JCDiagnostic diag, Object arg, Locale l) {
+        String s;
+        if (arg instanceof Formattable)
+            s = arg.toString();
+        else
+            s = super.formatArgument(diag, arg, null);
+        if (arg instanceof JCDiagnostic)
+            return "(" + s + ")";
+        else
+            return s;
+    }
+
+    @Override
+    protected String localize(Locale l, String s, Object... args) {
+        StringBuffer buf = new StringBuffer();
+        buf.append(s);
+        String sep = ": ";
+        for (Object o : args) {
+            buf.append(sep);
+            buf.append(o);
+            sep = ", ";
+        }
+        return buf.toString();
+    }
+
+    public boolean displaySource(JCDiagnostic d) {
+        return false;
+    }
+}
--- a/langtools/test/tools/javac/5045412/out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/5045412/out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-Bar.java:13:29: compiler.err.cant.resolve.location: (- compiler.misc.kindname.class), Serializable, , , (- compiler.misc.kindname.package), java.io
+Bar.java:13:29: compiler.err.cant.resolve.location: kindname.class, Serializable, , , kindname.package, java.io
 1 error
--- a/langtools/test/tools/javac/6199662/Tree.java	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/6199662/Tree.java	Thu Aug 14 22:16:00 2008 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 6199662 6325201
+ * @bug 6199662 6325201 6726015
  * @summary javac: compilation success depends on compilation order
  *
  * @compile Tree.java TreeScanner.java TreeInfo.java
--- a/langtools/test/tools/javac/6330920/T6330920.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/6330920/T6330920.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-T6330920.java:11:22: compiler.err.cant.resolve.location: (- compiler.misc.kindname.class), T6330920Missing, , , (- compiler.misc.kindname.class), T6330920
+T6330920.java:11:22: compiler.err.cant.resolve.location: kindname.class, T6330920Missing, , , kindname.class, T6330920
 1 error
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/6717241/T6717241a.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug     6717241
+ * @summary some diagnostic argument is prematurely converted into a String object
+ * @author  Maurizio Cimadamore
+ * @compile/fail/ref=T6717241a.out -XDstdout -XDrawDiagnostics T6717241a.java
+ */
+
+class T6717241a<X extends Object & java.io.Serializable> {
+    X x;
+    void test() {
+        //this will generate a 'cant.resolve'
+        Object o = x.v;
+        //this will generate a 'cant.resolve.args'
+        x.m1(1, "");
+        //this will generate a 'cant.resolve.args.params'
+        x.<Integer,Double>m2(1, "");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/6717241/T6717241a.out	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,4 @@
+T6717241a.java:36:21: compiler.err.cant.resolve: kindname.variable, v, , 
+T6717241a.java:38:10: compiler.err.cant.resolve.args: kindname.method, m1, , int,java.lang.String
+T6717241a.java:40:10: compiler.err.cant.resolve.args.params: kindname.method, m2, java.lang.Integer,java.lang.Double, int,java.lang.String
+3 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/6717241/T6717241b.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug     6717241
+ * @summary some diagnostic argument is prematurely converted into a String object
+ * @author  Maurizio Cimadamore
+ * @compile/fail/ref=T6717241b.out -XDstdout -XDrawDiagnostics T6717241b.java
+ */
+
+class T6717241b {
+    void test() {
+        //this will generate a 'cant.resolve.location'
+        Object o = v;
+        //this will generate a 'cant.resolve.location.args'
+        m1(1, "");
+        //this will generate a 'cant.resolve.location.args.params'
+        T6717241b.<Integer,Double>m2(1, "");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/6717241/T6717241b.out	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,4 @@
+T6717241b.java:35:20: compiler.err.cant.resolve.location: kindname.variable, v, , , kindname.class, T6717241b
+T6717241b.java:37:9: compiler.err.cant.resolve.location.args: kindname.method, m1, , int,java.lang.String, kindname.class, T6717241b
+T6717241b.java:39:18: compiler.err.cant.resolve.location.args.params: kindname.method, m2, java.lang.Integer,java.lang.Double, int,java.lang.String, kindname.class, T6717241b
+3 errors
--- a/langtools/test/tools/javac/ExtendsAccess/ExtendsAccess.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/ExtendsAccess/ExtendsAccess.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,7 +1,7 @@
-ExtendsAccess.java:31:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), publicClass, , 
-ExtendsAccess.java:32:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), defaultClass, , 
-ExtendsAccess.java:33:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), protectedClass, , 
-ExtendsAccess.java:34:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), privateClass, , 
+ExtendsAccess.java:31:32: compiler.err.cant.resolve: kindname.class, publicClass, , 
+ExtendsAccess.java:32:32: compiler.err.cant.resolve: kindname.class, defaultClass, , 
+ExtendsAccess.java:33:32: compiler.err.cant.resolve: kindname.class, protectedClass, , 
+ExtendsAccess.java:34:32: compiler.err.cant.resolve: kindname.class, privateClass, , 
 ExtendsAccess.java:39:46: compiler.err.report.access: ExtendsAccess.privateClass, private, ExtendsAccess
 ExtendsAccess.java:42:48: compiler.err.not.def.public.cant.access: p.ExtendsAccess.defaultClass, p.ExtendsAccess
 ExtendsAccess.java:43:48: compiler.err.report.access: p.ExtendsAccess.protectedClass, protected, p.ExtendsAccess
@@ -12,10 +12,10 @@
 ExtendsAccess.java:85:34: compiler.err.report.access: ExtendsAccess.privateClass, private, ExtendsAccess
 ExtendsAccess.java:92:36: compiler.err.not.def.public.cant.access: p.ExtendsAccess.defaultClass, p.ExtendsAccess
 ExtendsAccess.java:101:36: compiler.err.report.access: p.ExtendsAccess.privateClass, private, p.ExtendsAccess
-ExtendsAccess.java:104:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), publicStaticClass, , 
-ExtendsAccess.java:105:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), defaultStaticClass, , 
-ExtendsAccess.java:106:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), protectedStaticClass, , 
-ExtendsAccess.java:107:32: compiler.err.cant.resolve: (- compiler.misc.kindname.class), privateStaticClass, , 
+ExtendsAccess.java:104:32: compiler.err.cant.resolve: kindname.class, publicStaticClass, , 
+ExtendsAccess.java:105:32: compiler.err.cant.resolve: kindname.class, defaultStaticClass, , 
+ExtendsAccess.java:106:32: compiler.err.cant.resolve: kindname.class, protectedStaticClass, , 
+ExtendsAccess.java:107:32: compiler.err.cant.resolve: kindname.class, privateStaticClass, , 
 ExtendsAccess.java:112:46: compiler.err.report.access: ExtendsAccess.privateStaticClass, private, ExtendsAccess
 ExtendsAccess.java:115:48: compiler.err.not.def.public.cant.access: p.ExtendsAccess.defaultStaticClass, p.ExtendsAccess
 ExtendsAccess.java:116:48: compiler.err.report.access: p.ExtendsAccess.protectedStaticClass, protected, p.ExtendsAccess
@@ -26,10 +26,10 @@
 ExtendsAccess.java:158:34: compiler.err.report.access: ExtendsAccess.privateStaticClass, private, ExtendsAccess
 ExtendsAccess.java:165:36: compiler.err.not.def.public.cant.access: p.ExtendsAccess.defaultStaticClass, p.ExtendsAccess
 ExtendsAccess.java:174:36: compiler.err.report.access: p.ExtendsAccess.privateStaticClass, private, p.ExtendsAccess
-ExtendsAccess.java:177:57: compiler.err.cant.resolve: (- compiler.misc.kindname.class), publicInterface, , 
-ExtendsAccess.java:178:57: compiler.err.cant.resolve: (- compiler.misc.kindname.class), defaultInterface, , 
-ExtendsAccess.java:179:57: compiler.err.cant.resolve: (- compiler.misc.kindname.class), protectedInterface, , 
-ExtendsAccess.java:180:57: compiler.err.cant.resolve: (- compiler.misc.kindname.class), privateInterface, , 
+ExtendsAccess.java:177:57: compiler.err.cant.resolve: kindname.class, publicInterface, , 
+ExtendsAccess.java:178:57: compiler.err.cant.resolve: kindname.class, defaultInterface, , 
+ExtendsAccess.java:179:57: compiler.err.cant.resolve: kindname.class, protectedInterface, , 
+ExtendsAccess.java:180:57: compiler.err.cant.resolve: kindname.class, privateInterface, , 
 ExtendsAccess.java:186:33: compiler.err.report.access: ExtendsAccess.privateInterface, private, ExtendsAccess
 ExtendsAccess.java:191:35: compiler.err.not.def.public.cant.access: p.ExtendsAccess.defaultInterface, p.ExtendsAccess
 ExtendsAccess.java:193:35: compiler.err.report.access: p.ExtendsAccess.protectedInterface, protected, p.ExtendsAccess
--- a/langtools/test/tools/javac/NonStaticFieldExpr1.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/NonStaticFieldExpr1.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-NonStaticFieldExpr1.java:10:30: compiler.err.non-static.cant.be.ref: (- compiler.misc.kindname.variable), x
+NonStaticFieldExpr1.java:10:30: compiler.err.non-static.cant.be.ref: kindname.variable, x
 1 error
--- a/langtools/test/tools/javac/NonStaticFieldExpr2.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/NonStaticFieldExpr2.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-NonStaticFieldExpr2.java:14:33: compiler.err.non-static.cant.be.ref: (- compiler.misc.kindname.variable), x
+NonStaticFieldExpr2.java:14:33: compiler.err.non-static.cant.be.ref: kindname.variable, x
 1 error
--- a/langtools/test/tools/javac/NonStaticFieldExpr3.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/NonStaticFieldExpr3.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-NonStaticFieldExpr3.java:14:30: compiler.err.non-static.cant.be.ref: (- compiler.misc.kindname.variable), x
+NonStaticFieldExpr3.java:14:30: compiler.err.non-static.cant.be.ref: kindname.variable, x
 1 error
--- a/langtools/test/tools/javac/T6247324.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/T6247324.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-T6247324.java:18:6: compiler.err.cant.resolve.location: (- compiler.misc.kindname.class), Seetharam, , , (- compiler.misc.kindname.class), Pair<X,Y>
+T6247324.java:18:6: compiler.err.cant.resolve.location: kindname.class, Seetharam, , , kindname.class, Pair<X,Y>
 1 error
--- a/langtools/test/tools/javac/annotations/6365854/test1.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/annotations/6365854/test1.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,2 +1,2 @@
-- compiler.warn.annotation.method.not.found.reason: test.annotation.TestAnnotation, test, class file for test.annotation.TestAnnotation not found
+- compiler.warn.annotation.method.not.found.reason: test.annotation.TestAnnotation, test, (- compiler.misc.class.file.not.found: test.annotation.TestAnnotation)
 1 warning
--- a/langtools/test/tools/javac/capture/Capture4.java	Sun Aug 10 18:35:53 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright 2004 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 4916650
- * @summary wildcards versus recursive F-bounds
- * @author gafter
- *
- * @compile -source 1.5 Capture4.java
- */
-
-package capture4;
-
-class WildcardFBoundCheck {
-    interface I4<T> {}
-
-    static class C4<X extends I4<Y>, Y extends I4<X>> {}
-
-    WildcardFBoundCheck()
-    {
-        C4<I4<?>,?> x2;  // <<pass>>
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/capture/T6594284.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6594284
+ * @summary NPE thrown when calling a method on an intersection type
+ * @author Maurizio Cimadamore
+ *
+ * @compile/fail T6594284.java
+ */
+
+public class T6594284 {
+    class A{ public void a(){}}
+    class B extends A{ public void b(){}}
+    interface I{ void i();}
+    interface I1 { void i1(); }
+    class E extends B implements I{ public void i(){};}
+
+    class C<W extends B & I1, T extends W>{
+        C<? extends I, ? extends E> arg;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/enum/T6675483.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6675483
+ *
+ * @summary Javac rejects multiple type-variable bound declarations starting with an enum type
+ * @author Maurizio Cimadamore
+ *
+ * @compile T6675483.java
+ */
+
+public class T6675483 {
+    enum E implements Comparable<E> {}
+
+    interface C<T extends E & Comparable<E>> {
+        <S extends E & Comparable<E>> void m();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/foreach/T6500701.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6500701
+ * @summary Enhanced for loop with generics generates faulty bytecode
+ * @author Maurizio Cimadamore
+ *
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class T6500701 {
+
+    private static void test() {
+        List list = new ArrayList();
+        list.add("");
+        List<Integer> aList = new ArrayList<Integer>();
+        aList.addAll(list);
+        for (Object a : aList) {
+            System.out.println(a);
+        }
+    }
+
+    public static void main(String[] args) {
+        test();
+    }
+}
--- a/langtools/test/tools/javac/generics/inference/6611449/T6611449.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/generics/inference/6611449/T6611449.out	Thu Aug 14 22:16:00 2008 -0700
@@ -1,5 +1,5 @@
-T6611449.java:41:9: compiler.err.cant.resolve.location: (- compiler.misc.kindname.constructor), T6611449, (int), , (- compiler.misc.kindname.class), T6611449<S>
-T6611449.java:42:9: compiler.err.cant.resolve.location: (- compiler.misc.kindname.constructor), T6611449, (int,int), , (- compiler.misc.kindname.class), T6611449<S>
-T6611449.java:43:9: compiler.err.cant.apply.symbol: <T>m1(T), T6611449<S>, , int, null
-T6611449.java:44:9: compiler.err.cant.apply.symbol: <T>m2(T,T), T6611449<S>, , int,int, null
+T6611449.java:41:9: compiler.err.cant.resolve.location.args: kindname.constructor, T6611449, , int, kindname.class, T6611449<S>
+T6611449.java:42:9: compiler.err.cant.resolve.location.args: kindname.constructor, T6611449, , int,int, kindname.class, T6611449<S>
+T6611449.java:43:9: compiler.err.cant.apply.symbol: kindname.method, m1, T, int, kindname.class, T6611449<S>, null
+T6611449.java:44:9: compiler.err.cant.apply.symbol: kindname.method, m2, T,T, int,int, kindname.class, T6611449<S>, null
 4 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/wildcards/6651719/T6651719a.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug     6651719
+ * @summary Compiler crashes possibly during forward reference of TypeParameter
+ * @compile T6651719a.java
+ */
+
+public class T6651719a<T extends S, S> {
+    T6651719a<? extends T6651719a<?, ?>, ? extends T6651719a<?, ?>> crash = null;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/wildcards/6651719/T6651719b.java	Thu Aug 14 22:16:00 2008 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug     6651719
+ * @summary Compiler crashes possibly during forward reference of TypeParameter
+ * @compile T6651719b.java
+ */
+import java.util.*;
+
+public class T6651719b {
+    <T> void m(T t, List<? super List<T>> list) {}
+    void test(List<? super List<?>> list) {
+        m("", list);
+    }
+}
--- a/langtools/test/tools/javac/policy/byfile.ABD.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/policy/byfile.ABD.out	Thu Aug 14 22:16:00 2008 -0700
@@ -3,7 +3,7 @@
 [attribute A2]
 [attribute B]
 [attribute B1]
-B.java:12:9: compiler.err.cant.resolve.location: (- compiler.misc.kindname.variable), x, , , (- compiler.misc.kindname.class), B1
+B.java:12:9: compiler.err.cant.resolve.location: kindname.variable, x, , , kindname.class, B1
 [attribute B2]
 [attribute D]
 [attribute D1]
--- a/langtools/test/tools/javac/policy/bytodo.ABD.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/policy/bytodo.ABD.out	Thu Aug 14 22:16:00 2008 -0700
@@ -15,7 +15,7 @@
 [desugar B]
 [generate code B]
 [attribute B1]
-B.java:12:9: compiler.err.cant.resolve.location: (- compiler.misc.kindname.variable), x, , , (- compiler.misc.kindname.class), B1
+B.java:12:9: compiler.err.cant.resolve.location: kindname.variable, x, , , kindname.class, B1
 [attribute B2]
 [attribute D]
 [attribute D1]
--- a/langtools/test/tools/javac/policy/simple.ABD.out	Sun Aug 10 18:35:53 2008 -0700
+++ b/langtools/test/tools/javac/policy/simple.ABD.out	Thu Aug 14 22:16:00 2008 -0700
@@ -3,7 +3,7 @@
 [attribute A2]
 [attribute B]
 [attribute B1]
-B.java:12:9: compiler.err.cant.resolve.location: (- compiler.misc.kindname.variable), x, , , (- compiler.misc.kindname.class), B1
+B.java:12:9: compiler.err.cant.resolve.location: kindname.variable, x, , , kindname.class, B1
 [attribute B2]
 [attribute D]
 [attribute D1]
--- a/make/Defs-internal.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/make/Defs-internal.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -159,6 +159,9 @@
     SKIP_OPENJDK_BUILD = true
   endif
 endif
+ifndef SKIP_PRODUCT_BUILD
+  SKIP_PRODUCT_BUILD = false
+endif
 
 # Solaris 64 bit builds are not complete enough to ever do this
 ifeq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64)
--- a/make/jprt.config	Sun Aug 10 18:35:53 2008 -0700
+++ b/make/jprt.config	Thu Aug 14 22:16:00 2008 -0700
@@ -115,13 +115,13 @@
 dirMustExist "${ANT_HOME}"        ANT_HOME
 dirMustExist "${FINDBUGS_HOME}"   FINDBUGS_HOME
 
-# If ALT_PREVIOUS_JDK_IMAGE not defined, set it to the bootdir area for
+# If ALT_PREVIOUS_RELEASE_IMAGE not defined, set it to the bootdir area for
 #    any possible image comparisons.
 #    We assume bootdir is a previous jdk release image, valid for comparison
 #    reasons.
-if [ "${ALT_PREVIOUS_JDK_IMAGE}" = "" ] ; then
-   ALT_PREVIOUS_JDK_IMAGE="${bootdir}"
-   export ALT_PREVIOUS_JDK_IMAGE
+if [ "${ALT_PREVIOUS_RELEASE_IMAGE}" = "" ] ; then
+   ALT_PREVIOUS_RELEASE_IMAGE="${bootdir}"
+   export ALT_PREVIOUS_RELEASE_IMAGE
 fi
 
 # Use the JDK import for now (FIXME: use the binary plugs?)
@@ -146,9 +146,7 @@
     if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
         compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
     else
-        # FIXUP: Change to SS12 when validated
-	#compiler_name=SS12
-	compiler_name=SS11
+	compiler_name=SS12
     fi
     compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/${compiler_name}/bin
     ALT_COMPILER_PATH="${compiler_path}"
--- a/make/jprt.gmk	Sun Aug 10 18:35:53 2008 -0700
+++ b/make/jprt.gmk	Thu Aug 14 22:16:00 2008 -0700
@@ -36,7 +36,7 @@
 JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(DEFAULT_BUILD_FLAVOR)-bundle.zip
 JPRT_ARCHIVE_INSTALL_BUNDLE=$(ABS_OUTPUTDIR)/$(DEFAULT_BUILD_FLAVOR)-install-bundle.zip
 
-jprt_build_product:  product_build
+jprt_build_product:  all_product_build
 	( $(CD) $(OUTPUTDIR)/j2sdk-image && \
 	  $(ZIPEXE) -q -r $(JPRT_ARCHIVE_BUNDLE) . )
 ifdef HAVE_JPRT_SAVE_BUNDLES