changeset 2959:06c8caca7d7c

PR1317: Provide an option to build with a more up-to-date HotSpot 2013-02-14 Andrew John Hughes <gnu.andrew@redhat.com> PR1317: Provide an option to build with a more up-to-date HotSpot * patches/no-static-linking.patch: Dropped; unneeded if STATIC_CXX is set to false. * INSTALL: Update HotSpot build documentation. * Makefile.am: (SECURITY_PATCHES): Exclude patches in hs23 HotSpot if building with it. (ICEDTEA_PATCHES): Likewise, and exclude the ARM32 port which doesn't work with hs23. Also specialise some patches which differ depending on HotSpot version. (ICEDTEA_ECJ_PATCHES): Specialise hotspot-jdk-dependency.patch depending on version of HotSpot being built. (ICEDTEA_ENV): Pass STATIC_CXX=false to avoid patching. Pass BUILD_GCC and BUILD_CXX in place of suffix patch if building hs23. * NEWS: List this new feature and also the bug fix, PR1318. * acinclude.m4: (IT_ENABLE_ZERO_BUILD): Define only once. Depend on CACAO, Zero and Shark. (IT_SET_SHARK_BUILD): Define only once. (IT_ENABLE_JAMVM): Likewise. (IT_ENABLE_CACAO): Likewise. (IT_WITH_HOTSPOT_BUILD): Likewise. Set ALTERNATE_BUILD to hs23. Depend on Zero build determination and use to pick default. Error out if hs23 is enabled with Zero. * hotspot.map: Add reference to hs23 from the 2.3 tree. * patches/ecj/hotspot/hs23/hotspot-jdk-dependency.patch: Added for hs23 build. * patches/ecj/hotspot/original/hotspot-jdk-dependency.patch: Moved from patches/ecj/hotspot-jdk-dependency.patch. * patches/gcc-suffix-hotspot.patch: Split out for original HotSpot builds. * patches/gcc-suffix.patch: Original version minus HotSpot chunk. * patches/hotspot/hs23/arm-hsdis.patch, * patches/hotspot/hs23/pr639-broken_shark_build.patch: hs23 versions of these patches which don't appear upstream. * patches/hotspot/original/arm-hsdis.patch, * patches/hotspot/original/pr639-broken_shark_build.patch: Moved from patches. * patches/hotspot/hs23/remove_jsr292_tests.patch: Remove JSR292 tests from hs23 HotSpot when building on 6.
author Andrew John Hughes <gnu.andrew@redhat.com>
date Fri, 15 Feb 2013 00:02:19 +0000
parents a31bd9ed229b
children 3439277534e3
files ChangeLog INSTALL Makefile.am NEWS acinclude.m4 hotspot.map patches/arm-hsdis.patch patches/ecj/hotspot-jdk-dependency.patch patches/ecj/hotspot/hs23/hotspot-jdk-dependency.patch patches/ecj/hotspot/original/hotspot-jdk-dependency.patch patches/gcc-suffix-hotspot.patch patches/gcc-suffix.patch patches/hotspot/hs23/arm-hsdis.patch patches/hotspot/hs23/pr639-broken_shark_build.patch patches/hotspot/hs23/remove_jsr292_tests.patch patches/hotspot/original/arm-hsdis.patch patches/hotspot/original/pr639-broken_shark_build.patch patches/no-static-linking.patch patches/pr639-broken_shark_build.patch
diffstat 19 files changed, 658 insertions(+), 289 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Feb 14 00:01:03 2013 +0000
+++ b/ChangeLog	Fri Feb 15 00:02:19 2013 +0000
@@ -1,3 +1,49 @@
+2013-02-14  Andrew John Hughes  <gnu.andrew@redhat.com>
+
+	PR1317: Provide an option to build with a more up-to-date HotSpot
+	* patches/no-static-linking.patch:
+	Dropped; unneeded if STATIC_CXX is set to false.
+	* INSTALL: Update HotSpot build documentation.
+	* Makefile.am:
+	(SECURITY_PATCHES): Exclude patches in hs23 HotSpot
+	if building with it.
+	(ICEDTEA_PATCHES): Likewise, and exclude the ARM32
+	port which doesn't work with hs23.  Also specialise
+	some patches which differ depending on HotSpot version.
+	(ICEDTEA_ECJ_PATCHES): Specialise hotspot-jdk-dependency.patch
+	depending on version of HotSpot being built.
+	(ICEDTEA_ENV): Pass STATIC_CXX=false to avoid patching.
+	Pass BUILD_GCC and BUILD_CXX in place of suffix patch if
+	building hs23.
+	* NEWS:
+	List this new feature and also the bug fix, PR1318.
+	* acinclude.m4:
+	(IT_ENABLE_ZERO_BUILD): Define only once.  Depend on
+	CACAO, Zero and Shark.
+	(IT_SET_SHARK_BUILD): Define only once.
+	(IT_ENABLE_JAMVM): Likewise.
+	(IT_ENABLE_CACAO): Likewise.
+	(IT_WITH_HOTSPOT_BUILD): Likewise.  Set ALTERNATE_BUILD
+	to hs23.  Depend on Zero build determination and use to
+	pick default.  Error out if hs23 is enabled with Zero.
+	* hotspot.map: Add reference to hs23 from the 2.3 tree.
+	* patches/ecj/hotspot/hs23/hotspot-jdk-dependency.patch:
+	Added for hs23 build.
+	* patches/ecj/hotspot/original/hotspot-jdk-dependency.patch:
+	Moved from patches/ecj/hotspot-jdk-dependency.patch.
+	* patches/gcc-suffix-hotspot.patch:
+	Split out for original HotSpot builds.
+	* patches/gcc-suffix.patch: Original version minus HotSpot
+	chunk.
+	* patches/hotspot/hs23/arm-hsdis.patch,
+	* patches/hotspot/hs23/pr639-broken_shark_build.patch:
+	hs23 versions of these patches which don't appear upstream.
+	* patches/hotspot/original/arm-hsdis.patch,
+	* patches/hotspot/original/pr639-broken_shark_build.patch:
+	Moved from patches.
+	* patches/hotspot/hs23/remove_jsr292_tests.patch:
+	Remove JSR292 tests from hs23 HotSpot when building on 6.
+
 2013-02-14  Andrew John Hughes  <gnu.andrew@redhat.com>
 
 	* NEWS: Add 1.11.6, 1.11.7, 1.12.1 & 1.12.2
--- a/INSTALL	Thu Feb 14 00:01:03 2013 +0000
+++ b/INSTALL	Fri Feb 15 00:02:19 2013 +0000
@@ -319,12 +319,18 @@
 of the requested build.
 
 At present, IcedTea6 supports the 'original' HotSpot 20 provided as
-part of the upstream tarball.  Note that the norm. is for up to one
-alternate (non-default) build to be supported and just passing
---with-hotspot-build (equivalent to --with-hotspot-build=yes) will
-always provide the alternate build.  Conversely, passing
---without-hotspot-build (equivalent to --with-hotspot-build=no)
-provides the original build from the OpenJDK tarball.
+part of the upstream tarball and 'hs23', the HotSpot used by the IcedTea
+2.3.x series.  Note that the norm. is for up to one alternate (non-default)
+build to be supported and just passing --with-hotspot-build
+(equivalent to --with-hotspot-build=yes) will always provide the alternate
+build.  Conversely, passing --without-hotspot-build (equivalent to
+--with-hotspot-build=no) provides the original build from the OpenJDK tarball.
+
+When no option is specified, the default build is used.  At present,
+this is 'hs23' unless the user is building Zero or Shark (either by
+choice, or because the build has default to this on architectures
+other than x86/x86_64/sparc).  As 'hs23' is known not to work with
+Zero or Shark, 'original' is still the default for these builds.
 
 Javascript Support
 ==================
--- a/Makefile.am	Thu Feb 14 00:01:03 2013 +0000
+++ b/Makefile.am	Fri Feb 15 00:02:19 2013 +0000
@@ -271,16 +271,19 @@
 	patches/security/20130201/8000540.patch \
 	patches/security/20130201/8000631.patch \
 	patches/security/20130201/8001242.patch \
-	patches/security/20130201/8001307.patch \
 	patches/security/20130201/8001972.patch \
 	patches/security/20130201/8002325.patch \
 	patches/security/20130201/8001235.patch
 
+if !WITH_ALT_HSBUILD
+SECURITY_PATCHES += \
+	patches/security/20130201/8001307.patch
+endif
+
 SPECIAL_SECURITY_PATCH = patches/security/20120214/7112642.patch
 
 ICEDTEA_PATCHES = \
 	$(SECURITY_PATCHES) \
-	patches/stdc-limit-macros.patch \
 	patches/openjdk/4993545-nativeinlightfixer.patch \
 	patches/openjdk/6637796-set_bounds.patch \
 	patches/openjdk/6607660-treelock.patch \
@@ -303,27 +306,20 @@
 	patches/parisc-opt.patch \
 	patches/lucene-crash.patch \
 	patches/version.patch \
-	patches/version-hotspot.patch \
-	patches/text-relocations.patch \
 	patches/openjdk/7043921-java_rmi_cgi.patch \
 	patches/use-system-tzdata.patch \
 	patches/headers.patch \
 	patches/gcc-suffix.patch \
-	patches/memory-limits.patch \
 	patches/libraries.patch \
 	patches/jvmtiEnv.patch \
 	patches/lcms.patch \
-	patches/print_lsb_release.patch \
 	patches/uname.patch \
 	patches/freetypeversion.patch \
 	patches/nomotif-6706121.patch \
 	patches/nomotif.patch \
 	patches/nomotif-mtoolkit.patch \
-	patches/alpha-fixes.patch \
 	patches/alt-jar.patch \
 	patches/jdk-use-ssize_t.patch \
-	patches/use-idx_t.patch \
-	patches/params-cast-size_t.patch \
 	patches/clean-crypto.patch \
 	patches/arch.patch \
 	patches/lc_ctype.patch \
@@ -334,8 +330,6 @@
 	patches/pr261.patch \
 	patches/sparc-buildfixes.patch \
 	patches/sparc64-linux.patch \
-	patches/sparc-ptracefix.patch \
-	patches/sparc-trapsfix.patch \
 	patches/jtreg-6592792.patch \
 	patches/s390-noinline.patch \
 	patches/jtreg-dnd.patch \
@@ -344,15 +338,11 @@
 	patches/dnd-filelists.patch \
 	patches/disable-cc-incompatible-sanity-checks.patch \
 	patches/explicit-target-arch.patch \
-	patches/openjdk/7019808-stack_noexec.patch \
 	patches/parisc.patch \
-	patches/sh4-support.patch \
 	patches/policy-evaluation.patch \
-	patches/update-bootclasspath.patch \
 	patches/openjdk/6959123-libpng_14.patch \
 	patches/applet_hole.patch \
 	patches/jtreg-httpTest.patch \
-	patches/arm.patch \
 	patches/debug-dir.patch \
 	patches/override-redirect-metacity.patch \
 	patches/openjdk/6967533-pre_epoch.patch \
@@ -363,18 +353,15 @@
 	patches/openjdk/6510892-httpserver_test.patch \
 	patches/openjdk/6638712-wildcard_types.patch \
 	patches/openjdk/6650759-missing_inference.patch \
-	patches/numa_on_early_glibc.patch \
 	patches/jtreg-international-fonts.patch \
 	patches/f14-fonts.patch \
 	patches/jtreg-T6638712-fix.patch \
 	patches/jtreg-T6650759m-fix.patch \
 	patches/openjdk/7003777-bad-html-entity-parse.patch \
-	patches/jtreg-6929067-fix.patch \
 	patches/rendering-engine-tests.patch \
 	patches/openjdk/6800846-printing-quality.patch \
 	patches/rh661505-jpeg.patch \
 	patches/6703377-freetypescaler.patch \
-	patches/ia64-fix.patch \
 	patches/openjdk/6642612-filechooser_button_sizes.patch \
 	patches/jtreg-international-fonts-styles.patch \
 	patches/openjdk/6736649-text_bearings.patch \
@@ -384,8 +371,6 @@
 	patches/openjdk/4724552-CubicCurve2D.patch \
 	patches/openjdk/4493128-CubicCurve2D.patch \
 	patches/openjdk/4645692-CubicCurve2D.solveCubic.patch \
-	patches/no-static-linking.patch \
-	patches/openjdk/7041156-gcc_export_dynamic.patch \
 	patches/g344659-sparc_fix.patch \
 	patches/openjdk/6728834-blurred-lcd-aa-text.patch \
 	patches/openjdk/6749060-bad-lcd-aa-non-opaque-dest.patch \
@@ -409,14 +394,9 @@
 	patches/openjdk/7027667-AAShapePipeRegTest.patch \
 	patches/openjdk/7019861-AA-regression-fix.patch \
 	patches/g356743-libpng-1.5.patch \
-	patches/openjdk/7032388-work_without_cmov_instruction.patch \
-	patches/openjdk/7031385-gcc-register-allocation-fix.patch \
 	patches/openjdk/6986968-crash_on_xim_restart.patch \
 	patches/openjdk/7036754-stroker-nan.patch \
 	patches/openjdk/pgram-pipe-regression.patch \
-	patches/openjdk/7034464-transparent_huge_pages.patch \
-	patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch \
-	patches/openjdk/7043564-hugepage.patch \
 	patches/openjdk/mutter.patch \
 	patches/fonts-rhel-version.patch \
 	patches/openjdk/7036148-npe-null-jmenu-name.patch \
@@ -431,30 +411,21 @@
 	patches/openjdk/6818312-com.sun.awt.SecurityWarning.getSize.patch \
 	patches/jtreg-MappedByteBuffer-Basic.patch \
 	patches/openjdk/7008106-WindowOpacity.patch \
-	patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int.patch \
 	patches/openjdk/6699843-IllegalArgumentException_drawString.patch \
 	patches/openjdk/6918065-Crash_in_Java2D_blit_loop.patch \
 	patches/openjdk/6623219-Font_canDisplayUpTo_does_not_work.patch \
 	patches/openjdk/6783910-java_awt_Color_brighter_darker_fix.patch \
 	patches/openjdk/6785424-SecurityException_locating_physical_fonts.patch \
-	patches/openjdk/7047069-Array_can_dynamically_change_size.patch \
-	patches/openjdk/6796786-invalid_FP_identity_transform.patch \
-	patches/openjdk/7042070-Typo_in_Test6796786.patch \
 	patches/openjdk/6679308-Poor_text_rendering_on_translucent_image.patch \
 	patches/openjdk/6842838-64-bit_failure_in_handling_invalid_manifest.patch \
 	patches/openjdk/6882768-test_for_6842838_is_broken.patch \
-	patches/pr639-broken_shark_build.patch \
+	patches/hotspot/$(HSBUILD)/pr639-broken_shark_build.patch \
 	patches/powerpc-stacksize.patch \
-	patches/jtreg-remove-test-6987555.patch \
-	patches/jtreg-remove-test-6991596.patch \
-	patches/openjdk/7036220-shark_llvm_29_headers.patch \
-	patches/openjdk/7029152-String_intrinsics_miss_optimization.patch \
 	patches/openjdk/6711682-JCheckBox_in_JTable_does_not_respond_to_click.patch \
 	patches/openjdk/6758179-D3D_AlphaComposite_is_applied_incorrectly.patch \
 	patches/jtreg-ConstructDeflaterInput-fix.patch \
 	patches/openjdk/6613904-GroupLayout_createParallelGroup_null_arg.patch \
 	patches/openjdk/7049339-anyblit-broken.patch \
-	patches/jtreg-hotspot-Test7020373-fix.patch \
 	patches/openjdk/4917091-javac_rejects_array_over_128_in_length.patch \
 	patches/openjdk/6390045-error_cannot_access_java_lang_void.patch \
 	patches/openjdk/6752638-preferLocaleFonts_throws_NPE.patch \
@@ -462,15 +433,12 @@
 	patches/openjdk/6669869-Beans_isDesignTime_should_be_per-AppContext.patch \
 	patches/openjdk/6934356-Vector_writeObject_serialization_DL.patch \
 	patches/openjdk/7036582-Improve_test_coverage_of_BigDecimal.patch \
-	patches/pr690-shark-jit-hs20.patch \
-	patches/pr696-zero-fast_aldc-hs20.patch \
 	patches/openjdk/6806261-BigDecimal_longValueExact_throws_NPE.patch \
 	patches/openjdk/6371401-BigInteger.shift_throws_StackOverflowError.patch \
 	patches/openjdk/6826104-npe_on_app_and_toolkit_modal_dialog_click.patch \
 	patches/openjdk/5082756-ImageIO_plugins_metadata_boolean_attributes.patch \
 	patches/openjdk/6296893-BMP_Writer_handles_TopDown_prop_incorrectly.patch \
-	patches/arm-debug.patch \
-	patches/arm-hsdis.patch	\
+	patches/hotspot/$(HSBUILD)/arm-hsdis.patch \
 	patches/openjdk/7103610-_NET_WM_PID_and_WM_CLIENT_MACHINE_are_not_set.patch \
 	patches/openjdk/6706974-krb5_test_infrastructure.patch \
 	patches/openjdk/6764553-IdResolver_is_not_thread_safe.patch \
@@ -500,10 +468,56 @@
 	patches/openjdk/6980681-corba_deadlock.patch \
 	patches/openjdk/7162902-corba_fixes.patch \
 	patches/traceable.patch \
-	patches/openjdk/7010849-modernise_sa.patch \
 	patches/openjdk/8005615-failure_to_load_logger_implementation.patch \
 	patches/openjdk/8004341-jck_dialog_failure.patch
 
+if WITH_ALT_HSBUILD
+ICEDTEA_PATCHES += \
+	patches/hotspot/hs23/remove_jsr292_tests.patch
+else
+# stdc-limit-macros is part of 7032458
+# pr690-shark-jit-hs20.patch is part of 7032458
+# pr696-zero-fast_aldc-hs20.patch is 7030207 & part of 7032458
+ICEDTEA_PATCHES += \
+	patches/stdc-limit-macros.patch \
+	patches/version-hotspot.patch \
+	patches/text-relocations.patch \
+	patches/gcc-suffix-hotspot.patch \
+	patches/memory-limits.patch \
+	patches/print_lsb_release.patch \
+	patches/alpha-fixes.patch \
+	patches/use-idx_t.patch \
+	patches/params-cast-size_t.patch \
+	patches/sparc-ptracefix.patch \
+	patches/sparc-trapsfix.patch \
+	patches/openjdk/7019808-stack_noexec.patch \
+	patches/sh4-support.patch \
+	patches/update-bootclasspath.patch \
+	patches/arm.patch \
+	patches/numa_on_early_glibc.patch \
+	patches/jtreg-6929067-fix.patch \
+	patches/ia64-fix.patch \
+	patches/openjdk/7041156-gcc_export_dynamic.patch \
+	patches/openjdk/7032388-work_without_cmov_instruction.patch \
+	patches/openjdk/7031385-gcc-register-allocation-fix.patch \
+	patches/openjdk/7034464-transparent_huge_pages.patch \
+	patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch \
+	patches/openjdk/7043564-hugepage.patch \
+	patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int.patch \
+	patches/openjdk/7047069-Array_can_dynamically_change_size.patch \
+	patches/openjdk/6796786-invalid_FP_identity_transform.patch \
+	patches/openjdk/7042070-Typo_in_Test6796786.patch \
+	patches/jtreg-remove-test-6987555.patch \
+	patches/jtreg-remove-test-6991596.patch \
+	patches/openjdk/7036220-shark_llvm_29_headers.patch \
+	patches/openjdk/7029152-String_intrinsics_miss_optimization.patch \
+	patches/jtreg-hotspot-Test7020373-fix.patch \
+	patches/pr690-shark-jit-hs20.patch \
+	patches/pr696-zero-fast_aldc-hs20.patch \
+	patches/arm-debug.patch \
+	patches/openjdk/7010849-modernise_sa.patch
+endif
+
 if WITH_RHINO
 ICEDTEA_PATCHES += \
 	patches/rhino.patch
@@ -571,7 +585,7 @@
 	patches/ecj/corba-dependencies.patch \
 	patches/ecj/jaxws-langtools-dependency.patch \
 	patches/ecj/jaxws-jdk-dependency.patch \
-	patches/ecj/hotspot-jdk-dependency.patch
+	patches/ecj/hotspot/$(HSBUILD)/hotspot-jdk-dependency.patch
 
 if DTDTYPE_QNAME
 ICEDTEA_ECJ_PATCHES += \
@@ -654,7 +668,14 @@
 	DEBUG_BINARIES="true" \
 	ALT_DROPS_DIR="$(abs_top_builddir)/drops" \
 	VERBOSE="$(VERBOSE)" \
-	ALT_OUTPUTDIR="$(BUILD_OUTPUT_DIR)"
+	ALT_OUTPUTDIR="$(BUILD_OUTPUT_DIR)" \
+	STATIC_CXX="false"
+
+if WITH_ALT_HSBUILD
+ICEDTEA_ENV += \
+	BUILD_GCC=gcc$(GCC_SUFFIX) \
+	BUILD_CXX=g++$(GCC_SUFFIX)
+endif
 
 if ENABLE_CACAO
 ICEDTEA_ENV += \
--- a/NEWS	Thu Feb 14 00:01:03 2013 +0000
+++ b/NEWS	Fri Feb 15 00:02:19 2013 +0000
@@ -12,6 +12,11 @@
 
 New in release 1.13.0 (201X-XX-XX):
 
+* New features
+  - PR1317: Provide an option to build with a more up-to-date HotSpot
+* Bug fixes
+  - PR1318: Fix automatic enabling of the Zero build on non-JIT architectures which don't use CACAO or JamVM.
+
 New in release 1.12.2 (2013-02-11):
 
 * Backports
--- a/acinclude.m4	Thu Feb 14 00:01:03 2013 +0000
+++ b/acinclude.m4	Fri Feb 15 00:02:19 2013 +0000
@@ -716,9 +716,12 @@
  AC_SUBST([$1])
 ])
 
-AC_DEFUN([IT_ENABLE_ZERO_BUILD],
+AC_DEFUN_ONCE([IT_ENABLE_ZERO_BUILD],
 [
   AC_REQUIRE([IT_SET_ARCH_SETTINGS])
+  AC_REQUIRE([IT_ENABLE_CACAO])
+  AC_REQUIRE([IT_ENABLE_JAMVM])
+  AC_REQUIRE([IT_SET_SHARK_BUILD])
   AC_MSG_CHECKING([whether to use the zero-assembler port])
   use_zero=no
   AC_ARG_ENABLE([zero],
@@ -794,7 +797,7 @@
   AC_CONFIG_FILES([ergo.c])
 ])
 
-AC_DEFUN([IT_SET_SHARK_BUILD],
+AC_DEFUN_ONCE([IT_SET_SHARK_BUILD],
 [
   AC_MSG_CHECKING(whether to use the Shark JIT)
   shark_selected=no
@@ -818,7 +821,7 @@
   AM_CONDITIONAL(SHARK_BUILD, test "x${use_shark}" = xyes)
 ])
 
-AC_DEFUN([IT_ENABLE_JAMVM],
+AC_DEFUN_ONCE([IT_ENABLE_JAMVM],
 [
   AC_MSG_CHECKING(whether to use JamVM as VM)
   AC_ARG_ENABLE([jamvm],
@@ -857,7 +860,7 @@
   AC_SUBST(ALT_JAMVM_SRC_ZIP)
 ])
 
-AC_DEFUN([IT_ENABLE_CACAO],
+AC_DEFUN_ONCE([IT_ENABLE_CACAO],
 [
   AC_MSG_CHECKING(whether to use CACAO as VM)
   AC_ARG_ENABLE([cacao],
@@ -956,11 +959,16 @@
   AC_SUBST([GCJ])
 ])
 
-AC_DEFUN([IT_WITH_HOTSPOT_BUILD],
+AC_DEFUN_ONCE([IT_WITH_HOTSPOT_BUILD],
 [
+  AC_REQUIRE([IT_ENABLE_ZERO_BUILD])
   ORIGINAL_BUILD="original"
-  ALTERNATE_BUILD="original"
-  DEFAULT_BUILD=${ORIGINAL_BUILD}
+  ALTERNATE_BUILD="hs23"
+  if test "x${use_zero}" = "xyes"; then
+    DEFAULT_BUILD=${ORIGINAL_BUILD}
+  else
+    DEFAULT_BUILD=${ALTERNATE_BUILD}
+  fi
   AC_MSG_CHECKING([which HotSpot build to use])
   AC_ARG_WITH([hotspot-build],
 	      [AS_HELP_STRING(--with-hotspot-build,the HotSpot build to use (see hotspot.map))],
@@ -978,6 +986,11 @@
   AC_MSG_RESULT([${HSBUILD}])
   AC_SUBST([HSBUILD])
   AM_CONDITIONAL(WITH_ALT_HSBUILD, test "x${HSBUILD}" != "x${ORIGINAL_BUILD}")
+  if test "x${HSBUILD}" = "x${ALTERNATE_BUILD}" ; then
+    if test "x${use_zero}" = "xyes"; then
+      AC_MSG_ERROR([The ${ALTERNATE_BUILD} build of HotSpot is known not to work with Zero or Shark.])
+    fi
+  fi
 ])
 
 AC_DEFUN([IT_WITH_HOTSPOT_SRC_ZIP],
--- a/hotspot.map	Thu Feb 14 00:01:03 2013 +0000
+++ b/hotspot.map	Fri Feb 15 00:02:19 2013 +0000
@@ -1,1 +1,2 @@
 # version url changeset sha256sum
+hs23 http://icedtea.classpath.org/hg/release/icedtea7-forest-2.3/hotspot bc0de5a0ece2 4b571c99b9dfdca6e8456a7d0d47eedb1a8e3c4863322cc853f959b1cb4bc068
--- a/patches/arm-hsdis.patch	Thu Feb 14 00:01:03 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-2012-01-20  Andrew Haley  <aph@redhat.com>
-
-	* Makefile (ARCH): Add entry for armv7l.
-	(CFLAGS): Enable debugging.
-	($(LIBRARIES)): Pass CFLAGS to sub-make.
-	* hsdis.c: Include string.h.
-	(parse_caller_options): Fix strncmp bug.
-	(native_arch_name): Add entry for ARM.
-
-diff -u openjdk/hotspot/src/share/tools/hsdis/hsdis.c ../icedtea6/openjdk/hotspot/src/share/tools/hsdis/hsdis.c
---- openjdk/hotspot/src/share/tools/hsdis/hsdis.c	2011-11-14 17:07:33.000000000 -0500
-+++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c	2012-01-20 10:21:28.000000000 -0500
-@@ -22,8 +22,6 @@
-  *
-  */
- 
--#include "precompiled.hpp"
--
- /* hsdis.c -- dump a range of addresses as native instructions
-    This implements the plugin protocol required by the
-    HotSpot PrintAssembly option.
-@@ -37,6 +35,8 @@
- #include <dis-asm.h>
- #include <inttypes.h>
- 
-+#include <string.h>
-+
- #ifndef bool
- #define bool int
- #define true 1
-@@ -358,7 +358,7 @@
-       if (plen > mach_size)  plen = mach_size;
-       strncpy(mach_option, p, plen);
-       mach_option[plen] = '\0';
--    } else if (plen > 6 && strncmp(p, "hsdis-", 6)) {
-+    } else if (plen > 6 && !strncmp(p, "hsdis-", 6)) {
-       // do not pass these to the next level
-     } else {
-       /* just copy it; {i386,sparc}-dis.c might like to see it  */
-@@ -420,6 +420,9 @@
- #ifdef LIBARCH_sparcv9
-     res = "sparc:v9b";
- #endif
-+#ifdef LIBARCH_arm
-+    res = "arm";
-+#endif
-   if (res == NULL)
-     res = "architecture not set in Makefile!";
-   return res;
-diff -u openjdk/hotspot/src/share/tools/hsdis/Makefile openjdk/hotspot/src/share/tools/hsdis/Makefile
---- openjdk/hotspot/src/share/tools/hsdis/Makefile	2011-11-14 17:07:33.000000000 -0500
-+++ openjdk/hotspot/src/share/tools/hsdis/Makefile	2012-01-20 10:20:32.000000000 -0500
-@@ -68,14 +68,18 @@
- CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
- else
- CPU             = $(shell uname -m)
-+ifneq		 ($(findstring arm,$(CPU)),)
-+ARCH=arm
-+else
- ARCH1=$(CPU:x86_64=amd64)
- ARCH=$(ARCH1:i686=i386)
- CFLAGS/i386	+= -m32
- CFLAGS/sparc	+= -m32
- CFLAGS/sparcv9	+= -m64
- CFLAGS/amd64	+= -m64
-+endif
- CFLAGS		+= $(CFLAGS/$(ARCH))
--CFLAGS		+= -fPIC
-+CFLAGS		+= -fPIC -g
- OS		= linux
- LIB_EXT		= .so
- CC 		= gcc
-@@ -118,7 +122,7 @@
- BINUTILSDIR	= $(shell cd $(BINUTILS);pwd)
- endif
- 
--CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
-+CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILSDIR)/bfd -I$(TARGET_DIR)/bfd
- CPPFLAGS	+= -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
- 
- TARGET_DIR	= build/$(OS)-$(JDKARCH)
-@@ -145,7 +149,7 @@
- demo: $(TARGET) $(DEMO_TARGET)
- 
- $(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
--	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
-+	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes "CFLAGS=$(CFLAGS)"; fi
- 
- $(TARGET_DIR)/Makefile:
- 	(cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
--- a/patches/ecj/hotspot-jdk-dependency.patch	Thu Feb 14 00:01:03 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make
---- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make	2012-05-01 22:15:06.000000000 +0100
-+++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make	2012-08-15 19:43:49.830577295 +0100
-@@ -97,8 +97,8 @@
- 	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
- 	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
- 	
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
- 	
- 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
- 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
-diff -Nru openjdk-ecj.orig/make/hotspot-rules.gmk openjdk-ecj/make/hotspot-rules.gmk
---- openjdk-ecj.orig/make/hotspot-rules.gmk	2012-05-01 22:13:57.000000000 +0100
-+++ openjdk-ecj/make/hotspot-rules.gmk	2012-08-15 19:44:23.215116331 +0100
-@@ -83,6 +83,7 @@
- HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
- HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
- HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
-+HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
- 
- # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
- #   Or is there something wrong with hotspot/make/Makefile?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/hotspot/hs23/hotspot-jdk-dependency.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,23 @@
+diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make
+--- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make	2013-02-11 23:08:47.000000000 +0000
++++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make	2013-02-14 18:25:27.487892901 +0000
+@@ -91,7 +91,7 @@
+ # are in AGENT_FILES, so use the shell to expand them.
+ # Be extra carefull to not produce too long command lines in the shell!
+ 	$(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
+ 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+ 	$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
+diff -Nru openjdk-ecj.orig/make/hotspot-rules.gmk openjdk-ecj/make/hotspot-rules.gmk
+--- openjdk-ecj.orig/make/hotspot-rules.gmk	2012-10-26 19:21:39.000000000 +0100
++++ openjdk-ecj/make/hotspot-rules.gmk	2013-02-14 18:24:27.622929395 +0000
+@@ -83,6 +83,7 @@
+ HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
++HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
+ 
+ # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
+ #   Or is there something wrong with hotspot/make/Makefile?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/hotspot/original/hotspot-jdk-dependency.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,25 @@
+diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make
+--- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make	2012-05-01 22:15:06.000000000 +0100
++++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make	2012-08-15 19:43:49.830577295 +0100
+@@ -97,8 +97,8 @@
+ 	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
+ 	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
+ 	
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+ 	
+ 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+diff -Nru openjdk-ecj.orig/make/hotspot-rules.gmk openjdk-ecj/make/hotspot-rules.gmk
+--- openjdk-ecj.orig/make/hotspot-rules.gmk	2012-05-01 22:13:57.000000000 +0100
++++ openjdk-ecj/make/hotspot-rules.gmk	2012-08-15 19:44:23.215116331 +0100
+@@ -83,6 +83,7 @@
+ HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
++HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
+ 
+ # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
+ #   Or is there something wrong with hotspot/make/Makefile?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gcc-suffix-hotspot.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,31 @@
+diff -Nru openjdk.orig/hotspot/agent/src/os/linux/Makefile openjdk/hotspot/agent/src/os/linux/Makefile
+--- openjdk.orig/hotspot/agent/src/os/linux/Makefile	2012-05-01 22:15:02.000000000 +0100
++++ openjdk/hotspot/agent/src/os/linux/Makefile	2012-08-31 14:23:17.249256215 +0100
+@@ -23,7 +23,7 @@
+ #
+ 
+ ARCH := $(shell if ([ `uname -m` = "ia64" ])  ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
+-GCC      = gcc
++GCC      = gcc$(GCC_SUFFIX)
+ 
+ JAVAH    = ${JAVA_HOME}/bin/javah
+ 
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2012-08-31 14:22:45.464733130 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2012-08-31 14:23:17.249256215 +0100
+@@ -28,11 +28,11 @@
+ # When cross-compiling the ALT_COMPILER_PATH points
+ # to the cross-compilation toolset
+ ifdef CROSS_COMPILE_ARCH
+-CPP = $(ALT_COMPILER_PATH)/g++
+-CC  = $(ALT_COMPILER_PATH)/gcc
++CPP = $(ALT_COMPILER_PATH)/g++$(GCC_SUFFIX)
++CC  = $(ALT_COMPILER_PATH)/gcc$(GCC_SUFFIX)
+ else
+-CPP = g++
+-CC  = gcc
++CPP = g++$(GCC_SUFFIX)
++CC  = gcc$(GCC_SUFFIX)
+ endif
+ 
+ AS  = $(CC) -c
--- a/patches/gcc-suffix.patch	Thu Feb 14 00:01:03 2013 +0000
+++ b/patches/gcc-suffix.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -23,37 +23,6 @@
    endif
    ifeq ($(ZERO_BUILD), true)
      # zero
-diff -Nru openjdk.orig/hotspot/agent/src/os/linux/Makefile openjdk/hotspot/agent/src/os/linux/Makefile
---- openjdk.orig/hotspot/agent/src/os/linux/Makefile	2012-05-01 22:15:02.000000000 +0100
-+++ openjdk/hotspot/agent/src/os/linux/Makefile	2012-08-31 14:23:17.249256215 +0100
-@@ -23,7 +23,7 @@
- #
- 
- ARCH := $(shell if ([ `uname -m` = "ia64" ])  ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
--GCC      = gcc
-+GCC      = gcc$(GCC_SUFFIX)
- 
- JAVAH    = ${JAVA_HOME}/bin/javah
- 
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2012-08-31 14:22:45.464733130 +0100
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2012-08-31 14:23:17.249256215 +0100
-@@ -28,11 +28,11 @@
- # When cross-compiling the ALT_COMPILER_PATH points
- # to the cross-compilation toolset
- ifdef CROSS_COMPILE_ARCH
--CPP = $(ALT_COMPILER_PATH)/g++
--CC  = $(ALT_COMPILER_PATH)/gcc
-+CPP = $(ALT_COMPILER_PATH)/g++$(GCC_SUFFIX)
-+CC  = $(ALT_COMPILER_PATH)/gcc$(GCC_SUFFIX)
- else
--CPP = g++
--CC  = gcc
-+CPP = g++$(GCC_SUFFIX)
-+CC  = gcc$(GCC_SUFFIX)
- endif
- 
- AS  = $(CC) -c
 diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
 --- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2012-05-01 22:17:59.000000000 +0100
 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2012-08-31 14:23:17.241256083 +0100
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs23/arm-hsdis.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,72 @@
+diff -Nru openjdk.orig/hotspot/src/share/tools/hsdis/hsdis.c openjdk/hotspot/src/share/tools/hsdis/hsdis.c
+--- openjdk.orig/hotspot/src/share/tools/hsdis/hsdis.c	2013-02-11 23:08:47.000000000 +0000
++++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c	2013-02-14 18:06:25.372022803 +0000
+@@ -35,6 +35,8 @@
+ #include <dis-asm.h>
+ #include <inttypes.h>
+ 
++#include <string.h>
++
+ #ifndef bool
+ #define bool int
+ #define true 1
+@@ -356,7 +358,7 @@
+       if (plen > mach_size)  plen = mach_size;
+       strncpy(mach_option, p, plen);
+       mach_option[plen] = '\0';
+-    } else if (plen > 6 && strncmp(p, "hsdis-", 6) == 0) {
++    } else if (plen > 6 && !strncmp(p, "hsdis-", 6)) {
+       // do not pass these to the next level
+     } else {
+       /* just copy it; {i386,sparc}-dis.c might like to see it  */
+@@ -418,6 +420,9 @@
+ #ifdef LIBARCH_sparcv9
+     res = "sparc:v9b";
+ #endif
++#ifdef LIBARCH_arm
++    res = "arm";
++#endif
+   if (res == NULL)
+     res = "architecture not set in Makefile!";
+   return res;
+diff -Nru openjdk.orig/hotspot/src/share/tools/hsdis/Makefile openjdk/hotspot/src/share/tools/hsdis/Makefile
+--- openjdk.orig/hotspot/src/share/tools/hsdis/Makefile	2013-02-11 23:08:47.000000000 +0000
++++ openjdk/hotspot/src/share/tools/hsdis/Makefile	2013-02-14 18:05:21.514998150 +0000
+@@ -68,14 +68,18 @@
+ CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
+ else
+ CPU             = $(shell uname -m)
++ifneq		 ($(findstring arm,$(CPU)),)
++ARCH=arm
++else
+ ARCH1=$(CPU:x86_64=amd64)
+ ARCH=$(ARCH1:i686=i386)
+ CFLAGS/i386	+= -m32
+ CFLAGS/sparc	+= -m32
+ CFLAGS/sparcv9	+= -m64
+ CFLAGS/amd64	+= -m64
++endif
+ CFLAGS		+= $(CFLAGS/$(ARCH))
+-CFLAGS		+= -fPIC
++CFLAGS		+= -fPIC -g
+ OS		= linux
+ LIB_EXT		= .so
+ CC 		= gcc
+@@ -118,7 +122,7 @@
+ BINUTILSDIR	= $(shell cd $(BINUTILS);pwd)
+ endif
+ 
+-CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
++CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILSDIR)/bfd -I$(TARGET_DIR)/bfd
+ CPPFLAGS	+= -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
+ 
+ TARGET_DIR	= build/$(OS)-$(JDKARCH)
+@@ -145,7 +149,7 @@
+ demo: $(TARGET) $(DEMO_TARGET)
+ 
+ $(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
+-	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
++	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes "CFLAGS=$(CFLAGS)"; fi
+ 
+ $(TARGET_DIR)/Makefile:
+ 	(cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs23/pr639-broken_shark_build.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,27 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/launcher.make openjdk/hotspot/make/linux/makefiles/launcher.make
+--- openjdk.orig/hotspot/make/linux/makefiles/launcher.make	2013-02-11 23:08:47.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/launcher.make	2013-02-14 17:26:56.322081018 +0000
+@@ -52,6 +52,10 @@
+   LAUNCHER.o                 = launcher.o
+   LFLAGS_LAUNCHER           += -L `pwd`
+   LIBS_LAUNCHER             += -l$(JVM) $(LIBS)
++  ifeq ($(SHARK_BUILD), true)
++    LFLAGS_LAUNCHER += $(LLVM_LDFLAGS)
++    LIBS_LAUNCHER   += $(LLVM_LIBS)
++  endif
+ endif
+ 
+ LINK_LAUNCHER = $(LINK.CC)
+diff -Nru openjdk.orig/hotspot/src/share/vm/ci/ciTypeFlow.cpp openjdk/hotspot/src/share/vm/ci/ciTypeFlow.cpp
+--- openjdk.orig/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2013-02-11 23:08:47.000000000 +0000
++++ openjdk/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2013-02-14 17:26:10.377344366 +0000
+@@ -37,6 +37,9 @@
+ #include "memory/allocation.inline.hpp"
+ #include "runtime/deoptimization.hpp"
+ #include "utilities/growableArray.hpp"
++#ifdef SHARK
++#include "shark/shark_globals.hpp"
++#endif
+ 
+ // ciTypeFlow::JsrSet
+ //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs23/remove_jsr292_tests.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,199 @@
+diff --git a/test/compiler/6990212/Test6990212.java b/test/compiler/6990212/Test6990212.java
+deleted file mode 100644
+--- openjdk/hotspot/test/compiler/6990212/Test6990212.java
++++ /dev/null
+@@ -1,56 +0,0 @@
+-/*
+- * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+- * or visit www.oracle.com if you need additional information or have any
+- * questions.
+- *
+- */
+-
+-/**
+- * @test
+- * @bug 6990212
+- * @summary JSR 292 JVMTI MethodEnter hook is not called for JSR 292 bootstrap and target methods
+- *
+- * @run main Test6990212
+- */
+-
+-import java.lang.invoke.*;
+-
+-interface intf {
+-    public Object target();
+-}
+-
+-public class Test6990212 implements intf {
+-    public Object target() {
+-        return null;
+-    }
+-
+-    public static void main(String[] args) throws Throwable {
+-        // Build an interface invoke and then invoke it on something
+-        // that doesn't implement the interface to test the
+-        // raiseException path.
+-        MethodHandle target = MethodHandles.lookup().findVirtual(intf.class, "target",  MethodType.methodType(Object.class));
+-        try {
+-            target.invoke(new Object());
+-        } catch (ClassCastException cce) {
+-            // everything is ok
+-            System.out.println("got expected ClassCastException");
+-        }
+-    }
+-}
+diff --git a/test/compiler/7141637/SpreadNullArg.java b/test/compiler/7141637/SpreadNullArg.java
+deleted file mode 100644
+--- openjdk/hotspot/test/compiler/7141637/SpreadNullArg.java
++++ /dev/null
+@@ -1,62 +0,0 @@
+-/*
+- * Copyright 2011 SAP AG.  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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+- * or visit www.oracle.com if you need additional information or have any
+- * questions.
+- */
+-
+-/*
+- * @test SpreadNullArg
+- * @bug 7141637
+- * @summary  verifies that the MethodHandle spread adapter can gracefully handle null arguments.
+- * @run main SpreadNullArg
+- * @author volker.simonis@gmail.com
+- */
+-
+-import java.lang.invoke.MethodHandle;
+-import java.lang.invoke.MethodHandles;
+-import java.lang.invoke.MethodType;
+-
+-public class SpreadNullArg {
+-
+-  public static void main(String args[]) {
+-
+-    MethodType mt_ref_arg = MethodType.methodType(int.class, Integer.class);
+-    MethodHandle mh_spreadInvoker = MethodHandles.spreadInvoker(mt_ref_arg, 0);
+-    MethodHandle mh_spread_target;
+-    int result = 42;
+-
+-    try {
+-      mh_spread_target =
+-        MethodHandles.lookup().findStatic(SpreadNullArg.class, "target_spread_arg", mt_ref_arg);
+-      result = (int) mh_spreadInvoker.invokeExact(mh_spread_target, (Object[]) null);
+-    } catch(NullPointerException e) {
+-      // Expected exception - do nothing!
+-    } catch(Throwable e) {
+-      throw new Error(e);
+-    }
+-
+-    if (result != 42) throw new Error("Expected NullPointerException was not thrown");
+-  }
+-
+-  public static int target_spread_arg(Integer i1) {
+-    return i1.intValue();
+-  }
+-
+-}
+diff --git a/test/compiler/7158807/Test7158807.java b/test/compiler/7158807/Test7158807.java
+deleted file mode 100644
+--- openjdk/hotspot/test/compiler/7158807/Test7158807.java
++++ /dev/null
+@@ -1,66 +0,0 @@
+-/*
+- * Copyright (c) 2012, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+- * or visit www.oracle.com if you need additional information or have any
+- * questions.
+- *
+- */
+-
+-/**
+- * @test
+- * @bug 7158807
+- * @summary Revise stack management with volatile call sites
+- * @author Marc Schonefeld
+- *
+- * @run main/othervm -XX:CompileThreshold=100 -Xbatch -Xss248k Test7158807
+- */
+-
+-import java.lang.invoke.MethodHandle;
+-import java.lang.invoke.MethodType;
+-import java.lang.invoke.VolatileCallSite;
+-
+-public class Test7158807 {
+-    /**
+-     * @param args the command line arguments
+-     */
+-    public static void main(String[] args) throws Throwable {
+-        for (int i = 0; i < 25600; i++) {
+-            MethodType mt = MethodType.methodType(java.lang.String.class);
+-            System.out.println(mt);
+-            MethodType mt3 = null;
+-            try {
+-              mt3 = MethodType.genericMethodType(i);
+-            } catch (IllegalArgumentException e) {
+-              System.out.println("Passed");
+-              System.exit(95);
+-            }
+-            System.out.println(i+":");
+-            try {
+-                VolatileCallSite vcs = new VolatileCallSite(mt3);
+-                System.out.println(vcs);
+-                MethodHandle mh = vcs.dynamicInvoker();
+-                vcs.setTarget(mh);
+-                // System.out.println(mh);
+-                mh.invoke(mt, mh);
+-            } catch (Throwable e) {
+-            }
+-        }
+-    }
+-}
+-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/arm-hsdis.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,90 @@
+2012-01-20  Andrew Haley  <aph@redhat.com>
+
+	* Makefile (ARCH): Add entry for armv7l.
+	(CFLAGS): Enable debugging.
+	($(LIBRARIES)): Pass CFLAGS to sub-make.
+	* hsdis.c: Include string.h.
+	(parse_caller_options): Fix strncmp bug.
+	(native_arch_name): Add entry for ARM.
+
+diff -u openjdk/hotspot/src/share/tools/hsdis/hsdis.c ../icedtea6/openjdk/hotspot/src/share/tools/hsdis/hsdis.c
+--- openjdk/hotspot/src/share/tools/hsdis/hsdis.c	2011-11-14 17:07:33.000000000 -0500
++++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c	2012-01-20 10:21:28.000000000 -0500
+@@ -22,8 +22,6 @@
+  *
+  */
+ 
+-#include "precompiled.hpp"
+-
+ /* hsdis.c -- dump a range of addresses as native instructions
+    This implements the plugin protocol required by the
+    HotSpot PrintAssembly option.
+@@ -37,6 +35,8 @@
+ #include <dis-asm.h>
+ #include <inttypes.h>
+ 
++#include <string.h>
++
+ #ifndef bool
+ #define bool int
+ #define true 1
+@@ -358,7 +358,7 @@
+       if (plen > mach_size)  plen = mach_size;
+       strncpy(mach_option, p, plen);
+       mach_option[plen] = '\0';
+-    } else if (plen > 6 && strncmp(p, "hsdis-", 6)) {
++    } else if (plen > 6 && !strncmp(p, "hsdis-", 6)) {
+       // do not pass these to the next level
+     } else {
+       /* just copy it; {i386,sparc}-dis.c might like to see it  */
+@@ -420,6 +420,9 @@
+ #ifdef LIBARCH_sparcv9
+     res = "sparc:v9b";
+ #endif
++#ifdef LIBARCH_arm
++    res = "arm";
++#endif
+   if (res == NULL)
+     res = "architecture not set in Makefile!";
+   return res;
+diff -u openjdk/hotspot/src/share/tools/hsdis/Makefile openjdk/hotspot/src/share/tools/hsdis/Makefile
+--- openjdk/hotspot/src/share/tools/hsdis/Makefile	2011-11-14 17:07:33.000000000 -0500
++++ openjdk/hotspot/src/share/tools/hsdis/Makefile	2012-01-20 10:20:32.000000000 -0500
+@@ -68,14 +68,18 @@
+ CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
+ else
+ CPU             = $(shell uname -m)
++ifneq		 ($(findstring arm,$(CPU)),)
++ARCH=arm
++else
+ ARCH1=$(CPU:x86_64=amd64)
+ ARCH=$(ARCH1:i686=i386)
+ CFLAGS/i386	+= -m32
+ CFLAGS/sparc	+= -m32
+ CFLAGS/sparcv9	+= -m64
+ CFLAGS/amd64	+= -m64
++endif
+ CFLAGS		+= $(CFLAGS/$(ARCH))
+-CFLAGS		+= -fPIC
++CFLAGS		+= -fPIC -g
+ OS		= linux
+ LIB_EXT		= .so
+ CC 		= gcc
+@@ -118,7 +122,7 @@
+ BINUTILSDIR	= $(shell cd $(BINUTILS);pwd)
+ endif
+ 
+-CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
++CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILSDIR)/bfd -I$(TARGET_DIR)/bfd
+ CPPFLAGS	+= -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
+ 
+ TARGET_DIR	= build/$(OS)-$(JDKARCH)
+@@ -145,7 +149,7 @@
+ demo: $(TARGET) $(DEMO_TARGET)
+ 
+ $(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
+-	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
++	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes "CFLAGS=$(CFLAGS)"; fi
+ 
+ $(TARGET_DIR)/Makefile:
+ 	(cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/pr639-broken_shark_build.patch	Fri Feb 15 00:02:19 2013 +0000
@@ -0,0 +1,44 @@
+--- openjdk.orig/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2011-02-24 00:28:58.000000000 +0000
+@@ -37,6 +37,9 @@
+ #include "memory/allocation.inline.hpp"
+ #include "runtime/deoptimization.hpp"
+ #include "utilities/growableArray.hpp"
++#ifdef SHARK
++#include "shark/shark_globals.hpp"
++#endif
+ 
+ // ciTypeFlow::JsrSet
+ //
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make	2011-02-23 21:28:45.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/vm.make	2011-02-24 02:17:30.000000000 +0000
+@@ -139,13 +139,15 @@
+ COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
+ COMPILER2_PATHS +=  $(GENERATED)/adfiles
+ 
++SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
++
+ # Include dirs per type.
+ Src_Dirs/CORE      := $(CORE_PATHS)
+ Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
+ Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
+ Src_Dirs/TIERED    := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
+ Src_Dirs/ZERO      := $(CORE_PATHS)
+-Src_Dirs/SHARK     := $(CORE_PATHS)
++Src_Dirs/SHARK     := $(CORE_PATHS) $(SHARK_PATHS)
+ Src_Dirs := $(Src_Dirs/$(TYPE))
+ 
+ COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
+--- openjdk.orig/hotspot/make/linux/makefiles/launcher.make	2011-02-22 16:51:24.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/launcher.make	2011-02-24 03:01:36.000000000 +0000
+@@ -52,6 +52,10 @@
+   LAUNCHER.o                 = launcher.o
+   LFLAGS_LAUNCHER           += -L `pwd`
+   LIBS_LAUNCHER             += -l$(JVM) $(LIBS)
++  ifeq ($(SHARK_BUILD), true)
++    LFLAGS_LAUNCHER += $(LLVM_LDFLAGS)
++    LIBS_LAUNCHER   += $(LLVM_LIBS)
++  endif
+ endif
+ 
+ LINK_LAUNCHER = $(LINK.c)
--- a/patches/no-static-linking.patch	Thu Feb 14 00:01:03 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-diff -r f7afe7a5e086 make/common/shared/Compiler-gcc.gmk
---- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	Fri Jan 21 16:21:28 2011 -0800
-+++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	Thu Feb 03 11:34:13 2011 +0000
-@@ -61,7 +61,7 @@
-   CC             = $(COMPILER_PATH)gcc
-   CPP            = $(COMPILER_PATH)gcc -E
-   # statically link libstdc++ before C++ ABI is stablized on Linux
--  STATIC_CXX     = true
-+  STATIC_CXX     = false
-   ifeq ($(STATIC_CXX),true)
-     # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
-     # We need to use gcc to statically link the C++ runtime. gcc and g++ use
-diff -r 9797bcda6c12 make/linux/makefiles/vm.make
---- openjdk.orig/hotspot/make/linux/makefiles/vm.make	Fri Jan 21 16:20:02 2011 -0800
-+++ openjdk/hotspot/make/linux/makefiles/vm.make	Thu Feb 03 15:01:10 2011 +0000
-@@ -137,15 +137,7 @@
- vm.def: $(Res_Files) $(Obj_Files)
- 	sh $(GAMMADIR)/make/linux/makefiles/build_vm_def.sh *.o > $@
- 
--ifeq ($(SHARK_BUILD), true)
--  STATIC_CXX = false
--else
--  ifeq ($(ZERO_LIBARCH), ppc64)
--    STATIC_CXX = false
--  else
--    STATIC_CXX = true
--  endif
--endif
-+STATIC_CXX = false
- 
- ifeq ($(LINK_INTO),AOUT)
-   LIBJVM.o                 =
-diff -r 05436b84e93a make/common/shared/Compiler-gcc.gmk
---- openjdk.orig/corba/make/common/shared/Compiler-gcc.gmk	Sat Jan 16 01:04:04 2010 +0000
-+++ openjdk/corba/make/common/shared/Compiler-gcc.gmk	Thu Feb 03 16:01:37 2011 +0000
-@@ -61,7 +61,7 @@
-   CC             = $(COMPILER_PATH)gcc
-   CPP            = $(COMPILER_PATH)gcc -E
-   # statically link libstdc++ before C++ ABI is stablized on Linux
--  STATIC_CXX     = true
-+  STATIC_CXX     = false
-   ifeq ($(STATIC_CXX),true)
-     # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
-     # We need to use gcc to statically link the C++ runtime. gcc and g++ use
--- a/patches/pr639-broken_shark_build.patch	Thu Feb 14 00:01:03 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
---- openjdk.orig/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2011-01-25 22:57:24.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/ci/ciTypeFlow.cpp	2011-02-24 00:28:58.000000000 +0000
-@@ -37,6 +37,9 @@
- #include "memory/allocation.inline.hpp"
- #include "runtime/deoptimization.hpp"
- #include "utilities/growableArray.hpp"
-+#ifdef SHARK
-+#include "shark/shark_globals.hpp"
-+#endif
- 
- // ciTypeFlow::JsrSet
- //
---- openjdk.orig/hotspot/make/linux/makefiles/vm.make	2011-02-23 21:28:45.000000000 +0000
-+++ openjdk/hotspot/make/linux/makefiles/vm.make	2011-02-24 02:17:30.000000000 +0000
-@@ -139,13 +139,15 @@
- COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
- COMPILER2_PATHS +=  $(GENERATED)/adfiles
- 
-+SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
-+
- # Include dirs per type.
- Src_Dirs/CORE      := $(CORE_PATHS)
- Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
- Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
- Src_Dirs/TIERED    := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
- Src_Dirs/ZERO      := $(CORE_PATHS)
--Src_Dirs/SHARK     := $(CORE_PATHS)
-+Src_Dirs/SHARK     := $(CORE_PATHS) $(SHARK_PATHS)
- Src_Dirs := $(Src_Dirs/$(TYPE))
- 
- COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
---- openjdk.orig/hotspot/make/linux/makefiles/launcher.make	2011-02-22 16:51:24.000000000 +0000
-+++ openjdk/hotspot/make/linux/makefiles/launcher.make	2011-02-24 03:01:36.000000000 +0000
-@@ -52,6 +52,10 @@
-   LAUNCHER.o                 = launcher.o
-   LFLAGS_LAUNCHER           += -L `pwd`
-   LIBS_LAUNCHER             += -l$(JVM) $(LIBS)
-+  ifeq ($(SHARK_BUILD), true)
-+    LFLAGS_LAUNCHER += $(LLVM_LDFLAGS)
-+    LIBS_LAUNCHER   += $(LLVM_LIBS)
-+  endif
- endif
- 
- LINK_LAUNCHER = $(LINK.c)