changeset 2632:5554ebb0913a

PR716: IcedTea7 should bootstrap with IcedTea6 2013-05-15 Andrew John Hughes <gnu.andrew@member.fsf.org> PR716: IcedTea7 should bootstrap with IcedTea6 * NEWS: Updated. * Makefile.am: (JDK_CHANGESET): Bring in CertificateRevokedException ambiguity fix. (JDK_SHA256SUM): Likewise. (ICEDTEA_BOOT_PATCHES): Rename ecj-fphexconstants to fphexconstants. Make xbootclasspath and the new bootstrap-tools split-off patch conditional. * INSTALL: Document --disable-bootstrap-tools. * acinclude.m4: (IT_BYTECODE7_CHECK): Use AC_DEFUN_ONCE. (IT_USE_BOOTSTRAP_TOOLS): Add --disable-bootstrap-tools to decide whether to use the boot javac/javah or the one built as part of langtools. Defaults to on for bootstrap tools that support Java 1.7. (IT_CHECK_FOR_XBOOTCLASSPATH): Check whether java can be passed -Xbootclasspath/p to prepend a path to the bootclasspath or not. * configure.ac: Invoke the new macros. * javac.in: Handle -Xbootclasspath/p by prepending its value to the bootclasspath option used to ecj. * patches/boot/bootstrap-tools.patch: Split from xbootclasspath.patch. Uses the bootstrap javac and javah rather than the langtools one for CORBA and JDK. * patches/boot/corba-dependencies.patch: Include the langtools source directory on the sourcepath. * patches/boot/fphexconstants.patch: Replace additional cases in java.lang.Math (needed when using javac via gcj). * patches/boot/icedteart.patch: Split from xbootclasspath.patch; the parts that extend the classpath. The java.text Makefile changes are changed to use -Xbootclasspath/a rather than a complete rewrite. * patches/boot/jaxws-jdk-dependency.patch: Include the generated sources on the sourcepath. * patches/boot/xbootclasspath.patch: Revised version of the java.text Makefile changes that replaces the use of -Xbootclasspath for those VMs that don't support it.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 15 May 2013 20:17:08 +0100
parents 933d082ec889
children c8821d8403ff
files ChangeLog INSTALL Makefile.am NEWS acinclude.m4 configure.ac javac.in patches/boot/bootstrap-tools.patch patches/boot/corba-dependencies.patch patches/boot/ecj-fphexconstants.patch patches/boot/fphexconstants.patch patches/boot/icedteart.patch patches/boot/jaxws-jdk-dependency.patch patches/boot/xbootclasspath.patch
diffstat 14 files changed, 370 insertions(+), 169 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue May 07 15:59:03 2013 +0200
+++ b/ChangeLog	Wed May 15 20:17:08 2013 +0100
@@ -1,3 +1,48 @@
+2013-05-15  Andrew John Hughes  <gnu.andrew@member.fsf.org>
+
+	PR716: IcedTea7 should bootstrap with IcedTea6
+	* NEWS: Updated.
+	* Makefile.am:
+	(JDK_CHANGESET): Bring in CertificateRevokedException
+	ambiguity fix.
+	(JDK_SHA256SUM): Likewise.
+	(ICEDTEA_BOOT_PATCHES): Rename ecj-fphexconstants
+	to fphexconstants.  Make xbootclasspath and the new
+	bootstrap-tools split-off patch conditional.
+	* INSTALL: Document --disable-bootstrap-tools.
+	* acinclude.m4:
+	(IT_BYTECODE7_CHECK): Use AC_DEFUN_ONCE.
+	(IT_USE_BOOTSTRAP_TOOLS): Add --disable-bootstrap-tools
+	to decide whether to use the boot javac/javah or the
+	one built as part of langtools.  Defaults to on for
+	bootstrap tools that support Java 1.7.
+	(IT_CHECK_FOR_XBOOTCLASSPATH): Check whether java
+	can be passed -Xbootclasspath/p to prepend a path
+	to the bootclasspath or not.
+	* configure.ac: Invoke the new macros.
+	* javac.in: Handle -Xbootclasspath/p by prepending
+	its value to the bootclasspath option used to ecj.
+	* patches/boot/bootstrap-tools.patch:
+	Split from xbootclasspath.patch.  Uses the bootstrap
+	javac and javah rather than the langtools one for
+	CORBA and JDK.
+	* patches/boot/corba-dependencies.patch:
+	Include the langtools source directory on the sourcepath.
+	* patches/boot/fphexconstants.patch:
+	Replace additional cases in java.lang.Math (needed
+	when using javac via gcj).
+	* patches/boot/icedteart.patch:
+	Split from xbootclasspath.patch; the parts that
+	extend the classpath.  The java.text Makefile changes
+	are changed to use -Xbootclasspath/a rather than a
+	complete rewrite.
+	* patches/boot/jaxws-jdk-dependency.patch:
+	Include the generated sources on the sourcepath.
+	* patches/boot/xbootclasspath.patch:
+	Revised version of the java.text Makefile changes
+	that replaces the use of -Xbootclasspath for those
+	VMs that don't support it.
+
 2013-05-07  Xerxes RĂ„nby  <xerxes@zafena.se>
 
 	JamVM
--- a/INSTALL	Tue May 07 15:59:03 2013 +0200
+++ b/INSTALL	Wed May 15 20:17:08 2013 +0100
@@ -176,6 +176,7 @@
 * --enable-Werror: Turn gcc & javac warnings into errors.
 * --disable-jar-compression: Don't compress the OpenJDK JAR files.
 * --disable-downloading: Don't download tarballs if not available; fail instead.
+* --disable-bootstrap-tools: Use javac and javah from langtools, not the bootstrap JDK.
 
 Other options may be supplied which enable or disable new features.
 These are documented fully in the relevant section below.
@@ -217,7 +218,7 @@
 PulseAudio which can be enabled using --enable-pulse-java.   The resulting
 provider is org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider.
 
-Xrender Support
+XRender Support
 ===============
 
 IcedTea7 includes support for an Xrender-based rendering pipeline
@@ -327,7 +328,7 @@
 Currently, IcedTea7 only supports the 'original' HotSpot provided as
 part of the upstream IcedTea forest.
 
-Javascript Support
+JavaScript Support
 ==================
 
 IcedTea7 adds Javascript support via the javax.script API by using
@@ -346,6 +347,15 @@
 avoids conflicts between the JDK's copy of Rhino and any used by other
 applications.
 
+Bootstrap Tools
+===============
+
+For bootstrap builds, the option --disable-bootstrap-tools can be used
+to make use of the javac and javah built as part of the langtools build,
+rather than the bootstrap tools.  The default setting of this option is
+to use the bootstrap tools when they support Java 1.7 (tested at
+configure time).
+
 Building Additional Virtual Machines
 ====================================
 
--- a/Makefile.am	Tue May 07 15:59:03 2013 +0200
+++ b/Makefile.am	Wed May 15 20:17:08 2013 +0100
@@ -7,14 +7,14 @@
 CORBA_CHANGESET = 4366e0fe59d5
 JAXP_CHANGESET = 5a11895b645d
 JAXWS_CHANGESET = 29619865cc64
-JDK_CHANGESET = d4cd8f10764d
+JDK_CHANGESET = 5e20c1a72aa8
 LANGTOOLS_CHANGESET = 718a945bfdb9
 OPENJDK_CHANGESET = 6579f526e5e4
 
 CORBA_SHA256SUM = b23b0980c704247a0a690f6fb663ec561f56e2fcdc5d69f13d9629d2c1937f32
 JAXP_SHA256SUM = a0f4516cdabb60bea73ce157db3c31c24634bc4058d35257b981b6b1be5114ba
 JAXWS_SHA256SUM = 53e63c8b63380f4a34ae955f91455ece2f687dbe3dd47e4c14ac03761cb3daee
-JDK_SHA256SUM = 4a03854b630151719fa9747525c08bc6b86362d7d2a26e62e349dc9ebfc27e51
+JDK_SHA256SUM = 5b9f736df39198eec25a697792783d361e4ea4a8289b4dc7f156bcb307278b0c
 LANGTOOLS_SHA256SUM = c412b61b095154fee4c45dc133f2baca3100fecd48b742f80da49a52ec473b02
 OPENJDK_SHA256SUM = 44c3e4a130fe4b76c1ba977ae2251884cefa774b82a24c4415b64395aef9594c
 
@@ -308,10 +308,9 @@
 	patches/boot/corba-no-gen.patch \
 	patches/boot/corba-orb.patch \
 	patches/boot/demos.patch \
-	patches/boot/ecj-fphexconstants.patch \
+	patches/boot/fphexconstants.patch \
 	patches/boot/fontconfig.patch \
 	patches/boot/generated-comments.patch \
-	patches/boot/xbootclasspath.patch \
 	patches/boot/icedteart.patch \
 	patches/boot/jar.patch \
 	patches/boot/symbols.patch \
@@ -336,6 +335,16 @@
 	patches/boot/xsltproc.patch \
 	patches/boot/ecj-odd.patch
 
+if !DISABLE_BOOTSTRAP_TOOLS
+ICEDTEA_BOOT_PATCHES += \
+	patches/boot/bootstrap-tools.patch
+endif
+
+if !VM_SUPPORTS_XBOOTCLASSPATH
+ICEDTEA_BOOT_PATCHES += \
+	patches/boot/xbootclasspath.patch
+endif
+
 if !WITH_PAX
 ICEDTEA_BOOT_PATCHES += patches/boot/test_gamma.patch
 endif
--- a/NEWS	Tue May 07 15:59:03 2013 +0200
+++ b/NEWS	Wed May 15 20:17:08 2013 +0100
@@ -678,6 +678,7 @@
   - Revert 7060849
   - Set UNLIMITED_CRYPTO=true to ensure we use the unlimited policy.
   - Set handleStartupErrors to ignoreMultipleInitialisation in nss.cfg to fix PR473
+  - PR716: IcedTea7 should bootstrap with IcedTea6
 * CACAO
   - src/vm/jit/x86_64/asmpart.S (asm_abstractmethoderror): Keep stack aligned.
   - src/native/jni.cpp (GetObjectClass): Remove null pointer check.
--- a/acinclude.m4	Tue May 07 15:59:03 2013 +0200
+++ b/acinclude.m4	Wed May 15 20:17:08 2013 +0100
@@ -2184,7 +2184,7 @@
   AC_SUBST(ALT_JAMVM_SRC_ZIP)
 ])
 
-AC_DEFUN([IT_BYTECODE7_CHECK],[
+AC_DEFUN_ONCE([IT_BYTECODE7_CHECK],[
 AC_CACHE_CHECK([if the VM lacks support for 1.7 bytecode], it_cv_bytecode7, [
 CLASS=Test.java
 BYTECODE=$(echo $CLASS|sed 's#\.java##')
@@ -2463,3 +2463,69 @@
 AM_CONDITIONAL([LACKS_$1], test x"${it_cv_$1}" = "xyes")
 AC_PROVIDE([$0])dnl
 ])
+
+AC_DEFUN_ONCE([IT_USE_BOOTSTRAP_TOOLS],
+[
+  AC_REQUIRE([IT_BYTECODE7_CHECK])
+  AC_MSG_CHECKING([whether to disable the use of bootstrap tools for bootstrapping])
+  AC_ARG_ENABLE([bootstrap-tools],
+                [AS_HELP_STRING(--disable-bootstrap-tools,
+		disable the use of bootstrap tools for bootstrapping [[default=no if they support 7]])],
+  [
+    case "${enableval}" in
+      no)
+        disable_bootstrap_tools=yes
+        ;;
+      *)
+        disable_bootstrap_tools=no
+        ;;
+    esac
+  ],
+  [
+    if test "x${it_cv_bytecode7}" = "xyes"; then
+      disable_bootstrap_tools=yes;
+    else
+      disable_bootstrap_tools=no;
+    fi
+  ])
+  AC_MSG_RESULT([$disable_bootstrap_tools])
+  AM_CONDITIONAL([DISABLE_BOOTSTRAP_TOOLS], test x"${disable_bootstrap_tools}" = "xyes")
+])
+
+AC_DEFUN_ONCE([IT_CHECK_FOR_XBOOTCLASSPATH],
+[
+  AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK])
+  AC_CACHE_CHECK([if the VM supports -Xbootclasspath], it_cv_xbootclasspath_works, [
+  CLASS=Test.java
+  BYTECODE=$(echo $CLASS|sed 's#\.java##')
+  mkdir tmp.$$
+  cd tmp.$$
+  cat << \EOF > $CLASS
+[/* [#]line __oline__ "configure" */
+
+public class Test
+{
+    public static void main(String[] args)
+    {
+      System.out.println("Hello World!");
+    }
+}]
+EOF
+  mkdir build
+  if $JAVAC -d build -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+    if $JAVA -Xbootclasspath/p:build $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_xbootclasspath_works=yes;
+    else
+      it_cv_xbootclasspath_works=no;
+    fi
+  else
+    it_cv_xbootclasspath_works=no;
+  fi
+  rm -f $CLASS build/*.class
+  rmdir build
+  cd ..
+  rmdir tmp.$$
+  ])
+  AC_PROVIDE([$0])dnl
+  AM_CONDITIONAL([VM_SUPPORTS_XBOOTCLASSPATH], test x"${it_cv_xbootclasspath_works}" = "xyes")
+])
--- a/configure.ac	Tue May 07 15:59:03 2013 +0200
+++ b/configure.ac	Wed May 15 20:17:08 2013 +0100
@@ -151,6 +151,8 @@
 IT_CHECK_ENABLE_WARNINGS
 IT_DIAMOND_CHECK
 IT_BYTECODE7_CHECK
+IT_USE_BOOTSTRAP_TOOLS
+IT_CHECK_FOR_XBOOTCLASSPATH
 
 IT_FIND_RHINO_JAR
 IT_WITH_OPENJDK_SRC_ZIP
--- a/javac.in	Tue May 07 15:59:03 2013 +0200
+++ b/javac.in	Wed May 15 20:17:08 2013 +0100
@@ -18,7 +18,15 @@
 }
 
 my @bcoption;
-push @bcoption, '-bootclasspath', glob '@abs_top_builddir@/bootstrap/jdk1.6.0/jre/lib/rt.jar'
+my @bcoptions = grep {$_ =~ '^-Xbootclasspath/p:' } @ARGV;
+my $bc = $bcoptions[0];
+my $systembc = glob '/home/andrew/builder/icedtea7/bootstrap/jdk1.6.0/jre/lib/rt.jar';
+if ($bc)
+{
+    $bc =~ s/^[^:]*://;
+    $systembc = join ":", $bc, $systembc;
+}
+push @bcoption, '-bootclasspath', $systembc
     unless grep {$_ eq '-bootclasspath'} @ARGV;
 my @ecj_parms = ($ECJ_WARNINGS, @bcoption);
 my @javac_parms = ($JAVAC_WARNINGS, '-Xprefer:source',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/boot/bootstrap-tools.patch	Wed May 15 20:17:08 2013 +0100
@@ -0,0 +1,66 @@
+diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk	2012-06-29 15:19:55.000000000 +0100
++++ openjdk-boot/corba/make/common/shared/Defs-java.gmk	2012-06-29 18:52:40.584723407 +0100
+@@ -131,26 +131,14 @@
+ CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
+ JAVACFLAGS  += $(CLASS_VERSION)
+ JAVACFLAGS  += -encoding ascii
+-JAVACFLAGS  += -classpath $(BOOTDIR)/lib/tools.jar
++JAVACFLAGS  += -classpath $(LANGTOOLS_DIST)/lib/classes.jar
+ JAVACFLAGS  += $(OTHER_JAVACFLAGS)
+ 
+ # Langtools
+-ifdef LANGTOOLS_DIST
+-  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+-  JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+-  DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+-  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAC_JAR)" \
+-		-jar $(JAVAC_JAR) $(JAVACFLAGS)
+-  JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+-		-jar $(JAVADOC_JAR)
+-else
+-  # If no explicit tools, use boot tools (add VM flags in this case)
+-  JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+-		  $(JAVACFLAGS)
+-  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+-endif
++# If no explicit tools, use boot tools (add VM flags in this case)
++JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
++	  $(JAVACFLAGS)
++JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+ 
+ # Override of what javac to use (see deploy workspace)
+ ifdef JAVAC
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk	2012-06-29 15:21:00.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk	2012-06-29 18:53:43.337711469 +0100
+@@ -168,27 +168,15 @@
+ 
+ # Langtools
+ ifdef LANGTOOLS_DIST
+-  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+-  JAVAH_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
+   JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+   DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+-  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAC_JAR)" \
+-		-jar $(JAVAC_JAR) $(JAVACFLAGS)
+-  JAVAH_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)"  \
+-		-jar $(JAVAH_JAR) $(JAVAHFLAGS)
+   JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+ 		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+ 		-jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
+-else
+-  # If no explicit tools, use boot tools (add VM flags in this case)
+   JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+ 		  $(JAVACFLAGS)
+   JAVAH_CMD     = $(JAVA_TOOLS_DIR)/javah \
+ 		  $(JAVAHFLAGS)
+-  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
+-  		  $(JAVADOCFLAGS)
+ endif
+ 
+ # Override of what javac to use (see deploy workspace)
--- a/patches/boot/corba-dependencies.patch	Tue May 07 15:59:03 2013 +0200
+++ b/patches/boot/corba-dependencies.patch	Wed May 15 20:17:08 2013 +0100
@@ -7,8 +7,19 @@
  	  $(CAT) $(JAVA_SOURCE_LIST); \
 -	  $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
 +	  $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) \
-+	    -sourcepath "$(SOURCEPATH):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes" \
++	    -sourcepath "$(SOURCEPATH):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(LANGTOOLS_TOPDIR)/src/share/classes" \
 +	    -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
  	fi
  	@$(java-vm-cleanup)
  
+diff --git a/make/Defs-internal.gmk b/make/Defs-internal.gmk
+--- openjdk-boot.orig/make/Defs-internal.gmk
++++ openjdk-boot/make/Defs-internal.gmk
+@@ -305,6 +305,7 @@
+ 
+ # Common make arguments (supplied to all component builds)
+ COMMON_BUILD_ARGUMENTS = \
++    LANGTOOLS_TOPDIR=$(ABS_LANGTOOLS_TOPDIR) \
+     JDK_TOPDIR=$(ABS_JDK_TOPDIR) \
+     JDK_MAKE_SHARED_DIR=$(ABS_JDK_TOPDIR)/make/common/shared \
+     EXTERNALSANITYCONTROL=true \
--- a/patches/boot/ecj-fphexconstants.patch	Tue May 07 15:59:03 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java openjdk-boot/jdk/src/share/classes/java/lang/Double.java
---- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:49:00.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:59:16.000000000 +0000
-@@ -76,7 +76,7 @@
-      * {@code 0x1.fffffffffffffP+1023} and also equal to
-      * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}.
-      */
--    public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308
-+    public static final double MAX_VALUE = 1.7976931348623157e+308;
- 
-     /**
-      * A constant holding the smallest positive normal value of type
-@@ -86,7 +86,7 @@
-      *
-      * @since 1.6
-      */
--    public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308
-+    public static final double MIN_NORMAL = 2.2250738585072014E-308;
- 
-     /**
-      * A constant holding the smallest positive nonzero value of type
-@@ -95,7 +95,7 @@
-      * {@code 0x0.0000000000001P-1022} and also equal to
-      * {@code Double.longBitsToDouble(0x1L)}.
-      */
--    public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324
-+    public static final double MIN_VALUE = 4.9e-324;
- 
-     /**
-      * Maximum exponent a finite {@code double} variable may have.
-diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java openjdk-boot/jdk/src/share/classes/java/lang/Float.java
---- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:49:00.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:59:16.000000000 +0000
-@@ -76,7 +76,7 @@
-      * {@code 0x1.fffffeP+127f} and also equal to
-      * {@code Float.intBitsToFloat(0x7f7fffff)}.
-      */
--    public static final float MAX_VALUE = 0x1.fffffeP+127f; // 3.4028235e+38f
-+    public static final float MAX_VALUE = 3.4028235e+38f;
- 
-     /**
-      * A constant holding the smallest positive normal value of type
-@@ -86,7 +86,7 @@
-      *
-      * @since 1.6
-      */
--    public static final float MIN_NORMAL = 0x1.0p-126f; // 1.17549435E-38f
-+    public static final float MIN_NORMAL = 1.17549435E-38f;
- 
-     /**
-      * A constant holding the smallest positive nonzero value of type
-@@ -94,7 +94,7 @@
-      * hexadecimal floating-point literal {@code 0x0.000002P-126f}
-      * and also equal to {@code Float.intBitsToFloat(0x1)}.
-      */
--    public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f
-+    public static final float MIN_VALUE = 1.4e-45f;
- 
-     /**
-      * Maximum exponent a finite {@code float} variable may have.  It
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/boot/fphexconstants.patch	Wed May 15 20:17:08 2013 +0100
@@ -0,0 +1,81 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java openjdk-boot/jdk/src/share/classes/java/lang/Double.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+      * {@code 0x1.fffffffffffffP+1023} and also equal to
+      * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}.
+      */
+-    public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308
++    public static final double MAX_VALUE = 1.7976931348623157e+308;
+ 
+     /**
+      * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+      *
+      * @since 1.6
+      */
+-    public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308
++    public static final double MIN_NORMAL = 2.2250738585072014E-308;
+ 
+     /**
+      * A constant holding the smallest positive nonzero value of type
+@@ -95,7 +95,7 @@
+      * {@code 0x0.0000000000001P-1022} and also equal to
+      * {@code Double.longBitsToDouble(0x1L)}.
+      */
+-    public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324
++    public static final double MIN_VALUE = 4.9e-324;
+ 
+     /**
+      * Maximum exponent a finite {@code double} variable may have.
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java openjdk-boot/jdk/src/share/classes/java/lang/Float.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+      * {@code 0x1.fffffeP+127f} and also equal to
+      * {@code Float.intBitsToFloat(0x7f7fffff)}.
+      */
+-    public static final float MAX_VALUE = 0x1.fffffeP+127f; // 3.4028235e+38f
++    public static final float MAX_VALUE = 3.4028235e+38f;
+ 
+     /**
+      * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+      *
+      * @since 1.6
+      */
+-    public static final float MIN_NORMAL = 0x1.0p-126f; // 1.17549435E-38f
++    public static final float MIN_NORMAL = 1.17549435E-38f;
+ 
+     /**
+      * A constant holding the smallest positive nonzero value of type
+@@ -94,7 +94,7 @@
+      * hexadecimal floating-point literal {@code 0x0.000002P-126f}
+      * and also equal to {@code Float.intBitsToFloat(0x1)}.
+      */
+-    public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f
++    public static final float MIN_VALUE = 1.4e-45f;
+ 
+     /**
+      * Maximum exponent a finite {@code float} variable may have.  It
+diff --git a/src/share/classes/java/lang/Math.java b/src/share/classes/java/lang/Math.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Math.java
++++ openjdk-boot/jdk/src/share/classes/java/lang/Math.java
+@@ -647,7 +647,7 @@
+      * @see     java.lang.Integer#MIN_VALUE
+      */
+     public static int round(float a) {
+-        if (a != 0x1.fffffep-2f) // greatest float value less than 0.5
++        if (a != nextAfter(0.5f, 0.4f)) // greatest float value less than 0.5
+             return (int)floor(a + 0.5f);
+         else
+             return 0;
+@@ -674,7 +674,7 @@
+      * @see     java.lang.Long#MIN_VALUE
+      */
+     public static long round(double a) {
+-        if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
++        if (a != nextAfter(0.5d, 0.4d)) // greatest double value less than 0.5
+             return (long)floor(a + 0.5d);
+         else
+             return 0;
--- a/patches/boot/icedteart.patch	Tue May 07 15:59:03 2013 +0200
+++ b/patches/boot/icedteart.patch	Wed May 15 20:17:08 2013 +0100
@@ -39,3 +39,37 @@
  	@$(java-vm-cleanup)
  
  $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE)
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk	2012-06-29 15:21:00.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk	2012-06-29 18:53:43.337711469 +0100
+@@ -157,7 +157,7 @@
+ JAVACFLAGS  += $(OTHER_JAVACFLAGS)
+ 
+ # Needed for javah
+-JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH)"
++JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH):$(ICEDTEA_RT):$(CLASSDESTDIR)"
+ 
+ # Needed for javadoc to ensure it builds documentation
+ # against the newly built classes
+diff --git a/make/java/text/base/Makefile b/make/java/text/base/Makefile
+--- openjdk-boot/jdk/make/java/text/base/Makefile
++++ openjdk-boot/jdk/make/java/text/base/Makefile
+@@ -81,6 +81,7 @@
+ 		$(TEXT_SOURCES)
+ 	$(MKDIR) -p  $(TEXT_CLASSDIR)
+ 	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
++		-Xbootclasspath/a:$(ABS_OUTPUTDIR)/classes \
+ 		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
+ 		-o $(TEXT_CLASSDIR) \
+ 		-spec $(UNICODEDATA)/UnicodeData.txt
+diff --git a/make/sun/text/Makefile b/make/sun/text/Makefile
+--- openjdk-boot/jdk/make/sun/text/Makefile
++++ openjdk-boot/jdk/make/sun/text/Makefile
+@@ -86,6 +86,7 @@
+ 		-sourcepath $(TEXT_SRCDIR) \
+ 		$(BIRULES) $(BIINFO)
+ 	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
++		-Xbootclasspath/a:$(ABS_OUTPUTDIR)/classes \
+ 		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
+ 		-o $(CLASSDESTDIR)/sun/text/resources \
+ 		-spec $(UNICODEDATA)/UnicodeData.txt \
--- a/patches/boot/jaxws-jdk-dependency.patch	Tue May 07 15:59:03 2013 +0200
+++ b/patches/boot/jaxws-jdk-dependency.patch	Wed May 15 20:17:08 2013 +0100
@@ -7,16 +7,17 @@
  
 +# JDK sources
 +
-+jdk.sources=${jdk.topdir}/src/share/classes:${jdk.topdir}/src/solaris/classes
++jdk.sources=${jdk.topdir}/src/share/classes:${jdk.topdir}/src/solaris/classes:${jdk.gensrcdir}
 +
  # Distributed results
  dist.dir=${output.dir}/dist
  dist.lib.dir=${dist.dir}/lib
-@@ -92,6 +96,7 @@
+@@ -92,6 +96,8 @@
    output.dir=${output.dir}${line.separator}\
    build.dir=${build.dir}${line.separator}\
    dist.dir=${dist.dir}${line.separator}\
 +  jdk.topdir=${jdk.topdir}${line.separator}\
++  jdk.gensrcdir=${jdk.gensrcdir}${line.separator}\
  ${line.separator}
  
  #------------------------------------------------------------
@@ -34,7 +35,7 @@
 diff -Nru openjdk-boot.orig/jaxws/make/Makefile openjdk-boot/jaxws/make/Makefile
 --- openjdk-boot.orig/jaxws/make/Makefile	2012-06-11 14:30:27.904723311 +0100
 +++ openjdk-boot/jaxws/make/Makefile	2012-06-11 14:36:04.005990816 +0100
-@@ -123,6 +123,10 @@
+@@ -123,6 +123,14 @@
    endif
  endif
  
@@ -42,6 +43,22 @@
 +  ANT_OPTIONS += -Djdk.topdir=$(JDK_TOPDIR)
 +endif
 +
++ifdef GENSRCDIR
++  ANT_OPTIONS += -Djdk.gensrcdir=$(GENSRCDIR)
++endif
++
  # Default target and expected 'do everything' target
  default: all
  
+--- openjdk-boot.orig/make/jaxws-rules.gmk.orig	2013-05-07 13:46:03.172779265 +0100
++++ openjdk-boot/make/jaxws-rules.gmk	2013-05-07 13:46:15.332968843 +0100
+@@ -31,7 +31,8 @@
+    $(COMMON_BUILD_ARGUMENTS) \
+    ALT_OUTPUTDIR=$(JAXWS_OUTPUTDIR) \
+    ALT_BOOTDIR=$(BOOTDIR) \
+-   ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH)
++   ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH) \
++   GENSRCDIR=$(GENSRCDIR)
+ 
+ ifeq ($(BUILD_LANGTOOLS), true)
+   JAXWS_BUILD_ARGUMENTS += ALT_LANGTOOLS_DIST=$(ABS_LANGTOOLS_DIST)
--- a/patches/boot/xbootclasspath.patch	Tue May 07 15:59:03 2013 +0200
+++ b/patches/boot/xbootclasspath.patch	Wed May 15 20:17:08 2013 +0100
@@ -1,86 +1,12 @@
-diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
---- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk	2012-06-29 15:19:55.000000000 +0100
-+++ openjdk-boot/corba/make/common/shared/Defs-java.gmk	2012-06-29 18:52:40.584723407 +0100
-@@ -131,26 +131,14 @@
- CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
- JAVACFLAGS  += $(CLASS_VERSION)
- JAVACFLAGS  += -encoding ascii
--JAVACFLAGS  += -classpath $(BOOTDIR)/lib/tools.jar
-+JAVACFLAGS  += -classpath $(LANGTOOLS_DIST)/lib/classes.jar
- JAVACFLAGS  += $(OTHER_JAVACFLAGS)
- 
- # Langtools
--ifdef LANGTOOLS_DIST
--  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
--  JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
--  DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
--  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
--		"-Xbootclasspath/p:$(JAVAC_JAR)" \
--		-jar $(JAVAC_JAR) $(JAVACFLAGS)
--  JAVADOC_CMD = $(BOOT_JAVA_CMD) \
--		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
--		-jar $(JAVADOC_JAR)
--else
--  # If no explicit tools, use boot tools (add VM flags in this case)
--  JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
--		  $(JAVACFLAGS)
--  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
--endif
-+# If no explicit tools, use boot tools (add VM flags in this case)
-+JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
-+	  $(JAVACFLAGS)
-+JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
- 
- # Override of what javac to use (see deploy workspace)
- ifdef JAVAC
-diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
---- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk	2012-06-29 15:21:00.000000000 +0100
-+++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk	2012-06-29 18:53:43.337711469 +0100
-@@ -157,7 +157,7 @@
- JAVACFLAGS  += $(OTHER_JAVACFLAGS)
- 
- # Needed for javah
--JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH)"
-+JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH):$(ICEDTEA_RT):$(CLASSDESTDIR)"
- 
- # Needed for javadoc to ensure it builds documentation
- # against the newly built classes
-@@ -168,27 +168,15 @@
- 
- # Langtools
- ifdef LANGTOOLS_DIST
--  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
--  JAVAH_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
-   JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
-   DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
--  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
--		"-Xbootclasspath/p:$(JAVAC_JAR)" \
--		-jar $(JAVAC_JAR) $(JAVACFLAGS)
--  JAVAH_CMD   = $(BOOT_JAVA_CMD) \
--		"-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)"  \
--		-jar $(JAVAH_JAR) $(JAVAHFLAGS)
-   JAVADOC_CMD = $(BOOT_JAVA_CMD) \
- 		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
- 		-jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
--else
--  # If no explicit tools, use boot tools (add VM flags in this case)
-   JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
- 		  $(JAVACFLAGS)
-   JAVAH_CMD     = $(JAVA_TOOLS_DIR)/javah \
- 		  $(JAVAHFLAGS)
--  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
--  		  $(JAVADOCFLAGS)
- endif
- 
- # Override of what javac to use (see deploy workspace)
 diff -Nru openjdk-boot.orig/jdk/make/java/text/base/Makefile openjdk-boot/jdk/make/java/text/base/Makefile
---- openjdk-boot.orig/jdk/make/java/text/base/Makefile	2012-06-29 15:21:00.000000000 +0100
-+++ openjdk-boot/jdk/make/java/text/base/Makefile	2012-06-29 18:52:40.596723600 +0100
-@@ -80,8 +80,8 @@
+--- openjdk-boot.orig/jdk/make/java/text/base/Makefile	2013-05-14 19:17:14.115508141 +0100
++++ openjdk-boot/jdk/make/java/text/base/Makefile	2013-05-14 19:25:03.882202419 +0100
+@@ -80,9 +80,8 @@
  		-sourcepath $(TEXT_SRCDIR) \
  		$(TEXT_SOURCES)
  	$(MKDIR) -p  $(TEXT_CLASSDIR)
 -	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+-		-Xbootclasspath/a:$(ABS_OUTPUTDIR)/classes \
 -		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
 +	$(BOOT_JAVA_CMD) -cp $(TEXT_CLASSES):$(GENERATEBREAKITERATORDATA_JARFILE):$(ABS_OUTPUTDIR)/classes \
 +		build.tools.generatebreakiteratordata.GenerateBreakIteratorData \
@@ -88,13 +14,14 @@
  		-spec $(UNICODEDATA)/UnicodeData.txt
  	@$(java-vm-cleanup)
 diff -Nru openjdk-boot.orig/jdk/make/sun/text/Makefile openjdk-boot/jdk/make/sun/text/Makefile
---- openjdk-boot.orig/jdk/make/sun/text/Makefile	2012-06-29 15:21:00.000000000 +0100
-+++ openjdk-boot/jdk/make/sun/text/Makefile	2012-06-29 18:52:40.596723600 +0100
-@@ -85,8 +85,9 @@
+--- openjdk-boot.orig/jdk/make/sun/text/Makefile	2013-05-14 19:17:14.115508141 +0100
++++ openjdk-boot/jdk/make/sun/text/Makefile	2013-05-14 19:25:30.390363949 +0100
+@@ -85,9 +85,9 @@
  	$(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \
  		-sourcepath $(TEXT_SRCDIR) \
  		$(BIRULES) $(BIINFO)
 -	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+-		-Xbootclasspath/a:$(ABS_OUTPUTDIR)/classes \
 -		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
 +	$(BOOT_JAVA_CMD)  \
 +		-cp $(TEXT_CLASSES):$(ABS_OUTPUTDIR)/classes:$(GENERATEBREAKITERATORDATA_JARFILE) \
@@ -102,19 +29,3 @@
  		-o $(CLASSDESTDIR)/sun/text/resources \
  		-spec $(UNICODEDATA)/UnicodeData.txt \
  		-language th
-diff -Nru openjdk-boot.orig/langtools/make/build.xml openjdk-boot/langtools/make/build.xml
---- openjdk-boot.orig/langtools/make/build.xml	2012-06-29 18:09:26.064153871 +0100
-+++ openjdk-boot/langtools/make/build.xml	2012-06-29 18:52:40.596723600 +0100
-@@ -872,10 +872,8 @@
-                executable="${boot.java.home}/bin/javac"
-                srcdir="${make.tools.dir}/GenStubs"
-                destdir="${build.toolclasses.dir}/"
--               classpath="${ant.core.lib}"
--               includeantruntime="false">
--            <compilerarg value="-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
--        </javac>
-+               classpath="${build.bootstrap.dir}/classes:${ant.core.lib}"
-+               includeantruntime="false"/>
-         <taskdef name="genstubs"
-                  classname="GenStubs$$Ant"
-                  classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/>