changeset 2257:4ccee81e878c

Merge
author Andrew John Hughes <ahughes@redhat.com>
date Sun, 05 Sep 2010 20:25:14 +0100
parents 2113816251fb (current diff) dfc3c1061ec7 (diff)
children 4d346d8d7d27
files ChangeLog Makefile.am patches/cacao/version-parsing.patch patches/ecj/javah.patch
diffstat 24 files changed, 1394 insertions(+), 173 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Aug 12 21:13:14 2010 +0100
+++ b/ChangeLog	Sun Sep 05 20:25:14 2010 +0100
@@ -1,3 +1,140 @@
+2010-09-03  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* Makefile.am: Fixed indentation, changes spaces to tab.
+
+2010-09-02  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* Makefile.am: Add new patch.
+	* patches/icedtea-jtreg-OpenGLContextInit.patch:
+	New regression test added for checking if OpenGL context is properly initialized.
+
+2010-09-01  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* Makefile.am: Add two new patches, removed one unused patch.
+	* patches/openjdk/6755274-glgetstring-crash.patch:
+	* patches/openjdk/6791612-opengl-jni-fix.patch:
+	Backport of 6755274 and 6791612 patches to fix OpenGL-related failures
+	(improper OpenGL initialization and missing link to native functions)
+
+2010-08-27  Andrew John Hughes  <ahughes@redhat.com>
+
+	PR398, S6951319:
+	* Makefile.am: Add new patch.
+	* patches/openjdk/6951319-sparc_build_fixes.patch:
+	Backport of 6951319 to fix build issues on GNU/Linux+SPARC.
+	* patches/systemtap.patch: Rerolled against 6951319.
+	* NEWS: Updated.
+
+2010-08-27  Matthias Klose  <doko@ubuntu.com>
+
+	* patches/icedtea-too-many-args.diff: Fix build failure with
+	small SC_ARG_MAX.
+	* Makefile.am (ICEDTEA_PATCHES): Apply the above.
+	* patches/ecj/icedtea-hotspot.patch: Update.
+
+2010-08-27  Matthias Klose  <doko@ubuntu.com>
+
+	* Makefile.am: Bump cacao version to changeset including build
+	fixes for ARM and S390.
+	* patches/cacao/version-parsing.patch: Remove, applied upstream.
+
+2010-08-27  Deepak Bhole <dbhole@redhat.com>
+
+	Fixes rhbz#560193
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
+	(activateJars): Process nested jar only if size > 0 bytes.
+	* plugin/icedteanp/IcedTeaNPPlugin.cc: Fixed file name in header. 
+
+2010-08-26  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* Makefile.am: Add patch.
+	* patches/opengl-jni-fix.patch:
+	Fixed missing JNI link to native function
+	OGLContext.getOGLIdString() which causes
+	many OpenGL-related regression tests to fail.
+
+2010-08-25  Omair Majid  <omajid@redhat.com>
+
+	Fixes RH569121, S6438179
+	* NEWS: Update with new backport.
+	* Makefile.am (ICEDTEA_PATCHES): Apply new patch.
+	* patches/openjdk/6438179-systray_check.patch: Backport of S6438179.
+
+2010-08-24  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Compile NimbusLookAndFeel as a
+	bootstrap class so the older version from
+	IcedTea6 1.8 is not used when bootstrapping
+	with it.
+
+2010-08-23  Andrew Su  <asu@redhat.com>
+
+	* plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
+	(parse): Removed parsing for unknown <app> tag.
+
+2010-08-20  Omair Majid  <omajid@redhat.com>
+
+	* netx/net/sourceforge/jnlp/JNLPFile.java
+	(getUpdate): New method. Returns the parsed UpdateDesc.
+	(parse): Call parser.getUpdate.
+	* netx/net/sourceforge/jnlp/Parser.java
+	(getUpdate): New method. Parses a node to find <update> elements.
+	* netx/net/sourceforge/jnlp/UpdateDesc.java: New class.
+	(UpdateDesc): New method. Creates a new UpdateDesc.
+	(getPolicy): New method. Returns the policy attribute of this update.
+	(getCheck): New method. Returns the check attribute for this update.
+	* netx/net/sourceforge/jnlp/resources/Messages.properties:
+	Add PTwoUpdates error.
+
+2010-08-19  Omair Majid  <omajid@redhat.com>
+
+	Fixes rhbz601281
+	* NEWS: Update with this fix.
+	* netx/net/sourceforge/jnlp/JNLPSplashScreen.java
+	(setSplashImageURL): Check for possible null.
+
+2010-08-13  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/ecj/javah.patch: Moved to...
+	* Makefile.am: Apply patch to OpenGL headers
+	only if javah exhibits Classpath bug 40188.
+	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40188
+	* patches/ecj/cp40188-opengl.patch: here.
+
+2009-05-19  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_JAVAH): Renamed from IT_CP39408_JAVAH.
+	Add test for PR40188.
+	* configure.ac:
+	Make full bootstrap the default again.  Rename
+	IT_CP39408_JAVAH to IT_JAVAH.
+
+2009-03-18  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_CP39408_JAVAH): Add classpath specification
+	to JAVAC invocation to handle buggy ecjs.
+
+2009-03-17  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_CP39408_JAVAH): New test for Classpath
+	bug 39408.
+	* configure.ac: Enable new test.  Result
+	as yet unused.
+
+2010-08-13  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	Replace conditionals on LACKS_SUN_AWT_TOOLKIT
+	with ones on BOOTSTRAPPING.  If we are bootstrapping,
+	we don't trust the system JDK and update rt.jar
+	with newly built classes, regardless of whether it's
+	an Oracle-based JDK or not.
+	* configure.ac:
+	Remove check for sun.awt.Toolkit.
+
 2010-08-12  Andrew John Hughes  <ahughes@redhat.com>
 
 	* patches/openjdk/4356282-opentype.patch,
--- a/Makefile.am	Thu Aug 12 21:13:14 2010 +0100
+++ b/Makefile.am	Sun Sep 05 20:25:14 2010 +0100
@@ -5,8 +5,8 @@
 OPENJDK_VERSION = b20
 OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/
 
-CACAO_VERSION = dd4532afd08a
-CACAO_SHA256SUM = fc876403aeb46c6c16693cfc75ba0a2e581f7a98ddd02ac7f2bf4fc5c20765b4
+CACAO_VERSION = e321b101a9ee
+CACAO_SHA256SUM = 46bc5b6212c199dc4a3dbebe6386fe15a8248625a5dffa17115aab394a298444
 CACAO_BASE_URL = http://mips.complang.tuwien.ac.at
 CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2
 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2
@@ -91,6 +91,7 @@
 ICEDTEA_BOOTSTRAP_CLASSES = \
 	$(SHARE)/javax/swing/plaf/basic/BasicDirectoryModel.java \
 	$(SHARE)/javax/management/StandardMBean.java \
+	$(SHARE)/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java \
 	$(NETX_BOOTSTRAP_CLASSES)
 
 # Flags
@@ -283,7 +284,14 @@
 	patches/openjdk/6967533-pre_epoch.patch \
 	patches/fonts-rhel.patch \
 	patches/fonts-gentoo.patch \
-	patches/ipv4-mapped-ipv6-addresses.patch
+	patches/ipv4-mapped-ipv6-addresses.patch \
+	patches/openjdk/6795060-icu_crash.patch \
+	patches/openjdk/4356282-opentype.patch \
+	patches/openjdk/6954424-opentype_javadoc.patch \
+	patches/openjdk/6438179-systray_check.patch \
+	patches/openjdk/6951319-sparc_build_fixes.patch \
+	patches/icedtea-too-many-args.patch \
+	patches/icedtea-jtreg-OpenGLContextInit.patch
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
@@ -300,8 +308,7 @@
 	patches/cacao/launcher.patch \
 	patches/cacao/arm-arch-defines.patch \
 	patches/cacao/jsig.patch \
-	patches/cacao/memory.patch \
-	patches/cacao/version-parsing.patch
+	patches/cacao/memory.patch
 endif
 
 if WITH_CACAO
@@ -318,7 +325,9 @@
 if ENABLE_XRENDER
 ICEDTEA_PATCHES += patches/openjdk/6725214-direct3d-01.patch \
 	patches/openjdk/6307603-xrender-01.patch \
-	patches/openjdk/6961633-xrender-02.patch
+	patches/openjdk/6961633-xrender-02.patch \
+        patches/openjdk/6791612-opengl-jni-fix.patch \
+        patches/openjdk/6755274-glgetstring-crash.patch
 endif
 
 if ENABLE_NIO2
@@ -360,9 +369,10 @@
 endif
 
 if ENABLE_XRENDER
-ICEDTEA_ECJ_PATCHES += \
-	patches/ecj/needs-6.patch \
-	patches/ecj/javah.patch
+ICEDTEA_ECJ_PATCHES += patches/ecj/needs-6.patch
+if CP40188_JAVAH
+ICEDTEA_ECJ_PATCHES += patches/ecj/cp40188-opengl.patch
+endif
 endif
 
 if !HAS_PAX
@@ -2063,7 +2073,7 @@
 	done
 
 stamps/rt-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) rt-source-files.txt
-if LACKS_SUN_AWT_TOOLKIT
+if BOOTSTRAPPING
 	mkdir -p lib/rt
 	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d lib/rt \
           -sourcepath $(SOURCEPATH_DIRS) -bootclasspath \'\' \
@@ -2078,7 +2088,7 @@
 	rm -f stamps/rt-class-files.stamp
 	rm -f stamps/rt.stamp
 	rm -f rt-source-files.txt
-if LACKS_SUN_AWT_TOOLKIT
+if BOOTSTRAPPING
 	if [ -e $(ECJ_BOOT_DIR) ] ; then \
 	  cp $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(ECJ_BOOT_DIR)/jre/lib/rt.jar ; \
 	fi
@@ -2086,7 +2096,7 @@
 
 stamps/rt.stamp: stamps/rt-class-files.stamp
 	mkdir -p stamps
-if LACKS_SUN_AWT_TOOLKIT
+if BOOTSTRAPPING
 	$(BOOT_DIR)/bin/jar uf $(RUNTIME) -C lib/rt com -C lib/rt java \
 	  -C lib/rt javax -C lib/rt sun 
 if ENABLE_NIO2
--- a/NEWS	Thu Aug 12 21:13:14 2010 +0100
+++ b/NEWS	Sun Sep 05 20:25:14 2010 +0100
@@ -12,6 +12,10 @@
 * Backports from OpenJDK6
   - S4356282, RH525870: RFE: T2K should be used to rasterize CID/CFF fonts
   - S6954424: Support OpenType/CFF fonts in JDK 7
+  - S6438179: XToolkit.isTraySupported() result has nothing to do with the system tray
+  - S6951319: enable solaris builds using Sun Studio 12 update 1 (fixes PR398)
+* NetX
+  - RH601281: Possible NullPointerException in splash screen code
 
 New in release 1.9 (2010-XX-XX):
 
--- a/acinclude.m4	Thu Aug 12 21:13:14 2010 +0100
+++ b/acinclude.m4	Sun Sep 05 20:25:14 2010 +0100
@@ -1515,3 +1515,62 @@
 AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes")
 AC_PROVIDE([$0])dnl
 ])
+
+AC_DEFUN([IT_JAVAH],[
+AC_CACHE_CHECK([if $JAVAH exhibits Classpath bug 39408], it_cv_cp39408_javah, [
+SUPERCLASS=Test.java
+SUBCLASS=TestImpl.java
+SUB=$(echo $SUBCLASS|sed 's#\.java##')
+SUBHEADER=$(echo $SUBCLASS|sed 's#\.java#.h#')
+mkdir tmp.$$
+cd tmp.$$
+cat << \EOF > $SUPERCLASS
+/* [#]line __oline__ "configure" */
+public class Test 
+{
+  public static final int POTATO = 0;
+  public static final int CABBAGE = 1;
+}
+EOF
+cat << \EOF > $SUBCLASS
+/* [#]line __oline__ "configure" */
+public class TestImpl
+  extends Test
+{
+  public native void doStuff();
+}
+EOF
+if $JAVAC -cp . $JAVACFLAGS $SUBCLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAH -classpath . $SUB >&AS_MESSAGE_LOG_FD 2>&1; then
+    if cat $SUBHEADER | grep POTATO >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_cp39408_javah=no;
+    else
+      it_cv_cp39408_javah=yes;
+    fi
+  else
+    AC_MSG_ERROR([The Java header generator $JAVAH failed])
+    echo "configure: failed program was:" >&AC_FD_CC
+    cat $SUBCLASS >&AC_FD_CC
+  fi
+else
+  AC_MSG_ERROR([The Java compiler $JAVAC failed])
+  echo "configure: failed program was:" >&AC_FD_CC
+  cat $SUBCLASS >&AC_FD_CC
+fi
+])
+AC_CACHE_CHECK([if $JAVAH exhibits Classpath bug 40188], it_cv_cp40188_javah, [
+  if test -e $SUBHEADER ; then
+    if cat $SUBHEADER | grep TestImpl_POTATO >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_cp40188_javah=no;
+    else
+      it_cv_cp40188_javah=yes;
+    fi
+  fi
+])
+rm -f $SUBCLASS $SUPERCLASS $SUBHEADER *.class
+cd ..
+rmdir tmp.$$
+AM_CONDITIONAL([CP39408_JAVAH], test x"${it_cv_cp39408_javah}" = "xyes")
+AM_CONDITIONAL([CP40188_JAVAH], test x"${it_cv_cp40188_javah}" = "xyes")
+AC_PROVIDE([$0])dnl
+])
--- a/configure.ac	Thu Aug 12 21:13:14 2010 +0100
+++ b/configure.ac	Sun Sep 05 20:25:14 2010 +0100
@@ -178,9 +178,9 @@
 ENABLE_HG
 AC_CHECK_WITH_HG_REVISION
 AC_CHECK_WITH_TZDATA_DIR
-IT_CHECK_FOR_CLASS([SUN_AWT_TOOLKIT], [sun.awt.SunToolkit])
 IT_GETDTDTYPE_CHECK
 IT_CHECK_XULRUNNER_VERSION
+IT_JAVAH
 
 dnl pkgconfig cannot be used to find these headers and libraries.
 AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],[]
--- a/netx/net/sourceforge/jnlp/JNLPFile.java	Thu Aug 12 21:13:14 2010 +0100
+++ b/netx/net/sourceforge/jnlp/JNLPFile.java	Sun Sep 05 20:25:14 2010 +0100
@@ -83,6 +83,8 @@
     /** information */
     protected List info;
 
+    protected UpdateDesc update;
+
     /** resources */
     protected List resources;
 
@@ -345,6 +347,13 @@
     }
 
     /**
+     * Returns the update section of the JNLP file.
+     */
+    public UpdateDesc getUpdate() {
+        return update;
+    }
+
+    /**
      * Returns the security section of the JNLP file.
      */
     public SecurityDesc getSecurity() {
@@ -561,6 +570,7 @@
             codeBase = parser.getCodeBase();
             sourceLocation = parser.getFileLocation() != null ? parser.getFileLocation() : location;
             info = parser.getInfo(root);
+            update = parser.getUpdate(root);
             resources = parser.getResources(root, false); // false == not a j2se/java resources section
             launchType = parser.getLauncher(root);
             security = parser.getSecurity(root);
--- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Thu Aug 12 21:13:14 2010 +0100
+++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Sun Sep 05 20:25:14 2010 +0100
@@ -44,6 +44,12 @@
         try {
             splashImage = ImageIO.read(resourceTracker
                     .getCacheFile(splashImageUrl));
+            if (splashImage == null) {
+                if (JNLPRuntime.isDebug()) {
+                    System.err.println("Error loading splash image: " + url);
+                }
+                return;
+            }
         } catch (IOException e) {
             if (JNLPRuntime.isDebug()) {
                 System.err.println("Error loading splash image: " + url);
--- a/netx/net/sourceforge/jnlp/Parser.java	Thu Aug 12 21:13:14 2010 +0100
+++ b/netx/net/sourceforge/jnlp/Parser.java	Sun Sep 05 20:25:14 2010 +0100
@@ -25,6 +25,8 @@
 //import org.w3c.dom.*;       // class for using Tiny XML | NanoXML
 //import org.xml.sax.*;
 //import gd.xml.tiny.*;
+import net.sourceforge.jnlp.UpdateDesc.Check;
+import net.sourceforge.jnlp.UpdateDesc.Policy;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.nanoxml.*;
 
@@ -178,6 +180,53 @@
         return spec;
     }
 
+    public UpdateDesc getUpdate(Node parent) throws ParseException {
+        UpdateDesc updateDesc = null;
+        Node child = parent.getFirstChild();
+        while (child != null) {
+            if (child.getNodeName().equals("update")) {
+                if (strict && updateDesc != null) {
+                    throw new ParseException(R("PTwoUpdates"));
+                }
+
+                Node node = child;
+
+                Check check;
+                String checkValue = getAttribute(node, "check", "timeout");
+                if (checkValue.equals("always")) {
+                   check = Check.ALWAYS;
+                } else if (checkValue.equals("timeout")) {
+                    check = Check.TIMEOUT;
+                } else if (checkValue.equals("background")) {
+                    check = Check.BACKGROUND;
+                } else {
+                    check = Check.TIMEOUT;
+                }
+
+                String policyString = getAttribute(node, "policy", "always");
+                Policy policy;
+                if (policyString.equals("always")) {
+                    policy = Policy.ALWAYS;
+                } else if (policyString.equals("prompt-update")) {
+                    policy = Policy.PROMPT_UPDATE;
+                } else if (policyString.equals("prompt-run")) {
+                    policy = Policy.PROMPT_RUN;
+                } else {
+                    policy = Policy.ALWAYS;
+                }
+
+                updateDesc = new UpdateDesc(check, policy);
+            }
+
+            child = child.getNextSibling();
+        }
+
+        if (updateDesc == null) {
+            updateDesc = new UpdateDesc(Check.TIMEOUT, Policy.ALWAYS);
+        }
+        return updateDesc;
+    }
+
     //
     // This section loads the resources elements
     //
@@ -1267,4 +1316,5 @@
 
         return encoding;
     }
+
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netx/net/sourceforge/jnlp/UpdateDesc.java	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,70 @@
+package net.sourceforge.jnlp;
+
+/**
+ * Represents an 'update' element in a JNLP file. This element describes when to
+ * check for updates and what actions to take if updates are available
+ *
+ * @see Check
+ * @see Policy
+ */
+public class UpdateDesc {
+
+    /**
+     * Describes when/how long to check for updates.
+     */
+    public enum Check {
+        /** Always check for updates before launching the application */
+        ALWAYS,
+
+        /**
+         * Default. Check for updates until a certain timeout. If the update
+         * check is not completed by timeout, launch the cached application and
+         * continue updating in the background
+         */
+        TIMEOUT,
+
+        /** Check for application updates in the background */
+        BACKGROUND
+    }
+
+    /**
+     * Describes what to do when the Runtime knows there is an applicatFion
+     * update before the application is launched.
+     */
+    public enum Policy {
+        /**
+         * Default. Always download updates without any user prompt and then launch the
+         * application
+         */
+        ALWAYS,
+
+        /**
+         * Prompt the user asking whether the user wants to download and run the
+         * updated application or run the version in the cache
+         */
+        PROMPT_UPDATE,
+
+        /**
+         * Prompts the user asking to download and run the latest version of the
+         * application or abort running
+         */
+        PROMPT_RUN,
+    }
+
+    private Check check;
+    private Policy policy;
+
+    public UpdateDesc(Check check, Policy policy) {
+        this.check = check;
+        this.policy = policy;
+    }
+
+    public Check getCheck() {
+        return this.check;
+    }
+
+    public Policy getPolicy() {
+        return this.policy;
+    }
+
+}
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties	Thu Aug 12 21:13:14 2010 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties	Sun Sep 05 20:25:14 2010 +0100
@@ -88,6 +88,7 @@
 PTwoMenus=Only one menu element allowed
 PTwoTitles=Only one title element allowed
 PTwoIcons=Only one icon element allowed
+PTwoUpdates=Only one update element is allowed
 PUnknownApplet=Unknown Applet
 PBadWidth=Invalid applet width.
 PBadHeight=Invalid applet height.
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Thu Aug 12 21:13:14 2010 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Sun Sep 05 20:25:14 2010 +0100
@@ -638,13 +638,20 @@
 
                                     byte[] bytes = new byte[1024];
                                     int read = is.read(bytes);
+                                    int fileSize = read;
                                     while (read > 0) {
                                         extractedJar.write(bytes, 0, read);
                                         read = is.read(bytes);
+                                        fileSize += read;
                                     }
 
                                     is.close();
                                     extractedJar.close();
+                                    
+                                    // 0 byte file? skip
+                                    if (fileSize <= 0) {
+                                    	continue;
+                                    }
 
                                     JarSigner signer = new JarSigner();
                                     signer.verifyJar(extractedJarLocation);
--- a/patches/cacao/version-parsing.patch	Thu Aug 12 21:13:14 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- cacao/cacao/m4/version.m4~	2010-06-23 16:18:58.000000000 +0100
-+++ cacao/cacao/m4/version.m4	2010-06-24 19:11:36.000000000 +0100
-@@ -29,7 +29,7 @@
- then
-     major=`echo "$version" | $SED -e 's/\.[[0-9a-z.+]]*$//'`
-     minor=`echo "$version" | $SED -e 's/^[[0-9]]*\.//' -e 's/\.[[0-9a-z.+]]*$//'`
--    micro=`echo "$version" | $SED -e 's/^[[0-9]]*\.[[0-9]]*\.//' -e 's/[[a-z.+]]*$//'`
-+    micro=`echo "$version" | $SED -r -e 's/^[[0-9]]*\.[[0-9]]*\.([[0-9]]*).*/\1/'`
-     extra=`echo "$version" | $SED -e 's/^[[0-9]]*\.[[0-9]]*\.[[0-9]]*//'`
- else
-     major=`echo "$version" | $SED -e 's/\.[[0-9a-z.+]]*$//'`
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/cp40188-opengl.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,92 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-ecj.orig/jdk/make/common/Rules.gmk	2009-12-13 20:37:41.000000000 +0000
++++ openjdk-ecj/jdk/make/common/Rules.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -303,7 +303,11 @@
+ 	$(prep-target)
+ 	@$(ECHO) "# Running javah:"
+ 	$(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
+-		$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
++		$(CLASSES.export) 
++	$(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
++	  $(JAVAH_CMD) \
++	    -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
++	    $(innerclass))
+ 	@$(java-vm-cleanup)
+ 	@$(TOUCH) $@
+ 
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
+--- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-04 23:26:35.000000000 +0000
++++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -189,3 +189,5 @@
+ 	java/awt/dnd/DnDConstants.java \
+ 	sun/awt/CausedFocusEvent.java
+ 
++EXPORTED_inner = \
++    sun.java2d.opengl.OGLContext$$OGLContextCaps
+diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
+--- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-04 23:33:16.000000000 +0000
++++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-13 21:11:04.000000000 +0000
+@@ -27,6 +27,7 @@
+ #define OGLContext_h_Included
+ 
+ #include "sun_java2d_pipe_BufferedContext.h"
++#include "sun_java2d_pipe_hw_ContextCapabilities.h"
+ #include "sun_java2d_opengl_OGLContext.h"
+ #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
+ 
+@@ -100,39 +101,39 @@
+  * See OGLContext.java for more on these flags.
+  */
+ #define CAPS_EMPTY           \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
+ #define CAPS_RT_PLAIN_ALPHA  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
+ #define CAPS_RT_TEXTURE_ALPHA       \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
+ #define CAPS_RT_TEXTURE_OPAQUE      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
+ #define CAPS_MULTITEXTURE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
+ #define CAPS_TEXNONPOW2      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
+ #define CAPS_TEXNONSQUARE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
+ #define CAPS_PS20            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
+ #define CAPS_PS30            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
+ #define LAST_SHARED_CAP      \
+     sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
+ #define CAPS_EXT_FBOBJECT    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
+ #define CAPS_STORED_ALPHA    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
+ #define CAPS_DOUBLEBUFFERED  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
+ #define CAPS_EXT_LCD_SHADER  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
+ #define CAPS_EXT_BIOP_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
+ #define CAPS_EXT_GRAD_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
+ #define CAPS_EXT_TEXRECT     \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
+ 
+ /**
+  * Evaluates to true if the given capability bitmask is present for the
--- a/patches/ecj/icedtea-hotspot.patch	Thu Aug 12 21:13:14 2010 +0100
+++ b/patches/ecj/icedtea-hotspot.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -1,14 +1,14 @@
 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	2010-03-29 21:34:15.000000000 +0100
 +++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make	2010-03-29 21:41:28.000000000 +0100
-@@ -74,8 +74,8 @@
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
+@@ -80,8 +80,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) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -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)
--- a/patches/ecj/javah.patch	Thu Aug 12 21:13:14 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
---- openjdk-ecj.orig/jdk/make/common/Rules.gmk	2009-12-13 20:37:41.000000000 +0000
-+++ openjdk-ecj/jdk/make/common/Rules.gmk	2009-12-13 21:11:04.000000000 +0000
-@@ -303,7 +303,11 @@
- 	$(prep-target)
- 	@$(ECHO) "# Running javah:"
- 	$(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
--		$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
-+		$(CLASSES.export) 
-+	$(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
-+	  $(JAVAH_CMD) \
-+	    -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
-+	    $(innerclass))
- 	@$(java-vm-cleanup)
- 	@$(TOUCH) $@
- 
-diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
---- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-04 23:26:35.000000000 +0000
-+++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-13 21:11:04.000000000 +0000
-@@ -189,3 +189,5 @@
- 	java/awt/dnd/DnDConstants.java \
- 	sun/awt/CausedFocusEvent.java
- 
-+EXPORTED_inner = \
-+    sun.java2d.opengl.OGLContext$$OGLContextCaps
-diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
---- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-04 23:33:16.000000000 +0000
-+++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-13 21:11:04.000000000 +0000
-@@ -27,6 +27,7 @@
- #define OGLContext_h_Included
- 
- #include "sun_java2d_pipe_BufferedContext.h"
-+#include "sun_java2d_pipe_hw_ContextCapabilities.h"
- #include "sun_java2d_opengl_OGLContext.h"
- #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
- 
-@@ -100,39 +101,39 @@
-  * See OGLContext.java for more on these flags.
-  */
- #define CAPS_EMPTY           \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
- #define CAPS_RT_PLAIN_ALPHA  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
- #define CAPS_RT_TEXTURE_ALPHA       \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
- #define CAPS_RT_TEXTURE_OPAQUE      \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
- #define CAPS_MULTITEXTURE    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
- #define CAPS_TEXNONPOW2      \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
- #define CAPS_TEXNONSQUARE    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
- #define CAPS_PS20            \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
- #define CAPS_PS30            \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
- #define LAST_SHARED_CAP      \
-     sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
- #define CAPS_EXT_FBOBJECT    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
- #define CAPS_STORED_ALPHA    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
- #define CAPS_DOUBLEBUFFERED  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
- #define CAPS_EXT_LCD_SHADER  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
- #define CAPS_EXT_BIOP_SHADER \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
- #define CAPS_EXT_GRAD_SHADER \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
- #define CAPS_EXT_TEXRECT     \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
- 
- /**
-  * Evaluates to true if the given capability bitmask is present for the
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-jtreg-OpenGLContextInit.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,46 @@
+--- /dev/null	2010-06-29 11:10:08.737208357 +0200
++++ openjdk/jdk/test/sun/java2d/OpenGL/OpenGLContextInit.java	2010-09-01 16:27:44.000000000 +0200
+@@ -0,0 +1,43 @@
++/*
++ * Copyright 2010 Red Hat, 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.
++ */
++
++
++/*
++ * @test
++ * @bug 6755274 6791612
++ * @summary This test check if OpenGL context is properly initialized.
++ * @run main/othervm -Dsun.java2d.opengl=True OpenGLContextInit -ignore
++ * @author ptisnovs
++ */
++
++import javax.swing.JFrame;
++
++public class OpenGLContextInit extends JFrame {
++    public OpenGLContextInit()
++    {
++        System.out.println("Nothing happens");
++    }
++
++    public static void main(String[] args)
++    {
++        OpenGLContextInit t = new OpenGLContextInit();
++        System.out.println("Test Passed.");
++    }
++}
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-too-many-args.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,46 @@
+--- openjdk/hotspot/make/linux/makefiles/sa.make.orig	2010-06-21 23:12:13.000000000 +0200
++++ openjdk/hotspot/make/linux/makefiles/sa.make	2010-06-28 01:11:27.022322578 +0200
+@@ -45,6 +45,9 @@
+ AGENT_FILES1 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES1))
+ AGENT_FILES2 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES2))
+ 
++AGENT_FILES1_LIST := $(TOPDIR)/../agent1.classes.list
++AGENT_FILES2_LIST := $(TOPDIR)/../agent2.classes.list
++
+ SA_CLASSDIR = $(GENERATED)/saclasses
+ 
+ SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
+@@ -59,7 +62,7 @@
+ 	   $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
+ 	fi
+ 
+-$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2)
++$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2) agent_files_preclean
+ 	$(QUIETLY) echo "Making $@"
+ 	$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+ 	  echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
+@@ -74,8 +77,11 @@
+ 	  mkdir -p $(SA_CLASSDIR);        \
+ 	fi
+ 
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
++	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
++	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
++
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -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)
+@@ -92,6 +98,10 @@
+ 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
+ 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.sparc.SPARCThreadContext
+ 
++agent_files_preclean:
++	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
++
+ clean:
+ 	rm -rf $(SA_CLASSDIR)
+ 	rm -rf $(GENERATED)/sa-jdi.jar
++	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6438179-systray_check.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User omajid
+# Date 1281710168 14400
+# Node ID ac23e40d3880c30085d7a76826145afbe73dd465
+# Parent 636250081b3b27e4b9f536903aa2ddad135f24f2
+6438179: XToolkit.isTraySupported() result has nothing to do with the system tray
+Summary: Use System Tray Protocol Specification
+Reviewed-by: prr, dcherepanov
+
+--- openjdk.orig/jdk/src/share/classes/java/awt/SystemTray.java	Wed Aug 11 19:06:15 2010 +0100
++++ openjdk/jdk/src/share/classes/java/awt/SystemTray.java	Fri Aug 13 10:36:08 2010 -0400
+@@ -164,16 +164,14 @@ public class SystemTray {
+         if (GraphicsEnvironment.isHeadless()) {
+             throw new HeadlessException();
+         }
++
++        initializeSystemTrayIfNeeded();
++
+         if (!isSupported()) {
+             throw new UnsupportedOperationException(
+                 "The system tray is not supported on the current platform.");
+         }
+ 
+-        synchronized (SystemTray.class) {
+-            if (systemTray == null) {
+-                systemTray = new SystemTray();
+-            }
+-        }
+         return systemTray;
+     }
+ 
+@@ -204,7 +202,7 @@ public class SystemTray {
+      */
+     public static boolean isSupported() {
+         if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
+-
++            initializeSystemTrayIfNeeded();
+             return ((SunToolkit)Toolkit.getDefaultToolkit()).isTraySupported();
+ 
+         } else if (Toolkit.getDefaultToolkit() instanceof HeadlessToolkit) {
+@@ -472,4 +470,12 @@ public class SystemTray {
+             security.checkPermission(SecurityConstants.ACCESS_SYSTEM_TRAY_PERMISSION);
+         }
+     }
++
++    private static void initializeSystemTrayIfNeeded() {
++        synchronized (SystemTray.class) {
++            if (systemTray == null) {
++                systemTray = new SystemTray();
++            }
++        }
++    }
+ }
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java	Wed Aug 11 19:06:15 2010 +0100
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java	Fri Aug 13 10:36:08 2010 -0400
+@@ -55,6 +55,19 @@ public class XSystemTrayPeer implements 
+         return new Dimension(XTrayIconPeer.TRAY_ICON_HEIGHT, XTrayIconPeer.TRAY_ICON_WIDTH);
+     }
+ 
++    boolean isAvailable() {
++        boolean available = false;
++        XToolkit.awtLock();
++        try {
++            long selection_owner = XlibWrapper.XGetSelectionOwner(XToolkit.getDisplay(),
++                _NET_SYSTEM_TRAY.getAtom());
++            available = (selection_owner != XConstants.None);
++        } finally {
++            XToolkit.awtUnlock();
++        }
++        return available;
++    }
++
+     // ***********************************************************************
+     // ***********************************************************************
+ 
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed Aug 11 19:06:15 2010 +0100
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Fri Aug 13 10:36:08 2010 -0400
+@@ -1073,10 +1073,9 @@ public class XToolkit extends UNIXToolki
+     }
+ 
+     public boolean isTraySupported() {
+-        int wm = XWM.getWMID();
+-        if (wm == XWM.METACITY_WM || wm == XWM.KDE2_WM)
+-        {
+-            return true;
++        XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance();
++        if (peer != null) {
++            return peer.isAvailable();
+         }
+         return false;
+     }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6755274-glgetstring-crash.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,56 @@
+# HG changeset patch
+# User tdv
+# Date 1224602738 25200
+# Node ID 452c58b2f5334bb357f778e319b5dfffe7b4c696
+# Parent  665850610378a6e9a46b7df1ce04d4fc6edfd236
+6755274: 6u10b33 2d tests fails on sles10x64 with jvm crash
+Reviewed-by: campbell
+
+diff -r 665850610378 -r 452c58b2f533 src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java
+--- openjdk.old/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	2010-08-30 11:47:11.000000000 +0200
++++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	2010-08-30 11:47:11.000000000 +0200
+@@ -120,12 +120,14 @@
+                 new GLXGetConfigInfo(device.getScreen(), visualnum);
+             rq.flushAndInvokeNow(action);
+             cfginfo = action.getConfigInfo();
+-            OGLContext.setScratchSurface(cfginfo);
+-            rq.flushAndInvokeNow(new Runnable() {
+-                public void run() {
+-                    ids[0] = OGLContext.getOGLIdString();
+-                }
+-            });
++            if (cfginfo != 0L) {
++                OGLContext.setScratchSurface(cfginfo);
++                rq.flushAndInvokeNow(new Runnable() {
++                    public void run() {
++                        ids[0] = OGLContext.getOGLIdString();
++                    }
++                });
++            }
+         } finally {
+             rq.unlock();
+         }
+diff -r 665850610378 -r 452c58b2f533 src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java
+--- openjdk-old/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	2010-08-30 11:47:11.000000000 +0200
++++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	2010-08-30 11:47:11.000000000 +0200
+@@ -127,12 +127,14 @@
+                 new WGLGetConfigInfo(device.getScreen(), pixfmt);
+             rq.flushAndInvokeNow(action);
+             cfginfo = action.getConfigInfo();
+-            OGLContext.setScratchSurface(cfginfo);
+-            rq.flushAndInvokeNow(new Runnable() {
+-                public void run() {
+-                    ids[0] = OGLContext.getOGLIdString();
+-                }
+-            });
++            if (cfginfo != 0L) {
++                OGLContext.setScratchSurface(cfginfo);
++                rq.flushAndInvokeNow(new Runnable() {
++                    public void run() {
++                        ids[0] = OGLContext.getOGLIdString();
++                    }
++                });
++            }
+         } finally {
+             rq.unlock();
+         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6791612-opengl-jni-fix.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User tdv
+# Date 1235684318 28800
+# Node ID 0c856354b66924ad99e106ad0b99b1d263ef2eab
+# Parent  ff2afd0551c97282f5bc0939eda439166bfa71b4
+6791612: OGLBat tests are failed in jdk 7 b42
+Reviewed-by: tdv
+Contributed-by: ceisserer <linuxhippy@gmail.com>
+
+diff -r ff2afd0551c9 -r 0c856354b669 make/sun/xawt/mapfile-vers
+--- openjdk-old/jdk/make/sun/xawt/mapfile-vers	2010-08-16 16:54:21.000000000 +0200
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	2010-08-16 16:54:21.000000000 +0200
+@@ -302,12 +302,14 @@
+         Java_java_awt_FileDialog_initIDs;
+         Java_sun_awt_X11_XWindow_initIDs;
+ 
++        Java_sun_java2d_opengl_OGLContext_getOGLIdString;
+         Java_sun_java2d_opengl_OGLMaskFill_maskFill;
+         Java_sun_java2d_opengl_OGLRenderer_drawPoly;
+         Java_sun_java2d_opengl_OGLRenderQueue_flushBuffer;
+         Java_sun_java2d_opengl_OGLSurfaceData_initTexture;
+         Java_sun_java2d_opengl_OGLSurfaceData_initFBObject;
+         Java_sun_java2d_opengl_OGLSurfaceData_initFlipBackbuffer;
++        Java_sun_java2d_opengl_OGLSurfaceData_getTextureID;
+         Java_sun_java2d_opengl_OGLSurfaceData_getTextureTarget;
+         Java_sun_java2d_opengl_OGLTextRenderer_drawGlyphList;
+         Java_sun_java2d_opengl_GLXGraphicsConfig_getGLXConfigInfo;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6951319-sparc_build_fixes.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -0,0 +1,642 @@
+# HG changeset patch
+# User jcoomes
+# Date 1282936351 -3600
+# Node ID 379b95785a1faacbe5261b7517159718e139e57b
+# Parent  13f94cc872531ff5b81d1551edf7145f73864c74
+6951319: enable solaris builds using Sun Studio 12 update 1
+Reviewed-by: kamg, ysr, dholmes, johnc
+
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/amd64.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/amd64.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/amd64.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -33,14 +33,8 @@
+ #
+ ifeq ("${Platform_compiler}", "sparcWorks")
+ 
+-# Temporary until C++ compiler is fixed
+-
+-# _lwp_create_interpose must have a frame
+-OPT_CFLAGS/os_solaris_x86_64.o = -xO1
+-
+ # Temporary until SS10 C++ compiler is fixed
+ OPT_CFLAGS/generateOptoStub.o = -xO2
+-OPT_CFLAGS/thread.o = -xO2
+ 
+ else
+ 
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/fastdebug.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/fastdebug.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/fastdebug.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -36,15 +36,15 @@
+ ifeq ("${Platform_compiler}", "sparcWorks")
+ OPT_CFLAGS/SLOWER = -xO2
+ 
+-# Problem with SS12 compiler, dtrace doesn't like the .o files  (bug 6693876)
+ ifeq ($(COMPILER_REV_NUMERIC), 509)
+-  # To avoid jvm98 crash
+-  OPT_CFLAGS/instanceKlass.o = $(OPT_CFLAGS/SLOWER)
+-  # Not clear this workaround could be skipped in some cases.
+-  OPT_CFLAGS/vmGCOperations.o = $(OPT_CFLAGS/SLOWER)
+-  OPT_CFLAGS/java.o = $(OPT_CFLAGS/SLOWER)
+-  OPT_CFLAGS/jni.o = $(OPT_CFLAGS/SLOWER)
+-endif
++# To avoid jvm98 crash
++OPT_CFLAGS/instanceKlass.o = $(OPT_CFLAGS/SLOWER)
++endif # COMPILER_NUMERIC_REV == 509
++
++ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
++# dtrace cannot handle tail call optimization (6672627, 6693876)
++OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
++endif # COMPILER_NUMERIC_REV >= 509
+ 
+ ifeq ($(COMPILER_REV_NUMERIC), 505)
+ # CC 5.5 has bug 4908364 with -xO4  (Fixed in 5.6)
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/i486.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/i486.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/i486.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -33,25 +33,6 @@
+ # Special case flags for compilers and compiler versions on i486.
+ #
+ ifeq ("${Platform_compiler}", "sparcWorks")
+-
+-# _lwp_create_interpose must have a frame
+-OPT_CFLAGS/os_solaris_x86.o = -xO1
+-else
+-
+-ifeq ("${Platform_compiler}", "gcc")
+-# gcc
+-# _lwp_create_interpose must have a frame
+-OPT_CFLAGS/os_solaris_x86.o = -fno-omit-frame-pointer
+-#
+-else
+-# error
+-_JUNK2_ := $(shell echo >&2 \
+-       "*** ERROR: this compiler is not yet supported by this code base!")
+-	@exit 1
+-endif
+-endif
+-
+-ifeq ("${Platform_compiler}", "sparcWorks")
+ # ILD is gone as of SS11 (5.8), not supported in SS10 (5.7)
+ ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 507), 1)
+   #
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/launcher.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/launcher.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/launcher.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -80,15 +80,12 @@
+ 	} > $@
+ 
+ $(LAUNCHER): $(LAUNCHER.o) $(LIBJVM) $(LAUNCHER_MAPFILE)
++ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
++	@echo Linking launcher...
++	$(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK)
+ 	$(QUIETLY) \
+-	case "$(CFLAGS_BROWSE)" in \
+-	-sbfast|-xsbfast) \
+-	    ;; \
+-	*) \
+-	    echo Linking launcher...; \
+-	    $(LINK_LAUNCHER/PRE_HOOK) \
+-	    $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(LAUNCHER.o) $(LIBS_LAUNCHER); \
+-	    $(LINK_LAUNCHER/POST_HOOK) \
+-	    [ -f $(LAUNCHER_G) ] || { ln -s $@ $(LAUNCHER_G); }; \
+-	    ;; \
+-	esac
++	$(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(LAUNCHER.o) $(LIBS_LAUNCHER)
++	$(QUIETLY) $(LINK_LAUNCHER/POST_HOOK)
++	[ -f $(LAUNCHER_G) ] || ln -s $@ $(LAUNCHER_G)
++endif # filter -sbfast -xsbfast
++
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/optimized.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/optimized.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/optimized.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -32,13 +32,10 @@
+ # (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
+ ifeq ("${Platform_compiler}", "sparcWorks")
+ 
+-# Problem with SS12 compiler, dtrace doesn't like the .o files  (bug 6693876)
+-ifeq ($(COMPILER_REV_NUMERIC),509)
+-  # Not clear this workaround could be skipped in some cases.
+-  OPT_CFLAGS/vmGCOperations.o = $(OPT_CFLAGS/SLOWER) -g
+-  OPT_CFLAGS/java.o = $(OPT_CFLAGS/SLOWER) -g
+-  OPT_CFLAGS/jni.o = $(OPT_CFLAGS/SLOWER) -g
+-endif
++ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
++# dtrace cannot handle tail call optimization (6672627, 6693876)
++OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
++endif # COMPILER_NUMERIC_REV >= 509
+ 
+ # Workaround SS11 bug 6345274 (all platforms) (Fixed in SS11 patch and SS12)
+ ifeq ($(COMPILER_REV_NUMERIC),508)
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/product.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/product.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/product.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -40,13 +40,10 @@
+ # (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
+ ifeq ("${Platform_compiler}", "sparcWorks")
+ 
+-# Problem with SS12 compiler, dtrace doesn't like the .o files  (bug 6693876)
+-ifeq ($(COMPILER_REV_NUMERIC),509)
+-  # Not clear this workaround could be skipped in some cases.
+-  OPT_CFLAGS/vmGCOperations.o = $(OPT_CFLAGS/SLOWER) -g
+-  OPT_CFLAGS/java.o = $(OPT_CFLAGS/SLOWER) -g
+-  OPT_CFLAGS/jni.o = $(OPT_CFLAGS/SLOWER) -g
+-endif
++ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
++# dtrace cannot handle tail call optimization (6672627, 6693876)
++OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
++endif # COMPILER_NUMERIC_REV >= 509
+ 
+ # Workaround SS11 bug 6345274 (all platforms) (Fixed in SS11 patch and SS12)
+ ifeq ($(COMPILER_REV_NUMERIC),508)
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/sparcWorks.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/sparcWorks.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/sparcWorks.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -48,27 +48,33 @@
+ # Pick which compiler is validated
+ ifeq ($(JRE_RELEASE_VER),1.6.0)
+   # Validated compiler for JDK6 is SS11 (5.8)
+-  VALIDATED_COMPILER_REV   := 5.8
+-  VALIDATED_C_COMPILER_REV := 5.8
++  VALIDATED_COMPILER_REVS   := 5.8
++  VALIDATED_C_COMPILER_REVS := 5.8
+ else
+-  # Validated compiler for JDK7 is SS12 (5.9)
+-  VALIDATED_COMPILER_REV   := 5.9
+-  VALIDATED_C_COMPILER_REV := 5.9
++  # Validated compilers for JDK7 are SS12 (5.9) or SS12 update 1 (5.10)
++  VALIDATED_COMPILER_REVS   := 5.9 5.10
++  VALIDATED_C_COMPILER_REVS := 5.9 5.10
+ endif
+ 
+-# Warning messages about not using the above validated version
+-ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := ${VALIDATED_COMPILER_REV}
+-ifneq (${COMPILER_REV},${ENFORCE_COMPILER_REV})
+-dummy_target_to_enforce_compiler_rev:=\
+-$(shell echo >&2 WARNING: You are using CC version ${COMPILER_REV} \
+-and should be using version ${ENFORCE_COMPILER_REV}. Set ENFORCE_COMPILER_REV=${COMPILER_REV} to avoid this warning.)
++# Warning messages about not using the above validated versions
++ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS})
++ifeq ($(filter ${ENFORCE_COMPILER_REV},${COMPILER_REV}),)
++PRINTABLE_CC_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_COMPILER_REV})
++dummy_var_to_enforce_compiler_rev := $(shell \
++	echo >&2 WARNING: You are using CC version ${COMPILER_REV} and \
++	should be using version ${PRINTABLE_CC_REVS}.; \
++	echo >&2 Set ENFORCE_COMPILER_REV=${COMPILER_REV} to avoid this \
++	warning.)
+ endif
+ 
+-ENFORCE_C_COMPILER_REV${ENFORCE_C_COMPILER_REV} := ${VALIDATED_C_COMPILER_REV}
+-ifneq (${C_COMPILER_REV},${ENFORCE_C_COMPILER_REV})
+-dummy_target_to_enforce_c_compiler_rev:=\
+-$(shell echo >&2 WARNING: You are using cc version ${C_COMPILER_REV} \
+-and should be using version ${ENFORCE_C_COMPILER_REV}. Set ENFORCE_C_COMPILER_REV=${C_COMPILER_REV} to avoid this warning.)
++ENFORCE_C_COMPILER_REV${ENFORCE_C_COMPILER_REV} := $(strip ${VALIDATED_C_COMPILER_REVS})
++ifeq ($(filter ${ENFORCE_C_COMPILER_REV},${C_COMPILER_REV}),)
++PRINTABLE_C_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_C_COMPILER_REV})
++dummy_var_to_enforce_c_compiler_rev := $(shell \
++	echo >&2 WARNING: You are using cc version ${C_COMPILER_REV} and \
++	should be using version ${PRINTABLE_C_REVS}.; \
++	echo >&2 Set ENFORCE_C_COMPILER_REV=${C_COMPILER_REV} to avoid this \
++	warning.)
+ endif
+ 
+ COMPILER_REV_NUMERIC := $(shell echo $(COMPILER_REV) | awk -F. '{ print $$1 * 100 + $$2 }')
+@@ -139,6 +145,13 @@
+ OPT_CFLAGS/O2=-xO2
+ OPT_CFLAGS/NOOPT=-xO1
+ 
++ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
++ifeq ($(Platform_arch), x86)
++OPT_CFLAGS/NO_TAIL_CALL_OPT  = -Wu,-O~yz
++OPT_CCFLAGS/NO_TAIL_CALL_OPT = -Qoption ube -O~yz
++endif # Platform_arch == x86
++endif # COMPILER_REV_NUMERIC >= 509
++
+ #################################################
+ # Begin current (>=5.6) Forte compiler options #
+ #################################################
+@@ -181,10 +194,7 @@
+ 
+ ifeq ("${Platform_arch_model}", "x86_32")
+ 
+-OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
+-
+-# UBE (CC 5.5) has bug 4923569 with -xO4
+-OPT_CFLAGS+=-xO3
++OPT_CFLAGS=-xtarget=pentium -xO4 $(EXTRA_OPT_CFLAGS)
+ 
+ endif # 32bit x86
+ 
+@@ -461,7 +471,7 @@
+ # The -g0 setting allows the C++ frontend to inline, which is a big win.
+ 
+ # Special global options for SS12
+-ifeq ($(COMPILER_REV_NUMERIC),509)
++ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
+   # There appears to be multiple issues with the new Dwarf2 debug format, so
+   #   we tell the compiler to use the older 'stabs' debug format all the time.
+   #   Note that this needs to be used in optimized compiles too to be 100%.
+diff -r 13f94cc87253 -r 379b95785a1f make/solaris/makefiles/vm.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/vm.make	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/make/solaris/makefiles/vm.make	Fri Aug 27 20:12:31 2010 +0100
+@@ -174,19 +174,16 @@
+ endif
+ # making the library:
+ $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) 
+-	$(QUIETLY) \
+-	case "$(CFLAGS_BROWSE)" in \
+-	-sbfast|-xsbfast) \
+-	    ;; \
+-	*) \
+-	    echo Linking vm...; \
+-	    $(LINK_LIB.CC/PRE_HOOK) \
+-	    $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM); \
+-	    $(LINK_LIB.CC/POST_HOOK) \
+-	    rm -f $@.1; ln -s $@ $@.1; \
+-	    [ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \
+-	    ;; \
+-	esac
++ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
++	@echo Linking vm...
++	$(QUIETLY) $(LINK_LIB.CC/PRE_HOOK)
++	$(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM)
++	$(QUIETLY) $(LINK_LIB.CC/POST_HOOK)
++	$(QUIETLY) rm -f $@.1 && ln -s $@ $@.1
++	$(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G)
++	$(QUIETLY) [ -f $(LIBJVM_G).1 ] || ln -s $@.1 $(LIBJVM_G).1
++endif # filter -sbfast -xsbfast
++
+ 
+ DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
+ 
+diff -r 13f94cc87253 -r 379b95785a1f src/cpu/sparc/vm/assembler_sparc.hpp
+--- openjdk.orig/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -2239,7 +2239,7 @@
+   AddressLiteral constant_oop_address(jobject obj);                          // find_index
+   inline void    set_oop             (jobject obj, Register d);              // uses allocate_oop_address
+   inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
+-  inline void    set_oop             (AddressLiteral& obj_addr, Register d); // same as load_address
++  inline void    set_oop             (const AddressLiteral& obj_addr, Register d); // same as load_address
+ 
+   void set_narrow_oop( jobject obj, Register d );
+ 
+diff -r 13f94cc87253 -r 379b95785a1f src/cpu/sparc/vm/assembler_sparc.inline.hpp
+--- openjdk.orig/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -707,7 +707,7 @@
+ }
+ 
+ 
+-inline void MacroAssembler::set_oop(AddressLiteral& obj_addr, Register d) {
++inline void MacroAssembler::set_oop(const AddressLiteral& obj_addr, Register d) {
+   assert(obj_addr.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
+   set(obj_addr, d);
+ }
+diff -r 13f94cc87253 -r 379b95785a1f src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp
+--- openjdk.orig/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -47,40 +47,56 @@
+ // For Sun Studio - implementation is in solaris_x86_[32/64].il.
+ // For gcc - implementation is just below.
+ 
+-extern "C" jint _Atomic_add(jint add_value, volatile jint* dest, int mp);
+-extern "C" jint _Atomic_xchg(jint exchange_value, volatile jint* dest);
+-extern "C" jint _Atomic_cmpxchg(jint exchange_value, volatile jint* dest, jint compare_value, int mp);
+-extern "C" jlong _Atomic_cmpxchg_long(jlong exchange_value, volatile jlong* dest, jlong compare_value, int mp);
++// The lock prefix can be omitted for certain instructions on uniprocessors; to
++// facilitate this, os::is_MP() is passed as an additional argument.  64-bit
++// processors are assumed to be multi-threaded and/or multi-core, so the extra
++// argument is unnecessary.
++#ifndef _LP64
++#define IS_MP_DECL() , int is_mp
++#define IS_MP_ARG()  , (int) os::is_MP()
++#else
++#define IS_MP_DECL()
++#define IS_MP_ARG()
++#endif // _LP64
++
++extern "C" {
++  jint _Atomic_add(jint add_value, volatile jint* dest IS_MP_DECL());
++  jint _Atomic_xchg(jint exchange_value, volatile jint* dest);
++  jint _Atomic_cmpxchg(jint exchange_value, volatile jint* dest,
++                       jint compare_value IS_MP_DECL());
++  jlong _Atomic_cmpxchg_long(jlong exchange_value, volatile jlong* dest,
++                             jlong compare_value IS_MP_DECL());
++}
+ 
+ inline jint     Atomic::add    (jint     add_value, volatile jint*     dest) {
+-  return _Atomic_add(add_value, dest, (int) os::is_MP());
++  return _Atomic_add(add_value, dest IS_MP_ARG());
++}
++
++inline jint     Atomic::xchg       (jint     exchange_value, volatile jint*     dest) {
++  return _Atomic_xchg(exchange_value, dest);
+ }
+ 
+ inline jint     Atomic::cmpxchg    (jint     exchange_value, volatile jint*     dest, jint     compare_value) {
+-  return _Atomic_cmpxchg(exchange_value, dest, compare_value, (int) os::is_MP());
++  return _Atomic_cmpxchg(exchange_value, dest, compare_value IS_MP_ARG());
+ }
+ 
+ inline jlong    Atomic::cmpxchg    (jlong    exchange_value, volatile jlong*    dest, jlong    compare_value) {
+-  return _Atomic_cmpxchg_long(exchange_value, dest, compare_value, (int) os::is_MP());
++  return _Atomic_cmpxchg_long(exchange_value, dest, compare_value IS_MP_ARG());
+ }
+ 
+ 
+ #ifdef AMD64
+ inline void Atomic::store    (jlong    store_value, jlong*             dest) { *dest = store_value; }
+ inline void Atomic::store    (jlong    store_value, volatile jlong*    dest) { *dest = store_value; }
+-extern "C" jlong _Atomic_add_long(jlong add_value, volatile jlong* dest, int mp);
++extern "C" jlong _Atomic_add_long(jlong add_value, volatile jlong* dest);
+ extern "C" jlong _Atomic_xchg_long(jlong exchange_value, volatile jlong* dest);
+ 
+ inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) {
+-  return (intptr_t)_Atomic_add_long((jlong)add_value, (volatile jlong*)dest, (int) os::is_MP());
++  return (intptr_t)_Atomic_add_long((jlong)add_value, (volatile jlong*)dest);
+ }
+ 
+ inline void*    Atomic::add_ptr(intptr_t add_value, volatile void*     dest) {
+-  return (void*)_Atomic_add_long((jlong)add_value, (volatile jlong*)dest, (int) os::is_MP());
+-}
+-
+-inline jint     Atomic::xchg    (jint     exchange_value, volatile jint*     dest) {
+-  return _Atomic_xchg(exchange_value, dest);
++  return (void*)_Atomic_add_long((jlong)add_value, (volatile jlong*)dest);
+ }
+ 
+ inline intptr_t Atomic::xchg_ptr(intptr_t exchange_value, volatile intptr_t* dest) {
+@@ -92,11 +108,11 @@
+ }
+ 
+ inline intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, intptr_t compare_value) {
+-  return (intptr_t)_Atomic_cmpxchg_long((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value, (int) os::is_MP());
++  return (intptr_t)_Atomic_cmpxchg_long((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value);
+ }
+ 
+ inline void*    Atomic::cmpxchg_ptr(void*    exchange_value, volatile void*     dest, void*    compare_value) {
+-  return (void*)_Atomic_cmpxchg_long((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value, (int) os::is_MP());
++  return (void*)_Atomic_cmpxchg_long((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value);
+ }
+ 
+ inline jlong Atomic::load(volatile jlong* src) { return *src; }
+@@ -111,13 +127,6 @@
+   return (void*)add((jint)add_value, (volatile jint*)dest);
+ }
+ 
+-inline jint     Atomic::xchg    (jint     exchange_value, volatile jint*     dest) {
+-  // We noticed a CC5.5 bug (4894807), so keep calling the stub just to be safe.
+-  // Will use the inline template version after 4894807 is fixed.
+-  // return _Atomic_xchg(exchange_value, dest);
+-  return (*os::atomic_xchg_func)(exchange_value, dest);
+-}
+-
+ inline intptr_t Atomic::xchg_ptr(intptr_t exchange_value, volatile intptr_t* dest) {
+   return (intptr_t)xchg((jint)exchange_value, (volatile jint*)dest);
+ }
+@@ -179,9 +188,6 @@
+ #endif // AMD64
+ 
+   inline jint _Atomic_xchg(jint exchange_value, volatile jint* dest) {
+-
+-    // 32bit version originally did nothing!!
+-
+     __asm__ __volatile__ ("xchgl (%2),%0"
+                           : "=r" (exchange_value)
+                         : "0" (exchange_value), "r" (dest)
+diff -r 13f94cc87253 -r 379b95785a1f src/os_cpu/solaris_x86/vm/solaris_x86_32.il
+--- openjdk.orig/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Fri Aug 27 20:12:31 2010 +0100
+@@ -50,10 +50,12 @@
+       movl     4(%esp), %edx   // dest
+       movl     %eax, %ecx
+       cmpl     $0, 8(%esp)     // MP test
+-      je       1f
+-      lock
+-1:    xaddl    %eax, (%edx)
+-      addl     %ecx, %eax
++      jne      1f
++      xaddl    %eax, (%edx)
++      jmp      2f
++1:    lock
++      xaddl    %eax, (%edx)
++2:    addl     %ecx, %eax
+       .end
+ 
+   // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest).
+@@ -72,9 +74,12 @@
+       movl     0(%esp), %ecx   // exchange_value
+       movl     4(%esp), %edx   // dest
+       cmp      $0, 12(%esp)    // MP test
+-      je       1f
+-      lock
+-1:    cmpxchgl %ecx, (%edx)
++      jne      1f
++      cmpxchgl %ecx, (%edx)
++      jmp      2f
++1:    lock
++      cmpxchgl %ecx, (%edx)
++2:
+       .end
+ 
+   // Support for jlong Atomic::cmpxchg(jlong exchange_value,
+@@ -90,10 +95,12 @@
+       movl     8(%esp), %ebx   // exchange_value (low)
+       movl     12(%esp), %ecx  // exchange_high (high)
+       cmp      $0, 28(%esp)    // MP test
+-      je       1f
+-      lock
+-1:    cmpxchg8b (%edi)
+-      popl     %edi
++      jne      1f
++      cmpxchg8b (%edi)
++      jmp      2f
++1:    lock
++      cmpxchg8b (%edi)
++2:    popl     %edi
+       popl     %ebx
+       .end
+ 
+diff -r 13f94cc87253 -r 379b95785a1f src/os_cpu/solaris_x86/vm/solaris_x86_64.il
+--- openjdk.orig/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il	Fri Aug 27 20:12:31 2010 +0100
+@@ -37,24 +37,18 @@
+       .end
+ 
+   // Support for jint Atomic::add(jint add_value, volatile jint* dest)
+-  // An additional bool (os::is_MP()) is passed as the last argument.
+-      .inline _Atomic_add,3
++      .inline _Atomic_add,2
+       movl     %edi, %eax      // save add_value for return
+-      testl    %edx, %edx      // MP test
+-      je       1f
+       lock
+-1:    xaddl    %edi, (%rsi)
++      xaddl    %edi, (%rsi)
+       addl     %edi, %eax
+       .end
+ 
+   // Support for jlong Atomic::add(jlong add_value, volatile jlong* dest)
+-  // An additional bool (os::is_MP()) is passed as the last argument.
+-      .inline _Atomic_add_long,3
++      .inline _Atomic_add_long,2
+       movq     %rdi, %rax      // save add_value for return
+-      testq    %rdx, %rdx      // MP test
+-      je       1f
+       lock
+-1:    xaddq    %rdi, (%rsi)
++      xaddq    %rdi, (%rsi)
+       addq     %rdi, %rax
+       .end
+ 
+@@ -73,25 +67,19 @@
+   // Support for jint Atomic::cmpxchg(jint exchange_value, 
+   //                                  volatile jint *dest, 
+   //                                  jint compare_value)
+-  // An additional bool (os::is_MP()) is passed as the last argument.
+-      .inline _Atomic_cmpxchg,4
++      .inline _Atomic_cmpxchg,3
+       movl     %edx, %eax      // compare_value
+-      testl    %ecx, %ecx      // MP test
+-      je       1f
+       lock
+-1:    cmpxchgl %edi, (%rsi)
++      cmpxchgl %edi, (%rsi)
+       .end
+ 
+   // Support for jlong Atomic::cmpxchg(jlong exchange_value,
+   //                                   volatile jlong* dest,
+   //                                   jlong compare_value)
+-  // An additional bool (os::is_MP()) is passed as the last argument.
+-      .inline _Atomic_cmpxchg_long,6
++      .inline _Atomic_cmpxchg_long,3
+       movq     %rdx, %rax      // compare_value
+-      testq    %rcx, %rcx      // MP test
+-      je       1f
+       lock
+-1:    cmpxchgq %rdi, (%rsi)
++      cmpxchgq %rdi, (%rsi)
+       .end
+ 
+   // Support for OrderAccess::acquire()
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -766,9 +766,11 @@
+ 
+   _has_aborted = false;
+ 
++#ifndef PRODUCT
+   if (G1PrintReachableAtInitialMark) {
+     print_reachable(true, "before");
+   }
++#endif
+ 
+   // Initialise marking structures. This has to be done in a STW phase.
+   reset();
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -2387,10 +2387,12 @@
+       gclog_or_tty->print_cr("Heap:");
+       print_on(gclog_or_tty, true /* extended */);
+       gclog_or_tty->print_cr("");
++#ifndef PRODUCT
+       if (VerifyDuringGC && G1VerifyDuringGCPrintReachable) {
+         concurrent_mark()->print_reachable(use_prev_marking,
+                                            "failed-verification");
+       }
++#endif
+       gclog_or_tty->flush();
+     }
+     guarantee(!failures, "there should not have been any failures");
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/gc_implementation/shared/spaceDecorator.hpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -109,7 +109,7 @@
+   // is fully constructed.  Also is used when a generation is expanded
+   // and possibly before the spaces have been reshaped to to the new
+   // size of the generation.
+-  static void mangle_region(MemRegion mr);
++  static void mangle_region(MemRegion mr) PRODUCT_RETURN;
+ };
+ 
+ class ContiguousSpace;
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/gc_implementation/shared/vmGCOperations.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -32,10 +32,12 @@
+ // for the other file anymore.   The dtrace probes have to remain stable.
+ void VM_GC_Operation::notify_gc_begin(bool full) {
+   HS_DTRACE_PROBE1(hotspot, gc__begin, full);
++  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+ }
+ 
+ void VM_GC_Operation::notify_gc_end() {
+   HS_DTRACE_PROBE(hotspot, gc__end);
++  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+ }
+ 
+ void VM_GC_Operation::acquire_pending_list_lock() {
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/runtime/java.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/runtime/java.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -470,6 +470,7 @@
+ void notify_vm_shutdown() {
+   // For now, just a dtrace probe.
+   HS_DTRACE_PROBE(hotspot, vm__shutdown);
++  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+ }
+ 
+ void vm_direct_exit(int code) {
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/runtime/vframe.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/vframe.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/runtime/vframe.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -101,8 +101,8 @@
+   bool found_first_monitor = false;
+   ObjectMonitor *pending_monitor = thread()->current_pending_monitor();
+   ObjectMonitor *waiting_monitor = thread()->current_waiting_monitor();
+-  oop pending_obj = (pending_monitor != NULL ? (oop) pending_monitor->object() : NULL);
+-  oop waiting_obj = (waiting_monitor != NULL ? (oop) waiting_monitor->object() : NULL);
++  oop pending_obj = (pending_monitor != NULL ? (oop) pending_monitor->object() : (oop) NULL);
++  oop waiting_obj = (waiting_monitor != NULL ? (oop) waiting_monitor->object() : (oop) NULL);
+ 
+   for (int index = (mons->length()-1); index >= 0; index--) {
+     MonitorInfo* monitor = mons->at(index);
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/runtime/vm_version.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -190,6 +190,8 @@
+         #define HOTSPOT_BUILD_COMPILER "Workshop 5.8"
+       #elif __SUNPRO_CC == 0x590
+         #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
++      #elif __SUNPRO_CC == 0x5100
++        #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
+       #else
+         #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC)
+       #endif
+diff -r 13f94cc87253 -r 379b95785a1f src/share/vm/utilities/dtrace.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	Fri Jun 18 01:17:46 2010 -0700
+--- openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	Fri Aug 27 20:12:31 2010 +0100
+@@ -29,6 +29,10 @@
+ #define DTRACE_ONLY(x) x
+ #define NOT_DTRACE(x)
+ 
++// Work around dtrace tail call bug 6672627 until it is fixed in solaris 10.
++#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
++  do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
++
+ #else // ndef SOLARIS || ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+@@ -41,6 +45,8 @@
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
+ 
++#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
++
+ #endif
+ 
+ #define HS_DTRACE_PROBE_FN(provider,name)\
--- a/patches/systemtap.patch	Thu Aug 12 21:13:14 2010 +0100
+++ b/patches/systemtap.patch	Sun Sep 05 20:25:14 2010 +0100
@@ -1,6 +1,6 @@
 diff -Nru openjdk.orig/hotspot/make/linux/makefiles/dtrace.make openjdk/hotspot/make/linux/makefiles/dtrace.make
---- openjdk.orig/hotspot/make/linux/makefiles/dtrace.make	2010-04-09 00:03:58.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/dtrace.make	2010-04-10 02:51:08.000000000 +0100
+--- openjdk.orig/hotspot/make/linux/makefiles/dtrace.make	2010-06-21 22:12:13.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/dtrace.make	2010-08-27 22:37:45.253819793 +0100
 @@ -25,3 +25,7 @@
  # Linux does not build jvm_db
  LIBJVM_DB =
@@ -10,8 +10,8 @@
 +
 +# It doesn't support HAVE_DTRACE_H though.
 diff -Nru openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
---- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp	2010-04-09 00:03:58.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2010-04-10 02:51:08.000000000 +0100
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp	2010-06-21 22:12:20.000000000 +0100
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2010-08-27 22:37:45.261818795 +0100
 @@ -1753,10 +1753,7 @@
  JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \
    JNIWrapper("Set" XSTR(Result) "Field"); \
@@ -37,8 +37,8 @@
    JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \
    assert(id->is_static_field_id(), "invalid static field id"); \
 diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 02:47:16.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 02:53:39.000000000 +0100
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-08-27 20:30:51.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-08-27 22:37:45.261818795 +0100
 @@ -2460,16 +2460,16 @@
        FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
        FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
@@ -61,8 +61,8 @@
      } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
        FLAG_SET_CMDLINE(bool, FullGCALot, true);
 diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
---- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2010-04-09 00:03:58.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2010-04-10 02:52:51.000000000 +0100
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 20:30:52.000000000 +0100
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 22:38:19.569540300 +0100
 @@ -1,5 +1,6 @@
  /*
   * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -70,7 +70,7 @@
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
-@@ -22,14 +23,14 @@
+@@ -22,7 +23,7 @@
   *
   */
  
@@ -79,15 +79,16 @@
  
  #include <sys/sdt.h>
  
- #define DTRACE_ONLY(x) x
- #define NOT_DTRACE(x)
+@@ -33,7 +34,7 @@
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
+   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
  
 -#else // ndef SOLARIS || ndef DTRACE_ENABLED
 +#else // ndef DTRACE_ENABLED
  
  #define DTRACE_ONLY(x)
  #define NOT_DTRACE(x) x
-@@ -40,9 +41,16 @@
+@@ -44,11 +45,18 @@
  #define DTRACE_PROBE3(a,b,c,d,e) {;}
  #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
  #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
@@ -97,6 +98,8 @@
 +#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
 +#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
  
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+ 
  #endif
  
 +#if defined(SOLARIS)
@@ -104,7 +107,7 @@
  #define HS_DTRACE_PROBE_FN(provider,name)\
    __dtrace_##provider##___##name
  
-@@ -50,6 +58,11 @@
+@@ -56,6 +64,11 @@
    DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
  #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
    DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
@@ -116,7 +119,7 @@
  
  /* Dtrace probe declarations */
  #define HS_DTRACE_PROBE_DECL(provider,name) \
-@@ -88,6 +101,8 @@
+@@ -94,6 +107,8 @@
      uintptr_t,uintptr_t,uintptr_t))
  
  /* Dtrace probe definitions */
@@ -125,7 +128,7 @@
  #define HS_DTRACE_PROBE_N(provider,name, args) \
    DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
  
-@@ -123,3 +138,29 @@
+@@ -129,3 +144,29 @@
    HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
      (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
      (uintptr_t)a8,(uintptr_t)a9))
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc	Thu Aug 12 21:13:14 2010 +0100
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc	Sun Sep 05 20:25:14 2010 +0100
@@ -1,4 +1,4 @@
-/* IcedTeaPlugin.cc -- web browser plugin to execute Java applets
+/* IcedTeaNPPlugin.cc -- web browser plugin to execute Java applets
    Copyright (C) 2003, 2004, 2006, 2007  Free Software Foundation, Inc.
    Copyright (C) 2009, 2010 Red Hat
 
--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Thu Aug 12 21:13:14 2010 +0100
+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Sun Sep 05 20:25:14 2010 +0100
@@ -2124,40 +2124,6 @@
                              atts.put("heightPercentage", Integer.parseInt(h.substring(0,  h.length() -1)));
                          }
                      }
-                     else if (nm.equalsIgnoreCase("app")) {
-                         statusMsgStream.println(appNotLongerSupportedWarning);
-                         Hashtable atts2 = scanTag(in);
-                         nm = (String)atts2.get("class");
-                         if (nm != null) {
-                             atts2.remove("class");
-                             atts2.put("code", nm + ".class");
-                         }
-                         nm = (String)atts2.get("src");
-                         if (nm != null) {
-                             atts2.remove("src");
-                             atts2.put("codebase", nm);
-                         }
-                         if (atts2.get("width") == null || !isInt(atts2.get("width"))) {
-                             atts2.put("width", "1000");
-                             atts2.put("widthPercentage", 100);
-                         } else if (((String) atts.get("width")).endsWith("%")) {
-                             String w = (String) atts.get("width");
-                             atts2.put("width", "100");
-                             atts2.put("widthPercentage", Integer.parseInt(w.substring(0,  w.length() -1)));
-                         }
-
-                         if (atts2.get("height") == null || !isInt(atts2.get("height"))) {
-                             atts2.put("height", "1000");
-                             atts2.put("heightPercentage", 100);
-                         } else if (((String) atts.get("height")).endsWith("%")) {
-                             String h = (String) atts.get("height");
-                             atts2.put("height", "100");
-                             atts2.put("heightPercentage", Integer.parseInt(h.substring(0,  h.length() -1)));
-                         }
-
-                         printTag(statusMsgStream, atts2);
-                         statusMsgStream.println();
-                     }
                  }
              }
          }