From dbhole at redhat.com Tue Dec 1 08:23:15 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 1 Dec 2009 11:23:15 -0500 Subject: Patch for IcedTea Bug# 406/RHBZ# 520777 Message-ID: <20091201162315.GA22774@redhat.com> This patch fixes a parser bug so that the plugin can handle nested object tags. Additionally, the context classloader for the applet threadgroup is now set to the applet loader for the applet so that security exceptions don't happen when an applet tries getContextClassLoader(). ChangeLog: 2009-11-27 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java (getWindow): Fortify condition for wait for panel initialization. (parse): Handle nested objected tags, don't allow parameter value overwrite. * rt/net/sourceforge/jnlp/Launcher.java (createApplet): Set context classloader for the thread to the applet's classloader, so that getContextClassLoader calls succeed. Deepak -------------- next part -------------- A non-text attachment was scrubbed... Name: itb-406-rhbz-520777.patch Type: text/x-patch Size: 5226 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091201/d6f1f4d9/itb-406-rhbz-520777.patch From dbhole at icedtea.classpath.org Tue Dec 1 08:18:19 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Tue, 01 Dec 2009 16:18:19 +0000 Subject: /hg/icedtea6: Fix IcedTea Bug# 406: Handle pages with nested obj... Message-ID: changeset d9377bd6e521 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d9377bd6e521 author: Deepak Bhole date: Fri Nov 27 11:17:31 2009 -0500 Fix IcedTea Bug# 406: Handle pages with nested object tags (with latter being for IE) diffstat: 4 files changed, 38 insertions(+), 12 deletions(-) ChangeLog | 10 +++ plugin/icedtea/sun/applet/PluginAppletViewer.java | 36 +++++++++----- rt/net/sourceforge/jnlp/Launcher.java | 2 rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 2 diffs (129 lines): diff -r 610a316e54d2 -r d9377bd6e521 ChangeLog --- a/ChangeLog Wed Nov 25 11:41:02 2009 +0000 +++ b/ChangeLog Fri Nov 27 11:17:31 2009 -0500 @@ -1,3 +1,13 @@ 2009-11-25 Gary Benson + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (getWindow): Fortify condition for wait for panel initialization. + (parse): Handle nested objected tags, don't allow parameter value + overwrite. + * rt/net/sourceforge/jnlp/Launcher.java + (createApplet): Set context classloader for the thread to the applet's + classloader, so that getContextClassLoader calls succeed. + 2009-11-25 Gary Benson * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp diff -r 610a316e54d2 -r d9377bd6e521 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Nov 25 11:41:02 2009 +0000 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Fri Nov 27 11:17:31 2009 -0500 @@ -898,8 +898,8 @@ import com.sun.jndi.toolkit.url.UrlUtil; try { PluginDebug.debug ("wait request 1"); synchronized(request) { - PluginDebug.debug ("wait request 2"); - while ((Long) request.getObject() == 0) + PluginDebug.debug ("wait request 2 " + status.get(identifier) ); + while ((Long) request.getObject() == 0 && (status.get(identifier).equals(PAV_INIT_STATUS.ACTIVE) || status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT))) request.wait(); PluginDebug.debug ("wait request 3"); } @@ -1677,6 +1677,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; boolean isAppletTag = false; boolean isObjectTag = false; boolean isEmbedTag = false; + boolean objectTagAlreadyParsed = false; // warning messages String requiresNameWarning = amh.getMessage("parse.warning.requiresname"); @@ -1751,6 +1752,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; if (nm.equalsIgnoreCase("param")) { Hashtable t = scanTag(in); String att = (String)t.get("name"); + + if (atts.containsKey(att)) + continue; + if (att == null) { statusMsgStream.println(requiresNameWarning); } else { @@ -1783,7 +1788,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null) { + if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { atts.put("code", atts.get("classid")); } @@ -1817,13 +1822,18 @@ import com.sun.jndi.toolkit.url.UrlUtil; } else if (nm.equalsIgnoreCase("object")) { isObjectTag = true; - atts = scanTag(in); - - // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null) { - atts.put("code", atts.get("classid")); - } - + + // Once code is set, additional nested objects are ignored + if (!objectTagAlreadyParsed) { + objectTagAlreadyParsed = true; + atts = scanTag(in); + } + + // If there is a classid and no code tag present, transform it to code tag + if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + atts.put("code", atts.get("classid")); + } + // remove java: from code tag if (atts.get("code") != null && ((String) atts.get("code")).startsWith("java:")) { atts.put("code", ((String) atts.get("code")).substring(5)); @@ -1833,6 +1843,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; // http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html#in-ie if (atts.get("java_code") != null) { atts.put("code", ((String) atts.get("java_code"))); + } + + if (atts.containsKey("code")) { + objectTagAlreadyParsed = true; } if (atts.get("java_codebase") != null) { @@ -1874,7 +1888,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null) { + if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { atts.put("code", atts.get("classid")); } diff -r 610a316e54d2 -r d9377bd6e521 rt/net/sourceforge/jnlp/Launcher.java --- a/rt/net/sourceforge/jnlp/Launcher.java Wed Nov 25 11:41:02 2009 +0000 +++ b/rt/net/sourceforge/jnlp/Launcher.java Fri Nov 27 11:17:31 2009 -0500 @@ -579,6 +579,8 @@ public class Launcher { group.setApplication(appletInstance); loader.setApplication(appletInstance); + + setContextClassLoaderForAllThreads(appletInstance.getClassLoader()); return appletInstance; } diff -r 610a316e54d2 -r d9377bd6e521 rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Wed Nov 25 11:41:02 2009 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Fri Nov 27 11:17:31 2009 -0500 @@ -130,7 +130,7 @@ class JNLPSecurityManager extends Securi public void windowDeactivated(WindowEvent e) { activeApplication = null; } - + public void windowClosing(WindowEvent e) { System.err.println("Disposing window"); e.getWindow().dispose(); From ptisnovs at redhat.com Tue Dec 1 08:47:54 2009 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 01 Dec 2009 17:47:54 +0100 Subject: Patch for IcedTea6 - Gervill overlay Message-ID: <4B1548BA.6040906@redhat.com> Hi, I synchronized Gervill sources stored in IcedTea overlay with OpenJDK sources (there are some changes not included in official Gervill package). I wish to thank Mark for his suggestions :-) JTreg results: http://file.brq.redhat.com/~ptisnovs/jtreg/icedtea6/2009-12-01/ (all sound test passes now) JCK: compiler - no new regressions devtools - no new regressions runtime - not done yet Tested on RHEL 5 x86_64. Is it possible to push these changes to IcedTea6 repository? Pavel T. -------------- next part -------------- A non-text attachment was scrubbed... Name: gervill.patch Type: text/x-patch Size: 41974 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091201/bbc1e1c7/gervill.patch From gbenson at redhat.com Tue Dec 1 08:51:20 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 1 Dec 2009 16:51:20 +0000 Subject: Gervill changes Message-ID: <20091201165120.GB3331@redhat.com> Hi all, OpenJDK 6 and 7 have a fix that our version of Gervill doesn't have (http://tinyurl.com/ylm599p). How do I go about changing that in icedtea6? Can I just commit a change to the file in overlays/openjdk or do I need to do something else? Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 610a316e54d2 Makefile.am --- a/Makefile.am Wed Nov 25 11:41:02 2009 +0000 +++ b/Makefile.am Tue Dec 01 12:52:39 2009 +0000 @@ -626,7 +626,8 @@ patches/icedtea-s390-serialize.patch \ patches/openjdk/6879689-hotspot_warning_fix.patch \ patches/icedtea-no-precompiled.patch \ - patches/icedtea-6897844-xshm.patch + patches/icedtea-6897844-xshm.patch \ + patches/openjdk/6806019-jck-midi-failures.patch if WITH_RHINO ICEDTEA_PATCHES += \ diff -r 610a316e54d2 patches/openjdk/6806019-jck-midi-failures.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6806019-jck-midi-failures.patch Tue Dec 01 12:52:39 2009 +0000 @@ -0,0 +1,67 @@ +--- openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java.orig 2009-12-01 12:38:45.000000000 +0000 ++++ openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java 2009-12-01 12:38:53.000000000 +0000 +@@ -894,9 +894,12 @@ + return; + } + synchronized (control_mutex) { ++ Throwable causeException = null; + try { +- if (line != null) ++ if (line != null) { ++ // can throw IllegalArgumentException + setFormat(line.getFormat()); ++ } + + AudioInputStream ais = openStream(getFormat(), info); + +@@ -905,10 +908,13 @@ + + if (line == null) + { +- if(testline != null) ++ if (testline != null) { + line = testline; +- else ++ } else { ++ // can throw LineUnavailableException, ++ // IllegalArgumentException, SecurityException + line = AudioSystem.getSourceDataLine(getFormat()); ++ } + } + + double latency = this.latency; +@@ -916,6 +922,8 @@ + if (!line.isOpen()) { + int bufferSize = getFormat().getFrameSize() + * (int)(getFormat().getFrameRate() * (latency/1000000f)); ++ // can throw LineUnavailableException, ++ // IllegalArgumentException, SecurityException + line.open(getFormat(), bufferSize); + + // Remember that we opened that line +@@ -959,13 +967,22 @@ + weakstream.sourceDataLine = sourceDataLine; + } + +- +- + } catch (LineUnavailableException e) { ++ causeException = e; ++ } catch (IllegalArgumentException e) { ++ causeException = e; ++ } catch (SecurityException e) { ++ causeException = e; ++ } ++ ++ if (causeException != null) { + if (isOpen()) + close(); + // am: need MidiUnavailableException(Throwable) ctor! +- throw new MidiUnavailableException(e.toString()); ++ MidiUnavailableException ex = new MidiUnavailableException( ++ "Can not open line"); ++ ex.initCause(causeException); ++ throw ex; + } + + } From Joe.Darcy at Sun.COM Tue Dec 1 09:30:40 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Tue, 01 Dec 2009 09:30:40 -0800 Subject: Gervill changes In-Reply-To: <20091201165120.GB3331@redhat.com> References: <20091201165120.GB3331@redhat.com> Message-ID: <4B1552C0.6030704@sun.com> Gary Benson wrote: > Hi all, > > OpenJDK 6 and 7 have a fix that our version of Gervill doesn't have > (http://tinyurl.com/ylm599p). How do I go about changing that in > icedtea6? Can I just commit a change to the file in overlays/openjdk > or do I need to do something else? > > Cheers, > Gary > > Hello. For some time Karl has been using OpenJDK 6 as the upstream master for Gervill. If there are additional fixes in the Gervill overlays in IcedTea 6/7, they should be applied to OpenJDK 6/7. In other words, I recommend that the IcedTea Gervill overlays go away since they shouldn't be necessary at this point. -Joe From mark at klomp.org Tue Dec 1 11:12:42 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 01 Dec 2009 20:12:42 +0100 Subject: Gervill changes In-Reply-To: <20091201165120.GB3331@redhat.com> References: <20091201165120.GB3331@redhat.com> Message-ID: <1259694762.6590.31.camel@springer.wildebeest.org> Hi Gary, > OpenJDK 6 and 7 have a fix that our version of Gervill doesn't have > (http://tinyurl.com/ylm599p). How do I go about changing that in > icedtea6? Can I just commit a change to the file in overlays/openjdk > or do I need to do something else? Just apply that patch to the files in the overlay and that takes care of everything. (But you might want to get rid of the strange whitespace only changes first to minimize the actual patch.) Longer term it is better to pull from one upstream. So double check that those changes aren't in upstream cvs from which we import: https://gervill.dev.java.net/source/browse/gervill/ If they are, then just import a new cvs version, which makes it easier to see if we have any changes left. If we had changes in previous imports I made sure to post about them on the audio-engine-dev list. The last one seems to be from some time ago, but includes the (minimal) diffs at that point: http://mail.openjdk.java.net/pipermail/audio-engine-dev/2008-November/000062.html Then double check that there are no differences between the overlay files and the files in openjdk6 (note that some files have been renamed and that some of the files might have random indentation/whitespace changes). As Joe said it would be ideal if all changes merged together and the overlay for gervill could go away. The only reason that hasn't been done is that in the past openjdk6 didn't contain any code from gervill and for some time it contained only older versions without some important bug fixes (and some sources were reformatted from upstream, which made comparison difficult). That was my plan with the last import, but I never got to it: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-May/005710.html Cheers, Mark From bugzilla-daemon at icedtea.classpath.org Tue Dec 1 11:42:48 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 01 Dec 2009 19:42:48 +0000 Subject: [Bug 406] IcedTeaPlugin.so fails to load processing created applets. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=406 dbhole at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from dbhole at redhat.com 2009-12-01 19:42 ------- Fixed in icedtea6 HEAD (not ported to icedtea7 as old plugin won't be supported there). -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mark at klomp.org Tue Dec 1 11:55:27 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 01 Dec 2009 20:55:27 +0100 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <4B1548BA.6040906@redhat.com> References: <4B1548BA.6040906@redhat.com> Message-ID: <1259697327.6590.64.camel@springer.wildebeest.org> On Tue, 2009-12-01 at 17:47 +0100, Pavel Tisnovsky wrote: > I synchronized Gervill sources stored in IcedTea overlay with OpenJDK > sources (there are some changes not included in official Gervill > package). I wish to thank Mark for his suggestions :-) > > JTreg results: > http://file.brq.redhat.com/~ptisnovs/jtreg/icedtea6/2009-12-01/ > (all sound test passes now) Thanks for doing a full test run, and great to hear all sound related tests now pass. But that doesn't seem to be a publicly accessible machine. > Is it possible to push these changes to IcedTea6 repository? I looked over the changes quickly and they look fine to me. Thanks for doing this. Please do push. The changes seem to correspond with openjdk6/jdk changes: changeset: 160:ac4f0c58f4c7 user: kalli date: Sat Jul 25 01:30:40 2009 +0000 description: 6833357: Improve time-stamp support in Gervill to reduce jitter. changeset: 135:a42d6999734b user: kalli date: Fri Apr 24 22:52:33 2009 +0000 description: 6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to play too may voices at same time. changeset: 129:2b6b4a913149 user: amenkov date: Wed Apr 08 13:10:49 2009 +0400 description: 6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46 Could you add the above to the README file, to make sure there is a log? I saw Gary's message about the same issue first and responded to him also (his patch only covered one of the above changes though). Did you coordinate? So, with your changes, the diff between the files in the gervill overlay and the same files in the openjdk6 repository are now the same? If so, then after this is committed and fully tested to work as expected, the next step seems to be to finally remove the overlay from the build. Thanks, Mark From dbhole at redhat.com Tue Dec 1 13:35:36 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 1 Dec 2009 16:35:36 -0500 Subject: Updating the java.version property reported by IcedTea Message-ID: <20091201213535.GB22774@redhat.com> Hi, Currently, IcedTea reports java.version to be 1.6.0_0 Applets can sometimes rely on it. For example, this one: http://www.java.com/en/download/help/testvm.xml Right now, that applet fails as 'java.lang.StringIndexOutOfBoundsException: String index out of range: 8' If I force java.version to be 1.6.0_16, it works fine. (1.6.0_16 is 8 in length). What do others think about making IcedTea report 1.6.0_16 to match the update number? If that is not possible, I can just make the plugin report it, but it'd be nice to have the system itself do the right thing. I would really like to see that applet working because it is a sort of test for plugin installation, and if it fails, people assume that the plugin is broken when it is not. Deepak From mwong at redhat.com Tue Dec 1 14:15:34 2009 From: mwong at redhat.com (Man Wong) Date: Tue, 1 Dec 2009 17:15:34 -0500 (EST) Subject: Patch for review: Enabling Netx Desktop Element In-Reply-To: <2104744157.799451259705673964.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <1660981223.799521259705734748.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> This patch fixes the 2 problems (shortcut not using system preferred javaws and jnlp file in cache) from the previous fixme. The fix allows netx desktop element to be enabled. Furthermore, shortcut tag is now no longer required as in the jnlp developers guide. Lastly, it now checks for updates and updates the file in the cache accordingly. Changelog: 2009-12-01 Man Lung Wong * rt/net/sourceforge/jnlp/JNLPFile.java (JNLPFILE): Download the jnlp file from the webspace it originated, if it exists. * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java (initialize): Enable desktop element and revise the list of fixme. (addMenuAndDesktopEntries): No longer errors out when shortcut tag not specified. * rt/net/sourceforge/jnlp/runtime/Boot.java (getFile): Launches the original jnlp file (i.e. if the file was downloaded from http://icedtea.classpath.org, then it will launch the one from http://icedtea.classpath.org). * rt/net/sourceforge/jnlp/util/XDesktopEntry.java (getContentsAsReader): Shortcut uses jnlp file in cache and launches with system preferred javaws. Any comments? Thanks, Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: desktopElement.patch Type: text/x-patch Size: 4844 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091201/9738602b/desktopElement.patch From gbenson at redhat.com Wed Dec 2 00:19:47 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 2 Dec 2009 08:19:47 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <1259697327.6590.64.camel@springer.wildebeest.org> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> Message-ID: <20091202081946.GA3640@redhat.com> Mark Wielaard wrote: > On Tue, 2009-12-01 at 17:47 +0100, Pavel Tisnovsky wrote: > > Is it possible to push these changes to IcedTea6 repository? > > I looked over the changes quickly and they look fine to me. Thanks > for doing this. Please do push. The changes seem to correspond with > openjdk6/jdk changes: > > changeset: 160:ac4f0c58f4c7 > user: kalli > date: Sat Jul 25 01:30:40 2009 +0000 > description: > 6833357: Improve time-stamp support in Gervill to reduce jitter. > > changeset: 135:a42d6999734b > user: kalli > date: Fri Apr 24 22:52:33 2009 +0000 > description: > 6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to > play too may voices at same time. > > changeset: 129:2b6b4a913149 > user: amenkov > date: Wed Apr 08 13:10:49 2009 +0400 > description: > 6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46 > > Could you add the above to the README file, to make sure there is a > log? > > I saw Gary's message about the same issue first and responded to him > also (his patch only covered one of the above changes though). Did > you coordinate? We did now :) Pavel, please push this, it fixes my problems! Cheers, Gary -- http://gbenson.net/ From mark at klomp.org Wed Dec 2 00:34:08 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Dec 2009 09:34:08 +0100 Subject: Updating the java.version property reported by IcedTea In-Reply-To: <20091201213535.GB22774@redhat.com> References: <20091201213535.GB22774@redhat.com> Message-ID: <1259742848.2690.8.camel@hermans.wildebeest.org> Hi Deepak, On Tue, 2009-12-01 at 16:35 -0500, Deepak Bhole wrote: > Currently, IcedTea reports java.version to be 1.6.0_0 > > Applets can sometimes rely on it. For example, this one: > > http://www.java.com/en/download/help/testvm.xml > > Right now, that applet fails as > > 'java.lang.StringIndexOutOfBoundsException: String index out of range: 8' Sigh. That applet is pretty bad. Last time we changed the java.version string it was also because that one made some bogus assumptions. 2008-06-11 Lillian Angel * Makefile.am: Added JDK_UPDATE_VERSION to environment. Some applets, like the Sun's verify Java version applet, check for the "_" in the version string. Our version string format is now correct: java version "1.6.0_0" OpenJDK Runtime Environment (build 1.6.0_0-b10) OpenJDK Server VM (build 1.6.0_0-b10, mixed mode) * Makefile.in: Regenerated. They must have changed it since then. Is the source code available? > If I force java.version to be 1.6.0_16, it works fine. (1.6.0_16 is 8 in > length). > > What do others think about making IcedTea report 1.6.0_16 to match the update > number? If that is not possible, I can just make the plugin report it, > but it'd be nice to have the system itself do the right thing. If we have to have a "real" update number it would be nice to base it on the actual icedtea version number. What about if we take the significant numbers of the icedtea package version (without the dots and extensions pre/rc/etc)? You would have to do something like the following to change the definition in Makefile.am: -JDK_UPDATE_VERSION = 0 +JDK_UPDATE_VERSION = $(shell echo $(PACKAGE_VERSION) | sed -e "s/[a-z.]//g") That would be 17 for current hg tip. And that makes the update version nicely increase with each release. > I would really like to see that applet working because it is a sort of > test for plugin installation, and if it fails, people assume that the > plugin is broken when it is not. Yeah, agreed. Although it really is that applet that is totally brain-dead and broken :{ Should we have our own "Hello World" applet somewhere we can point people to to check out whether things work appropriately somewhere on icedtea.classpath.org? Cheers, Mark From aph at redhat.com Wed Dec 2 01:27:16 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 02 Dec 2009 09:27:16 +0000 Subject: Updating the java.version property reported by IcedTea In-Reply-To: <1259742848.2690.8.camel@hermans.wildebeest.org> References: <20091201213535.GB22774@redhat.com> <1259742848.2690.8.camel@hermans.wildebeest.org> Message-ID: <4B1632F4.6000200@redhat.com> Mark Wielaard wrote: >> >> What do others think about making IcedTea report 1.6.0_16 to match the update >> number? If that is not possible, I can just make the plugin report it, >> but it'd be nice to have the system itself do the right thing. > > If we have to have a "real" update number it would be nice to base it on > the actual icedtea version number. I think the best chance of this working properly is if we print something that is as close as possible to that of the proprietary JDK. Andrew. From ptisnovs at icedtea.classpath.org Wed Dec 2 01:36:30 2009 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Wed, 02 Dec 2009 09:36:30 +0000 Subject: /hg/icedtea6: Synchronized Gervill sources stored in IcedTea ove... Message-ID: changeset eb51df7af234 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=eb51df7af234 author: Pavel Tisnovsky date: Wed Dec 02 10:40:55 2009 +0100 Synchronized Gervill sources stored in IcedTea overlay with OpenJDK sources 6833357: Improve time-stamp support in Gervill to reduce jitter. 6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to 6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46 diffstat: 8 files changed, 367 insertions(+), 135 deletions(-) overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt | 5 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java | 24 + overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java | 36 + overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java | 2 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java | 235 +++++++--- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReceiver.java | 9 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java | 96 ++-- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java | 95 ++-- diffs (truncated from 1079 to 500 lines): diff -r d9377bd6e521 -r eb51df7af234 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt Fri Nov 27 11:17:31 2009 -0500 +++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt Wed Dec 02 10:40:55 2009 +0100 @@ -1,3 +1,6 @@ 6823446: Gervill SoftLowFrequencyOscilla +6833357: Improve time-stamp support in Gervill to reduce jitter. +6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to +6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46 6823446: Gervill SoftLowFrequencyOscillator fails when freq is set to 0 cent or 8.1758 Hz. 6823445: Gervill SoftChannel/ResetAllControllers jtreg test fails after portamento fix from last merge. 6821030: Merge OpenJDK Gervill with upstream sources, Q1CY2009 @@ -307,4 +310,4 @@ VERSION 0.1 - General Midi Level 2 - MIDI Tuning Standard - Drumkits can be used on any channel - - Sinc interpolation with anti-aliasing \ No newline at end of file + - Sinc interpolation with anti-aliasing diff -r d9377bd6e521 -r eb51df7af234 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java Fri Nov 27 11:17:31 2009 -0500 +++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java Wed Dec 02 10:40:55 2009 +0100 @@ -46,6 +46,30 @@ public class SoftAudioBuffer { this.size = size; this.format = format; converter = AudioFloatConverter.getConverter(format); + } + + public void swap(SoftAudioBuffer swap) + { + int bak_size = size; + float[] bak_buffer = buffer; + boolean bak_empty = empty; + AudioFormat bak_format = format; + AudioFloatConverter bak_converter = converter; + byte[] bak_converter_buffer = converter_buffer; + + size = swap.size; + buffer = swap.buffer; + empty = swap.empty; + format = swap.format; + converter = swap.converter; + converter_buffer = swap.converter_buffer; + + swap.size = bak_size; + swap.buffer = bak_buffer; + swap.empty = bak_empty; + swap.format = bak_format; + swap.converter = bak_converter; + swap.converter_buffer = bak_converter_buffer; } public AudioFormat getFormat() { diff -r d9377bd6e521 -r eb51df7af234 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java Fri Nov 27 11:17:31 2009 -0500 +++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java Wed Dec 02 10:40:55 2009 +0100 @@ -218,6 +218,15 @@ public class SoftChannel implements Midi } private int findFreeVoice(int x) { + if(x == -1) + { + // x = -1 means that there where no available voice + // last time we called findFreeVoice + // and it hasn't changed because no audio has been + // rendered in the meantime. + // Therefore we have to return -1. + return -1; + } for (int i = x; i < voices.length; i++) if (!voices[i].active) return i; @@ -285,9 +294,9 @@ public class SoftChannel implements Midi } else { // Default Voice Allocation // * Find voice that is on - // and Find voice which has lowest voiceID ( oldest voice) + // and Find voice which has lowest voiceID ( oldest voice) // * Or find voice that is off - // and Find voice which has lowest voiceID ( oldest voice) + // and Find voice which has lowest voiceID ( oldest voice) int voiceNo = -1; @@ -328,7 +337,7 @@ public class SoftChannel implements Midi } protected void initVoice(SoftVoice voice, SoftPerformer p, int voiceID, - int noteNumber, int velocity, ModelConnectionBlock[] connectionBlocks, + int noteNumber, int velocity, int delay, ModelConnectionBlock[] connectionBlocks, ModelChannelMixer channelmixer, boolean releaseTriggered) { if (voice.active) { // Voice is active , we must steal the voice @@ -363,7 +372,7 @@ public class SoftChannel implements Midi voice.objects.put("midi_cc", co_midi_cc); voice.objects.put("midi_rpn", co_midi_rpn); voice.objects.put("midi_nrpn", co_midi_nrpn); - voice.noteOn(noteNumber, velocity); + voice.noteOn(noteNumber, velocity, delay); voice.setMute(mute); voice.setSoloMute(solomute); if (releaseTriggered) @@ -399,14 +408,21 @@ public class SoftChannel implements Midi } public void noteOn(int noteNumber, int velocity) { + noteOn(noteNumber, velocity, 0); + } + + /* A special noteOn with delay parameter, which is used to + * start note within control buffers. + */ + protected void noteOn(int noteNumber, int velocity, int delay) { noteNumber = restrict7Bit(noteNumber); velocity = restrict7Bit(velocity); - noteOn_internal(noteNumber, velocity); + noteOn_internal(noteNumber, velocity, delay); if (current_mixer != null) current_mixer.noteOn(noteNumber, velocity); } - private void noteOn_internal(int noteNumber, int velocity) { + private void noteOn_internal(int noteNumber, int velocity, int delay) { if (velocity == 0) { noteOff_internal(noteNumber, 64); @@ -490,6 +506,7 @@ public class SoftChannel implements Midi int tunedKey = (int)(Math.round(tuning.getTuning()[noteNumber]/100.0)); play_noteNumber = noteNumber; play_velocity = velocity; + play_delay = delay; play_releasetriggered = false; lastVelocity[noteNumber] = velocity; current_director.noteOn(tunedKey, velocity); @@ -594,6 +611,7 @@ public class SoftChannel implements Midi play_noteNumber = noteNumber; play_velocity = lastVelocity[noteNumber]; play_releasetriggered = true; + play_delay = 0; current_director.noteOff(tunedKey, velocity); } @@ -604,12 +622,14 @@ public class SoftChannel implements Midi private int voiceNo = 0; private int play_noteNumber = 0; private int play_velocity = 0; + private int play_delay = 0; private boolean play_releasetriggered = false; public void play(int performerIndex, ModelConnectionBlock[] connectionBlocks) { int noteNumber = play_noteNumber; int velocity = play_velocity; + int delay = play_delay; boolean releasetriggered = play_releasetriggered; SoftPerformer p = current_instrument.getPerformers()[performerIndex]; @@ -633,7 +653,7 @@ public class SoftChannel implements Midi if (voiceNo == -1) return; - initVoice(voices[voiceNo], p, prevVoiceID, noteNumber, velocity, + initVoice(voices[voiceNo], p, prevVoiceID, noteNumber, velocity, delay, connectionBlocks, current_mixer, releasetriggered); } @@ -1212,7 +1232,7 @@ 121 |79H |**Coarse Tuning |0 this.controller[controller] = value; if(controller < 0x20) - this.controller[controller + 0x20] = 0; + this.controller[controller + 0x20] = 0; for (int i = 0; i < voices.length; i++) if (voices[i].active) diff -r d9377bd6e521 -r eb51df7af234 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java Fri Nov 27 11:17:31 2009 -0500 +++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java Wed Dec 02 10:40:55 2009 +0100 @@ -79,7 +79,7 @@ public class SoftLimiter implements Soft if (silentcounter > 60) { if (!mix) { bufferLout.clear(); - bufferRout.clear(); + if(bufferRout != null) bufferRout.clear(); } return; } diff -r d9377bd6e521 -r eb51df7af234 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java Fri Nov 27 11:17:31 2009 -0500 +++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java Wed Dec 02 10:40:55 2009 +0100 @@ -26,7 +26,6 @@ package com.sun.media.sound; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.Set; @@ -46,28 +45,37 @@ import javax.sound.sampled.AudioSystem; */ public class SoftMainMixer { + // A private class thats contains a ModelChannelMixer and it's private buffers. + // This becomes necessary when we want to have separate delay buffers for each channel mixer. + private class SoftChannelMixerContainer + { + ModelChannelMixer mixer; + SoftAudioBuffer[] buffers; + } + public final static int CHANNEL_LEFT = 0; public final static int CHANNEL_RIGHT = 1; public final static int CHANNEL_MONO = 2; - public final static int CHANNEL_EFFECT1 = 3; - public final static int CHANNEL_EFFECT2 = 4; - public final static int CHANNEL_EFFECT3 = 5; - public final static int CHANNEL_EFFECT4 = 6; + public final static int CHANNEL_DELAY_LEFT = 3; + public final static int CHANNEL_DELAY_RIGHT = 4; + public final static int CHANNEL_DELAY_MONO = 5; + public final static int CHANNEL_EFFECT1 = 6; + public final static int CHANNEL_EFFECT2 = 7; + public final static int CHANNEL_DELAY_EFFECT1 = 8; + public final static int CHANNEL_DELAY_EFFECT2 = 9; public final static int CHANNEL_LEFT_DRY = 10; public final static int CHANNEL_RIGHT_DRY = 11; public final static int CHANNEL_SCRATCH1 = 12; public final static int CHANNEL_SCRATCH2 = 13; - public final static int CHANNEL_CHANNELMIXER_LEFT = 14; - public final static int CHANNEL_CHANNELMIXER_RIGHT = 15; - public final static int CHANNEL_CHANNELMIXER_MONO = 16; protected boolean active_sensing_on = false; private long msec_last_activity = -1; private boolean pusher_silent = false; private int pusher_silent_count = 0; - private long msec_pos = 0; + private long sample_pos = 0; protected boolean readfully = true; private Object control_mutex; private SoftSynthesizer synth; + private float samplerate = 44100; private int nrofchannels = 2; private SoftVoice[] voicestatus = null; private SoftAudioBuffer[] buffers; @@ -75,7 +83,10 @@ public class SoftMainMixer { private SoftAudioProcessor chorus; private SoftAudioProcessor agc; private long msec_buffer_len = 0; + private int buffer_len = 0; protected TreeMap midimessages = new TreeMap(); + private int delay_midievent = 0; + private int max_delay_midievent = 0; double last_volume_left = 1.0; double last_volume_right = 1.0; private double[] co_master_balance = new double[1]; @@ -83,9 +94,9 @@ public class SoftMainMixer { private double[] co_master_coarse_tuning = new double[1]; private double[] co_master_fine_tuning = new double[1]; private AudioInputStream ais; - private Set registeredMixers = null; + private Set registeredMixers = null; private Set stoppedMixers = null; - private ModelChannelMixer[] cur_registeredMixers = null; + private SoftChannelMixerContainer[] cur_registeredMixers = null; protected SoftControl co_master = new SoftControl() { double[] balance = co_master_balance; @@ -413,26 +424,68 @@ public class SoftMainMixer { Iterator> iter = midimessages.entrySet().iterator(); while (iter.hasNext()) { Entry entry = iter.next(); - if (entry.getKey() > (timeStamp + 100)) + if (entry.getKey() >= (timeStamp + msec_buffer_len)) return; + long msec_delay = entry.getKey() - timeStamp; + delay_midievent = (int)(msec_delay * (samplerate / 1000000.0) + 0.5); + if(delay_midievent > max_delay_midievent) + delay_midievent = max_delay_midievent; + if(delay_midievent < 0) + delay_midievent = 0; processMessage(entry.getValue()); iter.remove(); } + delay_midievent = 0; } protected void processAudioBuffers() { - for (int i = 0; i < buffers.length; i++) { - buffers[i].clear(); + + if(synth.weakstream != null && synth.weakstream.silent_samples != 0) + { + sample_pos += synth.weakstream.silent_samples; + synth.weakstream.silent_samples = 0; + } + + for (int i = 0; i < buffers.length; i++) { + if(i != CHANNEL_DELAY_LEFT && + i != CHANNEL_DELAY_RIGHT && + i != CHANNEL_DELAY_MONO && + i != CHANNEL_DELAY_EFFECT1 && + i != CHANNEL_DELAY_EFFECT2) + buffers[i].clear(); + } + + if(!buffers[CHANNEL_DELAY_LEFT].isSilent()) + { + buffers[CHANNEL_LEFT].swap(buffers[CHANNEL_DELAY_LEFT]); + } + if(!buffers[CHANNEL_DELAY_RIGHT].isSilent()) + { + buffers[CHANNEL_RIGHT].swap(buffers[CHANNEL_DELAY_RIGHT]); + } + if(!buffers[CHANNEL_DELAY_MONO].isSilent()) + { + buffers[CHANNEL_MONO].swap(buffers[CHANNEL_DELAY_MONO]); + } + if(!buffers[CHANNEL_DELAY_EFFECT1].isSilent()) + { + buffers[CHANNEL_EFFECT1].swap(buffers[CHANNEL_DELAY_EFFECT1]); + } + if(!buffers[CHANNEL_DELAY_EFFECT2].isSilent()) + { + buffers[CHANNEL_EFFECT2].swap(buffers[CHANNEL_DELAY_EFFECT2]); } double volume_left; double volume_right; - ModelChannelMixer[] act_registeredMixers; + SoftChannelMixerContainer[] act_registeredMixers; // perform control logic synchronized (control_mutex) { + long msec_pos = (long)(sample_pos * (1000000.0 / samplerate)); + processMessages(msec_pos); if (active_sensing_on) { @@ -450,7 +503,7 @@ public class SoftMainMixer { for (int i = 0; i < voicestatus.length; i++) if (voicestatus[i].active) voicestatus[i].processControlLogic(); - msec_pos += msec_buffer_len; + sample_pos += buffer_len; double volume = co_master_volume[0]; volume_left = volume; @@ -469,7 +522,7 @@ public class SoftMainMixer { if (cur_registeredMixers == null) { if (registeredMixers != null) { cur_registeredMixers = - new ModelChannelMixer[registeredMixers.size()]; + new SoftChannelMixerContainer[registeredMixers.size()]; registeredMixers.toArray(cur_registeredMixers); } } @@ -483,49 +536,67 @@ public class SoftMainMixer { if (act_registeredMixers != null) { - // Reroute default left,right output - // to channelmixer left,right input/output + // Make backup of left,right,mono channels SoftAudioBuffer leftbak = buffers[CHANNEL_LEFT]; SoftAudioBuffer rightbak = buffers[CHANNEL_RIGHT]; SoftAudioBuffer monobak = buffers[CHANNEL_MONO]; - buffers[CHANNEL_LEFT] = buffers[CHANNEL_CHANNELMIXER_LEFT]; - buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_RIGHT]; - buffers[CHANNEL_MONO] = buffers[CHANNEL_CHANNELMIXER_MONO]; + SoftAudioBuffer delayleftbak = buffers[CHANNEL_DELAY_LEFT]; + SoftAudioBuffer delayrightbak = buffers[CHANNEL_DELAY_RIGHT]; + SoftAudioBuffer delaymonobak = buffers[CHANNEL_DELAY_MONO]; int bufferlen = buffers[CHANNEL_LEFT].getSize(); float[][] cbuffer = new float[nrofchannels][]; - cbuffer[0] = buffers[CHANNEL_LEFT].array(); - if (nrofchannels != 1) - cbuffer[1] = buffers[CHANNEL_RIGHT].array(); - float[][] obuffer = new float[nrofchannels][]; obuffer[0] = leftbak.array(); if (nrofchannels != 1) obuffer[1] = rightbak.array(); - for (ModelChannelMixer cmixer : act_registeredMixers) { - for (int i = 0; i < cbuffer.length; i++) - Arrays.fill(cbuffer[i], 0); + for (SoftChannelMixerContainer cmixer : act_registeredMixers) { + + // Reroute default left,right output + // to channelmixer left,right input/output + buffers[CHANNEL_LEFT] = cmixer.buffers[CHANNEL_LEFT]; + buffers[CHANNEL_RIGHT] = cmixer.buffers[CHANNEL_RIGHT]; + buffers[CHANNEL_MONO] = cmixer.buffers[CHANNEL_MONO]; + buffers[CHANNEL_DELAY_LEFT] = cmixer.buffers[CHANNEL_DELAY_LEFT]; + buffers[CHANNEL_DELAY_RIGHT] = cmixer.buffers[CHANNEL_DELAY_RIGHT]; + buffers[CHANNEL_DELAY_MONO] = cmixer.buffers[CHANNEL_DELAY_MONO]; + + buffers[CHANNEL_LEFT].clear(); + buffers[CHANNEL_RIGHT].clear(); buffers[CHANNEL_MONO].clear(); + + if(!buffers[CHANNEL_DELAY_LEFT].isSilent()) + { + buffers[CHANNEL_LEFT].swap(buffers[CHANNEL_DELAY_LEFT]); + } + if(!buffers[CHANNEL_DELAY_RIGHT].isSilent()) + { + buffers[CHANNEL_RIGHT].swap(buffers[CHANNEL_DELAY_RIGHT]); + } + if(!buffers[CHANNEL_DELAY_MONO].isSilent()) + { + buffers[CHANNEL_MONO].swap(buffers[CHANNEL_DELAY_MONO]); + } + + cbuffer[0] = buffers[CHANNEL_LEFT].array(); + if (nrofchannels != 1) + cbuffer[1] = buffers[CHANNEL_RIGHT].array(); + boolean hasactivevoices = false; for (int i = 0; i < voicestatus.length; i++) if (voicestatus[i].active) - if (voicestatus[i].channelmixer == cmixer) { + if (voicestatus[i].channelmixer == cmixer.mixer) { voicestatus[i].processAudioLogic(buffers); hasactivevoices = true; } - if (!cmixer.process(cbuffer, 0, bufferlen)) { - synchronized (control_mutex) { - registeredMixers.remove(cmixer); - cur_registeredMixers = null; - } - } + if(!buffers[CHANNEL_MONO].isSilent()) { float[] mono = buffers[CHANNEL_MONO].array(); - float[] left = buffers[CHANNEL_LEFT].array(); + float[] left = buffers[CHANNEL_LEFT].array(); if (nrofchannels != 1) { float[] right = buffers[CHANNEL_RIGHT].array(); for (int i = 0; i < bufferlen; i++) { @@ -538,9 +609,16 @@ public class SoftMainMixer { { for (int i = 0; i < bufferlen; i++) { left[i] += mono[i]; - } - } - } + } + } + } + + if (!cmixer.mixer.process(cbuffer, 0, bufferlen)) { + synchronized (control_mutex) { + registeredMixers.remove(cmixer); + cur_registeredMixers = null; + } + } for (int i = 0; i < cbuffer.length; i++) { float[] cbuff = cbuffer[i]; @@ -554,7 +632,7 @@ public class SoftMainMixer { if (stoppedMixers != null) { if (stoppedMixers.contains(cmixer)) { stoppedMixers.remove(cmixer); - cmixer.stop(); + cmixer.mixer.stop(); } } } @@ -565,6 +643,9 @@ public class SoftMainMixer { buffers[CHANNEL_LEFT] = leftbak; buffers[CHANNEL_RIGHT] = rightbak; buffers[CHANNEL_MONO] = monobak; + buffers[CHANNEL_DELAY_LEFT] = delayleftbak; + buffers[CHANNEL_DELAY_RIGHT] = delayrightbak; + buffers[CHANNEL_DELAY_MONO] = delaymonobak; } @@ -649,16 +730,25 @@ public class SoftMainMixer { if(buffers[CHANNEL_LEFT].isSilent() && buffers[CHANNEL_RIGHT].isSilent()) - { - pusher_silent_count++; - if(pusher_silent_count > 5) + { + + int midimessages_size; + synchronized (control_mutex) { + midimessages_size = midimessages.size(); + } + + if(midimessages_size == 0) { - pusher_silent_count = 0; From andrew at icedtea.classpath.org Wed Dec 2 05:21:19 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 02 Dec 2009 13:21:19 +0000 Subject: /hg/icedtea: Include latest LCMS fixes from IcedTea6. Message-ID: changeset 8bd2e4e68af1 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8bd2e4e68af1 author: Andrew John Hughes date: Wed Dec 02 13:25:56 2009 +0000 Include latest LCMS fixes from IcedTea6. 2009-12-02 Andrew John Hughes * Makefile.am: Include latest IcedTea6 LCMS fixes. diffstat: 2 files changed, 7 insertions(+), 2 deletions(-) ChangeLog | 5 +++++ Makefile.am | 4 ++-- diffs (33 lines): diff -r 440306c5b19d -r 8bd2e4e68af1 ChangeLog --- a/ChangeLog Mon Nov 23 09:31:03 2009 +0000 +++ b/ChangeLog Wed Dec 02 13:25:56 2009 +0000 @@ -1,3 +1,8 @@ 2009-11-23 Andrew John Hughes + + * Makefile.am: + Include latest IcedTea6 LCMS fixes. + 2009-11-23 Andrew John Hughes * INSTALL: Update NetBeans requirement diff -r 440306c5b19d -r 8bd2e4e68af1 Makefile.am --- a/Makefile.am Mon Nov 23 09:31:03 2009 +0000 +++ b/Makefile.am Wed Dec 02 13:25:56 2009 +0000 @@ -6,7 +6,7 @@ HOTSPOT_CHANGESET = b4ab978ce52c HOTSPOT_CHANGESET = b4ab978ce52c JAXP_CHANGESET = fb68fd18eb9f JAXWS_CHANGESET = 0dc08d528c99 -JDK_CHANGESET = fb2ee5e96b17 +JDK_CHANGESET = eb54fb210b82 LANGTOOLS_CHANGESET = 83367f01297b OPENJDK_CHANGESET = f0bfd9bd1a0e @@ -14,7 +14,7 @@ HOTSPOT_SHA256SUM = 1b035a9bf71072b9f60c HOTSPOT_SHA256SUM = 1b035a9bf71072b9f60c144c143d501b107a83a009ed31c90c8d0b6d3482a940 JAXP_SHA256SUM = 7f2f16538bb51081e8483b252f59a2e6e70ba3c33341ed85eaa1532e9fc93dcd JAXWS_SHA256SUM = 2005bf1e10bfd49002368088e34f26e86652f175ad827824ccfd9cbc0b840512 -JDK_SHA256SUM = dc409e64ef6e7b310d9e7292b15200529b8e6960404a8751c0ec38bb781a0319 +JDK_SHA256SUM = 69e4dfa1a8a3371b9178e9a15b15a450076ded9954079a3a0255babce479b255 LANGTOOLS_SHA256SUM = 01c43af5d3da14ff9a96e769d212b2297c2c6756b28cc6a6d6f00148c2eded26 OPENJDK_SHA256SUM = 6a28cd0ba1bcc4290175497e6cfe11295a8e4f82f4c030b3e5686f7c48297936 From mark at klomp.org Wed Dec 2 04:34:31 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Dec 2009 13:34:31 +0100 Subject: Updating the java.version property reported by IcedTea In-Reply-To: <4B1632F4.6000200@redhat.com> References: <20091201213535.GB22774@redhat.com> <1259742848.2690.8.camel@hermans.wildebeest.org> <4B1632F4.6000200@redhat.com> Message-ID: <1259757271.2690.15.camel@hermans.wildebeest.org> Hi Andrew, On Wed, 2009-12-02 at 09:27 +0000, Andrew Haley wrote: > Mark Wielaard wrote: > > If we have to have a "real" update number it would be nice to base it on > > the actual icedtea version number. > > I think the best chance of this working properly is if we print something > that is as close as possible to that of the proprietary JDK. Yes, of course, that is what my proposal does. But instead of hardcoding an arbitrary number (_16) it generates it from the actual icedtea package version (_17) so it actually has meaning as update version number. Cheers, Mark From gnu_andrew at member.fsf.org Wed Dec 2 09:52:29 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Dec 2009 17:52:29 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <1259697327.6590.64.camel@springer.wildebeest.org> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> Message-ID: <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> 2009/12/1 Mark Wielaard : > On Tue, 2009-12-01 at 17:47 +0100, Pavel Tisnovsky wrote: >> I synchronized Gervill sources stored in IcedTea overlay with OpenJDK >> sources (there are some changes not included in official Gervill >> package). I wish to thank Mark for his suggestions :-) >> >> JTreg results: >> http://file.brq.redhat.com/~ptisnovs/jtreg/icedtea6/2009-12-01/ >> (all sound test passes now) > > Thanks for doing a full test run, and great to hear all sound related > tests now pass. But that doesn't seem to be a publicly accessible > machine. > >> Is it possible to push these changes to IcedTea6 repository? > > I looked over the changes quickly and they look fine to me. > Thanks for doing this. Please do push. The changes seem to correspond > with openjdk6/jdk changes: > > changeset: ? 160:ac4f0c58f4c7 > user: ? ? ? ?kalli > date: ? ? ? ?Sat Jul 25 01:30:40 2009 +0000 > description: > 6833357: Improve time-stamp support in Gervill to reduce jitter. > > changeset: ? 135:a42d6999734b > user: ? ? ? ?kalli > date: ? ? ? ?Fri Apr 24 22:52:33 2009 +0000 > description: > 6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to > play too may voices at same time. > > changeset: ? 129:2b6b4a913149 > user: ? ? ? ?amenkov > date: ? ? ? ?Wed Apr 08 13:10:49 2009 +0400 > description: > 6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46 > > Could you add the above to the README file, to make sure there is a log? > > I saw Gary's message about the same issue first and responded to him > also (his patch only covered one of the above changes though). Did you > coordinate? > > So, with your changes, the diff between the files in the gervill overlay > and the same files in the openjdk6 repository are now the same? > If so, then after this is committed and fully tested to work as > expected, the next step seems to be to finally remove the overlay from > the build. > > Thanks, > > Mark > > What 'OpenJDK sources' are we referring to here? Is this b17 or the current Mercurial tree? If it is b17, why are we synchronising our local copy rather than just dropping it altogether, as both Joe and I have suggested? Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mark at klomp.org Wed Dec 2 11:06:49 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Dec 2009 20:06:49 +0100 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> Message-ID: <1259780809.2690.17.camel@hermans.wildebeest.org> On Wed, 2009-12-02 at 17:52 +0000, Andrew John Hughes wrote: > What 'OpenJDK sources' are we referring to here? Is this b17 or the > current Mercurial tree? The patches Pavel backported to are in the mercurial tree. > If it is b17, why are we synchronising our local copy rather than just > dropping it altogether, as both Joe and I have suggested? I think everybody agrees that would be nice. It is more work and needs retesting the whole sound/midi setup again though. But if that is done then that seems a great option as next step. Cheers, Mark From dbhole at redhat.com Wed Dec 2 11:21:54 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 2 Dec 2009 14:21:54 -0500 Subject: Updating the java.version property reported by IcedTea In-Reply-To: <1259757271.2690.15.camel@hermans.wildebeest.org> References: <20091201213535.GB22774@redhat.com> <1259742848.2690.8.camel@hermans.wildebeest.org> <4B1632F4.6000200@redhat.com> <1259757271.2690.15.camel@hermans.wildebeest.org> Message-ID: <20091202192154.GB17819@redhat.com> * Mark Wielaard [2009-12-02 08:40]: > Hi Andrew, > > On Wed, 2009-12-02 at 09:27 +0000, Andrew Haley wrote: > > Mark Wielaard wrote: > > > If we have to have a "real" update number it would be nice to base it on > > > the actual icedtea version number. > > > > I think the best chance of this working properly is if we print something > > that is as close as possible to that of the proprietary JDK. > > Yes, of course, that is what my proposal does. But instead of hardcoding > an arbitrary number (_16) it generates it from the actual icedtea > package version (_17) so it actually has meaning as update version > number. > Agreed! Should I go ahead and make the change then (to dynamically set it based on package version)? Any objections? Deepak From gnu_andrew at member.fsf.org Wed Dec 2 11:57:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Dec 2009 19:57:56 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <1259780809.2690.17.camel@hermans.wildebeest.org> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> Message-ID: <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> 2009/12/2 Mark Wielaard : > On Wed, 2009-12-02 at 17:52 +0000, Andrew John Hughes wrote: >> What 'OpenJDK sources' are we referring to here? Is this b17 or the >> current Mercurial tree? > > The patches Pavel backported to are in the mercurial tree. > >> If it is b17, why are we synchronising our local copy rather than just >> dropping it altogether, as both Joe and I have suggested? > > I think everybody agrees that would be nice. It is more work and needs > retesting the whole sound/midi setup again though. But if that is done > then that seems a great option as next step. > > Cheers, > > Mark > > I really don't follow what's going on here. Are the sources in the overlay directory now the same as in the OpenJDK6 tarball or not? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Wed Dec 2 11:58:41 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Dec 2009 19:58:41 +0000 Subject: Updating the java.version property reported by IcedTea In-Reply-To: <20091202192154.GB17819@redhat.com> References: <20091201213535.GB22774@redhat.com> <1259742848.2690.8.camel@hermans.wildebeest.org> <4B1632F4.6000200@redhat.com> <1259757271.2690.15.camel@hermans.wildebeest.org> <20091202192154.GB17819@redhat.com> Message-ID: <17c6771e0912021158m2028ca9cueb053afbd4eaa363@mail.gmail.com> 2009/12/2 Deepak Bhole : > * Mark Wielaard [2009-12-02 08:40]: >> Hi Andrew, >> >> On Wed, 2009-12-02 at 09:27 +0000, Andrew Haley wrote: >> > Mark Wielaard wrote: >> > > If we have to have a "real" update number it would be nice to base it on >> > > the actual icedtea version number. >> > >> > I think the best chance of this working properly is if we print something >> > that is as close as possible to that of the proprietary JDK. >> >> Yes, of course, that is what my proposal does. But instead of hardcoding >> an arbitrary number (_16) it generates it from the actual icedtea >> package version (_17) so it actually has meaning as update version >> number. >> > > Agreed! Should I go ahead and make the change then (to dynamically set > it based on package version)? Any objections? > > Deepak > Sounds ok to me. I'd also suggest reporting the bug in this applet. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Wed Dec 2 13:47:46 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 2 Dec 2009 16:47:46 -0500 Subject: Patch for review: Enabling Netx Desktop Element In-Reply-To: <1660981223.799521259705734748.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <2104744157.799451259705673964.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <1660981223.799521259705734748.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20091202214745.GD17819@redhat.com> * Man Wong [2009-12-01 17:15]: > This patch fixes the 2 problems (shortcut not using system preferred javaws and jnlp file in cache) from the previous fixme. The fix allows netx desktop element to be enabled. Furthermore, shortcut tag is now no longer required as in the jnlp developers guide. Lastly, it now checks for updates and updates the file in the cache accordingly. > > Changelog: > 2009-12-01 Man Lung Wong > > * rt/net/sourceforge/jnlp/JNLPFile.java > (JNLPFILE): Download the jnlp file from the webspace it originated, if > it exists. > * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > (initialize): Enable desktop element and revise the list of fixme. > (addMenuAndDesktopEntries): No longer errors out when shortcut tag not > specified. > * rt/net/sourceforge/jnlp/runtime/Boot.java > (getFile): Launches the original jnlp file (i.e. if the file was > downloaded from http://icedtea.classpath.org, then it will launch the > one from http://icedtea.classpath.org). > * rt/net/sourceforge/jnlp/util/XDesktopEntry.java > (getContentsAsReader): Shortcut uses jnlp file in cache and launches > with system preferred javaws. > > Any comments? > Please see comments below: > Thanks, > Man Lung Wong > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/JNLPFile.java > --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Dec 01 15:05:42 2009 -0500 > @@ -173,6 +173,14 @@ > public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { > Node root = Parser.getRootNode(openURL(location, version, policy)); > parse(root, strict, location); > + > + //Downloads the original jnlp file into the cache if possible > + //(i.e. If the jnlp file being launched exist locally, but it > + //originated from a website, then download the one from the website > + //into the cache). > + if (sourceLocation != null && location.getProtocol() == "file") { > + openURL(sourceLocation, version, policy); > + } > > this.fileLocation = location; > What is the difference between sourceLocation and location? In the if condition, one is being checked for notnull, and another is being checked for protocol. Is this expected? > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/util/XDesktopEntry.java > --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Dec 01 15:05:42 2009 -0500 > @@ -73,6 +73,7 @@ > > String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" > + File.separator + "javaws"; > + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > > String fileContents = "[Desktop Entry]\n"; > fileContents += "Version=1.0\n"; > @@ -89,7 +90,9 @@ > if (file.getInformation().getVendor() != null) { > fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; > } > - fileContents += "Exec=" + pathToJavaws + " \"" + file.getSourceLocation() + "\"\n"; > + > + //Shortcut executes the jnlp from cache and system preferred java.. > + fileContents += "Exec=" + "javaws" + " " + cacheFile.getAbsolutePath() + "\n"; > Are you sure the extra quotes (\"'s) should be removed? What if the file name has spaces, would it still work? Cheers, Deepak From dbhole at icedtea.classpath.org Wed Dec 2 17:19:28 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 03 Dec 2009 01:19:28 +0000 Subject: /hg/icedtea6: Fixes/updates to the new NP plugin: Message-ID: changeset 0ebce150b496 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0ebce150b496 author: Deepak Bhole date: Wed Dec 02 20:24:30 2009 -0500 Fixes/updates to the new NP plugin: - Rewrote of parts of object peering/retention code to improve stability significantly. - Full support for JS->Java array access and function call parameter passing. - Numerous fixes for spec complicance. - Removal of dead/duplicated code. - Ported over fixes for IcedTea Bugzilla issue 406 diffstat: 14 files changed, 1317 insertions(+), 813 deletions(-) ChangeLog | 104 + plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 365 ++++- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 53 plugin/icedteanp/IcedTeaNPPlugin.cc | 4 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 652 ++-------- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 1 plugin/icedteanp/IcedTeaPluginUtils.cc | 272 ++++ plugin/icedteanp/IcedTeaPluginUtils.h | 56 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 258 +-- plugin/icedteanp/IcedTeaScriptablePluginObject.h | 12 plugin/icedteanp/java/netscape/javascript/JSObject.java | 7 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 139 +- plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 103 + plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 104 + diffs (truncated from 3214 to 500 lines): diff -r eb51df7af234 -r 0ebce150b496 ChangeLog --- a/ChangeLog Wed Dec 02 10:40:55 2009 +0100 +++ b/ChangeLog Wed Dec 02 20:24:30 2009 -0500 @@ -1,3 +1,107 @@ 2009-11-27 Deepak Bhole + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc + (newMessageOnBus): Fix error handling code. Add support for NewArray, + GetValue, and literal returns (primitives). + (getValue): New function. Requests the value of a field from Java, + converted to literal for primitives/boxable types. + (setSlot): Bypass NPVariant creation. + (newArray): New function, creates an array of given type on Java side. + (set): Use value directly instead of NPVariant. + (setStaticField): Same. + (getArrayTypeForJava): New function. Given a variant, returns what type of + array should be created to store that variant on Java side. + (createJavaObjectFromVariant): Added support for arrays. + (callStaticMethod): use direct values instead of NPVariants. + (callMethod): Same. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Updates as needed by + changes to IcedTeaJavaRequestProcessor.cc. + * plugin/icedteanp/IcedTeaNPPlugin.cc + (GCJ_Destroy): Invalidate all NPObjects related to an instance. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (sendWindow): Use NPVariant address to store windows info on Java side, + rather than the corresponding NPObject address. + (call): Use IcedTeaPluginUtilities::javaResultToNPVariant for java var to + NPVariant conversion, rather than custom conversion. + (sendString): Use new AyncCallThreadData struct and + pluginthreadasynccall() for calls that need to be in main thread. + (setMember): Send value information directly to _setMember, and let it + sort out how to set values. + (convertToNPVariant): Moved to utilities class. + (sendMember): Deal with NPVariants instead of NPObjects. + (queue_processor): Add case for GetSlot (WIP). + (storeVariantInJava): Remove deprecated function. + (_setMember): Use javaResultToNPVariant to get a value loaded into a + variant. Deal with NPVariants instead of NPObjects. + (_getMember): Deal with NPVariants instead of NPObjects. + (_getString): New function. Returns toString values for variables. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Declare new _getString + function. + * plugin/icedteanp/IcedTeaPluginUtils.cc: Move object map from the plugin + request processor class. + (strSplit): For efficiency, reserve enough space for strings beforehand. + (getUTF8String): Same. + (printStringVector): Run only if in debug. + (removeInstanceID): New function to remove mapping between an object and + an instance. + (invalidateInstance): New function. Removes all mappings from objects to + the given instance. + (getNPObjectFromJavaKey): New function. Given a java object key, returns + the corresponding JS object, if any. + (storeObjectMapping): New function. Stores a mapping between Java + objects and JS objects (peering). + (removeObjectMapping): New function. Removes peering between JS object and + Java object. + (printStringPtrVector): Run only if in debug. + (printNPVariant): Same. + (NPVariantToString): Store result in provided parameter. + (javaResultToNPVariant): New function, moved from + IcedTeaScriptablePluginObject. + (isObjectJSArray): New function. Returns if given NPObject represents an + array. + * plugin/icedteanp/IcedTeaPluginUtils.h: Misc. changes as needed by + updates to IcedTeaPluginUtils.cc. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Move object_map to + utilities class. + (getProperty): Supply instance id to findClass. + (get_scriptable_java_object): Use the new + getNPObjectFromJavaKey/storeObjectMapping functions in the utilities + class. Also, create object asynchronously. + (_createAndRetainJavaObject): New function. Creates a scriptable Java + object and increments reference count. + (is_valid_java_object): New function. Returns if the given object is still + valid. + (invalidate): Remove instance and Java side object mapping for given + object. + (javaResultToNPVariant): Moved to utilities class. + (invoke): Create variants peer on Java side before calling + callMethod/callStaticMethod. + (setProperty): Create variant peers on Java side before calling + setField/setStaticField. + (construct): Create variant peers on Java side before calling the + constructor. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Misc. changes as + needed by updates to IcedTeaScriptablePluginObject.cc. + * plugin/icedteanp/java/netscape/javascript/JSObject.java: Added a new + string constructor. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java + (getCostAndCastedObject): Add support for array type parameters. + (isNum): Return true for boolean (booleans are convertible to int as per + spec). + (getNum): Remove case for char/Character. + (getArrayAsString): New function. For debug only. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (handleMessage): Add support for getValue. Wire in array creaion support. + Support a '[System]' source for privileged calls. + (isInt): New function. Returns if given object is an integer/convertible to + an int. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (setMember): Send primitive/boxable values as literals. + (setSlot): Same. + (getWindow): Fortify condition for wait for panel initialization. + (parse): Handle nested objected tags, don't allow parameter value + overwrite. + 2009-11-27 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java diff -r eb51df7af234 -r 0ebce150b496 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Dec 02 10:40:55 2009 +0100 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Dec 02 20:24:30 2009 -0500 @@ -36,6 +36,8 @@ obligated to do so. If you do not wish obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ +#include + #include "IcedTeaJavaRequestProcessor.h" #include "IcedTeaScriptablePluginObject.h" @@ -68,7 +70,7 @@ JavaRequestProcessor::newMessageOnBus(co // Gather the results // Let's get errors out of the way first - if (message_parts->at(4) == "Error") + if (message_parts->at(4).find("Error") == 0) { for (int i=5; i < message_parts->size(); i++) { @@ -111,7 +113,8 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "GetStaticFieldID") || (message_parts->at(4) == "GetFieldID") || (message_parts->at(4) == "GetJavaObject") || - (message_parts->at(4) == "IsInstanceOf")) + (message_parts->at(4) == "IsInstanceOf") || + (message_parts->at(4) == "NewArray")) { result->return_identifier = atoi(message_parts->at(5).c_str()); result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access @@ -124,6 +127,7 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "CallStaticMethod") || (message_parts->at(4) == "GetField") || (message_parts->at(4) == "GetStaticField") || + (message_parts->at(4) == "GetValue") || (message_parts->at(4) == "GetObjectArrayElement")) { @@ -131,6 +135,8 @@ JavaRequestProcessor::newMessageOnBus(co { // literal returns don't have a corresponding jni id result->return_identifier = 0; + result->return_string->append(message_parts->at(5)); + result->return_string->append(" "); result->return_string->append(message_parts->at(6)); } else @@ -300,6 +306,33 @@ JavaRequestProcessor::getToStringValue(s } /** + * Given an object id, fetches the value of that ID from Java + * + * @param object_id The ID of the object + * @return A JavaResultData struct containing the result of the request + */ + +JavaResultData* +JavaRequestProcessor::getValue(std::string object_id) +{ + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetValue "); // get it in UTF8 + message.append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +/** * Given a string id, fetches the actual string from Java side * * @param string_id The ID of the string @@ -475,12 +508,9 @@ JavaResultData* JavaResultData* JavaRequestProcessor::setSlot(std::string objectID, std::string index, - NPVariant value) -{ - std::string id = std::string(); - std::string message = std::string(); - - createJavaObjectFromVariant(value, &id); + std::string value_id) +{ + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); @@ -492,7 +522,30 @@ JavaRequestProcessor::setSlot(std::strin message.append(" "); message.append(index); message.append(" "); - message.append(id); + message.append(value_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +JavaResultData* +JavaRequestProcessor::newArray(std::string array_class, + std::string length) +{ + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" NewArray "); + message.append(array_class); + message.append(" "); + message.append(length); postAndWaitForResponse(message); @@ -620,14 +673,11 @@ JavaRequestProcessor::set(std::string so std::string classID, std::string objectID, std::string fieldName, - NPVariant value) + std::string value_id) { JavaResultData* java_result; JavaRequestProcessor java_request = JavaRequestProcessor(); - std::string id = std::string(); - std::string message = std::string(); - - createJavaObjectFromVariant(value, &id); + std::string message = std::string(); java_result = java_request.getFieldID(classID, fieldName); @@ -649,7 +699,7 @@ JavaRequestProcessor::set(std::string so message.append(" "); message.append(java_result->return_string->c_str()); message.append(" "); - message.append(id); + message.append(value_id); postAndWaitForResponse(message); @@ -662,9 +712,9 @@ JavaRequestProcessor::setStaticField(std JavaRequestProcessor::setStaticField(std::string source, std::string classID, std::string fieldName, - NPVariant value) -{ - return set(source, true, classID, "", fieldName, value); + std::string value_id) +{ + return set(source, true, classID, "", fieldName, value_id); } JavaResultData* @@ -672,9 +722,9 @@ JavaRequestProcessor::setField(std::stri std::string classID, std::string objectID, std::string fieldName, - NPVariant value) -{ - return set(source, false, classID, objectID, fieldName, value); + std::string value_id) +{ + return set(source, false, classID, objectID, fieldName, value_id); } JavaResultData* @@ -754,7 +804,35 @@ JavaRequestProcessor::getStaticMethodID( } void -JavaRequestProcessor::createJavaObjectFromVariant(NPVariant variant, std::string* id) +getArrayTypeForJava(NPP instance, NPVariant element, std::string* type) +{ + + if (NPVARIANT_IS_BOOLEAN(element)) { + type->append("string"); + } else if (NPVARIANT_IS_INT32(element)) { + type->append("string"); + } else if (NPVARIANT_IS_DOUBLE(element)) { + type->append("string"); + } else if (NPVARIANT_IS_STRING(element)) { + type->append("string"); + } else if (NPVARIANT_IS_OBJECT(element)) { + + NPObject* first_element_obj = NPVARIANT_TO_OBJECT(element); + if (IcedTeaScriptableJavaPackageObject::is_valid_java_object(first_element_obj)) + { + std::string class_id = std::string(((IcedTeaScriptableJavaObject*) first_element_obj)->getClassID()); + type->append(class_id); + } else + { + type->append("jsobject"); + } + } else { + type->append("jsobject"); // Else it is a string + } +} + +void +createJavaObjectFromVariant(NPP instance, NPVariant variant, std::string* id) { JavaResultData* java_result; @@ -773,14 +851,12 @@ JavaRequestProcessor::createJavaObjectFr PLUGIN_DEBUG_1ARG("VOID %d\n", variant); id->append("0"); return; // no need to go further - } - else if (NPVARIANT_IS_NULL(variant)) + } else if (NPVARIANT_IS_NULL(variant)) { PLUGIN_DEBUG_1ARG("NULL\n", variant); id->append("0"); return; // no need to go further - } - else if (NPVARIANT_IS_BOOLEAN(variant)) + } else if (NPVARIANT_IS_BOOLEAN(variant)) { className = "java.lang.Boolean"; @@ -789,8 +865,7 @@ JavaRequestProcessor::createJavaObjectFr else stringArg = "false"; - } - else if (NPVARIANT_IS_INT32(variant)) + } else if (NPVARIANT_IS_INT32(variant)) { className = "java.lang.Integer"; @@ -798,8 +873,7 @@ JavaRequestProcessor::createJavaObjectFr sprintf(valueStr, "%d", NPVARIANT_TO_INT32(variant)); stringArg += valueStr; free(valueStr); - } - else if (NPVARIANT_IS_DOUBLE(variant)) + } else if (NPVARIANT_IS_DOUBLE(variant)) { className = "java.lang.Double"; @@ -807,8 +881,7 @@ JavaRequestProcessor::createJavaObjectFr sprintf(valueStr, "%f", NPVARIANT_TO_DOUBLE(variant)); stringArg += valueStr; free(valueStr); - } - else if (NPVARIANT_IS_STRING(variant)) + } else if (NPVARIANT_IS_STRING(variant)) { className = "java.lang.String"; #if MOZILLA_VERSION_COLLAPSED < 1090200 @@ -816,28 +889,174 @@ JavaRequestProcessor::createJavaObjectFr #else stringArg += NPVARIANT_TO_STRING(variant).UTF8Characters; #endif + } else if (NPVARIANT_IS_OBJECT(variant)) + { + + NPObject* obj = NPVARIANT_TO_OBJECT(variant); + if (IcedTeaScriptableJavaPackageObject::is_valid_java_object(obj)) + { + PLUGIN_DEBUG_0ARG("NPObject is a Java object\n"); + alreadyCreated = true; + } else + { + PLUGIN_DEBUG_0ARG("NPObject is not a Java object"); + NPIdentifier length_id = browser_functions.getstringidentifier("length"); + + // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though? + + // Is it an array? + if (IcedTeaPluginUtilities::isObjectJSArray(instance, obj)) { + PLUGIN_DEBUG_0ARG("NPObject is an array\n"); + + std::string array_id = std::string(); + std::string java_array_type = std::string(); + NPVariant length = NPVariant(); + browser_functions.getproperty(instance, obj, length_id, &length); + + std::string length_str = std::string(); + IcedTeaPluginUtilities::itoa(NPVARIANT_TO_INT32(length), &length_str); + + if (NPVARIANT_TO_INT32(length) > 0) + { + NPIdentifier id_0 = browser_functions.getintidentifier(0); + NPVariant first_element = NPVariant(); + browser_functions.getproperty(instance, obj, id_0, &first_element); + + // Check for multi-dim array + if (NPVARIANT_IS_OBJECT(first_element) && + IcedTeaPluginUtilities::isObjectJSArray(instance, NPVARIANT_TO_OBJECT(first_element))) { + + NPVariant first_nested_element = NPVariant(); + browser_functions.getproperty(instance, NPVARIANT_TO_OBJECT(first_element), id_0, &first_nested_element); + + getArrayTypeForJava(instance, first_nested_element, &java_array_type); + + length_str.append(" 0"); // secondary array is created on the fly + } else + { + getArrayTypeForJava(instance, first_element, &java_array_type); + } + } else + java_array_type.append("jsobject"); + + java_result = java_request.newArray(java_array_type, length_str); + + if (java_result->error_occurred) { + printf("Unable to create array\n"); + id->append("-1"); + return; + } + + id->append(*(java_result->return_string)); + + NPIdentifier index_id = NPIdentifier(); + for (int i=0; i < NPVARIANT_TO_INT32(length); i++) + { + NPVariant value = NPVariant(); + + index_id = browser_functions.getintidentifier(i); + browser_functions.getproperty(instance, obj, index_id, &value); + + std::string value_id = std::string(); + createJavaObjectFromVariant(instance, value, &value_id); + + if (value_id == "-1") { + printf("Unable to populate array\n"); + id->clear(); + id->append("-1"); + return; + } + + std::string value_str = std::string(); + IcedTeaPluginUtilities::itoa(i, &value_str); + java_result = java_request.setSlot(*id, value_str, value_id); + + } + + // Got here => no errors above. We're good to return! + return; + } else // Else it is not an array + { + + NPVariant* variant_copy = new NPVariant(); + OBJECT_TO_NPVARIANT(NPVARIANT_TO_OBJECT(variant), *variant_copy); + + className = "netscape.javascript.JSObject"; + IcedTeaPluginUtilities::JSIDToString(variant_copy, &stringArg); + browser_functions.retainobject(NPVARIANT_TO_OBJECT(variant)); + + std::string jsObjectClassID = std::string(); + std::string jsObjectConstructorID = std::string(); + std::vector args = std::vector(); + + java_result = java_request.findClass(0, "netscape.javascript.JSObject"); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get JSObject class id\n"); + id->clear(); + id->append("-1"); + return; + } + + jsObjectClassID.append(*(java_result->return_string)); + args.push_back("J"); + + java_result = java_request.getMethodID(jsObjectClassID, + browser_functions.getstringidentifier(""), + args); + + // the result we want is in result_string (assuming there was no error) From mvfranz at gmail.com Wed Dec 2 21:14:53 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 3 Dec 2009 00:14:53 -0500 Subject: IcedTea 1.12 On OS X Tiger PPC Message-ID: Hi, I have been able to get to a certain point building on OS X Tiger. I am getting the following errors. I am not sure if they are related to ppc or Tiger. /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'unsigned int atomic_add_int_nv(volatile unsigned int*, int)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:390: error: invalid conversion from 'volatile int32_t*' to 'int32_t*' /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:390: error: initializing argument 2 of 'int32_t OSAtomicAdd32Barrier(int32_t, int32_t*)' /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'void* atomic_add_ptr_nv(volatile void*, ssize_t)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:399: error: invalid conversion from 'volatile int32_t*' to 'int32_t*' /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:399: error: initializing argument 2 of 'int32_t OSAtomicAdd32Barrier(int32_t, int32_t*)' /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'unsigned int atomic_swap_uint(volatile unsigned int*, unsigned int)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:412: error: 'OSAtomicCompareAndSwapIntBarrier' was not declared in this scope /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'void* atomic_swap_ptr(volatile void*, void*)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:425: error: 'OSAtomicCompareAndSwapPtrBarrier' was not declared in this scope /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'unsigned int atomic_cas_uint(volatile unsigned int*, unsigned int, unsigned int)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:436: error: 'OSAtomicCompareAndSwapIntBarrier' was not declared in this scope /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'long unsigned int atomic_cas_ulong(volatile long unsigned int*, long unsigned int, long unsigned int)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:446: error: 'OSAtomicCompareAndSwapLongBarrier' was not declared in this scope /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'void* atomic_cas_ptr(volatile void*, void*, void*)': /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:455: error: 'OSAtomicCompareAndSwapPtrBarrier' was not declared in this scope Also, is there an easy way to force the bootstrap jdk to be compiled as Java 5? It seem to compile some of the classes as Java 7 and some based on BOOT_SOURCE_LANGUAGE_VERSION BOOT_TARGET_CLASS_VERSION. I had to define TARGET_CLASS_VERSION, SOURCE_LANGUAGE_VERSION and SOURCE_CLASS_VERSION to force the version to java 5. Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091203/7138a060/attachment.html From landonf at plausible.coop Wed Dec 2 21:56:08 2009 From: landonf at plausible.coop (Landon Fuller) Date: Wed, 2 Dec 2009 21:56:08 -0800 Subject: IcedTea 1.12 On OS X Tiger PPC In-Reply-To: References: Message-ID: <8052D142-CA16-4AF1-8B07-E5D0DA2059E8@plausible.coop> On Dec 2, 2009, at 9:14 PM, Michael Franz wrote: > Hi, > > I have been able to get to a certain point building on OS X Tiger. I am getting the following errors. I am not sure if they are related to ppc or Tiger. > /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp: In function 'unsigned int atomic_add_int_nv(volatile unsigned int*, int)': > /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:390: error: invalid conversion from 'volatile int32_t*' to 'int32_t*' > /Users/mfranz/developer/icedtea-1.12/openjdk-boot/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp:390: error: initializing argument 2 of 'int32_t OSAtomicAdd32Barrier(int32_t, int32_t*)' It looks like the prototypes changed between Tiger and Leopard: 10.4.11-ppc: http://www.opensource.apple.com/source/Libc/Libc-391.2.10/include/libkern/OSAtomic.h 10.5: http://www.opensource.apple.com/source/Libc/Libc-498.1.7/include/libkern/OSAtomic.h -landonf From gbenson at redhat.com Thu Dec 3 00:11:10 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 08:11:10 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> Message-ID: <20091203081110.GA3573@redhat.com> Andrew John Hughes wrote: > 2009/12/2 Mark Wielaard : > > I think everybody agrees that would be nice. It is more work and > > needs retesting the whole sound/midi setup again though. But if > > that is done then that seems a great option as next step. > > I really don't follow what's going on here. Are the sources in the > overlay directory now the same as in the OpenJDK6 tarball or not? They are identical: mambo:[icedtea6]$ pwd /home/gary/work/icedtea6 mambo:[icedtea6]$ hg id 0ebce150b496 tip mambo:[~]$ make distclean mambo:[~]$ ./configure mambo:[~]$ make patch mambo:[~]$ cp -a openjdk/jdk/src/share/classes/com/sun/media/sound sound.orig mambo:[~]$ make overlay mambo:[~]$ diff -ru sound.orig openjdk/jdk/src/share/classes/com/sun/media/sound mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: CHANGES.txt mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: LICENSE mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: README.txt I'll make the change... Cheers, Gary -- http://gbenson.net/ From ptisnovs at redhat.com Thu Dec 3 01:12:34 2009 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Thu, 03 Dec 2009 10:12:34 +0100 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <20091203081110.GA3573@redhat.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> <20091203081110.GA3573@redhat.com> Message-ID: <4B178102.3020008@redhat.com> Hi Gary, after you push all changes, please inform me. I'll run all required tests then. Thanks Pavel Gary Benson wrote: > Andrew John Hughes wrote: >> 2009/12/2 Mark Wielaard : >>> I think everybody agrees that would be nice. It is more work and >>> needs retesting the whole sound/midi setup again though. But if >>> that is done then that seems a great option as next step. >> I really don't follow what's going on here. Are the sources in the >> overlay directory now the same as in the OpenJDK6 tarball or not? > > They are identical: > > mambo:[icedtea6]$ pwd > /home/gary/work/icedtea6 > mambo:[icedtea6]$ hg id > 0ebce150b496 tip > mambo:[~]$ make distclean > mambo:[~]$ ./configure > mambo:[~]$ make patch > mambo:[~]$ cp -a openjdk/jdk/src/share/classes/com/sun/media/sound sound.orig > mambo:[~]$ make overlay > mambo:[~]$ diff -ru sound.orig openjdk/jdk/src/share/classes/com/sun/media/sound > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: CHANGES.txt > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: LICENSE > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: README.txt > > I'll make the change... > > Cheers, > Gary > From gbenson at icedtea.classpath.org Thu Dec 3 01:11:00 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 09:11:00 +0000 Subject: /hg/icedtea6: 2009-12-03 Gary Benson Message-ID: changeset 1d33b4733b4b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1d33b4733b4b author: Gary Benson date: Thu Dec 03 09:16:00 2009 +0000 2009-12-03 Gary Benson * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/: Removed. diffstat: 104 files changed, 5 insertions(+), 29276 deletions(-) ChangeLog | 5 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java | 131 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java | 1058 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java | 617 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatInputStream.java | 281 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizer.java | 128 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizerPropertyInfo.java | 76 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt | 313 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInfo.java | 109 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInstrument.java | 448 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSModulator.java | 351 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSRegion.java | 150 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSample.java | 122 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleLoop.java | 63 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleOptions.java | 80 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java | 1287 ---- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbankReader.java | 74 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/EmergencySoundbank.java | 2695 ---------- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/FFT.java | 748 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidDataException.java | 45 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidFormatException.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java | 120 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/LICENSE | 347 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractChannelMixer.java | 126 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractOscillator.java | 200 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBuffer.java | 329 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBufferWavetable.java | 281 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelChannelMixer.java | 50 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java | 135 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDestination.java | 117 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirectedPlayer.java | 36 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirector.java | 46 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelIdentifier.java | 169 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrument.java | 136 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrumentComparator.java | 52 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelMappedInstrument.java | 62 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillator.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillatorStream.java | 48 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPatch.java | 52 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPerformer.java | 143 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelSource.java | 109 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardDirector.java | 86 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardTransform.java | 139 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelTransform.java | 35 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelWavetable.java | 49 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/README.txt | 402 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidDataException.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidFormatException.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java | 332 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFWriter.java | 365 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2GlobalRegion.java | 33 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Instrument.java | 911 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2InstrumentRegion.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Layer.java | 78 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2LayerRegion.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Modulator.java | 97 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Region.java | 167 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Sample.java | 216 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java | 973 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2SoundbankReader.java | 73 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleInstrument.java | 196 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleSoundbank.java | 145 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAbstractResampler.java | 390 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java | 128 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java | 48 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java | 92 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java | 1576 ----- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannelProxy.java | 202 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java | 337 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftControl.java | 36 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftCubicResampler.java | 87 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftEnvelopeGenerator.java | 298 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java | 616 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java | 82 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java | 277 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLanczosResampler.java | 118 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java | 191 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler.java | 70 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler2.java | 108 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java | 130 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java | 1146 ---- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java | 214 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingClip.java | 539 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java | 522 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMainMixer.java | 259 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixer.java | 529 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixerProvider.java | 66 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingSourceDataLine.java | 519 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPerformer.java | 775 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPointResampler.java | 63 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProcess.java | 41 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProvider.java | 51 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReceiver.java | 88 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResampler.java | 35 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResamplerStreamer.java | 38 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java | 515 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftShortMessage.java | 58 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSincResampler.java | 139 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java | 1201 ---- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftTuning.java | 256 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java | 892 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java | 339 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileReader.java | 166 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java | 147 diffs (truncated from 29701 to 500 lines): diff -r 0ebce150b496 -r 1d33b4733b4b ChangeLog --- a/ChangeLog Wed Dec 02 20:24:30 2009 -0500 +++ b/ChangeLog Thu Dec 03 09:16:00 2009 +0000 @@ -1,3 +1,8 @@ 2009-12-02 Deepak Bhole + + * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/: + Removed. + 2009-12-02 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc diff -r 0ebce150b496 -r 1d33b4733b4b overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java Wed Dec 02 20:24:30 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* - * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ -package com.sun.media.sound; - -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import javax.sound.midi.InvalidMidiDataException; -import javax.sound.midi.Soundbank; -import javax.sound.midi.spi.SoundbankReader; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.UnsupportedAudioFileException; - -/** - * Soundbank reader that uses audio files as soundbanks. - * - * @author Karl Helgason - */ -public class AudioFileSoundbankReader extends SoundbankReader { - - public Soundbank getSoundbank(URL url) - throws InvalidMidiDataException, IOException { - try { - AudioInputStream ais = AudioSystem.getAudioInputStream(url); - Soundbank sbk = getSoundbank(ais); - ais.close(); - return sbk; - } catch (UnsupportedAudioFileException e) { - return null; - } catch (IOException e) { - return null; - } - } - - public Soundbank getSoundbank(InputStream stream) - throws InvalidMidiDataException, IOException { - stream.mark(512); - try { - AudioInputStream ais = AudioSystem.getAudioInputStream(stream); - Soundbank sbk = getSoundbank(ais); - if (sbk != null) - return sbk; - } catch (UnsupportedAudioFileException e) { - } catch (IOException e) { - } - stream.reset(); - return null; - } - - public Soundbank getSoundbank(AudioInputStream ais) - throws InvalidMidiDataException, IOException { - try { - byte[] buffer; - if (ais.getFrameLength() == -1) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] buff = new byte[1024 - - (1024 % ais.getFormat().getFrameSize())]; - int ret; - while ((ret = ais.read(buff)) != -1) { - baos.write(buff, 0, ret); - } - ais.close(); - buffer = baos.toByteArray(); - } else { - buffer = new byte[(int) (ais.getFrameLength() - * ais.getFormat().getFrameSize())]; - new DataInputStream(ais).readFully(buffer); - } - ModelByteBufferWavetable osc = new ModelByteBufferWavetable( - new ModelByteBuffer(buffer), ais.getFormat(), -4800); - ModelPerformer performer = new ModelPerformer(); - performer.getOscillators().add(osc); - - SimpleSoundbank sbk = new SimpleSoundbank(); - SimpleInstrument ins = new SimpleInstrument(); - ins.add(performer); - sbk.addInstrument(ins); - return sbk; - } catch (Exception e) { - return null; - } - } - - public Soundbank getSoundbank(File file) - throws InvalidMidiDataException, IOException { - try { - AudioInputStream ais = AudioSystem.getAudioInputStream(file); - ais.close(); - ModelByteBufferWavetable osc = new ModelByteBufferWavetable( - new ModelByteBuffer(file, 0, file.length()), -4800); - ModelPerformer performer = new ModelPerformer(); - performer.getOscillators().add(osc); - SimpleSoundbank sbk = new SimpleSoundbank(); - SimpleInstrument ins = new SimpleInstrument(); - ins.add(performer); - sbk.addInstrument(ins); - return sbk; - } catch (UnsupportedAudioFileException e1) { - return null; - } catch (IOException e) { - return null; - } - } -} diff -r 0ebce150b496 -r 1d33b4733b4b overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java --- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java Wed Dec 02 20:24:30 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1058 +0,0 @@ -/* - * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ -package com.sun.media.sound; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.DoubleBuffer; -import java.nio.FloatBuffer; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioFormat.Encoding; - -/** - * This class is used to convert between 8,16,24,32,32+ bit signed/unsigned - * big/litle endian fixed/floating point byte buffers and float buffers. - * - * @author Karl Helgason - */ -public abstract class AudioFloatConverter { - - public static final Encoding PCM_FLOAT = new Encoding("PCM_FLOAT"); - - /*************************************************************************** - * - * LSB Filter, used filter least significant byte in samples arrays. - * - * Is used filter out data in lsb byte when SampleSizeInBits is not - * dividable by 8. - * - **************************************************************************/ - - private static class AudioFloatLSBFilter extends AudioFloatConverter { - - private AudioFloatConverter converter; - - final private int offset; - - final private int stepsize; - - final private byte mask; - - private byte[] mask_buffer; - - public AudioFloatLSBFilter(AudioFloatConverter converter, - AudioFormat format) { - int bits = format.getSampleSizeInBits(); - boolean bigEndian = format.isBigEndian(); - this.converter = converter; - stepsize = (bits + 7) / 8; - offset = bigEndian ? (stepsize - 1) : 0; - int lsb_bits = bits % 8; - if (lsb_bits == 0) - mask = (byte) 0x00; - else if (lsb_bits == 1) - mask = (byte) 0x80; - else if (lsb_bits == 2) - mask = (byte) 0xC0; - else if (lsb_bits == 3) - mask = (byte) 0xE0; - else if (lsb_bits == 4) - mask = (byte) 0xF0; - else if (lsb_bits == 5) - mask = (byte) 0xF8; - else if (lsb_bits == 6) - mask = (byte) 0xFC; - else if (lsb_bits == 7) - mask = (byte) 0xFE; - else - mask = (byte) 0xFF; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - byte[] ret = converter.toByteArray(in_buff, in_offset, in_len, - out_buff, out_offset); - - int out_offset_end = in_len * stepsize; - for (int i = out_offset + offset; i < out_offset_end; i += stepsize) { - out_buff[i] = (byte) (out_buff[i] & mask); - } - - return ret; - } - - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - if (mask_buffer == null || mask_buffer.length < in_buff.length) - mask_buffer = new byte[in_buff.length]; - System.arraycopy(in_buff, 0, mask_buffer, 0, in_buff.length); - int in_offset_end = out_len * stepsize; - for (int i = in_offset + offset; i < in_offset_end; i += stepsize) { - mask_buffer[i] = (byte) (mask_buffer[i] & mask); - } - float[] ret = converter.toFloatArray(mask_buffer, in_offset, - out_buff, out_offset, out_len); - return ret; - } - - } - - /*************************************************************************** - * - * 64 bit float, little/big-endian - * - **************************************************************************/ - - // PCM 64 bit float, little-endian - private static class AudioFloatConversion64L extends AudioFloatConverter { - ByteBuffer bytebuffer = null; - - DoubleBuffer floatbuffer = null; - - double[] double_buff = null; - - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int in_len = out_len * 8; - if (bytebuffer == null || bytebuffer.capacity() < in_len) { - bytebuffer = ByteBuffer.allocate(in_len).order( - ByteOrder.LITTLE_ENDIAN); - floatbuffer = bytebuffer.asDoubleBuffer(); - } - bytebuffer.position(0); - floatbuffer.position(0); - bytebuffer.put(in_buff, in_offset, in_len); - if (double_buff == null - || double_buff.length < out_len + out_offset) - double_buff = new double[out_len + out_offset]; - floatbuffer.get(double_buff, out_offset, out_len); - int out_offset_end = out_offset + out_len; - for (int i = out_offset; i < out_offset_end; i++) { - out_buff[i] = (float) double_buff[i]; - } - return out_buff; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - int out_len = in_len * 8; - if (bytebuffer == null || bytebuffer.capacity() < out_len) { - bytebuffer = ByteBuffer.allocate(out_len).order( - ByteOrder.LITTLE_ENDIAN); - floatbuffer = bytebuffer.asDoubleBuffer(); - } - floatbuffer.position(0); - bytebuffer.position(0); - if (double_buff == null || double_buff.length < in_offset + in_len) - double_buff = new double[in_offset + in_len]; - int in_offset_end = in_offset + in_len; - for (int i = in_offset; i < in_offset_end; i++) { - double_buff[i] = in_buff[i]; - } - floatbuffer.put(double_buff, in_offset, in_len); - bytebuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - } - - // PCM 64 bit float, big-endian - private static class AudioFloatConversion64B extends AudioFloatConverter { - ByteBuffer bytebuffer = null; - - DoubleBuffer floatbuffer = null; - - double[] double_buff = null; - - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int in_len = out_len * 8; - if (bytebuffer == null || bytebuffer.capacity() < in_len) { - bytebuffer = ByteBuffer.allocate(in_len).order( - ByteOrder.BIG_ENDIAN); - floatbuffer = bytebuffer.asDoubleBuffer(); - } - bytebuffer.position(0); - floatbuffer.position(0); - bytebuffer.put(in_buff, in_offset, in_len); - if (double_buff == null - || double_buff.length < out_len + out_offset) - double_buff = new double[out_len + out_offset]; - floatbuffer.get(double_buff, out_offset, out_len); - int out_offset_end = out_offset + out_len; - for (int i = out_offset; i < out_offset_end; i++) { - out_buff[i] = (float) double_buff[i]; - } - return out_buff; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - int out_len = in_len * 8; - if (bytebuffer == null || bytebuffer.capacity() < out_len) { - bytebuffer = ByteBuffer.allocate(out_len).order( - ByteOrder.BIG_ENDIAN); - floatbuffer = bytebuffer.asDoubleBuffer(); - } - floatbuffer.position(0); - bytebuffer.position(0); - if (double_buff == null || double_buff.length < in_offset + in_len) - double_buff = new double[in_offset + in_len]; - int in_offset_end = in_offset + in_len; - for (int i = in_offset; i < in_offset_end; i++) { - double_buff[i] = in_buff[i]; - } - floatbuffer.put(double_buff, in_offset, in_len); - bytebuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - } - - /*************************************************************************** - * - * 32 bit float, little/big-endian - * - **************************************************************************/ - - // PCM 32 bit float, little-endian - private static class AudioFloatConversion32L extends AudioFloatConverter { - ByteBuffer bytebuffer = null; - - FloatBuffer floatbuffer = null; - - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int in_len = out_len * 4; - if (bytebuffer == null || bytebuffer.capacity() < in_len) { - bytebuffer = ByteBuffer.allocate(in_len).order( - ByteOrder.LITTLE_ENDIAN); - floatbuffer = bytebuffer.asFloatBuffer(); - } - bytebuffer.position(0); - floatbuffer.position(0); - bytebuffer.put(in_buff, in_offset, in_len); - floatbuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - int out_len = in_len * 4; - if (bytebuffer == null || bytebuffer.capacity() < out_len) { - bytebuffer = ByteBuffer.allocate(out_len).order( - ByteOrder.LITTLE_ENDIAN); - floatbuffer = bytebuffer.asFloatBuffer(); - } - floatbuffer.position(0); - bytebuffer.position(0); - floatbuffer.put(in_buff, in_offset, in_len); - bytebuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - } - - // PCM 32 bit float, big-endian - private static class AudioFloatConversion32B extends AudioFloatConverter { - ByteBuffer bytebuffer = null; - - FloatBuffer floatbuffer = null; - - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int in_len = out_len * 4; - if (bytebuffer == null || bytebuffer.capacity() < in_len) { - bytebuffer = ByteBuffer.allocate(in_len).order( - ByteOrder.BIG_ENDIAN); - floatbuffer = bytebuffer.asFloatBuffer(); - } - bytebuffer.position(0); - floatbuffer.position(0); - bytebuffer.put(in_buff, in_offset, in_len); - floatbuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - int out_len = in_len * 4; - if (bytebuffer == null || bytebuffer.capacity() < out_len) { - bytebuffer = ByteBuffer.allocate(out_len).order( - ByteOrder.BIG_ENDIAN); - floatbuffer = bytebuffer.asFloatBuffer(); - } - floatbuffer.position(0); - bytebuffer.position(0); - floatbuffer.put(in_buff, in_offset, in_len); - bytebuffer.get(out_buff, out_offset, out_len); - return out_buff; - } - } - - /*************************************************************************** - * - * 8 bit signed/unsigned - * - **************************************************************************/ - - // PCM 8 bit, signed - private static class AudioFloatConversion8S extends AudioFloatConverter { - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int ix = in_offset; - int ox = out_offset; - for (int i = 0; i < out_len; i++) - out_buff[ox++] = in_buff[ix++] * (1.0f / 127.0f); - return out_buff; - } - - public byte[] toByteArray(float[] in_buff, int in_offset, int in_len, - byte[] out_buff, int out_offset) { - int ix = in_offset; - int ox = out_offset; - for (int i = 0; i < in_len; i++) - out_buff[ox++] = (byte) (in_buff[ix++] * 127.0f); - return out_buff; - } - } - - // PCM 8 bit, unsigned - private static class AudioFloatConversion8U extends AudioFloatConverter { - public float[] toFloatArray(byte[] in_buff, int in_offset, - float[] out_buff, int out_offset, int out_len) { - int ix = in_offset; - int ox = out_offset; - for (int i = 0; i < out_len; i++) - out_buff[ox++] = ((in_buff[ix++] & 0xFF) - 127) - * (1.0f / 127.0f); - return out_buff; From gbenson at redhat.com Thu Dec 3 01:26:03 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 09:26:03 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <4B178102.3020008@redhat.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> <20091203081110.GA3573@redhat.com> <4B178102.3020008@redhat.com> Message-ID: <20091203092603.GB3573@redhat.com> Hi Pavel, It's pushed. It shouldn't need a retest though, the code is *identical*, not even whitespace changes. Cheers, Gary Pavel Tisnovsky wrote: > Hi Gary, > > after you push all changes, please inform me. I'll run all required > tests then. > > Thanks > Pavel > > Gary Benson wrote: > > Andrew John Hughes wrote: > > > 2009/12/2 Mark Wielaard : > > > > I think everybody agrees that would be nice. It is more work and > > > > needs retesting the whole sound/midi setup again though. But if > > > > that is done then that seems a great option as next step. > > > > > > I really don't follow what's going on here. Are the sources in the > > > overlay directory now the same as in the OpenJDK6 tarball or not? > > > > They are identical: > > > > mambo:[icedtea6]$ pwd > > /home/gary/work/icedtea6 > > mambo:[icedtea6]$ hg id > > 0ebce150b496 tip > > mambo:[~]$ make distclean > > mambo:[~]$ ./configure > > mambo:[~]$ make patch > > mambo:[~]$ cp -a openjdk/jdk/src/share/classes/com/sun/media/sound sound.orig > > mambo:[~]$ make overlay > > mambo:[~]$ diff -ru sound.orig openjdk/jdk/src/share/classes/com/sun/media/sound > > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: CHANGES.txt > > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: LICENSE > > mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: README.txt > > > > I'll make the change... > > > > Cheers, > > Gary -- http://gbenson.net/ From gnu_andrew at member.fsf.org Thu Dec 3 01:50:55 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 3 Dec 2009 09:50:55 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <20091203092603.GB3573@redhat.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> <20091203081110.GA3573@redhat.com> <4B178102.3020008@redhat.com> <20091203092603.GB3573@redhat.com> Message-ID: <17c6771e0912030150p12d58caufe61bdc6c2542a4@mail.gmail.com> 2009/12/3 Gary Benson : > Hi Pavel, > > It's pushed. ?It shouldn't need a retest though, the code is > *identical*, not even whitespace changes. > > Cheers, > Gary > Thanks Gary. I was about to do the same check this morning. That definitely clears things up! > Pavel Tisnovsky wrote: >> Hi Gary, >> >> after you push all changes, please inform me. I'll run all required >> tests then. >> >> Thanks >> Pavel >> >> Gary Benson wrote: >> > Andrew John Hughes wrote: >> > > 2009/12/2 Mark Wielaard : >> > > > I think everybody agrees that would be nice. It is more work and >> > > > needs retesting the whole sound/midi setup again though. But if >> > > > that is done then that seems a great option as next step. >> > > >> > > I really don't follow what's going on here. ?Are the sources in the >> > > overlay directory now the same as in the OpenJDK6 tarball or not? >> > >> > They are identical: >> > >> > ? mambo:[icedtea6]$ pwd >> > ? /home/gary/work/icedtea6 >> > ? mambo:[icedtea6]$ hg id >> > ? 0ebce150b496 tip >> > ? mambo:[~]$ make distclean >> > ? mambo:[~]$ ./configure >> > ? mambo:[~]$ make patch >> > ? mambo:[~]$ cp -a openjdk/jdk/src/share/classes/com/sun/media/sound sound.orig >> > ? mambo:[~]$ make overlay >> > ? mambo:[~]$ diff -ru sound.orig openjdk/jdk/src/share/classes/com/sun/media/sound >> > ? mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: CHANGES.txt >> > ? mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: LICENSE >> > ? mambo:[~]$ Only in openjdk/jdk/src/share/classes/com/sun/media/sound: README.txt >> > >> > I'll make the change... >> > >> > Cheers, >> > Gary > > -- > http://gbenson.net/ > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Thu Dec 3 02:16:22 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 3 Dec 2009 10:16:22 +0000 Subject: IcedTea 1.12 On OS X Tiger PPC In-Reply-To: References: Message-ID: <17c6771e0912030216w37dbe147l2deadc2066fc4401@mail.gmail.com> > > Also, is there an easy way to force the bootstrap jdk to be compiled as Java > 5?? It seem to compile some of the classes as Java 7 and some based on > BOOT_SOURCE_LANGUAGE_VERSION BOOT_TARGET_CLASS_VERSION.? I had to define > TARGET_CLASS_VERSION, SOURCE_LANGUAGE_VERSION and > SOURCE_CLASS_VERSION to force the version to java 5. > > Michael > > > > > Bootstrap classes are compiled to 6 and others to 7. 5 is not supported as a bootstrap JDK for 7. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mvfranz at gmail.com Thu Dec 3 04:13:59 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 3 Dec 2009 07:13:59 -0500 Subject: IcedTea 1.12 On OS X Tiger PPC In-Reply-To: <17c6771e0912030216w37dbe147l2deadc2066fc4401@mail.gmail.com> References: <17c6771e0912030216w37dbe147l2deadc2066fc4401@mail.gmail.com> Message-ID: On Thu, Dec 3, 2009 at 5:16 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > > > > Also, is there an easy way to force the bootstrap jdk to be compiled as > Java > > 5? It seem to compile some of the classes as Java 7 and some based on > > BOOT_SOURCE_LANGUAGE_VERSION BOOT_TARGET_CLASS_VERSION. I had to define > > TARGET_CLASS_VERSION, SOURCE_LANGUAGE_VERSION and > > SOURCE_CLASS_VERSION to force the version to java 5. > > > > Michael > > > > Bootstrap classes are compiled to 6 and others to 7. 5 is not > supported as a bootstrap JDK for 7. > Is gcj equivalent to 6, or does it not care about the class version? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091203/3e90651f/attachment.html From gbenson at icedtea.classpath.org Thu Dec 3 05:44:47 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 13:44:47 +0000 Subject: /hg/icedtea6: 2009-12-03 Gary Benson Message-ID: changeset 8c38c97e3ce8 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8c38c97e3ce8 author: Gary Benson date: Thu Dec 03 13:49:45 2009 +0000 2009-12-03 Gary Benson * patches/icedtea-bytecodeInterpreter.patch: Removed. * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. * HACKING: Document the above. diffstat: 4 files changed, 7 insertions(+), 14 deletions(-) ChangeLog | 6 ++++++ HACKING | 3 +-- Makefile.am | 1 - patches/icedtea-bytecodeInterpreter.patch | 11 ----------- diffs (56 lines): diff -r 1d33b4733b4b -r 8c38c97e3ce8 ChangeLog --- a/ChangeLog Thu Dec 03 09:16:00 2009 +0000 +++ b/ChangeLog Thu Dec 03 13:49:45 2009 +0000 @@ -1,3 +1,9 @@ 2009-12-03 Gary Benson + + * patches/icedtea-bytecodeInterpreter.patch: Removed. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + 2009-12-03 Gary Benson * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/: diff -r 1d33b4733b4b -r 8c38c97e3ce8 HACKING --- a/HACKING Thu Dec 03 09:16:00 2009 +0000 +++ b/HACKING Thu Dec 03 13:49:45 2009 +0000 @@ -99,8 +99,6 @@ The following patches are currently appl * icedtea-cacao.patch: For the 'java' command, create new thread depending on the current VM. * icedtea-cacao-no-mmap-first-page.patch: Don't mmap the first memory page. * cacao/no-strict-aliasing.patch: Turn off strict aliasing which causes an issue with the verifier when building with GCC 4.4 (cacao PR129). - -* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. * icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. * icedtea-signature-iterator.patch: Add zero-specific signature handling. * icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. @@ -177,3 +175,4 @@ changes to the OpenJDK code base and/or * icedtea-core-zero-build.patch: Not required with HS14. * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485); not required with HS14. * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. Not required with HS14. +* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. Not required with HS14. diff -r 1d33b4733b4b -r 8c38c97e3ce8 Makefile.am --- a/Makefile.am Thu Dec 03 09:16:00 2009 +0000 +++ b/Makefile.am Thu Dec 03 13:49:45 2009 +0000 @@ -516,7 +516,6 @@ ICEDTEA_FSG_PATCHES = ICEDTEA_PATCHES = \ patches/icedtea-notice-safepoints.patch \ - patches/icedtea-bytecodeInterpreter.patch \ patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ patches/icedtea-zero.patch \ diff -r 1d33b4733b4b -r 8c38c97e3ce8 patches/icedtea-bytecodeInterpreter.patch --- a/patches/icedtea-bytecodeInterpreter.patch Thu Dec 03 09:16:00 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; From gbenson at icedtea.classpath.org Thu Dec 3 05:48:29 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 13:48:29 +0000 Subject: /hg/icedtea: 2009-12-03 Gary Benson Message-ID: changeset 21376f9eed89 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=21376f9eed89 author: Gary Benson date: Thu Dec 03 13:53:28 2009 +0000 2009-12-03 Gary Benson * patches/hotspot/icedtea-bytecodeInterpreter.patch: Removed. * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. * HACKING: Document the above. diffstat: 4 files changed, 7 insertions(+), 13 deletions(-) ChangeLog | 6 ++++++ HACKING | 2 +- Makefile.am | 1 - patches/hotspot/default/icedtea-bytecodeInterpreter.patch | 11 ----------- diffs (55 lines): diff -r 8bd2e4e68af1 -r 21376f9eed89 ChangeLog --- a/ChangeLog Wed Dec 02 13:25:56 2009 +0000 +++ b/ChangeLog Thu Dec 03 13:53:28 2009 +0000 @@ -1,3 +1,9 @@ 2009-12-02 Andrew John Hughes + + * patches/hotspot/icedtea-bytecodeInterpreter.patch: Removed. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + 2009-12-02 Andrew John Hughes * Makefile.am: diff -r 8bd2e4e68af1 -r 21376f9eed89 HACKING --- a/HACKING Wed Dec 02 13:25:56 2009 +0000 +++ b/HACKING Thu Dec 03 13:53:28 2009 +0000 @@ -97,7 +97,6 @@ The following patches are only applied t * icedtea-timerqueue.patch: Fix setting of running variable (PR87/S6623943). * icedtea-version.patch: Fix (langtools) ant build to honor fcs MILESTONE setting (S6778493). * icedtea-io_util-overflow.patch: Replace some code to correctly handle overflows. (S6788196) -* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. * icedtea-hotspot7-build-fixes.patch: Remove KERNEL #ifdef. * icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. * icedtea-signature-iterator.patch: Add zero-specific signature handling. @@ -198,3 +197,4 @@ XSL file (S6707485): Included upstream i diff -ruNb openjdk{6,}/hotspot/src/os/linux >> icedtea-hotspot-6bXX-7bYY.patch * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485). * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. +* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. diff -r 8bd2e4e68af1 -r 21376f9eed89 Makefile.am --- a/Makefile.am Wed Dec 02 13:25:56 2009 +0000 +++ b/Makefile.am Thu Dec 03 13:53:28 2009 +0000 @@ -291,7 +291,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-samejvm-safe.patch \ patches/icedtea-pr261.patch \ patches/icedtea-doc-headers.patch \ - patches/hotspot/$(HSBUILD)/icedtea-bytecodeInterpreter.patch \ patches/icedtea-test-atomic-operations.patch \ patches/icedtea-ia64-bugfix.patch \ patches/hotspot/$(HSBUILD)/icedtea-parisc-opt.patch \ diff -r 8bd2e4e68af1 -r 21376f9eed89 patches/hotspot/default/icedtea-bytecodeInterpreter.patch --- a/patches/hotspot/default/icedtea-bytecodeInterpreter.patch Wed Dec 02 13:25:56 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; From mark at klomp.org Thu Dec 3 06:59:15 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 03 Dec 2009 15:59:15 +0100 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> Message-ID: <1259852355.2368.1.camel@hermans.wildebeest.org> Hi Andrew, On Wed, 2009-12-02 at 19:57 +0000, Andrew John Hughes wrote: > I really don't follow what's going on here. Are the sources in the > overlay directory now the same as in the OpenJDK6 tarball or not? So that is one of the things you would have to check. The overlay is the upstream Gervil code, plus some of our local fixes (now hopefully all integrated), plus some of the backports Pavel did from the openjdk6 repository. For a more detailed analysis on how to migrate see my email to Gary from a few days back on this list. Cheers, Mark From gnu_andrew at member.fsf.org Thu Dec 3 07:08:43 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 3 Dec 2009 15:08:43 +0000 Subject: Patch for IcedTea6 - Gervill overlay In-Reply-To: <1259852355.2368.1.camel@hermans.wildebeest.org> References: <4B1548BA.6040906@redhat.com> <1259697327.6590.64.camel@springer.wildebeest.org> <17c6771e0912020952t28f3612dq3cc03348ed5203d5@mail.gmail.com> <1259780809.2690.17.camel@hermans.wildebeest.org> <17c6771e0912021157h328d4b0fy5ac804ac5ea6a5f9@mail.gmail.com> <1259852355.2368.1.camel@hermans.wildebeest.org> Message-ID: <17c6771e0912030708i62061f5ew12327de66a8e640f@mail.gmail.com> 2009/12/3 Mark Wielaard : > Hi Andrew, > > On Wed, 2009-12-02 at 19:57 +0000, Andrew John Hughes wrote: >> I really don't follow what's going on here. ?Are the sources in the >> overlay directory now the same as in the OpenJDK6 tarball or not? > > So that is one of the things you would have to check. > The overlay is the upstream Gervil code, plus some of our local fixes > (now hopefully all integrated), plus some of the backports Pavel did > from the openjdk6 repository. > > For a more detailed analysis on how to migrate see my email to Gary from > a few days back on this list. > > Cheers, > > Mark > > Gary checked and the two were identical. So the overlay has been removed. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Thu Dec 3 07:30:57 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 15:30:57 +0000 Subject: Remove dead patch Message-ID: <20091203153057.GD3573@redhat.com> Hi all, The commit I just made to IcedTea6 and 7 removes a dead patch that was no longer necessary. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 1d33b4733b4b -r 8c38c97e3ce8 ChangeLog --- a/ChangeLog Thu Dec 03 09:16:00 2009 +0000 +++ b/ChangeLog Thu Dec 03 13:49:45 2009 +0000 @@ -1,3 +1,9 @@ +2009-12-03 Gary Benson + + * patches/icedtea-bytecodeInterpreter.patch: Removed. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + 2009-12-03 Gary Benson * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/: diff -r 1d33b4733b4b -r 8c38c97e3ce8 HACKING --- a/HACKING Thu Dec 03 09:16:00 2009 +0000 +++ b/HACKING Thu Dec 03 13:49:45 2009 +0000 @@ -99,8 +99,6 @@ * icedtea-cacao.patch: For the 'java' command, create new thread depending on the current VM. * icedtea-cacao-no-mmap-first-page.patch: Don't mmap the first memory page. * cacao/no-strict-aliasing.patch: Turn off strict aliasing which causes an issue with the verifier when building with GCC 4.4 (cacao PR129). - -* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. * icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. * icedtea-signature-iterator.patch: Add zero-specific signature handling. * icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. @@ -177,3 +175,4 @@ * icedtea-core-zero-build.patch: Not required with HS14. * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485); not required with HS14. * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. Not required with HS14. +* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. Not required with HS14. diff -r 1d33b4733b4b -r 8c38c97e3ce8 Makefile.am --- a/Makefile.am Thu Dec 03 09:16:00 2009 +0000 +++ b/Makefile.am Thu Dec 03 13:49:45 2009 +0000 @@ -516,7 +516,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-notice-safepoints.patch \ - patches/icedtea-bytecodeInterpreter.patch \ patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ patches/icedtea-zero.patch \ diff -r 1d33b4733b4b -r 8c38c97e3ce8 patches/icedtea-bytecodeInterpreter.patch --- a/patches/icedtea-bytecodeInterpreter.patch Thu Dec 03 09:16:00 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; From gbenson at icedtea.classpath.org Thu Dec 3 07:53:51 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 15:53:51 +0000 Subject: /hg/icedtea6: 2009-12-03 Gary Benson Message-ID: changeset bc6d4b57cacf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=bc6d4b57cacf author: Gary Benson date: Thu Dec 03 15:58:48 2009 +0000 2009-12-03 Gary Benson * patches/icedtea-core-build.patch: Remove a very old workaround. diffstat: 2 files changed, 4 insertions(+), 35 deletions(-) ChangeLog | 4 ++++ patches/icedtea-core-build.patch | 35 ----------------------------------- diffs (53 lines): diff -r 8c38c97e3ce8 -r bc6d4b57cacf ChangeLog --- a/ChangeLog Thu Dec 03 13:49:45 2009 +0000 +++ b/ChangeLog Thu Dec 03 15:58:48 2009 +0000 @@ -1,3 +1,7 @@ 2009-12-03 Gary Benson + + * patches/icedtea-core-build.patch: Remove a very old workaround. + 2009-12-03 Gary Benson * patches/icedtea-bytecodeInterpreter.patch: Removed. diff -r 8c38c97e3ce8 -r bc6d4b57cacf patches/icedtea-core-build.patch --- a/patches/icedtea-core-build.patch Thu Dec 03 13:49:45 2009 +0000 +++ b/patches/icedtea-core-build.patch Thu Dec 03 15:58:48 2009 +0000 @@ -44,38 +44,3 @@ diff -ru openjdk.orig/jdk/make/java/redi # NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows -diff -ru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2007-11-08 11:35:35.000000000 +0000 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2007-11-08 11:36:15.000000000 +0000 -@@ -258,7 +258,12 @@ endif - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(LIBDIR)/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -ljava $(JVMLIB) - -diff -ru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk Tue Feb 05 15:52:33 2008 +0000 -+++ openjdk/corba/make/common/Defs-linux.gmk Mon Feb 11 10:01:46 2008 +0000 -@@ -250,7 +254,12 @@ endif - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(BOOTDIR)/jre/lib/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -ljava $(JVMLIB) - - From gbenson at redhat.com Thu Dec 3 08:06:00 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 16:06:00 +0000 Subject: Remove ancient workaround Message-ID: <20091203160600.GA9977@redhat.com> Hi all, This commit removes a workaround for building against versions of Zero from April 2008 and earlier (or against the PowerPC interpreter -- remember that?) Please don't anybody tell me they have a build that old they need to support... Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 8c38c97e3ce8 -r bc6d4b57cacf ChangeLog --- a/ChangeLog Thu Dec 03 13:49:45 2009 +0000 +++ b/ChangeLog Thu Dec 03 15:58:48 2009 +0000 @@ -1,3 +1,7 @@ +2009-12-03 Gary Benson + + * patches/icedtea-core-build.patch: Remove a very old workaround. + 2009-12-03 Gary Benson * patches/icedtea-bytecodeInterpreter.patch: Removed. diff -r 8c38c97e3ce8 -r bc6d4b57cacf patches/icedtea-core-build.patch --- a/patches/icedtea-core-build.patch Thu Dec 03 13:49:45 2009 +0000 +++ b/patches/icedtea-core-build.patch Thu Dec 03 15:58:48 2009 +0000 @@ -44,38 +44,3 @@ # NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows -diff -ru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2007-11-08 11:35:35.000000000 +0000 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2007-11-08 11:36:15.000000000 +0000 -@@ -258,7 +258,12 @@ endif - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(LIBDIR)/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -ljava $(JVMLIB) - -diff -ru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk Tue Feb 05 15:52:33 2008 +0000 -+++ openjdk/corba/make/common/Defs-linux.gmk Mon Feb 11 10:01:46 2008 +0000 -@@ -250,7 +254,12 @@ endif - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(BOOTDIR)/jre/lib/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -ljava $(JVMLIB) - - From mwong at redhat.com Thu Dec 3 08:12:40 2009 From: mwong at redhat.com (Man Wong) Date: Thu, 3 Dec 2009 11:12:40 -0500 (EST) Subject: Patch for review: Enabling Netx Desktop Element In-Reply-To: <928452592.917541259856602239.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <1882085982.917661259856760397.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> ----- "Deepak Bhole" wrote: > * Man Wong [2009-12-01 17:15]: > > This patch fixes the 2 problems (shortcut not using system preferred > javaws and jnlp file in cache) from the previous fixme. The fix allows > netx desktop element to be enabled. Furthermore, shortcut tag is now > no longer required as in the jnlp developers guide. Lastly, it now > checks for updates and updates the file in the cache accordingly. > > > > Changelog: > > 2009-12-01 Man Lung Wong > > > > * rt/net/sourceforge/jnlp/JNLPFile.java > > (JNLPFILE): Download the jnlp file from the webspace it > originated, if > > it exists. > > * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > > (initialize): Enable desktop element and revise the list of > fixme. > > (addMenuAndDesktopEntries): No longer errors out when > shortcut tag not > > specified. > > * rt/net/sourceforge/jnlp/runtime/Boot.java > > (getFile): Launches the original jnlp file (i.e. if the > file was > > downloaded from http://icedtea.classpath.org, then it will > launch the > > one from http://icedtea.classpath.org). > > * rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > (getContentsAsReader): Shortcut uses jnlp file in cache and > launches > > with system preferred javaws. > > > > Any comments? > > > > Please see comments below: > > > Thanks, > > Man Lung Wong > > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/JNLPFile.java > > --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Nov 27 11:17:31 2009 > -0500 > > +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Dec 01 15:05:42 2009 > -0500 > > @@ -173,6 +173,14 @@ > > public JNLPFile(URL location, Version version, boolean strict, > UpdatePolicy policy) throws IOException, ParseException { > > Node root = Parser.getRootNode(openURL(location, version, > policy)); > > parse(root, strict, location); > > + > > + //Downloads the original jnlp file into the cache if > possible > > + //(i.e. If the jnlp file being launched exist locally, but > it > > + //originated from a website, then download the one from the > website > > + //into the cache). > > + if (sourceLocation != null && location.getProtocol() == > "file") { > > + openURL(sourceLocation, version, policy); > > + } > > > > this.fileLocation = location; > > > > What is the difference between sourceLocation and location? In the if > condition, one is being checked for notnull, and another is being > checked for protocol. Is this expected? > It is expected, because sourceLocation != null checks if the jnlp file points to another file (which is the original file), while location.getProtocol() == "file" checks if the file being passed in as an argument is a local file (if it is not a local meaning it is from a webspace then it would have been downloaded into the cache by the previous openURL call). > > > > diff -r d9377bd6e521 > rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 27 > 11:17:31 2009 -0500 > > +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Dec 01 > 15:05:42 2009 -0500 > > @@ -73,6 +73,7 @@ > > > > String pathToJavaws = System.getProperty("java.home") + > File.separator + "bin" > > + File.separator + "javaws"; > > + File cacheFile = > CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > > > > String fileContents = "[Desktop Entry]\n"; > > fileContents += "Version=1.0\n"; > > @@ -89,7 +90,9 @@ > > if (file.getInformation().getVendor() != null) { > > fileContents += "Vendor=" + > file.getInformation().getVendor() + "\n"; > > } > > - fileContents += "Exec=" + pathToJavaws + " \"" + > file.getSourceLocation() + "\"\n"; > > + > > + //Shortcut executes the jnlp from cache and system > preferred java.. > > + fileContents += "Exec=" + "javaws" + " " + > cacheFile.getAbsolutePath() + "\n"; > > > > Are you sure the extra quotes (\"'s) should be removed? What if the > file > name has spaces, would it still work? > Good catch! Even though, file names with a space cannot be launched. However, it is a problem that should/will be addressed. > Cheers, > Deepak Thanks, Man Lung Wong From gbenson at icedtea.classpath.org Thu Dec 3 08:34:30 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 16:34:30 +0000 Subject: /hg/icedtea: 2009-12-03 Gary Benson Message-ID: changeset 2deccfc8b64f in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2deccfc8b64f author: Gary Benson date: Thu Dec 03 16:39:28 2009 +0000 2009-12-03 Gary Benson * patches/icedtea-core-build.patch: Removed. * patches/icedtea-zero-build.patch: Likewise. * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. * HACKING: Document the above. diffstat: 5 files changed, 9 insertions(+), 53 deletions(-) ChangeLog | 7 +++++++ HACKING | 4 ++-- Makefile.am | 2 -- patches/icedtea-core-build.patch | 34 ---------------------------------- patches/icedtea-zero-build.patch | 15 --------------- diffs (108 lines): diff -r 21376f9eed89 -r 2deccfc8b64f ChangeLog --- a/ChangeLog Thu Dec 03 13:53:28 2009 +0000 +++ b/ChangeLog Thu Dec 03 16:39:28 2009 +0000 @@ -1,3 +1,10 @@ 2009-12-03 Gary Benson + + * patches/icedtea-core-build.patch: Removed. + * patches/icedtea-zero-build.patch: Likewise. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + 2009-12-03 Gary Benson * patches/hotspot/icedtea-bytecodeInterpreter.patch: Removed. diff -r 21376f9eed89 -r 2deccfc8b64f HACKING --- a/HACKING Thu Dec 03 13:53:28 2009 +0000 +++ b/HACKING Thu Dec 03 16:39:28 2009 +0000 @@ -15,7 +15,6 @@ The following patches are currently appl Partially fixed by addition of discardMark() in OpenJDK7. * icedtea-copy-plugs.patch: Add IcedTea's 'plugs' for Java WebStart support, add cast to getAnnotation and trapAuthenticationFailure variable to com.sun.jmx.snmp.SnmpPduTrap. -* icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) @@ -49,7 +48,6 @@ The following patches are currently appl * icedtea-use-system-tzdata.patch: Use timezone data from the system (PR70/S6593486). * icedtea-version.patch: Replace name and bug URL with IcedTea versions. * icedtea-webservices.patch: Add applet support. -* icedtea-zero-build.patch: Add support for the zero assembler build. * icedtea-shark-build.patch: Add support for building the Shark JIT. * icedtea-alpha-fixes.patch: Fix build issues on alpha-linux. * icedtea-arch.patch: Add support for additional architectures. @@ -198,3 +196,5 @@ XSL file (S6707485): Included upstream i * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485). * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. * icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. +* icedtea-core-build.patch: Add support for building IcedTea core VM. +* icedtea-zero-build.patch: Add support for the zero assembler build. diff -r 21376f9eed89 -r 2deccfc8b64f Makefile.am --- a/Makefile.am Thu Dec 03 13:53:28 2009 +0000 +++ b/Makefile.am Thu Dec 03 16:39:28 2009 +0000 @@ -254,8 +254,6 @@ ICEDTEA_PATCHES = \ patches/hotspot/$(HSBUILD)/icedtea-memory-limits.patch \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ - patches/icedtea-core-build.patch \ - patches/icedtea-zero-build.patch \ patches/icedtea-print-lsb-release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ diff -r 21376f9eed89 -r 2deccfc8b64f patches/icedtea-core-build.patch --- a/patches/icedtea-core-build.patch Thu Dec 03 13:53:28 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -diff -Nru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk 2009-07-15 17:35:01.000000000 +0100 -+++ openjdk/corba/make/common/Defs-linux.gmk 2009-07-23 17:41:01.000000000 +0100 -@@ -258,7 +258,12 @@ - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(BOOTDIR)/jre/lib/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -ljava $(JVMLIB) - -diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2009-07-15 17:35:01.000000000 +0100 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2009-07-23 17:41:01.000000000 +0100 -@@ -282,7 +282,12 @@ - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(LIBDIR)/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -ljava $(JVMLIB) - diff -r 21376f9eed89 -r 2deccfc8b64f patches/icedtea-zero-build.patch --- a/patches/icedtea-zero-build.patch Thu Dec 03 13:53:28 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -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 2009-04-14 18:31:09.000000000 +0100 -+++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-04-14 20:32:47.000000000 +0100 -@@ -66,6 +66,11 @@ - else - CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) - endif -+ ifdef ZERO_BUILD -+ # zero -+ REQUIRED_CC_VER = 3.2 -+ REQUIRED_GCC_VER = 3.2.* -+ endif - # Option used to create a shared library - SHARED_LIBRARY_FLAG = -shared -mimpure-text - SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) From gbenson at redhat.com Thu Dec 3 08:41:46 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 16:41:46 +0000 Subject: Remove more dead patches Message-ID: <20091203164146.GB9977@redhat.com> Hi all, This commit removes the ancient workaround I mentioned before from IcedTea7, and another dead patch that is not required to build Zero. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 21376f9eed89 -r 2deccfc8b64f ChangeLog --- a/ChangeLog Thu Dec 03 13:53:28 2009 +0000 +++ b/ChangeLog Thu Dec 03 16:39:28 2009 +0000 @@ -1,3 +1,10 @@ +2009-12-03 Gary Benson + + * patches/icedtea-core-build.patch: Removed. + * patches/icedtea-zero-build.patch: Likewise. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + 2009-12-03 Gary Benson * patches/hotspot/icedtea-bytecodeInterpreter.patch: Removed. diff -r 21376f9eed89 -r 2deccfc8b64f HACKING --- a/HACKING Thu Dec 03 13:53:28 2009 +0000 +++ b/HACKING Thu Dec 03 16:39:28 2009 +0000 @@ -15,7 +15,6 @@ Partially fixed by addition of discardMark() in OpenJDK7. * icedtea-copy-plugs.patch: Add IcedTea's 'plugs' for Java WebStart support, add cast to getAnnotation and trapAuthenticationFailure variable to com.sun.jmx.snmp.SnmpPduTrap. -* icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) @@ -49,7 +48,6 @@ * icedtea-use-system-tzdata.patch: Use timezone data from the system (PR70/S6593486). * icedtea-version.patch: Replace name and bug URL with IcedTea versions. * icedtea-webservices.patch: Add applet support. -* icedtea-zero-build.patch: Add support for the zero assembler build. * icedtea-shark-build.patch: Add support for building the Shark JIT. * icedtea-alpha-fixes.patch: Fix build issues on alpha-linux. * icedtea-arch.patch: Add support for additional architectures. @@ -198,3 +196,5 @@ * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485). * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. * icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. +* icedtea-core-build.patch: Add support for building IcedTea core VM. +* icedtea-zero-build.patch: Add support for the zero assembler build. diff -r 21376f9eed89 -r 2deccfc8b64f Makefile.am --- a/Makefile.am Thu Dec 03 13:53:28 2009 +0000 +++ b/Makefile.am Thu Dec 03 16:39:28 2009 +0000 @@ -254,8 +254,6 @@ patches/hotspot/$(HSBUILD)/icedtea-memory-limits.patch \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ - patches/icedtea-core-build.patch \ - patches/icedtea-zero-build.patch \ patches/icedtea-print-lsb-release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ diff -r 21376f9eed89 -r 2deccfc8b64f patches/icedtea-core-build.patch --- a/patches/icedtea-core-build.patch Thu Dec 03 13:53:28 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -diff -Nru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk 2009-07-15 17:35:01.000000000 +0100 -+++ openjdk/corba/make/common/Defs-linux.gmk 2009-07-23 17:41:01.000000000 +0100 -@@ -258,7 +258,12 @@ - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(BOOTDIR)/jre/lib/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -ljava $(JVMLIB) - -diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2009-07-15 17:35:01.000000000 +0100 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2009-07-23 17:41:01.000000000 +0100 -@@ -282,7 +282,12 @@ - # -L to the -ljvm, this is because -ljava depends on -ljvm, whereas - # the library itself should not. - # --VM_NAME = server -+VM_NAME = $(shell for dir in server client core; do \ -+ if [ -d $(LIBDIR)/$(LIBARCH)/$$dir ]; then \ -+ echo $$dir; \ -+ break; \ -+ fi; \ -+ done) - JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm - JAVALIB = -ljava $(JVMLIB) - diff -r 21376f9eed89 -r 2deccfc8b64f patches/icedtea-zero-build.patch --- a/patches/icedtea-zero-build.patch Thu Dec 03 13:53:28 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -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 2009-04-14 18:31:09.000000000 +0100 -+++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-04-14 20:32:47.000000000 +0100 -@@ -66,6 +66,11 @@ - else - CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) - endif -+ ifdef ZERO_BUILD -+ # zero -+ REQUIRED_CC_VER = 3.2 -+ REQUIRED_GCC_VER = 3.2.* -+ endif - # Option used to create a shared library - SHARED_LIBRARY_FLAG = -shared -mimpure-text - SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) From gbenson at icedtea.classpath.org Thu Dec 3 09:06:26 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Dec 2009 17:06:26 +0000 Subject: /hg/icedtea: 2009-12-03 Gary Benson Message-ID: changeset 8593cf8e0cf0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8593cf8e0cf0 author: Gary Benson date: Thu Dec 03 17:11:25 2009 +0000 2009-12-03 Gary Benson * patches/cacao/arch.patch: Fix up. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 4 ++++ patches/cacao/arch.patch | 4 ++-- diffs (25 lines): diff -r 2deccfc8b64f -r 8593cf8e0cf0 ChangeLog --- a/ChangeLog Thu Dec 03 16:39:28 2009 +0000 +++ b/ChangeLog Thu Dec 03 17:11:25 2009 +0000 @@ -1,3 +1,7 @@ 2009-12-03 Gary Benson + + * patches/cacao/arch.patch: Fix up. + 2009-12-03 Gary Benson * patches/icedtea-core-build.patch: Removed. diff -r 2deccfc8b64f -r 8593cf8e0cf0 patches/cacao/arch.patch --- a/patches/cacao/arch.patch Thu Dec 03 16:39:28 2009 +0000 +++ b/patches/cacao/arch.patch Thu Dec 03 17:11:25 2009 +0000 @@ -48,8 +48,8 @@ diff -Nru openjdk.orig/jdk/make/common/s --- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk 2009-07-24 00:15:26.000000000 +0100 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-07-24 00:19:32.000000000 +0100 @@ -71,6 +71,52 @@ - REQUIRED_CC_VER = 3.2 - REQUIRED_GCC_VER = 3.2.* + else + CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) endif + ifeq ($(ARCH), alpha) + # alpha From gbenson at redhat.com Thu Dec 3 09:15:06 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Dec 2009 17:15:06 +0000 Subject: Fix Cacao patch in icedtea7 Message-ID: <20091203171505.GC9977@redhat.com> Hi all, This commit makes cacao/arch.patch apply correctly after my earlier removal of one of the dead Zero patches. Note that cacao/arch.patch is adding a bunch of stuff for Cacao that is not required for Zero and so is probably not required for Cacao either, ie the patch is probably redundant. But it's not mine to remove... Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 2deccfc8b64f -r 8593cf8e0cf0 ChangeLog --- a/ChangeLog Thu Dec 03 16:39:28 2009 +0000 +++ b/ChangeLog Thu Dec 03 17:11:25 2009 +0000 @@ -1,3 +1,7 @@ +2009-12-03 Gary Benson + + * patches/cacao/arch.patch: Fix up. + 2009-12-03 Gary Benson * patches/icedtea-core-build.patch: Removed. diff -r 2deccfc8b64f -r 8593cf8e0cf0 patches/cacao/arch.patch --- a/patches/cacao/arch.patch Thu Dec 03 16:39:28 2009 +0000 +++ b/patches/cacao/arch.patch Thu Dec 03 17:11:25 2009 +0000 @@ -48,8 +48,8 @@ --- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk 2009-07-24 00:15:26.000000000 +0100 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-07-24 00:19:32.000000000 +0100 @@ -71,6 +71,52 @@ - REQUIRED_CC_VER = 3.2 - REQUIRED_GCC_VER = 3.2.* + else + CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) endif + ifeq ($(ARCH), alpha) + # alpha From mwong at redhat.com Thu Dec 3 10:00:44 2009 From: mwong at redhat.com (Man Wong) Date: Thu, 3 Dec 2009 13:00:44 -0500 (EST) Subject: Patch for review: Enabling Netx Desktop Element In-Reply-To: <1731479677.923681259860877519.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <145201805.925841259863244543.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> > > > * Man Wong [2009-12-01 17:15]: > > > This patch fixes the 2 problems (shortcut not using system > preferred > > javaws and jnlp file in cache) from the previous fixme. The fix > allows > > netx desktop element to be enabled. Furthermore, shortcut tag is > now > > no longer required as in the jnlp developers guide. Lastly, it now > > checks for updates and updates the file in the cache accordingly. > > > > > > > Changelog: > > > 2009-12-01 Man Lung Wong > > > > > > * rt/net/sourceforge/jnlp/JNLPFile.java > > > (JNLPFILE): Download the jnlp file from the webspace it > > originated, if > > > it exists. > > > * > rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > > > (initialize): Enable desktop element and revise the list > of > > fixme. > > > (addMenuAndDesktopEntries): No longer errors out when > > shortcut tag not > > > specified. > > > * rt/net/sourceforge/jnlp/runtime/Boot.java > > > (getFile): Launches the original jnlp file (i.e. if the > > file was > > > downloaded from http://icedtea.classpath.org, then it > will > > launch the > > > one from http://icedtea.classpath.org). > > > * rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > > (getContentsAsReader): Shortcut uses jnlp file in cache > and > > launches > > > with system preferred javaws. > > > > > > Any comments? > > > > > > > Please see comments below: > > > > > Thanks, > > > Man Lung Wong > > > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/JNLPFile.java > > > --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Nov 27 11:17:31 > 2009 > > -0500 > > > +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Dec 01 15:05:42 > 2009 > > -0500 > > > @@ -173,6 +173,14 @@ > > > public JNLPFile(URL location, Version version, boolean > strict, > > UpdatePolicy policy) throws IOException, ParseException { > > > Node root = Parser.getRootNode(openURL(location, > version, > > policy)); > > > parse(root, strict, location); > > > + > > > + //Downloads the original jnlp file into the cache if > > possible > > > + //(i.e. If the jnlp file being launched exist locally, > but > > it > > > + //originated from a website, then download the one from > the > > website > > > + //into the cache). > > > + if (sourceLocation != null && location.getProtocol() == > > "file") { > > > + openURL(sourceLocation, version, policy); > > > + } > > > > > > this.fileLocation = location; > > > > > > > What is the difference between sourceLocation and location? In the > if > > condition, one is being checked for notnull, and another is being > > checked for protocol. Is this expected? > > > > It is expected, because sourceLocation != null checks if the jnlp file > points to another file (which is the original file), while > location.getProtocol() == "file" checks if the file being passed in as > an argument is a local file (if it is not a local meaning it is from a > webspace then it would have been downloaded into the cache by the > previous openURL call). > > > > > > > > diff -r d9377bd6e521 > > rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > > --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 27 > > 11:17:31 2009 -0500 > > > +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Dec 01 > > 15:05:42 2009 -0500 > > > @@ -73,6 +73,7 @@ > > > > > > String pathToJavaws = System.getProperty("java.home") + > > File.separator + "bin" > > > + File.separator + "javaws"; > > > + File cacheFile = > > CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > > > > > > String fileContents = "[Desktop Entry]\n"; > > > fileContents += "Version=1.0\n"; > > > @@ -89,7 +90,9 @@ > > > if (file.getInformation().getVendor() != null) { > > > fileContents += "Vendor=" + > > file.getInformation().getVendor() + "\n"; > > > } > > > - fileContents += "Exec=" + pathToJavaws + " \"" + > > file.getSourceLocation() + "\"\n"; > > > + > > > + //Shortcut executes the jnlp from cache and system > > preferred java.. > > > + fileContents += "Exec=" + "javaws" + " " + > > cacheFile.getAbsolutePath() + "\n"; > > > > > > > Are you sure the extra quotes (\"'s) should be removed? What if the > > file > > name has spaces, would it still work? > > > > Good catch! Even though, file names with a space cannot be launched. > However, it is a problem that should/will be addressed. > > > Cheers, > > Deepak > > Thanks, > > Man Lung Wong Updated the patch to add the quotation marks back in. Any other issues? Thanks, Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: desktopElement.patch Type: text/x-patch Size: 4848 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091203/3116d764/desktopElement.patch From dbhole at redhat.com Thu Dec 3 10:11:15 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 3 Dec 2009 13:11:15 -0500 Subject: Patch for review: Enabling Netx Desktop Element In-Reply-To: <145201805.925841259863244543.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <1731479677.923681259860877519.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <145201805.925841259863244543.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20091203181115.GA2569@redhat.com> * Man Wong [2009-12-03 13:00]: > > > > > * Man Wong [2009-12-01 17:15]: > > > > This patch fixes the 2 problems (shortcut not using system > > preferred > > > javaws and jnlp file in cache) from the previous fixme. The fix > > allows > > > netx desktop element to be enabled. Furthermore, shortcut tag is > > now > > > no longer required as in the jnlp developers guide. Lastly, it now > > > checks for updates and updates the file in the cache accordingly. > > > > > > > > > > Changelog: > > > > 2009-12-01 Man Lung Wong > > > > > > > > * rt/net/sourceforge/jnlp/JNLPFile.java > > > > (JNLPFILE): Download the jnlp file from the webspace it > > > originated, if > > > > it exists. > > > > * > > rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > > > > (initialize): Enable desktop element and revise the list > > of > > > fixme. > > > > (addMenuAndDesktopEntries): No longer errors out when > > > shortcut tag not > > > > specified. > > > > * rt/net/sourceforge/jnlp/runtime/Boot.java > > > > (getFile): Launches the original jnlp file (i.e. if the > > > file was > > > > downloaded from http://icedtea.classpath.org, then it > > will > > > launch the > > > > one from http://icedtea.classpath.org). > > > > * rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > > > (getContentsAsReader): Shortcut uses jnlp file in cache > > and > > > launches > > > > with system preferred javaws. > > > > > > > > Any comments? > > > > > > > > > > Please see comments below: > > > > > > > Thanks, > > > > Man Lung Wong > > > > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/JNLPFile.java > > > > --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Nov 27 11:17:31 > > 2009 > > > -0500 > > > > +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Dec 01 15:05:42 > > 2009 > > > -0500 > > > > @@ -173,6 +173,14 @@ > > > > public JNLPFile(URL location, Version version, boolean > > strict, > > > UpdatePolicy policy) throws IOException, ParseException { > > > > Node root = Parser.getRootNode(openURL(location, > > version, > > > policy)); > > > > parse(root, strict, location); > > > > + > > > > + //Downloads the original jnlp file into the cache if > > > possible > > > > + //(i.e. If the jnlp file being launched exist locally, > > but > > > it > > > > + //originated from a website, then download the one from > > the > > > website > > > > + //into the cache). > > > > + if (sourceLocation != null && location.getProtocol() == > > > "file") { > > > > + openURL(sourceLocation, version, policy); > > > > + } > > > > > > > > this.fileLocation = location; > > > > > > > > > > What is the difference between sourceLocation and location? In the > > if > > > condition, one is being checked for notnull, and another is being > > > checked for protocol. Is this expected? > > > > > > > It is expected, because sourceLocation != null checks if the jnlp file > > points to another file (which is the original file), while > > location.getProtocol() == "file" checks if the file being passed in as > > an argument is a local file (if it is not a local meaning it is from a > > webspace then it would have been downloaded into the cache by the > > previous openURL call). > > > > > > > > > > > > diff -r d9377bd6e521 > > > rt/net/sourceforge/jnlp/util/XDesktopEntry.java > > > > --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 27 > > > 11:17:31 2009 -0500 > > > > +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Dec 01 > > > 15:05:42 2009 -0500 > > > > @@ -73,6 +73,7 @@ > > > > > > > > String pathToJavaws = System.getProperty("java.home") + > > > File.separator + "bin" > > > > + File.separator + "javaws"; > > > > + File cacheFile = > > > CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > > > > > > > > String fileContents = "[Desktop Entry]\n"; > > > > fileContents += "Version=1.0\n"; > > > > @@ -89,7 +90,9 @@ > > > > if (file.getInformation().getVendor() != null) { > > > > fileContents += "Vendor=" + > > > file.getInformation().getVendor() + "\n"; > > > > } > > > > - fileContents += "Exec=" + pathToJavaws + " \"" + > > > file.getSourceLocation() + "\"\n"; > > > > + > > > > + //Shortcut executes the jnlp from cache and system > > > preferred java.. > > > > + fileContents += "Exec=" + "javaws" + " " + > > > cacheFile.getAbsolutePath() + "\n"; > > > > > > > > > > Are you sure the extra quotes (\"'s) should be removed? What if the > > > file > > > name has spaces, would it still work? > > > > > > > Good catch! Even though, file names with a space cannot be launched. > > However, it is a problem that should/will be addressed. > > > > > Cheers, > > > Deepak > > > > Thanks, > > > > Man Lung Wong > > > Updated the patch to add the quotation marks back in. > > Any other issues? > Looks good. OK to commit! Cheers, Deepak > Thanks, > > Man Lung Wong > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/JNLPFile.java > --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Dec 01 15:05:42 2009 -0500 > @@ -173,6 +173,14 @@ > public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { > Node root = Parser.getRootNode(openURL(location, version, policy)); > parse(root, strict, location); > + > + //Downloads the original jnlp file into the cache if possible > + //(i.e. If the jnlp file being launched exist locally, but it > + //originated from a website, then download the one from the website > + //into the cache). > + if (sourceLocation != null && location.getProtocol() == "file") { > + openURL(sourceLocation, version, policy); > + } > > this.fileLocation = location; > > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > --- a/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Tue Dec 01 15:05:42 2009 -0500 > @@ -109,24 +109,12 @@ > */ > public void initialize() { > installEnvironment(); > - > - /* > - * FIXME: Disable creating desktop entries for now > - * > - * there are some major issues we need to work out before we can enable them > - * 1. Playing nice with the altnatives system > - * - use the system preferred jdk (/usr/bin/javaws) > - * - dont assume what jdk javaws corresponds to > - * - make sure our shortcuts work with the sun jdk and vice versa > - * (may not be possible since sun's javaws creates a launcher that > - * links to /usr/java/${ver}/bin/javaws) > - * - we should use the same options and arguments as sun's javaws > - * 2. Make shortcuts work offline > - * - make the cache updates and replacements work properly > - * - shortcuts should use the cache > - * > - * addMenuAndDesktopEntries(); > - */ > + > + //Fixme: -Should check whether a desktop entry already exists for > + // for this jnlp file, and do nothing if it exists. > + // -If no href is specified in the jnlp tag, it should > + // default to using the one passed in as an argument. > + addMenuAndDesktopEntries(); > } > > /** > @@ -135,14 +123,15 @@ > > private void addMenuAndDesktopEntries() { > XDesktopEntry entry = new XDesktopEntry(file); > + ShortcutDesc sd = file.getInformation().getShortcut(); > > - if (file.getInformation().getShortcut().onDesktop()) { > + if (sd != null && sd.onDesktop()) { > if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { > entry.createDesktopShortcut(); > } > } > > - if (file.getInformation().getShortcut().getMenu() != null) { > + if (sd != null && sd.getMenu() != null) { > /* > * Sun's WebStart implementation doesnt seem to do anything under GNOME > */ > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/runtime/Boot.java > --- a/rt/net/sourceforge/jnlp/runtime/Boot.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/runtime/Boot.java Tue Dec 01 15:05:42 2009 -0500 > @@ -278,6 +278,11 @@ > > JNLPFile file = new JNLPFile(url, strict); > > + // Launches the jnlp file where this file originated. > + if (file.getSourceLocation() != null) { > + file = new JNLPFile(file.getSourceLocation(), strict); > + } > + > // add in extra params from command line > addProperties(file); > > diff -r d9377bd6e521 rt/net/sourceforge/jnlp/util/XDesktopEntry.java > --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 27 11:17:31 2009 -0500 > +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Dec 01 15:05:42 2009 -0500 > @@ -73,6 +73,7 @@ > > String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" > + File.separator + "javaws"; > + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > > String fileContents = "[Desktop Entry]\n"; > fileContents += "Version=1.0\n"; > @@ -89,7 +90,9 @@ > if (file.getInformation().getVendor() != null) { > fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; > } > - fileContents += "Exec=" + pathToJavaws + " \"" + file.getSourceLocation() + "\"\n"; > + > + //Shortcut executes the jnlp from cache and system preferred java.. > + fileContents += "Exec=" + "javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n"; > > return new StringReader(fileContents); > From mwong at icedtea.classpath.org Thu Dec 3 11:03:30 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Thu, 03 Dec 2009 19:03:30 +0000 Subject: /hg/icedtea6: Desktop element fix. Message-ID: changeset 1ac152b3ec07 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1ac152b3ec07 author: Man Lung Wong date: Thu Dec 03 13:55:11 2009 -0500 Desktop element fix. diffstat: 5 files changed, 44 insertions(+), 22 deletions(-) ChangeLog | 17 +++++++ rt/net/sourceforge/jnlp/JNLPFile.java | 8 +++ rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 31 ++++---------- rt/net/sourceforge/jnlp/runtime/Boot.java | 5 ++ rt/net/sourceforge/jnlp/util/XDesktopEntry.java | 5 +- diffs (132 lines): diff -r bc6d4b57cacf -r 1ac152b3ec07 ChangeLog --- a/ChangeLog Thu Dec 03 15:58:48 2009 +0000 +++ b/ChangeLog Thu Dec 03 13:55:11 2009 -0500 @@ -1,3 +1,20 @@ 2009-12-03 Gary Benson + + * rt/net/sourceforge/jnlp/JNLPFile.java + (JNLPFile): Download the jnlp file from the webspace it originated, if + it exists. + * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Enable desktop element and revise the list of fixme. + (addMenuAndDesktopEntries): No longer errors out when shortcut tag not + specified. + * rt/net/sourceforge/jnlp/runtime/Boot.java + (getFile): Launches the original jnlp file (i.e. if the file was + downloaded from http://icedtea.classpath.org, then it will launch the + one from http://icedtea.classpath.org). + * rt/net/sourceforge/jnlp/util/XDesktopEntry.java + (getContentsAsReader): Shortcut uses jnlp file in cache and launches + with system preferred javaws. + 2009-12-03 Gary Benson * patches/icedtea-core-build.patch: Remove a very old workaround. diff -r bc6d4b57cacf -r 1ac152b3ec07 rt/net/sourceforge/jnlp/JNLPFile.java --- a/rt/net/sourceforge/jnlp/JNLPFile.java Thu Dec 03 15:58:48 2009 +0000 +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Thu Dec 03 13:55:11 2009 -0500 @@ -173,6 +173,14 @@ public class JNLPFile { public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { Node root = Parser.getRootNode(openURL(location, version, policy)); parse(root, strict, location); + + //Downloads the original jnlp file into the cache if possible + //(i.e. If the jnlp file being launched exist locally, but it + //originated from a website, then download the one from the website + //into the cache). + if (sourceLocation != null && location.getProtocol() == "file") { + openURL(sourceLocation, version, policy); + } this.fileLocation = location; diff -r bc6d4b57cacf -r 1ac152b3ec07 rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Dec 03 15:58:48 2009 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Dec 03 13:55:11 2009 -0500 @@ -109,24 +109,12 @@ public class ApplicationInstance { */ public void initialize() { installEnvironment(); - - /* - * FIXME: Disable creating desktop entries for now - * - * there are some major issues we need to work out before we can enable them - * 1. Playing nice with the altnatives system - * - use the system preferred jdk (/usr/bin/javaws) - * - dont assume what jdk javaws corresponds to - * - make sure our shortcuts work with the sun jdk and vice versa - * (may not be possible since sun's javaws creates a launcher that - * links to /usr/java/${ver}/bin/javaws) - * - we should use the same options and arguments as sun's javaws - * 2. Make shortcuts work offline - * - make the cache updates and replacements work properly - * - shortcuts should use the cache - * - * addMenuAndDesktopEntries(); - */ + + //Fixme: -Should check whether a desktop entry already exists for + // for this jnlp file, and do nothing if it exists. + // -If no href is specified in the jnlp tag, it should + // default to using the one passed in as an argument. + addMenuAndDesktopEntries(); } /** @@ -135,14 +123,15 @@ public class ApplicationInstance { private void addMenuAndDesktopEntries() { XDesktopEntry entry = new XDesktopEntry(file); - - if (file.getInformation().getShortcut().onDesktop()) { + ShortcutDesc sd = file.getInformation().getShortcut(); + + if (sd != null && sd.onDesktop()) { if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { entry.createDesktopShortcut(); } } - if (file.getInformation().getShortcut().getMenu() != null) { + if (sd != null && sd.getMenu() != null) { /* * Sun's WebStart implementation doesnt seem to do anything under GNOME */ diff -r bc6d4b57cacf -r 1ac152b3ec07 rt/net/sourceforge/jnlp/runtime/Boot.java --- a/rt/net/sourceforge/jnlp/runtime/Boot.java Thu Dec 03 15:58:48 2009 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/Boot.java Thu Dec 03 13:55:11 2009 -0500 @@ -278,6 +278,11 @@ public final class Boot implements Privi JNLPFile file = new JNLPFile(url, strict); + // Launches the jnlp file where this file originated. + if (file.getSourceLocation() != null) { + file = new JNLPFile(file.getSourceLocation(), strict); + } + // add in extra params from command line addProperties(file); diff -r bc6d4b57cacf -r 1ac152b3ec07 rt/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Dec 03 15:58:48 2009 +0000 +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Dec 03 13:55:11 2009 -0500 @@ -73,6 +73,7 @@ public class XDesktopEntry { String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" + File.separator + "javaws"; + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; @@ -89,7 +90,9 @@ public class XDesktopEntry { if (file.getInformation().getVendor() != null) { fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; } - fileContents += "Exec=" + pathToJavaws + " \"" + file.getSourceLocation() + "\"\n"; + + //Shortcut executes the jnlp from cache and system preferred java.. + fileContents += "Exec=" + "javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n"; return new StringReader(fileContents); From mwong at icedtea.classpath.org Thu Dec 3 11:36:16 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Thu, 03 Dec 2009 19:36:16 +0000 Subject: /hg/icedtea: Desktop element fixed and enabled. Message-ID: changeset e586d9354652 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e586d9354652 author: Man Lung Wong date: Thu Dec 03 14:38:27 2009 -0500 Desktop element fixed and enabled. diffstat: 5 files changed, 44 insertions(+), 22 deletions(-) ChangeLog | 17 ++++++ netx/net/sourceforge/jnlp/JNLPFile.java | 8 +++ netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 31 +++--------- netx/net/sourceforge/jnlp/runtime/Boot.java | 5 + netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 5 + diffs (132 lines): diff -r 8593cf8e0cf0 -r e586d9354652 ChangeLog --- a/ChangeLog Thu Dec 03 17:11:25 2009 +0000 +++ b/ChangeLog Thu Dec 03 14:38:27 2009 -0500 @@ -1,3 +1,20 @@ 2009-12-03 Gary Benson + + * rt/net/sourceforge/jnlp/JNLPFile.java + (JNLPFile): Download the jnlp file from the webspace it originated, if + it exists. + * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Enable desktop element and revise the list of fixme. + (addMenuAndDesktopEntries): No longer errors out when shortcut tag not + specified. + * rt/net/sourceforge/jnlp/runtime/Boot.java + (getFile): Launches the original jnlp file (i.e. if the file was + downloaded from http://icedtea.classpath.org, then it will launch the + one from http://icedtea.classpath.org). + * rt/net/sourceforge/jnlp/util/XDesktopEntry.java + (getContentsAsReader): Shortcut uses jnlp file in cache and launches + with system preferred javaws. + 2009-12-03 Gary Benson * patches/cacao/arch.patch: Fix up. diff -r 8593cf8e0cf0 -r e586d9354652 netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Thu Dec 03 17:11:25 2009 +0000 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Thu Dec 03 14:38:27 2009 -0500 @@ -173,6 +173,14 @@ public class JNLPFile { public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { Node root = Parser.getRootNode(openURL(location, version, policy)); parse(root, strict, location); + + //Downloads the original jnlp file into the cache if possible + //(i.e. If the jnlp file being launched exist locally, but it + //originated from a website, then download the one from the website + //into the cache). + if (sourceLocation != null && location.getProtocol() == "file") { + openURL(sourceLocation, version, policy); + } this.fileLocation = location; diff -r 8593cf8e0cf0 -r e586d9354652 netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Dec 03 17:11:25 2009 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Dec 03 14:38:27 2009 -0500 @@ -109,24 +109,12 @@ public class ApplicationInstance { */ public void initialize() { installEnvironment(); - - /* - * FIXME: Disable creating desktop entries for now - * - * there are some major issues we need to work out before we can enable them - * 1. Playing nice with the altnatives system - * - use the system preferred jdk (/usr/bin/javaws) - * - dont assume what jdk javaws corresponds to - * - make sure our shortcuts work with the sun jdk and vice versa - * (may not be possible since sun's javaws creates a launcher that - * links to /usr/java/${ver}/bin/javaws) - * - we should use the same options and arguments as sun's javaws - * 2. Make shortcuts work offline - * - make the cache updates and replacements work properly - * - shortcuts should use the cache - * - * addMenuAndDesktopEntries(); - */ + + //Fixme: -Should check whether a desktop entry already exists for + // for this jnlp file, and do nothing if it exists. + // -If no href is specified in the jnlp tag, it should + // default to using the one passed in as an argument. + addMenuAndDesktopEntries(); } /** @@ -135,14 +123,15 @@ public class ApplicationInstance { private void addMenuAndDesktopEntries() { XDesktopEntry entry = new XDesktopEntry(file); - - if (file.getInformation().getShortcut().onDesktop()) { + ShortcutDesc sd = file.getInformation().getShortcut(); + + if (sd != null && sd.onDesktop()) { if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { entry.createDesktopShortcut(); } } - if (file.getInformation().getShortcut().getMenu() != null) { + if (sd != null && sd.getMenu() != null) { /* * Sun's WebStart implementation doesnt seem to do anything under GNOME */ diff -r 8593cf8e0cf0 -r e586d9354652 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Dec 03 17:11:25 2009 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Dec 03 14:38:27 2009 -0500 @@ -278,6 +278,11 @@ public final class Boot implements Privi JNLPFile file = new JNLPFile(url, strict); + // Launches the jnlp file where this file originated. + if (file.getSourceLocation() != null) { + file = new JNLPFile(file.getSourceLocation(), strict); + } + // add in extra params from command line addProperties(file); diff -r 8593cf8e0cf0 -r e586d9354652 netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Dec 03 17:11:25 2009 +0000 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Dec 03 14:38:27 2009 -0500 @@ -73,6 +73,7 @@ public class XDesktopEntry { String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" + File.separator + "javaws"; + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; @@ -89,7 +90,9 @@ public class XDesktopEntry { if (file.getInformation().getVendor() != null) { fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; } - fileContents += "Exec=" + pathToJavaws + " \"" + file.getSourceLocation() + "\"\n"; + + //Shortcut executes the jnlp from cache and system preferred java.. + fileContents += "Exec=" + "javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n"; return new StringReader(fileContents); From mwong at redhat.com Thu Dec 3 12:02:54 2009 From: mwong at redhat.com (Man Wong) Date: Thu, 3 Dec 2009 15:02:54 -0500 (EST) Subject: Patch for Review: Netx utilizing offline-allowed tag In-Reply-To: <1524258224.933601259870282584.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <590903473.934061259870574030.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> This patch fixes the behaviour of netx such that it will no longer launch the jnlp file when system is offline and offline-allowed tag does not exist. Changelog: 2009-12-03 Man Lung Wong * rt/net/sourceforge/jnlp/Launcher.java (launch): No longer launches when system offline and offline-allowed tag does not exist. Any comments? Thanks, Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: netx-onlineoffline.patch Type: application/octet-stream Size: 1497 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091203/975d281d/netx-onlineoffline.patch From gbenson at redhat.com Fri Dec 4 10:33:03 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 4 Dec 2009 18:33:03 +0000 Subject: Zero patch rearrangement in icedtea6 Message-ID: <20091204183302.GB17799@redhat.com> Hi all, At some point Zero is going to end up in a HSX tarball, and no doubt shortly afterwards in icedtea6. I've been working on a refactoring that will make the transition easier to manage. The attached patch replaces the various individual Zero patches with larger patches numbered with the Sun bug id that they were committed to OpenJDK7 with. This means that, once that bug's code ends up in an HSX tarball, we can simply remove one patch to fix IcedTea. It also means that, if OpenJDK 6 is about to rebase on a new HotSpot, we have patches ready made for the non-HotSpot Zero stuff that needs to be in that tarball. As well as the above, the attached patch upgrades icedtea6's Zero from the original, IcedTea way of building Zero to the new, much nicer OpenJDK7 way of doing it. This means that dependencies between header files are better tracked, thanks to the new includeDB, and also that there are now no differences between icedtea6's Zero and OpenJDK7's except for Ed's interpreter and the odd little bit here and there that's required for the newer HotSpot. I'm currently testing this with a bunch of different configurations (amd64/zero, ppc/shark, ppc64/hs16/zero and s390x/zero). Could people please test this patch on the configurations they care about, to make sure I didn't break anything. Thanks (and have a good weekend!) Gary -- http://gbenson.net/ -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea6-zero-upgrade.patch.gz Type: application/x-gzip Size: 24552 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091204/848a3eec/icedtea6-zero-upgrade.patch.gz From bugzilla-daemon at icedtea.classpath.org Fri Dec 4 14:48:36 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 04 Dec 2009 22:48:36 +0000 Subject: [Bug 416] New: JVM crashes when running freenet Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=416 Summary: JVM crashes when running freenet Product: IcedTea Version: unspecified Platform: Macintosh OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: s.icedtea at pictorii.com When downloading a file (e.g. a freesite) is finished, JVM promptly crashes. uname -a: Linux asuka 2.6.30-2-powerpc #1 Sat Oct 3 22:43:22 UTC 2009 ppc GNU/Linux. The error log is too long to fit, and I can't attach it. So this is the header: # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (synchronizer.cpp:1802), pid=4345, tid=1447789712 # Error: guarantee(mid->header()->is_neutral(),"invariant") # # JRE version: 6.0-b16 # Java VM: OpenJDK Zero VM (14.0-b15 interpreted mode linux-ppc ) # Distribution: Debian GNU/Linux unstable (sid), package 6b16-4 # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # I would be happy to make the rest of the log available via email. Cheers, Steve -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Dec 4 15:17:31 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 04 Dec 2009 23:17:31 +0000 Subject: [Bug 416] JVM crashes when running freenet Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=416 ------- Comment #1 from gbenson at redhat.com 2009-12-04 23:17 ------- Can you attach the rest of the log to this bug please? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Dec 4 15:20:00 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 04 Dec 2009 23:20:00 +0000 Subject: [Bug 416] JVM crashes when running freenet Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=416 ------- Comment #2 from s.icedtea at pictorii.com 2009-12-04 23:19 ------- Created an attachment (id=276) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=276&action=view) Complete crash log -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Dec 6 23:30:36 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 07 Dec 2009 07:30:36 +0000 Subject: [Bug 378] Gecko Browsers crashes due to IcedTeaPluginFactory Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=378 icedtea.bugs at micahscomputing.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |icedtea.bugs at micahscomputing | |.com Summary|Epiphany crashes due to |Gecko Browsers crashes due |IcedTeaPluginFactory |to IcedTeaPluginFactory ------- Comment #1 from icedtea.bugs at micahscomputing.com 2009-12-07 07:30 ------- This is happening on Ubuntu 9.10 as well with Firefox 3.5.5 and Icedtea Plugin 6b16-1.6.1-3ubuntu1. There is a new stack trace and debug files here: https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/491181 Please let us know if you need any more information. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Dec 6 23:54:28 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 07 Dec 2009 07:54:28 +0000 Subject: [Bug 416] JVM crashes when running freenet Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=416 gbenson at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #276|application/octet-stream |text/plain mime type| | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Dec 7 00:03:05 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 07 Dec 2009 08:03:05 +0000 Subject: [Bug 416] JVM crashes when running freenet Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=416 gbenson at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gbenson at redhat.com |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From doko at ubuntu.com Mon Dec 7 08:55:40 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 07 Dec 2009 17:55:40 +0100 Subject: State of openjdk on hppa In-Reply-To: References: Message-ID: <4B1D338C.703@ubuntu.com> On 07.12.2009 14:36, Onkar Shinde wrote: > Hi, > > java3d currently fails to build on hppa because it uses some sun > specific APIs and default-jdk is GCJ on hppa. A solution for this > could be to use openjdk-6-jdk build-dep instead of default-jdk. But > the problem is that there are no openjdk-* packages on hppa. > > Does anyone know if there is any effort going on to make openjdk-* > packages available on hppa. If not then I will have to make java3d a > !hppa package. openjdk builds on hppa, but doesn't run (yet). Andrew Haley once debugged it and found out at least one things which would need to be fixed: the assumption in the C++ interpreter that the stack always grows downwards, and not upwards as on hppa. please could one of the hotspot developers sched some light on this, how easy this might to be fix, and if there are other assumptions? thanks, Matthias From gbenson at icedtea.classpath.org Mon Dec 7 08:06:33 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Mon, 07 Dec 2009 16:06:33 +0000 Subject: /hg/icedtea6: 2009-12-07 Gary Benson Message-ID: changeset c18ada9920f7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c18ada9920f7 author: Gary Benson date: Mon Dec 07 11:11:29 2009 -0500 2009-12-07 Gary Benson PR icedtea/416: * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp (CppInterpreter::native_entry): Always unlock synchronized native methods prior to returning. diffstat: 2 files changed, 13 insertions(+), 6 deletions(-) ChangeLog | 7 +++++++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 12 ++++++------ diffs (50 lines): diff -r 1ac152b3ec07 -r c18ada9920f7 ChangeLog --- a/ChangeLog Thu Dec 03 13:55:11 2009 -0500 +++ b/ChangeLog Mon Dec 07 11:11:29 2009 -0500 @@ -1,3 +1,10 @@ 2009-12-03 Man Lung Wong + + PR icedtea/416: + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (CppInterpreter::native_entry): Always unlock synchronized + native methods prior to returning. + 2009-12-03 Man Lung Wong * rt/net/sourceforge/jnlp/JNLPFile.java diff -r 1ac152b3ec07 -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Thu Dec 03 13:55:11 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Mon Dec 07 11:11:29 2009 -0500 @@ -245,7 +245,7 @@ void CppInterpreter::native_entry(method if (handlerAddr == NULL) { CALL_VM_NOCHECK(InterpreterRuntime::prepare_native_call(thread, method)); if (HAS_PENDING_EXCEPTION) - goto unwind_and_return; + goto unlock_unwind_and_return; handlerAddr = method->signature_handler(); assert(handlerAddr != NULL, "eh?"); @@ -254,7 +254,7 @@ void CppInterpreter::native_entry(method CALL_VM_NOCHECK(handlerAddr = InterpreterRuntime::slow_signature_handler(thread, method, NULL,NULL)); if (HAS_PENDING_EXCEPTION) - goto unwind_and_return; + goto unlock_unwind_and_return; } handler = \ InterpreterRuntime::SignatureHandler::from_handlerAddr(handlerAddr); @@ -365,10 +365,10 @@ void CppInterpreter::native_entry(method // Reset handle block thread->active_handles()->clear(); - // Unlock if necessary. It seems totally wrong that this - // is skipped in the event of an exception but apparently - // the template interpreter does this so we do too. - if (monitor && !HAS_PENDING_EXCEPTION) { + unlock_unwind_and_return: + + // Unlock if necessary + if (monitor) { BasicLock *lock = monitor->lock(); markOop header = lock->displaced_header(); oop rcvr = monitor->obj(); From andrew at icedtea.classpath.org Mon Dec 7 08:31:15 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 07 Dec 2009 16:31:15 +0000 Subject: /hg/icedtea: Make clean-icedtea* targets only run make if the di... Message-ID: changeset e9eb1d9c06e7 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e9eb1d9c06e7 author: Andrew John Hughes date: Mon Dec 07 16:36:16 2009 +0000 Make clean-icedtea* targets only run make if the directory exists. 2009-12-07 Andrew John Hughes * Makefile.am: (clean-icedtea): Only run make if openjdk directory exists and remove dependency. (clean-icedtea-boot): Likewise for openjdk-boot. diffstat: 2 files changed, 19 insertions(+), 8 deletions(-) ChangeLog | 7 +++++++ Makefile.am | 20 ++++++++++++-------- diffs (51 lines): diff -r e586d9354652 -r e9eb1d9c06e7 ChangeLog --- a/ChangeLog Thu Dec 03 14:38:27 2009 -0500 +++ b/ChangeLog Mon Dec 07 16:36:16 2009 +0000 @@ -1,3 +1,10 @@ 2009-12-03 Man Lung Wong + + * Makefile.am: + (clean-icedtea): Only run make if openjdk + directory exists and remove dependency. + (clean-icedtea-boot): Likewise for openjdk-boot. + 2009-12-03 Man Lung Wong * rt/net/sourceforge/jnlp/JNLPFile.java diff -r e586d9354652 -r e9eb1d9c06e7 Makefile.am --- a/Makefile.am Thu Dec 03 14:38:27 2009 -0500 +++ b/Makefile.am Mon Dec 07 16:36:16 2009 +0000 @@ -1847,10 +1847,12 @@ endif mkdir -p stamps touch $@ -clean-icedtea: stamps/download.stamp - $(ARCH_PREFIX) $(MAKE) \ - $(ICEDTEA_ENV) \ - -C openjdk clobber +clean-icedtea: + if [ -e $(abs_top_builddir)/openjdk ]; then \ + $(ARCH_PREFIX) $(MAKE) \ + $(ICEDTEA_ENV) \ + -C openjdk clobber ; \ + fi rm -f stamps/icedtea.stamp stamps/icedtea-debug.stamp stamps/icedtea-stage2.stamp: stamps/icedtea.stamp stamps/add-cacao.stamp \ @@ -1903,10 +1905,12 @@ hotspot-helper: stamps/bootstrap-directo $(ICEDTEA_ENV_BOOT) \ -C openjdk-boot hotspot -clean-icedtea-boot: stamps/clone-boot.stamp - $(ARCH_PREFIX) $(MAKE) \ - $(ICEDTEA_ENV_BOOT) \ - -C openjdk-boot clobber +clean-icedtea-boot: + if [ -e $(abs_top_builddir)/openjdk-boot ]; then \ + $(ARCH_PREFIX) $(MAKE) \ + $(ICEDTEA_ENV_BOOT) \ + -C openjdk-boot clobber ; \ + fi rm -f stamps/icedtea-boot.stamp stamps/icedtea-stage1.stamp: stamps/icedtea-boot.stamp From mathieu.malaterre at gmail.com Mon Dec 7 09:16:06 2009 From: mathieu.malaterre at gmail.com (Mathieu Malaterre) Date: Mon, 7 Dec 2009 18:16:06 +0100 Subject: State of openjdk on hppa In-Reply-To: <4B1D338C.703@ubuntu.com> References: <4B1D338C.703@ubuntu.com> Message-ID: On Mon, Dec 7, 2009 at 5:55 PM, Matthias Klose wrote: > On 07.12.2009 14:36, Onkar Shinde wrote: >> >> Hi, >> >> java3d currently fails to build on hppa because it uses some sun >> specific APIs and default-jdk is GCJ on hppa. A solution for this >> could be to use openjdk-6-jdk build-dep instead of default-jdk. But >> the problem is that there are no openjdk-* packages on hppa. >> >> Does anyone know if there is any effort going on to make openjdk-* >> packages available on hppa. If not then I will have to make java3d a >> !hppa package. > > openjdk builds on hppa, but doesn't run (yet). Andrew Haley once debugged it > and found out at least one things which would need to be fixed: the > assumption in the C++ interpreter that the stack always grows downwards, and > not upwards as on hppa. > > please could one of the hotspot developers sched some light on this, how > easy this might to be fix, and if there are other assumptions? [hijacking thread] Switching to openjdk would also work around the following issue: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40816 This means that VTK 5.4 will NOT FTBS on hppa once switched to openjdk :) Thanks ! -- Mathieu From gbenson at icedtea.classpath.org Tue Dec 8 01:37:45 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 09:37:45 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset e7ca0bef8351 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e7ca0bef8351 author: Gary Benson date: Tue Dec 08 09:42:47 2009 +0000 2009-12-08 Gary Benson * Makefile.am (ICEDTEA_CORE_BUILD): Removed. (ICEDTEA_ZERO_BUILD): Set to "yes" instead of "true". (ICEDTEA_ENV): Removed ICEDTEA_CORE_BUILD, replaced ICEDTEA_ZERO_BUILD with ZERO_BUILD, and replaced ZERO_BITSPERWORD with ARCH_DATA_MODEL. (ICEDTEA_ENV_ECJ): Likewise. (stamps/ports.stamp): Updated paths, and don't make jvm.cfg or ergo_$arch.c for Zero. (ICEDTEA_PATCHES): Added new patches and removed old ones. * acinclude.m4 (ENABLE_ZERO_BUILD): Removed old CORE_BUILD stuff. (SET_CORE_OR_SHARK_BUILD): Replaced with... (SET_SHARK_BUILD): New macro. * configure.ac: Use SET_SHARK_BUILD before ENABLE_ZERO_BUILD in place of SET_CORE_OR_SHARK_BUILD after it. * patches/zero/6890308.patch: New file. * patches/zero/6891677.patch: Likewise. * patches/icedtea-core-build.patch: Removed. * patches/icedtea-core-build-hotspot.patch: Likewise. * patches/icedtea-linker-options.patch: Likewise. * patches/icedtea-signature-iterator.patch: Likewise. * patches/icedtea-static-libstdc++.patch: Likewise. * patches/icedtea-zero.patch: Likewise. * patches/icedtea-zero-build.patch: Likewise. * patches/icedtea-zero-build-hotspot.patch: Likewise. * patches/ecj/icedtea-hotspot.patch: Updated. * patches/icedtea-shark-build.patch: Likewise. * patches/icedtea-shark-build-hotspot.patch: Likewise. * patches/icedtea-arch.patch: Fixed up. * patches/icedtea-libraries.patch: Likewise. * patches/icedtea-shark.patch: Likewise. * ports/hotspot/build/linux/makefiles/shark.make: Moved to... * ports/hotspot/make/linux/makefiles/shark.make: New file. * ports/hotspot/build/linux/makefiles/zero.make: Moved to... * ports/hotspot/make/linux/makefiles/zeroshark.make: New file. * ports/hotspot/make/linux/makefiles/zero.make: New file. * ports/hotspot/src/share/vm/includeDB_zero: Likewise. * ports/hotspot/make/linux/platform_zero.in: Removed. * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Sync with upstream. * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Fixed up. diffstat: 34 files changed, 1711 insertions(+), 1261 deletions(-) ChangeLog | 60 + Makefile.am | 36 acinclude.m4 | 132 +-- configure.ac | 2 generated/sun/misc/Version.java | 4 patches/ecj/icedtea-hotspot.patch | 16 patches/icedtea-arch.patch | 10 patches/icedtea-core-build-hotspot.patch | 108 -- patches/icedtea-core-build.patch | 46 - patches/icedtea-libraries.patch | 4 patches/icedtea-linker-options.patch | 48 - patches/icedtea-shark-build-hotspot.patch | 207 +++-- patches/icedtea-shark-build.patch | 49 - patches/icedtea-shark.patch | 20 patches/icedtea-signature-iterator.patch | 44 - patches/icedtea-static-libstdc++.patch | 16 patches/icedtea-zero-build-hotspot.patch | 129 --- patches/icedtea-zero-build.patch | 205 ----- patches/icedtea-zero.patch | 229 ----- patches/zero/6890308.patch | 760 +++++++++++++++++++ patches/zero/6891677.patch | 418 ++++++++++ platform_zero.in | 17 ports/hotspot/build/linux/makefiles/shark.make | 32 ports/hotspot/build/linux/makefiles/zero.make | 74 - ports/hotspot/make/linux/makefiles/shark.make | 32 ports/hotspot/make/linux/makefiles/zero.make | 32 ports/hotspot/make/linux/makefiles/zeroshark.make | 76 + ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 5 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 93 +- ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 4 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 5 ports/hotspot/src/cpu/zero/vm/globals_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 2 ports/hotspot/src/share/vm/includeDB_zero | 55 + diffs (truncated from 3535 to 500 lines): diff -r c18ada9920f7 -r e7ca0bef8351 ChangeLog --- a/ChangeLog Mon Dec 07 11:11:29 2009 -0500 +++ b/ChangeLog Tue Dec 08 09:42:47 2009 +0000 @@ -1,3 +1,63 @@ 2009-12-07 Gary Benson + + * Makefile.am + (ICEDTEA_CORE_BUILD): Removed. + (ICEDTEA_ZERO_BUILD): Set to "yes" instead of "true". + (ICEDTEA_ENV): Removed ICEDTEA_CORE_BUILD, replaced + ICEDTEA_ZERO_BUILD with ZERO_BUILD, and replaced ZERO_BITSPERWORD + with ARCH_DATA_MODEL. + (ICEDTEA_ENV_ECJ): Likewise. + (stamps/ports.stamp): Updated paths, and don't make jvm.cfg or + ergo_$arch.c for Zero. + (ICEDTEA_PATCHES): Added new patches and removed old ones. + + * acinclude.m4 + (ENABLE_ZERO_BUILD): Removed old CORE_BUILD stuff. + (SET_CORE_OR_SHARK_BUILD): Replaced with... + (SET_SHARK_BUILD): New macro. + + * configure.ac: Use SET_SHARK_BUILD before ENABLE_ZERO_BUILD in + place of SET_CORE_OR_SHARK_BUILD after it. + + * patches/zero/6890308.patch: New file. + * patches/zero/6891677.patch: Likewise. + + * patches/icedtea-core-build.patch: Removed. + * patches/icedtea-core-build-hotspot.patch: Likewise. + * patches/icedtea-linker-options.patch: Likewise. + * patches/icedtea-signature-iterator.patch: Likewise. + * patches/icedtea-static-libstdc++.patch: Likewise. + * patches/icedtea-zero.patch: Likewise. + * patches/icedtea-zero-build.patch: Likewise. + * patches/icedtea-zero-build-hotspot.patch: Likewise. + + * patches/ecj/icedtea-hotspot.patch: Updated. + * patches/icedtea-shark-build.patch: Likewise. + * patches/icedtea-shark-build-hotspot.patch: Likewise. + + * patches/icedtea-arch.patch: Fixed up. + * patches/icedtea-libraries.patch: Likewise. + * patches/icedtea-shark.patch: Likewise. + + * ports/hotspot/build/linux/makefiles/shark.make: Moved to... + * ports/hotspot/make/linux/makefiles/shark.make: New file. + + * ports/hotspot/build/linux/makefiles/zero.make: Moved to... + * ports/hotspot/make/linux/makefiles/zeroshark.make: New file. + + * ports/hotspot/make/linux/makefiles/zero.make: New file. + * ports/hotspot/src/share/vm/includeDB_zero: Likewise. + + * ports/hotspot/make/linux/platform_zero.in: Removed. + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Sync with upstream. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Fixed up. + 2009-12-07 Gary Benson PR icedtea/416: diff -r c18ada9920f7 -r e7ca0bef8351 Makefile.am --- a/Makefile.am Mon Dec 07 11:11:29 2009 -0500 +++ b/Makefile.am Tue Dec 08 09:42:47 2009 +0000 @@ -145,13 +145,8 @@ ICEDTEA_ENDORSED_DIR = \ $(ICEDTEA_BOOT_DIR)/lib/endorsed JDK_UPDATE_VERSION = 0 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) -if CORE_BUILD - ICEDTEA_CORE_BUILD = yes -else - ICEDTEA_CORE_BUILD = -endif if ZERO_BUILD - ICEDTEA_ZERO_BUILD = yes + ICEDTEA_ZERO_BUILD = true else ICEDTEA_ZERO_BUILD = endif @@ -180,11 +175,10 @@ ICEDTEA_ENV = \ ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ - ICEDTEA_CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ - ICEDTEA_ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -265,11 +259,10 @@ ICEDTEA_ENV_ECJ = \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ GENSRCDIR="$(abs_top_builddir)/generated" \ - ICEDTEA_CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ - ICEDTEA_ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -491,21 +484,20 @@ endif # Copy ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp - for target in $(abs_top_srcdir)/ports/hotspot/build/*/makefiles/* \ + for target in $(abs_top_srcdir)/ports/hotspot/make/*/platform_zero.in \ + $(abs_top_srcdir)/ports/hotspot/make/*/makefiles/* \ $(abs_top_srcdir)/ports/hotspot/tools \ $(abs_top_srcdir)/ports/hotspot/src/*cpu/* \ $(abs_top_srcdir)/ports/hotspot/src/share/vm/*; do \ link=$$(dirname $$target | sed 's/^.*ports/openjdk/'|sed "s#hotspot/build#hotspot/$(HOTSPOT_MAKE_DIR)#"); \ cp -rv $$target $$link; \ done - ln -sf $(abs_top_builddir)/platform_zero openjdk/hotspot/$(HOTSPOT_MAKE_DIR)/linux - if ! test "x$(ICEDTEA_CORE_BUILD)$(ICEDTEA_SHARK_BUILD)$(WITH_CACAO)" \ - = "xno" ; then \ + if ! test "x$(WITH_CACAO)" = "xno" ; then \ mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ ln -sf $(abs_top_builddir)/jvm.cfg \ openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg ; \ fi - if ! test "x$(ICEDTEA_ZERO_BUILD)$(WITH_CACAO)" = "xno"; then \ + if ! test "x$(WITH_CACAO)" = "xno"; then \ ln -sf $(abs_top_builddir)/ergo.c \ openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c; \ fi @@ -515,10 +507,10 @@ ICEDTEA_FSG_PATCHES = ICEDTEA_FSG_PATCHES = ICEDTEA_PATCHES = \ + patches/zero/6890308.patch \ + patches/zero/6891677.patch \ patches/icedtea-notice-safepoints.patch \ - patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ - patches/icedtea-zero.patch \ patches/icedtea-ia64-bugfix.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ @@ -544,15 +536,9 @@ ICEDTEA_PATCHES = \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ - patches/icedtea-core-build.patch \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-lcms.patch \ - patches/icedtea-core-build-hotspot.patch \ - patches/icedtea-linker-options.patch \ - patches/icedtea-static-libstdc++.patch \ patches/icedtea-timerqueue.patch \ - patches/icedtea-zero-build.patch \ - patches/icedtea-zero-build-hotspot.patch \ patches/icedtea-print-lsb-release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ diff -r c18ada9920f7 -r e7ca0bef8351 acinclude.m4 --- a/acinclude.m4 Mon Dec 07 11:11:29 2009 -0500 +++ b/acinclude.m4 Tue Dec 08 09:42:47 2009 +0000 @@ -691,82 +691,78 @@ AC_DEFUN([ENABLE_ZERO_BUILD], esac ], [ - case "${host}" in - i?86-*-*) ;; - sparc*-*-*) ;; - x86_64-*-*) ;; - *) - if test "x${WITH_CACAO}" != xno; then - use_zero=no - else - use_zero=yes - fi - ;; - esac + if test "x${use_shark}" = "xyes"; then + use_zero=yes; + else + case "${host}" in + i?86-*-*) ;; + sparc*-*-*) ;; + x86_64-*-*) ;; + *) + if test "x${WITH_CACAO}" != xno; then + use_zero=no + else + use_zero=yes + fi + ;; + esac + fi ]) AC_MSG_RESULT($use_zero) AM_CONDITIONAL(ZERO_BUILD, test "x${use_zero}" = xyes) - ZERO_LIBARCH= - ZERO_BITSPERWORD= - ZERO_ENDIANNESS= - ZERO_ARCHDEF= - ZERO_ARCHFLAG= - if test "x${use_zero}" = xyes; then - ZERO_LIBARCH="${INSTALL_ARCH_DIR}" - dnl can't use AC_CHECK_SIZEOF on multilib - case "${ZERO_LIBARCH}" in - i386|ppc|s390|sparc) - ZERO_BITSPERWORD=32 - ;; - amd64|ppc64|s390x|sparc64) - ZERO_BITSPERWORD=64 - ;; - *) - AC_CHECK_SIZEOF(void *) - ZERO_BITSPERWORD=`expr "${ac_cv_sizeof_void_p}" "*" 8` - esac - AC_C_BIGENDIAN([ZERO_ENDIANNESS="big"], [ZERO_ENDIANNESS="little"]) - case "${ZERO_LIBARCH}" in - i386) - ZERO_ARCHDEF="IA32" - ;; - ppc*) - ZERO_ARCHDEF="PPC" - ;; - s390*) - ZERO_ARCHDEF="S390" - ;; - sparc*) - ZERO_ARCHDEF="SPARC" - ;; - *) - ZERO_ARCHDEF=`echo ${ZERO_LIBARCH} | tr a-z A-Z` - esac - dnl multilib machines need telling which mode to build for - case "${ZERO_LIBARCH}" in - i386|ppc|sparc) - ZERO_ARCHFLAG="-m32" - ;; - s390) - ZERO_ARCHFLAG="-m31" - ;; - amd64|ppc64|s390x|sparc64) - ZERO_ARCHFLAG="-m64" - ;; - esac - fi + ZERO_LIBARCH="${INSTALL_ARCH_DIR}" + dnl can't use AC_CHECK_SIZEOF on multilib + case "${ZERO_LIBARCH}" in + i386|ppc|s390|sparc) + ZERO_BITSPERWORD=32 + ;; + amd64|ppc64|s390x|sparc64) + ZERO_BITSPERWORD=64 + ;; + *) + AC_CHECK_SIZEOF(void *) + ZERO_BITSPERWORD=`expr "${ac_cv_sizeof_void_p}" "*" 8` + esac + AC_C_BIGENDIAN([ZERO_ENDIANNESS="big"], [ZERO_ENDIANNESS="little"]) + case "${ZERO_LIBARCH}" in + i386) + ZERO_ARCHDEF="IA32" + ;; + ppc*) + ZERO_ARCHDEF="PPC" + ;; + s390*) + ZERO_ARCHDEF="S390" + ;; + sparc*) + ZERO_ARCHDEF="SPARC" + ;; + *) + ZERO_ARCHDEF=`echo ${ZERO_LIBARCH} | tr a-z A-Z` + esac + dnl multilib machines need telling which mode to build for + case "${ZERO_LIBARCH}" in + i386|ppc|sparc) + ZERO_ARCHFLAG="-m32" + ;; + s390) + ZERO_ARCHFLAG="-m31" + ;; + amd64|ppc64|s390x|sparc64) + ZERO_ARCHFLAG="-m64" + ;; + esac AC_SUBST(ZERO_LIBARCH) AC_SUBST(ZERO_BITSPERWORD) AC_SUBST(ZERO_ENDIANNESS) AC_SUBST(ZERO_ARCHDEF) AC_SUBST(ZERO_ARCHFLAG) - AC_CONFIG_FILES([platform_zero]) AC_CONFIG_FILES([jvm.cfg]) AC_CONFIG_FILES([ergo.c]) ]) -AC_DEFUN([SET_CORE_OR_SHARK_BUILD], +AC_DEFUN([SET_SHARK_BUILD], [ AC_MSG_CHECKING(whether to use the Shark JIT) shark_selected=no @@ -781,20 +777,12 @@ AC_DEFUN([SET_CORE_OR_SHARK_BUILD], esac ]) - use_core=no use_shark=no - if test "x${WITH_CACAO}" != "xno"; then - use_core=yes - elif test "x${use_zero}" = "xyes"; then - if test "x${shark_selected}" = "xyes"; then + if test "x${shark_selected}" = "xyes"; then use_shark=yes - else - use_core=yes - fi fi AC_MSG_RESULT($use_shark) - AM_CONDITIONAL(CORE_BUILD, test "x${use_core}" = xyes) AM_CONDITIONAL(SHARK_BUILD, test "x${use_shark}" = xyes) ]) diff -r c18ada9920f7 -r e7ca0bef8351 configure.ac --- a/configure.ac Mon Dec 07 11:11:29 2009 -0500 +++ b/configure.ac Tue Dec 08 09:42:47 2009 +0000 @@ -245,8 +245,8 @@ AC_CHECK_WITH_CACAO_SRC_ZIP AC_CHECK_WITH_CACAO_SRC_ZIP AC_CHECK_WITH_CACAO_SRC_DIR ENABLE_OPTIMIZATIONS +SET_SHARK_BUILD ENABLE_ZERO_BUILD -SET_CORE_OR_SHARK_BUILD ENABLE_HG AC_CHECK_WITH_HG_REVISION diff -r c18ada9920f7 -r e7ca0bef8351 generated/sun/misc/Version.java --- a/generated/sun/misc/Version.java Mon Dec 07 11:11:29 2009 -0500 +++ b/generated/sun/misc/Version.java Tue Dec 08 09:42:47 2009 +0000 @@ -39,10 +39,10 @@ public class Version { "OpenJDK Runtime Environment"; private static final String java_runtime_version = - "1.6.0_0-b16"; + "1.6.0_0-b17"; private static final String jdk_derivative_name = - "IcedTea6 1.5-r84a527d1a06c"; + "IcedTea6 1.7pre-r046c77dadfb3"; private static final String distro_package_version = ""; diff -r c18ada9920f7 -r e7ca0bef8351 patches/ecj/icedtea-hotspot.patch --- a/patches/ecj/icedtea-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/ecj/icedtea-hotspot.patch Tue Dec 08 09:42:47 2009 +0000 @@ -1,7 +1,7 @@ diff -Nru openjdk-ecj.orig/hotspot/make/ diff -Nru openjdk-ecj.orig/hotspot/make/linux/Makefile openjdk-ecj/hotspot/make/linux/Makefile --- openjdk-ecj.orig/hotspot/make/linux/Makefile 2008-10-24 10:16:06.000000000 +0100 +++ openjdk-ecj/hotspot/make/linux/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -263,28 +263,24 @@ +@@ -287,42 +287,36 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) @@ -30,6 +30,20 @@ diff -Nru openjdk-ecj.orig/hotspot/make/ ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif + + $(TARGETS_ZERO): $(SUBDIRS_ZERO) + cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install + endif + + $(TARGETS_SHARK): $(SUBDIRS_SHARK) + cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install + endif 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 2008-10-24 10:16:06.000000000 +0100 +++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2008-10-24 13:32:48.000000000 +0100 diff -r c18ada9920f7 -r e7ca0bef8351 patches/icedtea-arch.patch --- a/patches/icedtea-arch.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-arch.patch Tue Dec 08 09:42:47 2009 +0000 @@ -90,10 +90,10 @@ CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 --- openjdk/jdk/make/common/shared/Compiler-gcc.gmk.orig 2008-10-15 17:04:19.000000000 +0200 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2008-10-15 17:11:28.000000000 +0200 -@@ -75,28 +75,56 @@ - REQUIRED_CC_VER = 3.2 - REQUIRED_GCC_VER = 3.2.* - else +@@ -70,28 +70,56 @@ + else + CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) + endif - ifneq ("$(findstring sparc,$(ARCH))", "") - # sparc or sparcv9 - REQUIRED_CC_VER = 4.0 @@ -155,8 +155,8 @@ + REQUIRED_CC_VER = 4.0 + REQUIRED_GCC_VER = 4.0.* endif - endif # Option used to create a shared library + SHARED_LIBRARY_FLAG = -shared -mimpure-text --- openjdk/jdk/make/common/shared/Platform.gmk.orig 2008-10-15 17:04:19.000000000 +0200 +++ openjdk/jdk/make/common/shared/Platform.gmk 2008-10-15 17:13:49.000000000 +0200 @@ -237,9 +237,40 @@ diff -r c18ada9920f7 -r e7ca0bef8351 patches/icedtea-core-build-hotspot.patch --- a/patches/icedtea-core-build-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 -@@ -97,6 +97,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -111,3 +112,4 @@ - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 -@@ -91,6 +91,15 @@ - all_debug: jvmg jvmg1 jvmgkernel docs export_debug - all_optimized: optimized optimized1 optimizedkernel docs export_optimized - -+# Core (non-compiler) targets made available with this Makefile -+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore -+ -+allcore: all_productcore all_fastdebugcore -+all_productcore: productcore docs export_product -+all_fastdebugcore: fastdebugcore docs export_fastdebug -+all_debugcore: jvmgcore docs export_debug -+all_optimizedcore: optimizedcore docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -113,6 +122,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) - -+$(CORE_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -159,6 +172,12 @@ - $(MAKE_ARGS) $(VM_TARGET) - endif - -+generic_buildcore: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -205,13 +224,21 @@ - XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt - DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs - C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 -+ifdef ICEDTEA_CORE_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core -+else - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 -+endif - KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel - C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) - C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) From gbenson at redhat.com Tue Dec 8 01:45:08 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 8 Dec 2009 09:45:08 +0000 Subject: Zero patch rearrangement in icedtea6 In-Reply-To: <20091204183302.GB17799@redhat.com> References: <20091204183302.GB17799@redhat.com> Message-ID: <20091208094508.GA3422@redhat.com> Hi all, This commit represents the changes documented below. Cheers, Gary Gary Benson wrote: > Hi all, > > At some point Zero is going to end up in a HSX tarball, and no doubt > shortly afterwards in icedtea6. I've been working on a refactoring > that will make the transition easier to manage. > > The attached patch replaces the various individual Zero patches with > larger patches numbered with the Sun bug id that they were committed > to OpenJDK7 with. This means that, once that bug's code ends up in > an HSX tarball, we can simply remove one patch to fix IcedTea. It > also means that, if OpenJDK 6 is about to rebase on a new HotSpot, > we have patches ready made for the non-HotSpot Zero stuff that needs > to be in that tarball. > > As well as the above, the attached patch upgrades icedtea6's Zero > from the original, IcedTea way of building Zero to the new, much > nicer OpenJDK7 way of doing it. This means that dependencies > between header files are better tracked, thanks to the new > includeDB, and also that there are now no differences between > icedtea6's Zero and OpenJDK7's except for Ed's interpreter and the > odd little bit here and there that's required for the newer HotSpot. > > I'm currently testing this with a bunch of different configurations > (amd64/zero, ppc/shark, ppc64/hs16/zero and s390x/zero). Could > people please test this patch on the configurations they care about, > to make sure I didn't break anything. > > Thanks (and have a good weekend!) > Gary > > -- > http://gbenson.net/ -------------- next part -------------- diff -r c18ada9920f7 ChangeLog --- a/ChangeLog Mon Dec 07 11:11:29 2009 -0500 +++ b/ChangeLog Tue Dec 08 09:36:55 2009 +0000 @@ -1,3 +1,63 @@ +2009-12-08 Gary Benson + + * Makefile.am + (ICEDTEA_CORE_BUILD): Removed. + (ICEDTEA_ZERO_BUILD): Set to "yes" instead of "true". + (ICEDTEA_ENV): Removed ICEDTEA_CORE_BUILD, replaced + ICEDTEA_ZERO_BUILD with ZERO_BUILD, and replaced ZERO_BITSPERWORD + with ARCH_DATA_MODEL. + (ICEDTEA_ENV_ECJ): Likewise. + (stamps/ports.stamp): Updated paths, and don't make jvm.cfg or + ergo_$arch.c for Zero. + (ICEDTEA_PATCHES): Added new patches and removed old ones. + + * acinclude.m4 + (ENABLE_ZERO_BUILD): Removed old CORE_BUILD stuff. + (SET_CORE_OR_SHARK_BUILD): Replaced with... + (SET_SHARK_BUILD): New macro. + + * configure.ac: Use SET_SHARK_BUILD before ENABLE_ZERO_BUILD in + place of SET_CORE_OR_SHARK_BUILD after it. + + * patches/zero/6890308.patch: New file. + * patches/zero/6891677.patch: Likewise. + + * patches/icedtea-core-build.patch: Removed. + * patches/icedtea-core-build-hotspot.patch: Likewise. + * patches/icedtea-linker-options.patch: Likewise. + * patches/icedtea-signature-iterator.patch: Likewise. + * patches/icedtea-static-libstdc++.patch: Likewise. + * patches/icedtea-zero.patch: Likewise. + * patches/icedtea-zero-build.patch: Likewise. + * patches/icedtea-zero-build-hotspot.patch: Likewise. + + * patches/ecj/icedtea-hotspot.patch: Updated. + * patches/icedtea-shark-build.patch: Likewise. + * patches/icedtea-shark-build-hotspot.patch: Likewise. + + * patches/icedtea-arch.patch: Fixed up. + * patches/icedtea-libraries.patch: Likewise. + * patches/icedtea-shark.patch: Likewise. + + * ports/hotspot/build/linux/makefiles/shark.make: Moved to... + * ports/hotspot/make/linux/makefiles/shark.make: New file. + + * ports/hotspot/build/linux/makefiles/zero.make: Moved to... + * ports/hotspot/make/linux/makefiles/zeroshark.make: New file. + + * ports/hotspot/make/linux/makefiles/zero.make: New file. + * ports/hotspot/src/share/vm/includeDB_zero: Likewise. + + * ports/hotspot/make/linux/platform_zero.in: Removed. + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Sync with upstream. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Fixed up. + 2009-12-07 Gary Benson PR icedtea/416: diff -r c18ada9920f7 Makefile.am --- a/Makefile.am Mon Dec 07 11:11:29 2009 -0500 +++ b/Makefile.am Tue Dec 08 09:36:55 2009 +0000 @@ -145,13 +145,8 @@ $(ICEDTEA_BOOT_DIR)/lib/endorsed JDK_UPDATE_VERSION = 0 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) -if CORE_BUILD - ICEDTEA_CORE_BUILD = yes -else - ICEDTEA_CORE_BUILD = -endif if ZERO_BUILD - ICEDTEA_ZERO_BUILD = yes + ICEDTEA_ZERO_BUILD = true else ICEDTEA_ZERO_BUILD = endif @@ -180,11 +175,10 @@ ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ - ICEDTEA_CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ - ICEDTEA_ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -265,11 +259,10 @@ CLASSPATH="" \ LD_LIBRARY_PATH="" \ GENSRCDIR="$(abs_top_builddir)/generated" \ - ICEDTEA_CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ - ICEDTEA_ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -491,21 +484,20 @@ # Copy ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp - for target in $(abs_top_srcdir)/ports/hotspot/build/*/makefiles/* \ + for target in $(abs_top_srcdir)/ports/hotspot/make/*/platform_zero.in \ + $(abs_top_srcdir)/ports/hotspot/make/*/makefiles/* \ $(abs_top_srcdir)/ports/hotspot/tools \ $(abs_top_srcdir)/ports/hotspot/src/*cpu/* \ $(abs_top_srcdir)/ports/hotspot/src/share/vm/*; do \ link=$$(dirname $$target | sed 's/^.*ports/openjdk/'|sed "s#hotspot/build#hotspot/$(HOTSPOT_MAKE_DIR)#"); \ cp -rv $$target $$link; \ done - ln -sf $(abs_top_builddir)/platform_zero openjdk/hotspot/$(HOTSPOT_MAKE_DIR)/linux - if ! test "x$(ICEDTEA_CORE_BUILD)$(ICEDTEA_SHARK_BUILD)$(WITH_CACAO)" \ - = "xno" ; then \ + if ! test "x$(WITH_CACAO)" = "xno" ; then \ mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ ln -sf $(abs_top_builddir)/jvm.cfg \ openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg ; \ fi - if ! test "x$(ICEDTEA_ZERO_BUILD)$(WITH_CACAO)" = "xno"; then \ + if ! test "x$(WITH_CACAO)" = "xno"; then \ ln -sf $(abs_top_builddir)/ergo.c \ openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c; \ fi @@ -515,10 +507,10 @@ ICEDTEA_FSG_PATCHES = ICEDTEA_PATCHES = \ + patches/zero/6890308.patch \ + patches/zero/6891677.patch \ patches/icedtea-notice-safepoints.patch \ - patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ - patches/icedtea-zero.patch \ patches/icedtea-ia64-bugfix.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ @@ -544,15 +536,9 @@ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ - patches/icedtea-core-build.patch \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-lcms.patch \ - patches/icedtea-core-build-hotspot.patch \ - patches/icedtea-linker-options.patch \ - patches/icedtea-static-libstdc++.patch \ patches/icedtea-timerqueue.patch \ - patches/icedtea-zero-build.patch \ - patches/icedtea-zero-build-hotspot.patch \ patches/icedtea-print-lsb-release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ diff -r c18ada9920f7 acinclude.m4 --- a/acinclude.m4 Mon Dec 07 11:11:29 2009 -0500 +++ b/acinclude.m4 Tue Dec 08 09:36:55 2009 +0000 @@ -691,82 +691,78 @@ esac ], [ - case "${host}" in - i?86-*-*) ;; - sparc*-*-*) ;; - x86_64-*-*) ;; - *) - if test "x${WITH_CACAO}" != xno; then - use_zero=no - else - use_zero=yes - fi - ;; - esac + if test "x${use_shark}" = "xyes"; then + use_zero=yes; + else + case "${host}" in + i?86-*-*) ;; + sparc*-*-*) ;; + x86_64-*-*) ;; + *) + if test "x${WITH_CACAO}" != xno; then + use_zero=no + else + use_zero=yes + fi + ;; + esac + fi ]) AC_MSG_RESULT($use_zero) AM_CONDITIONAL(ZERO_BUILD, test "x${use_zero}" = xyes) - ZERO_LIBARCH= - ZERO_BITSPERWORD= - ZERO_ENDIANNESS= - ZERO_ARCHDEF= - ZERO_ARCHFLAG= - if test "x${use_zero}" = xyes; then - ZERO_LIBARCH="${INSTALL_ARCH_DIR}" - dnl can't use AC_CHECK_SIZEOF on multilib - case "${ZERO_LIBARCH}" in - i386|ppc|s390|sparc) - ZERO_BITSPERWORD=32 - ;; - amd64|ppc64|s390x|sparc64) - ZERO_BITSPERWORD=64 - ;; - *) - AC_CHECK_SIZEOF(void *) - ZERO_BITSPERWORD=`expr "${ac_cv_sizeof_void_p}" "*" 8` - esac - AC_C_BIGENDIAN([ZERO_ENDIANNESS="big"], [ZERO_ENDIANNESS="little"]) - case "${ZERO_LIBARCH}" in - i386) - ZERO_ARCHDEF="IA32" - ;; - ppc*) - ZERO_ARCHDEF="PPC" - ;; - s390*) - ZERO_ARCHDEF="S390" - ;; - sparc*) - ZERO_ARCHDEF="SPARC" - ;; - *) - ZERO_ARCHDEF=`echo ${ZERO_LIBARCH} | tr a-z A-Z` - esac - dnl multilib machines need telling which mode to build for - case "${ZERO_LIBARCH}" in - i386|ppc|sparc) - ZERO_ARCHFLAG="-m32" - ;; - s390) - ZERO_ARCHFLAG="-m31" - ;; - amd64|ppc64|s390x|sparc64) - ZERO_ARCHFLAG="-m64" - ;; - esac - fi + ZERO_LIBARCH="${INSTALL_ARCH_DIR}" + dnl can't use AC_CHECK_SIZEOF on multilib + case "${ZERO_LIBARCH}" in + i386|ppc|s390|sparc) + ZERO_BITSPERWORD=32 + ;; + amd64|ppc64|s390x|sparc64) + ZERO_BITSPERWORD=64 + ;; + *) + AC_CHECK_SIZEOF(void *) + ZERO_BITSPERWORD=`expr "${ac_cv_sizeof_void_p}" "*" 8` + esac + AC_C_BIGENDIAN([ZERO_ENDIANNESS="big"], [ZERO_ENDIANNESS="little"]) + case "${ZERO_LIBARCH}" in + i386) + ZERO_ARCHDEF="IA32" + ;; + ppc*) + ZERO_ARCHDEF="PPC" + ;; + s390*) + ZERO_ARCHDEF="S390" + ;; + sparc*) + ZERO_ARCHDEF="SPARC" + ;; + *) + ZERO_ARCHDEF=`echo ${ZERO_LIBARCH} | tr a-z A-Z` + esac + dnl multilib machines need telling which mode to build for + case "${ZERO_LIBARCH}" in + i386|ppc|sparc) + ZERO_ARCHFLAG="-m32" + ;; + s390) + ZERO_ARCHFLAG="-m31" + ;; + amd64|ppc64|s390x|sparc64) + ZERO_ARCHFLAG="-m64" + ;; + esac AC_SUBST(ZERO_LIBARCH) AC_SUBST(ZERO_BITSPERWORD) AC_SUBST(ZERO_ENDIANNESS) AC_SUBST(ZERO_ARCHDEF) AC_SUBST(ZERO_ARCHFLAG) - AC_CONFIG_FILES([platform_zero]) AC_CONFIG_FILES([jvm.cfg]) AC_CONFIG_FILES([ergo.c]) ]) -AC_DEFUN([SET_CORE_OR_SHARK_BUILD], +AC_DEFUN([SET_SHARK_BUILD], [ AC_MSG_CHECKING(whether to use the Shark JIT) shark_selected=no @@ -781,20 +777,12 @@ esac ]) - use_core=no use_shark=no - if test "x${WITH_CACAO}" != "xno"; then - use_core=yes - elif test "x${use_zero}" = "xyes"; then - if test "x${shark_selected}" = "xyes"; then + if test "x${shark_selected}" = "xyes"; then use_shark=yes - else - use_core=yes - fi fi AC_MSG_RESULT($use_shark) - AM_CONDITIONAL(CORE_BUILD, test "x${use_core}" = xyes) AM_CONDITIONAL(SHARK_BUILD, test "x${use_shark}" = xyes) ]) diff -r c18ada9920f7 configure.ac --- a/configure.ac Mon Dec 07 11:11:29 2009 -0500 +++ b/configure.ac Tue Dec 08 09:36:55 2009 +0000 @@ -245,8 +245,8 @@ AC_CHECK_WITH_CACAO_SRC_ZIP AC_CHECK_WITH_CACAO_SRC_DIR ENABLE_OPTIMIZATIONS +SET_SHARK_BUILD ENABLE_ZERO_BUILD -SET_CORE_OR_SHARK_BUILD ENABLE_HG AC_CHECK_WITH_HG_REVISION diff -r c18ada9920f7 generated/sun/misc/Version.java --- a/generated/sun/misc/Version.java Mon Dec 07 11:11:29 2009 -0500 +++ b/generated/sun/misc/Version.java Tue Dec 08 09:36:55 2009 +0000 @@ -39,10 +39,10 @@ "OpenJDK Runtime Environment"; private static final String java_runtime_version = - "1.6.0_0-b16"; + "1.6.0_0-b17"; private static final String jdk_derivative_name = - "IcedTea6 1.5-r84a527d1a06c"; + "IcedTea6 1.7pre-r046c77dadfb3"; private static final String distro_package_version = ""; diff -r c18ada9920f7 patches/ecj/icedtea-hotspot.patch --- a/patches/ecj/icedtea-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/ecj/icedtea-hotspot.patch Tue Dec 08 09:36:55 2009 +0000 @@ -1,7 +1,7 @@ diff -Nru openjdk-ecj.orig/hotspot/make/linux/Makefile openjdk-ecj/hotspot/make/linux/Makefile --- openjdk-ecj.orig/hotspot/make/linux/Makefile 2008-10-24 10:16:06.000000000 +0100 +++ openjdk-ecj/hotspot/make/linux/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -263,28 +263,24 @@ +@@ -287,42 +287,36 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) @@ -30,6 +30,20 @@ ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif + + $(TARGETS_ZERO): $(SUBDIRS_ZERO) + cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install + endif + + $(TARGETS_SHARK): $(SUBDIRS_SHARK) + cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install + endif 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 2008-10-24 10:16:06.000000000 +0100 +++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2008-10-24 13:32:48.000000000 +0100 diff -r c18ada9920f7 patches/icedtea-arch.patch --- a/patches/icedtea-arch.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-arch.patch Tue Dec 08 09:36:55 2009 +0000 @@ -90,10 +90,10 @@ CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 --- openjdk/jdk/make/common/shared/Compiler-gcc.gmk.orig 2008-10-15 17:04:19.000000000 +0200 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2008-10-15 17:11:28.000000000 +0200 -@@ -75,28 +75,56 @@ - REQUIRED_CC_VER = 3.2 - REQUIRED_GCC_VER = 3.2.* +@@ -70,28 +70,56 @@ else + CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) + endif - ifneq ("$(findstring sparc,$(ARCH))", "") - # sparc or sparcv9 - REQUIRED_CC_VER = 4.0 @@ -155,8 +155,8 @@ + REQUIRED_CC_VER = 4.0 + REQUIRED_GCC_VER = 4.0.* endif - endif # Option used to create a shared library + SHARED_LIBRARY_FLAG = -shared -mimpure-text --- openjdk/jdk/make/common/shared/Platform.gmk.orig 2008-10-15 17:04:19.000000000 +0200 +++ openjdk/jdk/make/common/shared/Platform.gmk 2008-10-15 17:13:49.000000000 +0200 @@ -237,9 +237,40 @@ diff -r c18ada9920f7 patches/icedtea-core-build-hotspot.patch --- a/patches/icedtea-core-build-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 -@@ -97,6 +97,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -111,3 +112,4 @@ - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 -@@ -91,6 +91,15 @@ - all_debug: jvmg jvmg1 jvmgkernel docs export_debug - all_optimized: optimized optimized1 optimizedkernel docs export_optimized - -+# Core (non-compiler) targets made available with this Makefile -+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore -+ -+allcore: all_productcore all_fastdebugcore -+all_productcore: productcore docs export_product -+all_fastdebugcore: fastdebugcore docs export_fastdebug -+all_debugcore: jvmgcore docs export_debug -+all_optimizedcore: optimizedcore docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -113,6 +122,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) - -+$(CORE_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -159,6 +172,12 @@ - $(MAKE_ARGS) $(VM_TARGET) - endif - -+generic_buildcore: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -205,13 +224,21 @@ - XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt - DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs - C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 -+ifdef ICEDTEA_CORE_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core -+else - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 -+endif - KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel - C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) - C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) - KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) - - # Misc files and generated files need to come from C1 or C2 area -+ifdef ICEDTEA_CORE_BUILD -+ MISC_DIR=$(C2_DIR) -+ GEN_DIR=$(C2_BASE_DIR)/generated -+else - ifeq ($(ARCH_DATA_MODEL), 32) - MISC_DIR=$(C1_DIR) - GEN_DIR=$(C1_BASE_DIR)/generated -@@ -219,6 +246,7 @@ - MISC_DIR=$(C2_DIR) - GEN_DIR=$(C2_BASE_DIR)/generated - endif -+endif - - # Bin files (windows) - ifeq ($(OSNAME),windows) -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp 2008-05-27 22:28:30.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-06-22 03:10:05.000000000 +0100 -@@ -94,8 +94,12 @@ - #ifdef TIERED - #define VMTYPE "Server" - #else -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+#if defined(COMPILER1) || defined(COMPILER2) -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") -+#else -+ #define VMTYPE "Core" -+#endif // COMPILER1 || COMPILER2 - #endif // TIERED - #endif // KERNEL - - diff -r c18ada9920f7 patches/icedtea-core-build.patch --- a/patches/icedtea-core-build.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -diff -ru openjdk.orig/control/make/make/hotspot-rules.gmk openjdk/control/make/hotspot-rules.gmk ---- openjdk.orig/control/make/make/hotspot-rules.gmk 2007-10-12 08:45:09.000000000 +0100 -+++ openjdk/make/hotspot-rules.gmk 2007-11-08 09:40:57.000000000 +0000 -@@ -72,6 +72,10 @@ - HOTSPOT_TARGET = all_fastdebug - endif - -+ifdef ICEDTEA_CORE_BUILD -+ HOTSPOT_TARGET := $(HOTSPOT_TARGET)core -+endif -+ - HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS) - HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) - HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH) -diff -ru openjdk.orig/jdk/make/java/redist/Makefile openjdk/jdk/make/java/redist/Makefile ---- openjdk.orig/jdk/make/java/redist/Makefile 2008-01-31 14:20:37.000000000 +0000 -+++ openjdk/jdk/make/java/redist/Makefile 2008-02-04 10:11:04.000000000 +0000 -@@ -95,9 +95,11 @@ endif # INCLUDE_SA - endif # INCLUDE_SA - - # Hotspot client is only available on 32-bit builds -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \ - $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt -+endif - endif - - ifeq ($(PLATFORM), windows) -@@ -161,6 +163,7 @@ ifeq ($(PLATFORM), solaris) - IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME) - endif - -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - - IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) -@@ -190,6 +193,8 @@ endif # 32bit solaris - endif # 32bit solaris - - endif # 32bit -+ -+endif # ICEDTEA_CORE_BUILD - - # NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows - diff -r c18ada9920f7 patches/icedtea-libraries.patch --- a/patches/icedtea-libraries.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-libraries.patch Tue Dec 08 09:36:55 2009 +0000 @@ -70,8 +70,8 @@ endif endif ifeq ($(PLATFORM), linux) -- LDFLAGS += -z origin -+ LDFLAGS += -lz -z origin +- LDFLAGS += -Wl,-z -Wl,origin ++ LDFLAGS += -lz -Wl,-z -Wl,origin LDFLAGS += -Wl,--allow-shlib-undefined LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli diff -r c18ada9920f7 patches/icedtea-linker-options.patch --- a/patches/icedtea-linker-options.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -diff -ru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk 2007-11-08 13:45:46.000000000 +0000 -+++ openjdk/corba/make/common/Defs-linux.gmk 2007-11-08 13:44:13.000000000 +0000 -@@ -196,7 +196,7 @@ - - EXTRA_LIBS += -lc - --LDFLAGS_DEFS_OPTION = -z defs -+LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs - LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) - - # -diff -ru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2007-11-08 13:45:46.000000000 +0000 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2007-11-08 13:43:52.000000000 +0000 -@@ -204,7 +204,7 @@ - - EXTRA_LIBS += -lc - --LDFLAGS_DEFS_OPTION = -z defs -+LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs - LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) - - # -diff -ru openjdk.orig/jdk/make/common/Program.gmk openjdk/jdk/make/common/Program.gmk ---- openjdk.orig/jdk/make/common/Program.gmk 2007-11-08 13:45:46.000000000 +0000 -+++ openjdk/jdk/make/common/Program.gmk 2007-11-08 13:42:44.000000000 +0000 -@@ -85,7 +85,7 @@ - endif - endif - ifeq ($(PLATFORM), linux) -- LDFLAGS += -lz -z origin -+ LDFLAGS += -lz -Wl,-z -Wl,origin - LDFLAGS += -Wl,--allow-shlib-undefined - LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli - LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli -diff -ru openjdk.orig/jdk/make/java/instrument/Makefile openjdk/jdk/make/java/instrument/Makefile ---- openjdk.orig/jdk/make/java/instrument/Makefile 2007-11-08 13:45:46.000000000 +0000 -+++ openjdk/jdk/make/java/instrument/Makefile 2007-11-08 13:42:25.000000000 +0000 -@@ -109,7 +109,7 @@ - LDFLAGS += -R \$$ORIGIN/jli - endif - ifeq ($(PLATFORM), linux) -- LDFLAGS += -z origin -+ LDFLAGS += -Wl,-z -Wl,origin - LDFLAGS += -Wl,--allow-shlib-undefined - LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli - endif diff -r c18ada9920f7 patches/icedtea-shark-build-hotspot.patch --- a/patches/icedtea-shark-build-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-shark-build-hotspot.patch Tue Dec 08 09:36:55 2009 +0000 @@ -1,9 +1,9 @@ diff -Nru openjdk.orig/hotspot/make/linux/Makefile openjdk/hotspot/make/linux/Makefile --- openjdk.orig/hotspot/make/linux/Makefile 2008-07-03 08:39:52.000000000 +0100 +++ openjdk/hotspot/make/linux/Makefile 2008-07-13 00:59:03.000000000 +0100 -@@ -158,6 +158,13 @@ - # profiledcore core __core/profiled - # productcore core __core/product +@@ -168,6 +168,13 @@ + # profiledzero zero __zero/profiled + # productzero zero __zero/product # +# debugshark shark __shark/debug +# fastdebugshark shark __shark/fastdebug @@ -15,61 +15,89 @@ # What you get with each target: # # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher -@@ -176,11 +183,13 @@ - SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) +@@ -191,12 +198,14 @@ SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) -+SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(BUILDARCH)_shark/,$(TARGETS)) + SUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS)) ++SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS)) TARGETS_C2 = $(TARGETS) TARGETS_C1 = $(addsuffix 1,$(TARGETS)) TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) TARGETS_CORE = $(addsuffix core,$(TARGETS)) + TARGETS_ZERO = $(addsuffix zero,$(TARGETS)) +TARGETS_SHARK = $(addsuffix shark,$(TARGETS)) BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) -@@ -196,6 +205,7 @@ - @echo " $(TARGETS_C2)" +@@ -213,6 +222,7 @@ @echo " $(TARGETS_C1)" @echo " $(TARGETS_CORE)" + @echo " $(TARGETS_ZERO)" + @echo " $(TARGETS_SHARK)" checks: check_os_version check_j2se_version -@@ -245,6 +255,10 @@ +@@ -266,6 +276,10 @@ $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks - $(BUILDTREE) VARIANT=core + $(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH) -+$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) ++$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero + $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks -+ $(BUILDTREE) VARIANT=shark ++ $(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH) + - # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME + platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in + $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@ - $(TARGETS_C2): $(SUBDIRS_C2) -@@ -275,6 +289,12 @@ - cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install +@@ -306,11 +320,19 @@ + cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install endif +$(TARGETS_SHARK): $(SUBDIRS_SHARK) -+ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) ++ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) ++ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma +ifdef INSTALL -+ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install ++ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install +endif + # Just build the tree, and nothing else: tree: $(SUBDIRS_C2) tree1: $(SUBDIRS_C1) -@@ -305,7 +325,7 @@ + treecore: $(SUBDIRS_CORE) + treezero: $(SUBDIRS_ZERO) ++treeshark: $(SUBDIRS_SHARK) + + # Doc target. This is the same for all build options. + # Hence create a docs directory beside ...$(ARCH)_[...] +@@ -327,20 +349,22 @@ + + zero: jvmgzero productzero + ++shark: jvmgshark productshark ++ + clean_docs: + rm -rf $(SUBDIR_DOCS) + +-clean_compiler1 clean_compiler2 clean_core clean_zero: ++clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark: + rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@) + +-clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_docs ++clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_docs + + include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make #------------------------------------------------------------------------------- --.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) -+.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_SHARK) - .PHONY: tree tree1 treecore - .PHONY: all compiler1 compiler2 core - .PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs +-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) +-.PHONY: tree tree1 treecore treezero +-.PHONY: all compiler1 compiler2 core zero +-.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero docs clean_docs ++.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK) ++.PHONY: tree tree1 treecore treezero treeshark ++.PHONY: all compiler1 compiler2 core zero shark ++.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs + .PHONY: checks check_os_version check_j2se_version diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make --- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:38:03.000000000 +0100 +++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:59:03.000000000 +0100 @@ -84,22 +112,6 @@ \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@ Makefile: $(BUILDTREE_MAKE) -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:38:03.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:59:03.000000000 +0100 -@@ -118,6 +118,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so - ifndef ICEDTEA_CORE_BUILD -+ifndef ICEDTEA_SHARK_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -133,3 +134,4 @@ - endif - endif - endif -+endif 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 2008-07-13 00:38:03.000000000 +0100 +++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-13 00:59:03.000000000 +0100 @@ -116,11 +128,11 @@ diff -Nru openjdk.orig/hotspot/make/linux/makefiles/top.make openjdk/hotspot/make/linux/makefiles/top.make --- openjdk.orig/hotspot/make/linux/makefiles/top.make 2008-07-03 08:39:53.000000000 +0100 +++ openjdk/hotspot/make/linux/makefiles/top.make 2008-07-13 00:59:03.000000000 +0100 -@@ -73,6 +73,7 @@ - Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 +@@ -75,6 +75,7 @@ Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2 -+Include_DBs/SHARK = $(Include_DBs/CORE) $(VM)/includeDB_shark + Include_DBs/ZERO = $(Include_DBs/CORE) $(VM)/includeDB_zero ++Include_DBs/SHARK = $(Include_DBs/ZERO) $(VM)/includeDB_shark Include_DBs = $(Include_DBs/$(TYPE)) Cached_plat = $(GENERATED)/platform.current @@ -158,13 +170,18 @@ diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile --- openjdk.orig/hotspot/make/Makefile 2008-07-13 00:38:02.000000000 +0100 +++ openjdk/hotspot/make/Makefile 2008-07-13 00:59:03.000000000 +0100 -@@ -103,6 +103,15 @@ - all_debugcore: jvmgcore docs export_debug - all_optimizedcore: optimizedcore docs export_optimized +@@ -85,6 +85,7 @@ + C2_VM_TARGETS=product fastdebug optimized jvmg + KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel + ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero ++SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark -+# Shark (C0) targets made available with this Makefile -+SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark -+ + # JDK directory list + JDK_DIRS=bin include jre lib demo +@@ -101,6 +102,12 @@ + all_debugzero: jvmgzero docs export_debug + all_optimizedzero: optimizedzero docs export_optimized + +allshark: all_productshark all_fastdebugshark +all_productshark: productshark docs export_product +all_fastdebugshark: fastdebugshark docs export_fastdebug @@ -174,18 +191,18 @@ # Do everything world: all create_jdk -@@ -129,6 +138,10 @@ +@@ -131,6 +138,10 @@ $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) + $(MAKE) VM_TARGET=$@ generic_buildzero $(ALT_OUT) +$(SHARK_VM_TARGETS): + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_buildshark $(ALT_OUT) + - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -181,6 +194,12 @@ + # Build compiler1 (client) rule, different for platforms + generic_build1: + $(MKDIR) -p $(OUTPUTDIR) +@@ -197,6 +208,12 @@ $(MAKE) -f $(ABS_OS_MAKEFILE) \ $(MAKE_ARGS) $(VM_TARGET) @@ -195,39 +212,55 @@ + $(MAKE) -f $(ABS_OS_MAKEFILE) \ + $(MAKE_ARGS) $(VM_TARGET) + - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -230,8 +249,12 @@ - ifdef ICEDTEA_CORE_BUILD - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core - else -+ifdef ICEDTEA_SHARK_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark -+else + # Export file rule + generic_export: $(EXPORT_LIST) + export_product: +@@ -228,15 +245,22 @@ C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 - endif -+endif KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel + ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero ++SHARK_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) -@@ -242,6 +265,10 @@ - MISC_DIR=$(C2_DIR) - GEN_DIR=$(C2_BASE_DIR)/generated + KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) + ZERO_DIR=$(ZERO_BASE_DIR)/$(VM_SUBDIR) ++SHARK_DIR=$(SHARK_BASE_DIR)/$(VM_SUBDIR) + + # Misc files and generated files need to come from C1 or C2 area + ifeq ($(ZERO_BUILD), true) ++ifdef ICEDTEA_SHARK_BUILD ++ MISC_DIR=$(SHARK_DIR) ++ GEN_DIR=$(SHARK_BASE_DIR)/generated ++else + MISC_DIR=$(ZERO_DIR) + GEN_DIR=$(ZERO_BASE_DIR)/generated ++endif else -+ifdef ICEDTEA_SHARK_BUILD -+ MISC_DIR=$(C2_DIR) -+ GEN_DIR=$(C2_BASE_DIR)/generated -+else ifeq ($(ARCH_DATA_MODEL), 32) MISC_DIR=$(C1_DIR) - GEN_DIR=$(C1_BASE_DIR)/generated -@@ -250,6 +277,7 @@ - GEN_DIR=$(C2_BASE_DIR)/generated - endif - endif -+endif - - # Bin files (windows) - ifeq ($(OSNAME),windows) - +@@ -290,10 +314,17 @@ + # Shared Library + ifneq ($(OSNAME),windows) + ifeq ($(ZERO_BUILD), true) ++ ifdef ICEDTEA_SHARK_BUILD ++$(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(SHARK_DIR)/%.so ++ $(install-file) ++$(EXPORT_SERVER_DIR)/%.so: $(SHARK_DIR)/%.so ++ $(install-file) ++ else + $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(ZERO_DIR)/%.so + $(install-file) + $(EXPORT_SERVER_DIR)/%.so: $(ZERO_DIR)/%.so + $(install-file) ++ endif + else + $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so + $(install-file) +@@ -345,6 +376,7 @@ + $(RM) -r $(C2_DIR) + $(RM) -r $(KERNEL_DIR) + $(RM) -r $(ZERO_DIR) ++ $(RM) -r $(SHARK_DIR) + clean_export: + $(RM) -r $(EXPORT_PATH) + clean_jdk: diff -r c18ada9920f7 patches/icedtea-shark-build.patch --- a/patches/icedtea-shark-build.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-shark-build.patch Tue Dec 08 09:36:55 2009 +0000 @@ -1,45 +1,16 @@ diff -r 8e41d25d7665 openjdk/control/make/make/hotspot-rules.gmk --- openjdk/control/make/make/hotspot-rules.gmk Fri Jun 20 13:26:10 2008 +0100 +++ openjdk/make/hotspot-rules.gmk Fri Jun 20 13:26:20 2008 +0100 -@@ -75,6 +75,9 @@ ifdef ICEDTEA_CORE_BUILD - ifdef ICEDTEA_CORE_BUILD - HOTSPOT_TARGET := $(HOTSPOT_TARGET)core +@@ -73,7 +73,11 @@ endif -+ifdef ICEDTEA_SHARK_BUILD -+ HOTSPOT_TARGET := $(HOTSPOT_TARGET)shark -+endif + + ifeq ($(ZERO_BUILD), true) +- HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero ++ ifdef ICEDTEA_SHARK_BUILD ++ HOTSPOT_TARGET := $(HOTSPOT_TARGET)shark ++ else ++ HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero ++ endif + endif HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS) - HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) -iff -r 8e41d25d7665 openjdk/jdk/make/java/redist/Makefile ---- openjdk/jdk/make/java/redist/Makefile Fri Jun 20 13:26:10 2008 +0100 -+++ openjdk/jdk/make/java/redist/Makefile Fri Jun 20 13:28:19 2008 +0100 -@@ -96,9 +96,11 @@ endif # INCLUDE_SA - - # Hotspot client is only available on 32-bit builds - ifndef ICEDTEA_CORE_BUILD -+ifndef ICEDTEA_SHARK_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \ - $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt -+endif - endif - endif - -@@ -164,6 +166,7 @@ endif - endif - - ifndef ICEDTEA_CORE_BUILD -+ifndef ICEDTEA_SHARK_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - - IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) -@@ -193,6 +196,8 @@ endif # 32bit solaris - endif # 32bit solaris - - endif # 32bit -+ -+endif # ICEDTEA_SHARK_BUILD - - endif # ICEDTEA_CORE_BUILD - diff -r c18ada9920f7 patches/icedtea-shark.patch --- a/patches/icedtea-shark.patch Mon Dec 07 11:11:29 2009 -0500 +++ b/patches/icedtea-shark.patch Tue Dec 08 09:36:55 2009 +0000 @@ -58,24 +58,18 @@ --- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp.orig 2008-12-03 14:23:37.000000000 +0000 +++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -94,6 +94,9 @@ - #ifdef TIERED +@@ -95,7 +95,11 @@ #define VMTYPE "Server" - #else + #else // TIERED + #ifdef ZERO +#ifdef SHARK + #define VMTYPE "Shark" -+#else - #if defined(COMPILER1) || defined(COMPILER2) ++#else // SHARK + #define VMTYPE "Zero" ++#endif // SHARK + #else // ZERO #define VMTYPE COMPILER1_PRESENT("Client") \ COMPILER2_PRESENT("Server") -@@ -104,6 +107,7 @@ - #define VMTYPE "Core" - #endif // ZERO - #endif // COMPILER1 || COMPILER2 -+#endif // SHARK - #endif // TIERED - #endif // KERNEL - --- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp.orig 2008-11-22 00:11:18.000000000 +0000 +++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-12-03 14:33:48.000000000 +0000 @@ -229,6 +229,7 @@ diff -r c18ada9920f7 patches/icedtea-signature-iterator.patch --- a/patches/icedtea-signature-iterator.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -diff -r ee6af95bc459 openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp ---- openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp Fri Nov 02 09:42:25 2007 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp Fri Nov 02 09:44:37 2007 +0000 -@@ -281,7 +281,7 @@ class MaskFillerForNative: public Native - public: - void pass_int() { /* ignore */ } - void pass_long() { /* ignore */ } --#ifdef _LP64 -+#if defined(_LP64) || defined(ZERO) - void pass_float() { /* ignore */ } - #endif - void pass_double() { /* ignore */ } -diff -r ee6af95bc459 openjdk/hotspot/src/share/vm/runtime/signature.hpp ---- openjdk/hotspot/src/share/vm/runtime/signature.hpp Fri Nov 02 09:42:25 2007 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/signature.hpp Fri Nov 02 09:48:28 2007 +0000 -@@ -275,11 +275,14 @@ class NativeSignatureIterator: public Si - - void do_bool () { pass_int(); _jni_offset++; _offset++; } - void do_char () { pass_int(); _jni_offset++; _offset++; } -+#if defined(_LP64) || defined(ZERO) -+ void do_float () { pass_float(); _jni_offset++; _offset++; } -+#else -+ void do_float () { pass_int(); _jni_offset++; _offset++; } -+#endif - #ifdef _LP64 -- void do_float () { pass_float(); _jni_offset++; _offset++; } - void do_double() { pass_double(); _jni_offset++; _offset += 2; } - #else -- void do_float () { pass_int(); _jni_offset++; _offset++; } - void do_double() { pass_double(); _jni_offset += 2; _offset += 2; } - #endif - void do_byte () { pass_int(); _jni_offset++; _offset++; } -@@ -303,8 +306,10 @@ class NativeSignatureIterator: public Si - virtual void pass_int() = 0; - virtual void pass_long() = 0; - virtual void pass_object() = 0; -+#if defined(_LP64) || defined(ZERO) -+ virtual void pass_float() = 0; -+#endif - #ifdef _LP64 -- virtual void pass_float() = 0; - virtual void pass_double() = 0; - #else - virtual void pass_double() { pass_long(); } // may be same as long diff -r c18ada9920f7 patches/icedtea-static-libstdc++.patch --- a/patches/icedtea-static-libstdc++.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-05-16 22:13:31.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-05-23 23:25:47.000000000 +0100 -@@ -124,6 +124,12 @@ - - STATIC_CXX = true - -+ifeq ($(ZERO_LIBARCH), ppc64) -+ STATIC_CXX = false -+else -+ STATIC_CXX = true -+endif -+ - ifeq ($(LINK_INTO),AOUT) - LIBJVM.o = - LIBJVM_MAPFILE = diff -r c18ada9920f7 patches/icedtea-zero-build-hotspot.patch --- a/patches/icedtea-zero-build-hotspot.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make ---- openjdk.orig/hotspot/make/defs.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/defs.make 2008-11-29 02:14:15.000000000 +0000 -@@ -192,13 +192,14 @@ - - # Use uname output for SRCARCH, but deal with platform differences. If ARCH - # is not explicitly listed below, it is treated as x86. -- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH))) -+ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 zero,$(ARCH))) - ARCH/ = x86 - ARCH/sparc = sparc - ARCH/sparc64= sparc - ARCH/ia64 = ia64 - ARCH/amd64 = x86 - ARCH/x86_64 = x86 -+ ARCH/zero = zero - - # BUILDARCH is usually the same as SRCARCH, except for sparcv9 - BUILDARCH = $(SRCARCH) -@@ -222,8 +223,9 @@ - LIBARCH/sparc = sparc - LIBARCH/sparcv9 = sparcv9 - LIBARCH/ia64 = ia64 -+ LIBARCH/zero = $(ZERO_LIBARCH) - -- LP64_ARCH = sparcv9 amd64 ia64 -+ LP64_ARCH = sparcv9 amd64 ia64 zero - endif - - # Required make macro settings for all platforms -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make ---- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-11-29 02:14:15.000000000 +0000 -@@ -321,6 +321,7 @@ - DATA_MODE/sparcv9 = 64 - DATA_MODE/amd64 = 64 - DATA_MODE/ia64 = 64 -+DATA_MODE/zero = $(ZERO_BITSPERWORD) - - JAVA_FLAG/32 = -d32 - JAVA_FLAG/64 = -d64 -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-11-29 02:14:15.000000000 +0000 -@@ -37,6 +37,18 @@ - ARCH_DATA_MODEL ?= 32 - endif - -+# zero -+ifdef ICEDTEA_ZERO_BUILD -+ ARCH_DATA_MODEL = $(ZERO_BITSPERWORD) -+ ifeq ($(ARCH_DATA_MODEL), 64) -+ MAKE_ARGS += LP64=1 -+ endif -+ PLATFORM = linux-zero -+ VM_PLATFORM = linux_zero -+ HS_ARCH = zero -+ ARCH = zero -+endif -+ - # ia64 - ifeq ($(ARCH), ia64) - ARCH_DATA_MODEL = 64 -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 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-11-29 02:14:15.000000000 +0000 -@@ -56,6 +56,9 @@ - VM_PICFLAG/AOUT = - VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) - -+ifdef ICEDTEA_ZERO_BUILD -+CFLAGS += $(LIBFFI_CFLAGS) -+endif - CFLAGS += $(VM_PICFLAG) - CFLAGS += -fno-rtti - CFLAGS += -fno-exceptions -@@ -72,6 +75,7 @@ - ARCHFLAG/ia64 = - ARCHFLAG/sparc = -m32 -mcpu=v9 - ARCHFLAG/sparcv9 = -m64 -mcpu=v9 -+ARCHFLAG/zero = $(ZERO_ARCHFLAG) - - CFLAGS += $(ARCHFLAG) - AOUT_FLAGS += $(ARCHFLAG) -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/sa.make openjdk/hotspot/make/linux/makefiles/sa.make ---- openjdk.orig/hotspot/make/linux/makefiles/sa.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/sa.make 2008-11-29 02:14:15.000000000 +0000 -@@ -52,10 +52,10 @@ - SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties - - # if $(AGENT_DIR) does not exist, we don't build SA --# also, we don't build SA on Itanium. -+# also, we don't build SA on Itanium or zero. - - all: -- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ -+ if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ - $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ - fi - -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make ---- openjdk.orig/hotspot/make/linux/makefiles/saproc.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/saproc.make 2008-11-29 02:14:15.000000000 +0000 -@@ -44,10 +44,10 @@ - DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) - - # if $(AGENT_DIR) does not exist, we don't build SA --# also, we don't build SA on Itanium. -+# also, we don't build SA on Itanium or zero. - - checkAndBuildSA: -- $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ -+ $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ - $(MAKE) -f vm.make $(LIBSAPROC); \ - fi - -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-11-29 02:14:15.000000000 +0000 -@@ -158,6 +158,9 @@ - - LIBS_VM += $(LIBS) - endif -+ifdef ICEDTEA_ZERO_BUILD -+LIBS_VM += $(LIBFFI_LIBS) -+endif - - LINK_VM = $(LINK_LIB.c) - diff -r c18ada9920f7 patches/icedtea-zero-build.patch --- a/patches/icedtea-zero-build.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -diff -Nru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk ---- openjdk.orig/corba/make/common/Defs-linux.gmk 2009-10-02 00:39:36.000000000 +0100 -+++ openjdk/corba/make/common/Defs-linux.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -99,8 +99,16 @@ - LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9 - CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 - LDFLAGS_COMMON_sparc += -m32 -mcpu=v9 --CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) --LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) -+ifdef ICEDTEA_ZERO_BUILD -+ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG) -+ ifeq ($(ZERO_ENDIANNESS), little) -+ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN -+ endif -+ LDFLAGS_COMMON += $(ZERO_ARCHFLAG) -+else -+ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) -+ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) -+endif - - # Add in platform specific optimizations for all opt levels - CC_HIGHEST_OPT += $(_OPT_$(ARCH)) -diff -Nru openjdk.orig/corba/make/common/shared/Compiler-gcc.gmk openjdk/corba/make/common/shared/Compiler-gcc.gmk ---- openjdk.orig/corba/make/common/shared/Compiler-gcc.gmk 2009-10-02 00:39:36.000000000 +0100 -+++ openjdk/corba/make/common/shared/Compiler-gcc.gmk 2009-10-02 00:57:13.000000000 +0100 -@@ -70,6 +70,11 @@ - else - CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) - endif -+ ifdef ICEDTEA_ZERO_BUILD -+ # zero -+ REQUIRED_CC_VER = 3.2 -+ REQUIRED_GCC_VER = 3.2.* -+ else - ifneq ("$(findstring sparc,$(ARCH))", "") - # sparc or sparcv9 - REQUIRED_CC_VER = 4.0 -@@ -88,6 +93,7 @@ - endif - endif - endif -+ endif - # Option used to create a shared library - SHARED_LIBRARY_FLAG = -shared -mimpure-text - SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) -diff -Nru openjdk.orig/corba/make/common/shared/Platform.gmk openjdk/corba/make/common/shared/Platform.gmk ---- openjdk.orig/corba/make/common/shared/Platform.gmk 2009-05-14 10:27:42.000000000 +0100 -+++ openjdk/corba/make/common/shared/Platform.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -202,6 +202,11 @@ - ARCH_FAMILY := $(ARCH) - - # Linux builds may be 32-bit or 64-bit data model. -+ ifdef ICEDTEA_ZERO_BUILD -+ ifndef ARCH_DATA_MODEL -+ ARCH_DATA_MODEL = $(ZERO_BITSPERWORD) -+ endif -+ endif - ifeq ($(ARCH), sparc) - # Linux sparc build can be either 32-bit or 64-bit. - # Default to 32, but allow explicit setting to 32 or 64. -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp 2009-10-02 00:39:36.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2009-10-02 00:56:28.000000000 +0100 -@@ -98,7 +98,11 @@ - #define VMTYPE COMPILER1_PRESENT("Client") \ - COMPILER2_PRESENT("Server") - #else -+#ifdef ZERO -+ #define VMTYPE "Zero" -+#else - #define VMTYPE "Core" -+#endif // ZERO - #endif // COMPILER1 || COMPILER2 - #endif // TIERED - #endif // KERNEL -@@ -146,10 +150,14 @@ - WINDOWS_ONLY("windows") \ - SOLARIS_ONLY("solaris") - -+#ifdef ZERO -+#define CPU ZERO_LIBARCH -+#else - #define CPU IA32_ONLY("x86") \ - IA64_ONLY("ia64") \ - AMD64_ONLY("amd64") \ - SPARC_ONLY("sparc") -+#endif // ZERO - - const char *Abstract_VM_Version::vm_platform_string() { - return OS "-" CPU; -diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk ---- openjdk.orig/jdk/make/common/Defs-linux.gmk 2009-10-02 00:39:36.000000000 +0100 -+++ openjdk/jdk/make/common/Defs-linux.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -109,8 +109,16 @@ - LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9 - CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 - LDFLAGS_COMMON_sparc += -m32 -mcpu=v9 --CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) --LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) -+ifdef ICEDTEA_ZERO_BUILD -+ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG) -+ ifeq ($(ZERO_ENDIANNESS), little) -+ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN -+ endif -+ LDFLAGS_COMMON += $(ZERO_ARCHFLAG) -+else -+ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) -+ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) -+endif - - # Add in platform specific optimizations for all opt levels - CC_HIGHEST_OPT += $(_OPT_$(ARCH)) -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 2009-10-02 00:39:36.000000000 +0100 -+++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -70,6 +70,11 @@ - else - CXX = $(COMPILER_PATH)g++$(GCC_SUFFIX) - endif -+ ifdef ICEDTEA_ZERO_BUILD -+ # zero -+ REQUIRED_CC_VER = 3.2 -+ REQUIRED_GCC_VER = 3.2.* -+ else - ifneq ("$(findstring sparc,$(ARCH))", "") - # sparc or sparcv9 - REQUIRED_CC_VER = 4.0 -@@ -93,6 +98,7 @@ - endif - endif - endif -+ endif - # Option used to create a shared library - SHARED_LIBRARY_FLAG = -shared -mimpure-text - SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) -diff -Nru openjdk.orig/jdk/make/common/shared/Platform.gmk openjdk/jdk/make/common/shared/Platform.gmk ---- openjdk.orig/jdk/make/common/shared/Platform.gmk 2009-10-01 18:31:51.000000000 +0100 -+++ openjdk/jdk/make/common/shared/Platform.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -212,6 +212,11 @@ - ARCH_FAMILY := $(ARCH) - - # Linux builds may be 32-bit or 64-bit data model. -+ ifdef ICEDTEA_ZERO_BUILD -+ ifndef ARCH_DATA_MODEL -+ ARCH_DATA_MODEL = $(ZERO_BITSPERWORD) -+ endif -+ endif - ifeq ($(ARCH), sparc) - # Linux sparc build can be either 32-bit or 64-bit. - # Default to 32, but allow explicit setting to 32 or 64. -diff -Nru openjdk.orig/jdk/make/javax/sound/SoundDefs.gmk openjdk/jdk/make/javax/sound/SoundDefs.gmk ---- openjdk.orig/jdk/make/javax/sound/SoundDefs.gmk 2009-10-01 18:31:54.000000000 +0100 -+++ openjdk/jdk/make/javax/sound/SoundDefs.gmk 2009-10-02 00:56:28.000000000 +0100 -@@ -55,21 +55,25 @@ - - endif # PLATFORM solaris - --ifeq ($(ARCH), i586) -- CPPFLAGS += -DX_ARCH=X_I586 --endif # ARCH i586 -- --ifeq ($(ARCH), sparc) -- CPPFLAGS += -DX_ARCH=X_SPARC --endif # ARCH sparc -- --ifeq ($(ARCH), sparcv9) -- CPPFLAGS += -DX_ARCH=X_SPARCV9 --endif # ARCH sparcv9 -- --ifeq ($(ARCH), amd64) -- CPPFLAGS += -DX_ARCH=X_AMD64 --endif # ARCH amd64 -+ifdef ICEDTEA_ZERO_BUILD -+ CPPFLAGS += -DX_ARCH=X_ZERO -+else -+ ifeq ($(ARCH), i586) -+ CPPFLAGS += -DX_ARCH=X_I586 -+ endif # ARCH i586 -+ -+ ifeq ($(ARCH), sparc) -+ CPPFLAGS += -DX_ARCH=X_SPARC -+ endif # ARCH sparc -+ -+ ifeq ($(ARCH), sparcv9) -+ CPPFLAGS += -DX_ARCH=X_SPARCV9 -+ endif # ARCH sparcv9 -+ -+ ifeq ($(ARCH), amd64) -+ CPPFLAGS += -DX_ARCH=X_AMD64 -+ endif # ARCH amd64 -+endif - - - # files needed for MIDI i/o -diff -Nru openjdk.orig/jdk/src/share/native/com/sun/media/sound/SoundDefs.h openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h ---- openjdk.orig/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-10-01 18:36:51.000000000 +0100 -+++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-10-02 00:56:28.000000000 +0100 -@@ -38,6 +38,7 @@ - #define X_SPARCV9 3 - #define X_IA64 4 - #define X_AMD64 5 -+#define X_ZERO 6 - - // ********************************** - // Make sure you set X_PLATFORM and X_ARCH defines correctly. diff -r c18ada9920f7 patches/icedtea-zero.patch --- a/patches/icedtea-zero.patch Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,229 +0,0 @@ ---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2008-07-27 08:43:41.000000000 +0000 -@@ -159,7 +159,9 @@ - #endif - - // Cpu architecture string --#if defined(IA64) -+#if defined(ZERO) -+static char cpu_arch[] = ZERO_LIBARCH; -+#elif defined(IA64) - static char cpu_arch[] = "ia64"; - #elif defined(IA32) - static char cpu_arch[] = "i386"; -@@ -1665,7 +1667,14 @@ - {EM_SPARC32PLUS, EM_SPARC, ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"}, - {EM_SPARCV9, EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"}, - {EM_PPC, EM_PPC, ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"}, -- {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"} -+ {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"}, -+ {EM_ARM, EM_ARM, ELFCLASS32, ELFDATA2LSB, (char*)"ARM"}, -+ {EM_S390, EM_S390, ELFCLASSNONE, ELFDATA2MSB, (char*)"IBM System/390"}, -+ {EM_ALPHA, EM_ALPHA, ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"}, -+ {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, -+ {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, -+ {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, -+ {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} - }; - - #if (defined IA32) -@@ -1682,9 +1691,23 @@ - static Elf32_Half running_arch_code=EM_PPC64; - #elif (defined __powerpc__) - static Elf32_Half running_arch_code=EM_PPC; -+ #elif (defined ARM) -+ static Elf32_Half running_arch_code=EM_ARM; -+ #elif (defined S390) -+ static Elf32_Half running_arch_code=EM_S390; -+ #elif (defined ALPHA) -+ static Elf32_Half running_arch_code=EM_ALPHA; -+ #elif (defined MIPSEL) -+ static Elf32_Half running_arch_code=EM_MIPS_RS3_LE; -+ #elif (defined PARISC) -+ static Elf32_Half running_arch_code=EM_PARISC; -+ #elif (defined MIPS) -+ static Elf32_Half running_arch_code=EM_MIPS; -+ #elif (defined M68K) -+ static Elf32_Half running_arch_code=EM_68K; - #else - #error Method os::dll_load requires that one of following is defined:\ -- IA32, AMD64, IA64, __sparc, __powerpc__ -+ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K - #endif - - // Identify compatability class for VM's architecture and library's architecture -@@ -1716,10 +1739,12 @@ - return NULL; - } - -+#ifndef S390 - if (lib_arch.elf_class != arch_array[running_arch_index].elf_class) { - ::snprintf(diag_msg_buf, diag_msg_max_length-1," (Possible cause: architecture word width mismatch)"); - return NULL; - } -+#endif // !S390 - - if (lib_arch.compat_class != arch_array[running_arch_index].compat_class) { - if ( lib_arch.name!=NULL ) { -@@ -2354,7 +2379,9 @@ - // format has been changed), we'll use the largest page size supported by - // the processor. - -+#ifndef ZERO - _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M); -+#endif - - FILE *fp = fopen("/proc/meminfo", "r"); - if (fp) { ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2008-07-27 08:37:03.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -424,7 +421,9 @@ - #ifdef ASSERT - if (istate->_msg != initialize) { - assert(abs(istate->_stack_base - istate->_stack_limit) == (istate->_method->max_stack() + 1), "bad stack limit"); -- IA32_ONLY(assert(istate->_stack_limit == istate->_thread->last_Java_sp() + 1, "wrong")); -+#if defined(IA32) && !defined(ZERO) -+ assert(istate->_stack_limit == istate->_thread->last_Java_sp() + 1, "wrong"); -+#endif // IA32 && !ZERO - } - // Verify linkages. - interpreterState l = istate; -@@ -3030,9 +3030,9 @@ - tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult); - tty->print_cr("native_lresult: " INTPTR_FORMAT, (uintptr_t) this->_native_lresult); - #endif --#ifdef IA64 -+#if defined(IA64) && !defined(ZERO) - tty->print_cr("last_Java_fp: " INTPTR_FORMAT, (uintptr_t) this->_last_Java_fp); --#endif // IA64 -+#endif // IA64 && !ZERO - tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link); - } - ---- openjdk/hotspot/src/share/vm/runtime/mutex.hpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp 2008-07-27 08:38:13.000000000 +0000 -@@ -61,18 +61,10 @@ - } ; - - // Endian-ness ... index of least-significant byte in SplitWord.Bytes[] --#ifdef AMD64 // little -+#ifdef VM_LITTLE_ENDIAN - #define _LSBINDEX 0 - #else --#if IA32 // little -- #define _LSBINDEX 0 --#else --#ifdef SPARC // big - #define _LSBINDEX (sizeof(intptr_t)-1) --#else -- #error "unknown architecture" --#endif --#endif - #endif - - class ParkEvent ; ---- openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp 2008-07-27 08:38:13.000000000 +0000 -@@ -126,9 +126,17 @@ - // Fill block with bad_handle values - void zap(); - -+#ifdef ZERO -+ protected: -+ friend class CppInterpreter; -+#endif // ZERO -+ - // No more handles in the both the current and following blocks - void clear() { _top = 0; } - -+#ifdef ZERO -+ private: -+#endif // ZERO - // Free list computation - void rebuild_free_list(); - ---- openjdk/hotspot/src/share/vm/utilities/vmError.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -462,6 +462,40 @@ - - if (_verbose && _thread && _thread->is_Java_thread()) { - JavaThread* jt = (JavaThread*)_thread; -+#ifdef ZERO -+ if (jt->zero_stack()->sp() && jt->top_zero_frame()) { -+ // StackFrameStream uses the frame anchor, which may not have -+ // been set up. This can be done at any time in Zero, however, -+ // so if it hasn't been set up then we just set it up now and -+ // clear it again when we're done. -+ bool has_last_Java_frame = jt->has_last_Java_frame(); -+ if (!has_last_Java_frame) -+ jt->set_last_Java_frame(); -+ st->print("Java frames:"); -+ -+ // If the top frame is a Shark frame and the frame anchor isn't -+ // set up then it's possible that the information in the frame -+ // is garbage: it could be from a previous decache, or it could -+ // simply have never been written. So we print a warning... -+ StackFrameStream sfs(jt); -+ if (!has_last_Java_frame && !sfs.is_done()) { -+ if (sfs.current()->zeroframe()->is_shark_frame()) { -+ st->print(" (TOP FRAME MAY BE JUNK)"); -+ } -+ } -+ st->cr(); -+ -+ // Print the frames -+ for(int i = 0; !sfs.is_done(); sfs.next(), i++) { -+ sfs.current()->zero_print_on_error(i, st, buf, sizeof(buf)); -+ st->cr(); -+ } -+ -+ // Reset the frame anchor if necessary -+ if (!has_last_Java_frame) -+ jt->reset_last_Java_frame(); -+ } -+#else - if (jt->has_last_Java_frame()) { - st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)"); - for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) { -@@ -469,6 +503,7 @@ - st->cr(); - } - } -+#endif // ZERO - } - - STEP(140, "(printing VM operation)" ) - -Index: openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp -=================================================================== ---- openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp.orig 2009-06-10 11:30:46.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp 2009-06-10 11:37:07.000000000 +0200 -@@ -173,7 +173,11 @@ - // is not permitted. - return (thr->has_last_Java_frame() && - (void*)obj < (void*)thr->stack_base() && -+#ifdef ZERO -+ (void*)obj >= (void*)os::current_stack_pointer()); -+#else - (void*)obj >= (void*)thr->last_Java_sp()); -+#endif // ZERO - } - - ---- openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:22:25.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:41:57.000000000 +0100 -@@ -1655,12 +1655,14 @@ - frame_.cpp frame.inline.hpp - frame_.cpp handles.inline.hpp - frame_.cpp interpreter.hpp -+frame_.cpp interpreterRuntime.hpp - frame_.cpp javaCalls.hpp - frame_.cpp markOop.hpp - frame_.cpp methodOop.hpp - frame_.cpp monitorChunk.hpp - frame_.cpp oop.inline.hpp - frame_.cpp resourceArea.hpp -+frame_.cpp scopeDesc.hpp - frame_.cpp signature.hpp - frame_.cpp stubCodeGenerator.hpp - frame_.cpp stubRoutines.hpp diff -r c18ada9920f7 patches/zero/6890308.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6890308.patch Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,760 @@ +diff -r 03b336640699 -r 354d3184f6b2 make/Makefile +--- openjdk/hotspot/make/Makefile Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/Makefile Tue Oct 13 12:04:21 2009 -0700 +@@ -84,6 +84,7 @@ + C1_VM_TARGETS=product1 fastdebug1 optimized1 jvmg1 + C2_VM_TARGETS=product fastdebug optimized jvmg + KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel ++ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero + + # JDK directory list + JDK_DIRS=bin include jre lib demo +@@ -94,6 +95,12 @@ + all_debug: jvmg jvmg1 jvmgkernel docs export_debug + all_optimized: optimized optimized1 optimizedkernel docs export_optimized + ++allzero: all_productzero all_fastdebugzero ++all_productzero: productzero docs export_product ++all_fastdebugzero: fastdebugzero docs export_fastdebug ++all_debugzero: jvmgzero docs export_debug ++all_optimizedzero: optimizedzero docs export_optimized ++ + # Do everything + world: all create_jdk + +@@ -120,6 +127,10 @@ + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) + ++$(ZERO_VM_TARGETS): ++ $(CD) $(GAMMADIR)/make; \ ++ $(MAKE) VM_TARGET=$@ generic_buildzero $(ALT_OUT) ++ + # Build compiler1 (client) rule, different for platforms + generic_build1: + $(MKDIR) -p $(OUTPUTDIR) +@@ -180,6 +191,12 @@ + @$(ECHO) "No kernel ($(VM_TARGET)) for OS_NAME=$(OSNAME)" + endif + ++generic_buildzero: ++ $(MKDIR) -p $(OUTPUTDIR) ++ $(CD) $(OUTPUTDIR); \ ++ $(MAKE) -f $(ABS_OS_MAKEFILE) \ ++ $(MAKE_ARGS) $(VM_TARGET) ++ + # Export file rule + generic_export: $(EXPORT_LIST) + export_product: +@@ -210,11 +227,17 @@ + C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 + C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 + KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel ++ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero + C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) + C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) + KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) ++ZERO_DIR=$(ZERO_BASE_DIR)/$(VM_SUBDIR) + + # Misc files and generated files need to come from C1 or C2 area ++ifeq ($(ZERO_BUILD), true) ++ MISC_DIR=$(ZERO_DIR) ++ GEN_DIR=$(ZERO_BASE_DIR)/generated ++else + ifeq ($(ARCH_DATA_MODEL), 32) + MISC_DIR=$(C1_DIR) + GEN_DIR=$(C1_BASE_DIR)/generated +@@ -222,6 +245,7 @@ + MISC_DIR=$(C2_DIR) + GEN_DIR=$(C2_BASE_DIR)/generated + endif ++endif + + # Bin files (windows) + ifeq ($(OSNAME),windows) +@@ -265,6 +289,12 @@ + + # Shared Library + ifneq ($(OSNAME),windows) ++ ifeq ($(ZERO_BUILD), true) ++$(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(ZERO_DIR)/%.so ++ $(install-file) ++$(EXPORT_SERVER_DIR)/%.so: $(ZERO_DIR)/%.so ++ $(install-file) ++ else + $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so + $(install-file) + $(EXPORT_CLIENT_DIR)/%.so: $(C1_DIR)/%.so +@@ -275,6 +305,7 @@ + $(install-file) + $(EXPORT_SERVER_DIR)/64/%.so: $(C2_DIR)/%.so + $(install-file) ++ endif + endif + + # Jar file (sa-jdi.jar) +@@ -313,6 +344,7 @@ + $(RM) -r $(C1_DIR) + $(RM) -r $(C2_DIR) + $(RM) -r $(KERNEL_DIR) ++ $(RM) -r $(ZERO_DIR) + clean_export: + $(RM) -r $(EXPORT_PATH) + clean_jdk: +@@ -335,8 +367,10 @@ + ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -) + + test_jdk: +- ifeq ($(ARCH_DATA_MODEL), 32) ++ ifneq ($(ZERO_BUILD), true) ++ ifeq ($(ARCH_DATA_MODEL), 32) + $(JDK_IMAGE_DIR)/bin/java -client -version ++ endif + endif + $(JDK_IMAGE_DIR)/bin/java -server -version + +diff -r 03b336640699 -r 354d3184f6b2 make/defs.make +--- openjdk/hotspot/make/defs.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/defs.make Tue Oct 13 12:04:21 2009 -0700 +@@ -192,13 +192,14 @@ + + # Use uname output for SRCARCH, but deal with platform differences. If ARCH + # is not explicitly listed below, it is treated as x86. +- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH))) ++ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 zero,$(ARCH))) + ARCH/ = x86 + ARCH/sparc = sparc + ARCH/sparc64= sparc + ARCH/ia64 = ia64 + ARCH/amd64 = x86 + ARCH/x86_64 = x86 ++ ARCH/zero = zero + + # BUILDARCH is usually the same as SRCARCH, except for sparcv9 + BUILDARCH = $(SRCARCH) +@@ -222,8 +223,9 @@ + LIBARCH/sparc = sparc + LIBARCH/sparcv9 = sparcv9 + LIBARCH/ia64 = ia64 ++ LIBARCH/zero = $(ZERO_LIBARCH) + +- LP64_ARCH = sparcv9 amd64 ia64 ++ LP64_ARCH = sparcv9 amd64 ia64 zero + endif + + # Required make macro settings for all platforms +diff -r 03b336640699 -r 354d3184f6b2 make/linux/Makefile +--- openjdk/hotspot/make/linux/Makefile Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/Makefile Tue Oct 13 12:04:21 2009 -0700 +@@ -132,6 +132,9 @@ + + endif + ++# BUILDARCH is set to "zero" for Zero builds. VARIANTARCH ++# is used to give the build directories meaningful names. ++VARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH)) + + # There is a (semi-) regular correspondence between make targets and actions: + # +@@ -158,6 +161,13 @@ + # profiledcore core __core/profiled + # productcore core __core/product + # ++# debugzero zero __zero/debug ++# fastdebugzero zero __zero/fastdebug ++# jvmgzero zero __zero/jvmg ++# optimizedzero zero __zero/optimized ++# profiledzero zero __zero/profiled ++# productzero zero __zero/product ++# + # What you get with each target: + # + # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher +@@ -171,16 +181,22 @@ + # in the build.sh script: + TARGETS = debug jvmg fastdebug optimized profiled product + +-SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs ++ifeq ($(ZERO_BUILD), true) ++ SUBDIR_DOCS = $(OSNAME)_$(VARIANTARCH)_docs ++else ++ SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs ++endif + SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS)) + SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) + SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) + SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) ++SUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS)) + + TARGETS_C2 = $(TARGETS) + TARGETS_C1 = $(addsuffix 1,$(TARGETS)) + TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) + TARGETS_CORE = $(addsuffix core,$(TARGETS)) ++TARGETS_ZERO = $(addsuffix zero,$(TARGETS)) + + BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make + BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) +@@ -196,6 +212,7 @@ + @echo " $(TARGETS_C2)" + @echo " $(TARGETS_C1)" + @echo " $(TARGETS_CORE)" ++ @echo " $(TARGETS_ZERO)" + + checks: check_os_version check_j2se_version + +@@ -245,6 +262,13 @@ + $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks + $(BUILDTREE) VARIANT=core + ++$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero ++ $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks ++ $(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH) ++ ++platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in ++ $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@ ++ + # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME + + $(TARGETS_C2): $(SUBDIRS_C2) +@@ -275,10 +299,18 @@ + cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install + endif + ++$(TARGETS_ZERO): $(SUBDIRS_ZERO) ++ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) ++ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma ++ifdef INSTALL ++ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install ++endif ++ + # Just build the tree, and nothing else: + tree: $(SUBDIRS_C2) + tree1: $(SUBDIRS_C1) + treecore: $(SUBDIRS_CORE) ++treezero: $(SUBDIRS_ZERO) + + # Doc target. This is the same for all build options. + # Hence create a docs directory beside ...$(ARCH)_[...] +@@ -293,20 +325,22 @@ + + core: jvmgcore productcore + ++zero: jvmgzero productzero ++ + clean_docs: + rm -rf $(SUBDIR_DOCS) + +-clean_compiler1 clean_compiler2 clean_core: ++clean_compiler1 clean_compiler2 clean_core clean_zero: + rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@) + +-clean: clean_compiler2 clean_compiler1 clean_core clean_docs ++clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_docs + + include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make + + #------------------------------------------------------------------------------- + +-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) +-.PHONY: tree tree1 treecore +-.PHONY: all compiler1 compiler2 core +-.PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs ++.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) ++.PHONY: tree tree1 treecore treezero ++.PHONY: all compiler1 compiler2 core zero ++.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero docs clean_docs + .PHONY: checks check_os_version check_j2se_version +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/buildtree.make +--- openjdk/hotspot/make/linux/makefiles/buildtree.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/buildtree.make Tue Oct 13 12:04:21 2009 -0700 +@@ -63,20 +63,30 @@ + # For now, until the compiler is less wobbly: + TESTFLAGS = -Xbatch -showversion + +-ifdef USE_SUNCC +-PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc ++ifeq ($(ZERO_BUILD), true) ++ PLATFORM_FILE = $(shell dirname $(shell dirname $(shell pwd)))/platform_zero + else +-PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH) ++ ifdef USE_SUNCC ++ PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc ++ else ++ PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH) ++ endif ++endif ++ ++# Allow overriding of the arch part of the directory but default ++# to BUILDARCH if nothing is specified ++ifeq ($(VARIANTARCH),) ++ VARIANTARCH=$(BUILDARCH) + endif + + ifdef FORCE_TIERED + ifeq ($(VARIANT),tiered) +-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_compiler2 ++PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_compiler2 + else +-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT) ++PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT) + endif + else +-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT) ++PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT) + endif + + # +@@ -321,6 +331,7 @@ + DATA_MODE/sparcv9 = 64 + DATA_MODE/amd64 = 64 + DATA_MODE/ia64 = 64 ++DATA_MODE/zero = $(ARCH_DATA_MODEL) + + JAVA_FLAG/32 = -d32 + JAVA_FLAG/64 = -d64 +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/defs.make +--- openjdk/hotspot/make/linux/makefiles/defs.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/defs.make Tue Oct 13 12:04:21 2009 -0700 +@@ -37,6 +37,17 @@ + ARCH_DATA_MODEL ?= 32 + endif + ++# zero ++ifeq ($(ZERO_BUILD), true) ++ ifeq ($(ARCH_DATA_MODEL), 64) ++ MAKE_ARGS += LP64=1 ++ endif ++ PLATFORM = linux-zero ++ VM_PLATFORM = linux_$(subst i386,i486,$(ZERO_LIBARCH)) ++ HS_ARCH = zero ++ ARCH = zero ++endif ++ + # ia64 + ifeq ($(ARCH), ia64) + ARCH_DATA_MODEL = 64 +@@ -97,17 +108,19 @@ + EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so +-ifeq ($(ARCH_DATA_MODEL), 32) +- EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client +- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt +- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so +- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so +- EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so +- EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar +-else +- ifeq ($(ARCH),ia64) +- else +- EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so +- EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar ++ifneq ($(ZERO_BUILD), true) ++ ifeq ($(ARCH_DATA_MODEL), 32) ++ EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client ++ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt ++ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so ++ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so ++ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so ++ EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar ++ else ++ ifeq ($(ARCH),ia64) ++ else ++ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so ++ EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar + endif ++ endif + endif +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/gcc.make +--- openjdk/hotspot/make/linux/makefiles/gcc.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make Tue Oct 13 12:04:21 2009 -0700 +@@ -52,6 +52,9 @@ + VM_PICFLAG/AOUT = + VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) + ++ifeq ($(ZERO_BUILD), true) ++CFLAGS += $(LIBFFI_CFLAGS) ++endif + CFLAGS += $(VM_PICFLAG) + CFLAGS += -fno-rtti + CFLAGS += -fno-exceptions +@@ -64,6 +67,7 @@ + ARCHFLAG/ia64 = + ARCHFLAG/sparc = -m32 -mcpu=v9 + ARCHFLAG/sparcv9 = -m64 -mcpu=v9 ++ARCHFLAG/zero = $(ZERO_ARCHFLAG) + + CFLAGS += $(ARCHFLAG) + AOUT_FLAGS += $(ARCHFLAG) +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/sa.make +--- openjdk/hotspot/make/linux/makefiles/sa.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/sa.make Tue Oct 13 12:04:21 2009 -0700 +@@ -52,10 +52,10 @@ + SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium. ++# also, we don't build SA on Itanium or zero. + + all: +- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ ++ if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ + fi + +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/saproc.make +--- openjdk/hotspot/make/linux/makefiles/saproc.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/saproc.make Tue Oct 13 12:04:21 2009 -0700 +@@ -49,10 +49,10 @@ + endif + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium. ++# also, we don't build SA on Itanium or zero. + + checkAndBuildSA: +- $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ ++ $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f vm.make $(LIBSAPROC); \ + fi + +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/top.make +--- openjdk/hotspot/make/linux/makefiles/top.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/top.make Tue Oct 13 12:04:21 2009 -0700 +@@ -74,6 +74,7 @@ + Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 + Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 + Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2 ++Include_DBs/ZERO = $(Include_DBs/CORE) $(VM)/includeDB_zero + Include_DBs = $(Include_DBs/$(TYPE)) + + Cached_plat = $(GENERATED)/platform.current +diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/vm.make +--- openjdk/hotspot/make/linux/makefiles/vm.make Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/make/linux/makefiles/vm.make Tue Oct 13 12:04:21 2009 -0700 +@@ -40,7 +40,11 @@ + include $(GENERATED)/Dependencies + + # read machine-specific adjustments (%%% should do this via buildtree.make?) +-include $(MAKEFILES_DIR)/$(BUILDARCH).make ++ifeq ($(ZERO_BUILD), true) ++ include $(MAKEFILES_DIR)/zeroshark.make ++else ++ include $(MAKEFILES_DIR)/$(BUILDARCH).make ++endif + + # set VPATH so make knows where to look for source files + # Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm +@@ -124,7 +128,11 @@ + rm -f $@ + cat $^ > $@ + +-STATIC_CXX = true ++ifeq ($(ZERO_LIBARCH), ppc64) ++ STATIC_CXX = false ++else ++ STATIC_CXX = true ++endif + + ifeq ($(LINK_INTO),AOUT) + LIBJVM.o = +@@ -148,6 +156,9 @@ + + LIBS_VM += $(LIBS) + endif ++ifeq ($(ZERO_BUILD), true) ++ LIBS_VM += $(LIBFFI_LIBS) ++endif + + LINK_VM = $(LINK_LIB.c) + +diff -r 03b336640699 -r 354d3184f6b2 src/os/linux/vm/os_linux.cpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -176,7 +176,9 @@ + #endif + + // Cpu architecture string +-#if defined(IA64) ++#if defined(ZERO) ++static char cpu_arch[] = ZERO_LIBARCH; ++#elif defined(IA64) + static char cpu_arch[] = "ia64"; + #elif defined(IA32) + static char cpu_arch[] = "i386"; +@@ -1743,7 +1745,14 @@ + {EM_SPARC32PLUS, EM_SPARC, ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"}, + {EM_SPARCV9, EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"}, + {EM_PPC, EM_PPC, ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"}, +- {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"} ++ {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"}, ++ {EM_ARM, EM_ARM, ELFCLASS32, ELFDATA2LSB, (char*)"ARM"}, ++ {EM_S390, EM_S390, ELFCLASSNONE, ELFDATA2MSB, (char*)"IBM System/390"}, ++ {EM_ALPHA, EM_ALPHA, ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"}, ++ {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, ++ {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, ++ {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, ++ {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} + }; + + #if (defined IA32) +@@ -1760,9 +1769,23 @@ + static Elf32_Half running_arch_code=EM_PPC64; + #elif (defined __powerpc__) + static Elf32_Half running_arch_code=EM_PPC; ++ #elif (defined ARM) ++ static Elf32_Half running_arch_code=EM_ARM; ++ #elif (defined S390) ++ static Elf32_Half running_arch_code=EM_S390; ++ #elif (defined ALPHA) ++ static Elf32_Half running_arch_code=EM_ALPHA; ++ #elif (defined MIPSEL) ++ static Elf32_Half running_arch_code=EM_MIPS_RS3_LE; ++ #elif (defined PARISC) ++ static Elf32_Half running_arch_code=EM_PARISC; ++ #elif (defined MIPS) ++ static Elf32_Half running_arch_code=EM_MIPS; ++ #elif (defined M68K) ++ static Elf32_Half running_arch_code=EM_68K; + #else + #error Method os::dll_load requires that one of following is defined:\ +- IA32, AMD64, IA64, __sparc, __powerpc__ ++ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K + #endif + + // Identify compatability class for VM's architecture and library's architecture +@@ -1794,10 +1817,12 @@ + return NULL; + } + ++#ifndef S390 + if (lib_arch.elf_class != arch_array[running_arch_index].elf_class) { + ::snprintf(diag_msg_buf, diag_msg_max_length-1," (Possible cause: architecture word width mismatch)"); + return NULL; + } ++#endif // !S390 + + if (lib_arch.compat_class != arch_array[running_arch_index].compat_class) { + if ( lib_arch.name!=NULL ) { +@@ -2586,7 +2611,9 @@ + // format has been changed), we'll use the largest page size supported by + // the processor. + ++#ifndef ZERO + _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M); ++#endif // ZERO + + FILE *fp = fopen("/proc/meminfo", "r"); + if (fp) { +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/interpreter/bytecodeInterpreter.cpp +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -3031,9 +3031,9 @@ + tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult); + tty->print_cr("native_lresult: " INTPTR_FORMAT, (uintptr_t) this->_native_lresult); + #endif +-#ifdef IA64 ++#if defined(IA64) && !defined(ZERO) + tty->print_cr("last_Java_fp: " INTPTR_FORMAT, (uintptr_t) this->_last_Java_fp); +-#endif // IA64 ++#endif // IA64 && !ZERO + tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link); + } + +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/interpreter/oopMapCache.cpp +--- openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -281,7 +281,7 @@ + public: + void pass_int() { /* ignore */ } + void pass_long() { /* ignore */ } +-#ifdef _LP64 ++#if defined(_LP64) || defined(ZERO) + void pass_float() { /* ignore */ } + #endif + void pass_double() { /* ignore */ } +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/arguments.cpp +--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -1229,6 +1229,7 @@ + } + } + ++#ifndef ZERO + #ifdef _LP64 + // Check that UseCompressedOops can be set with the max heap size allocated + // by ergonomics. +@@ -1254,6 +1255,7 @@ + // Also checks that certain machines are slower with compressed oops + // in vm_version initialization code. + #endif // _LP64 ++#endif // !ZERO + } + + void Arguments::set_parallel_gc_flags() { +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/jniHandles.hpp +--- openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp Tue Oct 13 12:04:21 2009 -0700 +@@ -99,6 +99,8 @@ + + class JNIHandleBlock : public CHeapObj { + friend class VMStructs; ++ friend class CppInterpreter; ++ + private: + enum SomeConstants { + block_size_in_oops = 32 // Number of handles per handle block +@@ -126,9 +128,11 @@ + // Fill block with bad_handle values + void zap(); + ++ protected: + // No more handles in the both the current and following blocks + void clear() { _top = 0; } + ++ private: + // Free list computation + void rebuild_free_list(); + +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/mutex.hpp +--- openjdk/hotspot/src/share/vm/runtime/mutex.hpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp Tue Oct 13 12:04:21 2009 -0700 +@@ -61,18 +61,10 @@ + } ; + + // Endian-ness ... index of least-significant byte in SplitWord.Bytes[] +-#ifdef AMD64 // little ++#ifdef VM_LITTLE_ENDIAN + #define _LSBINDEX 0 + #else +-#if IA32 // little +- #define _LSBINDEX 0 +-#else +-#ifdef SPARC // big + #define _LSBINDEX (sizeof(intptr_t)-1) +-#else +- #error "unknown architecture" +-#endif +-#endif + #endif + + class ParkEvent ; +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/signature.hpp +--- openjdk/hotspot/src/share/vm/runtime/signature.hpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/signature.hpp Tue Oct 13 12:04:21 2009 -0700 +@@ -275,11 +275,14 @@ + + void do_bool () { pass_int(); _jni_offset++; _offset++; } + void do_char () { pass_int(); _jni_offset++; _offset++; } ++#if defined(_LP64) || defined(ZERO) ++ void do_float () { pass_float(); _jni_offset++; _offset++; } ++#else ++ void do_float () { pass_int(); _jni_offset++; _offset++; } ++#endif + #ifdef _LP64 +- void do_float () { pass_float(); _jni_offset++; _offset++; } + void do_double() { pass_double(); _jni_offset++; _offset += 2; } + #else +- void do_float () { pass_int(); _jni_offset++; _offset++; } + void do_double() { pass_double(); _jni_offset += 2; _offset += 2; } + #endif + void do_byte () { pass_int(); _jni_offset++; _offset++; } +@@ -303,8 +306,10 @@ + virtual void pass_int() = 0; + virtual void pass_long() = 0; + virtual void pass_object() = 0; ++#if defined(_LP64) || defined(ZERO) ++ virtual void pass_float() = 0; ++#endif + #ifdef _LP64 +- virtual void pass_float() = 0; + virtual void pass_double() = 0; + #else + virtual void pass_double() { pass_long(); } // may be same as long +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/vm_version.cpp +--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -93,9 +93,13 @@ + #else // KERNEL + #ifdef TIERED + #define VMTYPE "Server" +-#else +- #define VMTYPE COMPILER1_PRESENT("Client") \ +- COMPILER2_PRESENT("Server") ++#else // TIERED ++#ifdef ZERO ++ #define VMTYPE "Zero" ++#else // ZERO ++ #define VMTYPE COMPILER1_PRESENT("Client") \ ++ COMPILER2_PRESENT("Server") ++#endif // ZERO + #endif // TIERED + #endif // KERNEL + +@@ -142,10 +146,14 @@ + WINDOWS_ONLY("windows") \ + SOLARIS_ONLY("solaris") + ++#ifdef ZERO ++#define CPU ZERO_LIBARCH ++#else + #define CPU IA32_ONLY("x86") \ + IA64_ONLY("ia64") \ + AMD64_ONLY("amd64") \ + SPARC_ONLY("sparc") ++#endif // ZERO + + const char *Abstract_VM_Version::vm_platform_string() { + return OS "-" CPU; +diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/utilities/vmError.cpp +--- openjdk/hotspot/src/share/vm/utilities/vmError.cpp Wed Oct 07 15:38:37 2009 -0700 ++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp Tue Oct 13 12:04:21 2009 -0700 +@@ -458,6 +458,40 @@ + + if (_verbose && _thread && _thread->is_Java_thread()) { + JavaThread* jt = (JavaThread*)_thread; ++#ifdef ZERO ++ if (jt->zero_stack()->sp() && jt->top_zero_frame()) { ++ // StackFrameStream uses the frame anchor, which may not have ++ // been set up. This can be done at any time in Zero, however, ++ // so if it hasn't been set up then we just set it up now and ++ // clear it again when we're done. ++ bool has_last_Java_frame = jt->has_last_Java_frame(); ++ if (!has_last_Java_frame) ++ jt->set_last_Java_frame(); ++ st->print("Java frames:"); ++ ++ // If the top frame is a Shark frame and the frame anchor isn't ++ // set up then it's possible that the information in the frame ++ // is garbage: it could be from a previous decache, or it could ++ // simply have never been written. So we print a warning... ++ StackFrameStream sfs(jt); ++ if (!has_last_Java_frame && !sfs.is_done()) { ++ if (sfs.current()->zeroframe()->is_shark_frame()) { ++ st->print(" (TOP FRAME MAY BE JUNK)"); ++ } ++ } ++ st->cr(); ++ ++ // Print the frames ++ for(int i = 0; !sfs.is_done(); sfs.next(), i++) { ++ sfs.current()->zero_print_on_error(i, st, buf, sizeof(buf)); ++ st->cr(); ++ } ++ ++ // Reset the frame anchor if necessary ++ if (!has_last_Java_frame) ++ jt->reset_last_Java_frame(); ++ } ++#else + if (jt->has_last_Java_frame()) { + st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)"); + for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) { +@@ -465,6 +499,7 @@ + st->cr(); + } + } ++#endif // ZERO + } + + STEP(140, "(printing VM operation)" ) diff -r c18ada9920f7 patches/zero/6891677.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6891677.patch Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,418 @@ +diff -r 2c88089b6e1c -r 608937d41381 make/hotspot-rules.gmk +--- openjdk/make/hotspot-rules.gmk Fri Oct 02 11:26:17 2009 -0700 ++++ openjdk/make/hotspot-rules.gmk Thu Oct 15 13:26:17 2009 +0100 +@@ -72,6 +72,10 @@ + HOTSPOT_TARGET = all_fastdebug + endif + ++ifeq ($(ZERO_BUILD), true) ++ HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero ++endif ++ + HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS) + HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) + HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH) +diff -r 5d0cf59a3203 -r 34a68fa0680b make/common/Defs-linux.gmk +--- openjdk/corba/make/common/Defs-linux.gmk Fri Oct 02 11:26:18 2009 -0700 ++++ openjdk/corba/make/common/Defs-linux.gmk Thu Oct 15 13:28:26 2009 +0100 +@@ -99,8 +99,16 @@ + LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9 + CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 + LDFLAGS_COMMON_sparc += -m32 -mcpu=v9 +-CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) +-LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) ++ifeq ($(ZERO_BUILD), true) ++ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG) ++ ifeq ($(ZERO_ENDIANNESS), little) ++ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN ++ endif ++ LDFLAGS_COMMON += $(ZERO_ARCHFLAG) ++else ++ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) ++ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) ++endif + + # Add in platform specific optimizations for all opt levels + CC_HIGHEST_OPT += $(_OPT_$(ARCH)) +@@ -196,7 +204,7 @@ + + EXTRA_LIBS += -lc + +-LDFLAGS_DEFS_OPTION = -z defs ++LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs + LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) + + # +diff -r 5d0cf59a3203 -r 34a68fa0680b make/common/shared/Compiler-gcc.gmk +--- openjdk/corba/make/common/shared/Compiler-gcc.gmk Fri Oct 02 11:26:18 2009 -0700 ++++ openjdk/corba/make/common/shared/Compiler-gcc.gmk Thu Oct 15 13:28:26 2009 +0100 +@@ -70,6 +70,11 @@ + else + CXX = $(COMPILER_PATH)g++ + endif ++ ifeq ($(ZERO_BUILD), true) ++ # zero ++ REQUIRED_CC_VER = 3.2 ++ REQUIRED_GCC_VER = 3.2.* ++ else + ifneq ("$(findstring sparc,$(ARCH))", "") + # sparc or sparcv9 + REQUIRED_CC_VER = 4.0 +@@ -88,6 +93,7 @@ + endif + endif + endif ++ endif + # Option used to create a shared library + SHARED_LIBRARY_FLAG = -shared -mimpure-text + SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) +diff -r eacb36e30327 -r e2de121c27c4 make/common/Defs-linux.gmk +--- openjdk/jdk/make/common/Defs-linux.gmk Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/common/Defs-linux.gmk Thu Oct 15 13:27:59 2009 +0100 +@@ -116,8 +116,16 @@ + LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9 + CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9 + LDFLAGS_COMMON_sparc += -m32 -mcpu=v9 +-CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) +-LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) ++ifeq ($(ZERO_BUILD), true) ++ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG) ++ ifeq ($(ZERO_ENDIANNESS), little) ++ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN ++ endif ++ LDFLAGS_COMMON += $(ZERO_ARCHFLAG) ++else ++ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) ++ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) ++endif + + # If this is a --hash-style=gnu system, use --hash-style=both + # The gnu .hash section won't work on some Linux systems like SuSE 10. +@@ -217,7 +225,7 @@ + + EXTRA_LIBS += -lc + +-LDFLAGS_DEFS_OPTION = -z defs ++LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs + LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) + + # +diff -r eacb36e30327 -r e2de121c27c4 make/common/Program.gmk +--- openjdk/jdk/make/common/Program.gmk Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/common/Program.gmk Thu Oct 15 13:27:59 2009 +0100 +@@ -85,7 +85,7 @@ + endif + endif + ifeq ($(PLATFORM), linux) +- LDFLAGS += -z origin ++ LDFLAGS += -Wl,-z -Wl,origin + LDFLAGS += -Wl,--allow-shlib-undefined + LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli + LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli +@@ -279,8 +279,14 @@ + + # + # How to install jvm.cfg. +-# +-$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(ARCH)/jvm.cfg ++# ++ifeq ($(ZERO_BUILD), true) ++JVMCFG_ARCH = zero ++else ++JVMCFG_ARCH = $(ARCH) ++endif ++ ++$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg + $(install-file) + + # +diff -r eacb36e30327 -r e2de121c27c4 make/java/instrument/Makefile +--- openjdk/jdk/make/java/instrument/Makefile Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/java/instrument/Makefile Thu Oct 15 13:27:59 2009 +0100 +@@ -109,7 +109,7 @@ + LDFLAGS += -R \$$ORIGIN/jli + endif + ifeq ($(PLATFORM), linux) +- LDFLAGS += -z origin ++ LDFLAGS += -Wl,-z -Wl,origin + LDFLAGS += -Wl,--allow-shlib-undefined + LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli + endif +diff -r eacb36e30327 -r e2de121c27c4 make/java/redist/Makefile +--- openjdk/jdk/make/java/redist/Makefile Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/java/redist/Makefile Thu Oct 15 13:27:59 2009 +0100 +@@ -94,11 +94,13 @@ + endif + endif # INCLUDE_SA + +-# Hotspot client is only available on 32-bit builds ++# Hotspot client is only available on 32-bit non-Zero builds ++ifneq ($(ZERO_BUILD), true) + ifeq ($(ARCH_DATA_MODEL), 32) + IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \ + $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt + endif ++endif + + ifeq ($(PLATFORM), windows) + # Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Windows +@@ -171,6 +173,7 @@ + IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME) + endif + ++ifneq ($(ZERO_BUILD), true) + ifeq ($(ARCH_DATA_MODEL), 32) + + IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) +@@ -201,6 +204,8 @@ + + endif # 32bit + ++endif # ZERO_BUILD ++ + # NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows + + endif # PLATFORM +diff -r eacb36e30327 -r e2de121c27c4 make/javax/sound/SoundDefs.gmk +--- openjdk/jdk/make/javax/sound/SoundDefs.gmk Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/javax/sound/SoundDefs.gmk Thu Oct 15 13:27:59 2009 +0100 +@@ -55,21 +55,25 @@ + + endif # PLATFORM solaris + +-ifeq ($(ARCH), i586) +- CPPFLAGS += -DX_ARCH=X_I586 +-endif # ARCH i586 ++ifeq ($(ZERO_BUILD), true) ++ CPPFLAGS += -DX_ARCH=X_ZERO ++else ++ ifeq ($(ARCH), i586) ++ CPPFLAGS += -DX_ARCH=X_I586 ++ endif # ARCH i586 + +-ifeq ($(ARCH), sparc) +- CPPFLAGS += -DX_ARCH=X_SPARC +-endif # ARCH sparc ++ ifeq ($(ARCH), sparc) ++ CPPFLAGS += -DX_ARCH=X_SPARC ++ endif # ARCH sparc + +-ifeq ($(ARCH), sparcv9) +- CPPFLAGS += -DX_ARCH=X_SPARCV9 +-endif # ARCH sparcv9 ++ ifeq ($(ARCH), sparcv9) ++ CPPFLAGS += -DX_ARCH=X_SPARCV9 ++ endif # ARCH sparcv9 + +-ifeq ($(ARCH), amd64) +- CPPFLAGS += -DX_ARCH=X_AMD64 +-endif # ARCH amd64 ++ ifeq ($(ARCH), amd64) ++ CPPFLAGS += -DX_ARCH=X_AMD64 ++ endif # ARCH amd64 ++endif + + + # files needed for MIDI i/o +diff -r eacb36e30327 -r e2de121c27c4 make/jdk_generic_profile.sh +--- openjdk/jdk/make/jdk_generic_profile.sh Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/make/jdk_generic_profile.sh Thu Oct 15 13:27:59 2009 +0100 +@@ -339,3 +339,82 @@ + PATH="${path4sdk}" + export PATH + ++# Export variables required for Zero ++if [ "${ZERO_BUILD}" = true ] ; then ++ # ZERO_LIBARCH is the name of the architecture-specific ++ # subdirectory under $JAVA_HOME/jre/lib ++ arch=$(uname -m) ++ case "${arch}" in ++ x86_64) ZERO_LIBARCH=amd64 ;; ++ i?86) ZERO_LIBARCH=i386 ;; ++ sparc64) ZERO_LIBARCH=sparcv9 ;; ++ arm*) ZERO_LIBARCH=arm ;; ++ *) ZERO_LIBARCH="$(arch)" ++ esac ++ export ZERO_LIBARCH ++ ++ # ARCH_DATA_MODEL is the number of bits in a pointer ++ case "${ZERO_LIBARCH}" in ++ i386|ppc|s390|sparc|arm) ++ ARCH_DATA_MODEL=32 ++ ;; ++ amd64|ppc64|s390x|sparcv9|ia64|alpha) ++ ARCH_DATA_MODEL=64 ++ ;; ++ *) ++ echo "ERROR: Unable to determine ARCH_DATA_MODEL for ${ZERO_LIBARCH}" ++ exit 1 ++ esac ++ export ARCH_DATA_MODEL ++ ++ # ZERO_ENDIANNESS is the endianness of the processor ++ case "${ZERO_LIBARCH}" in ++ i386|amd64|ia64) ++ ZERO_ENDIANNESS=little ++ ;; ++ ppc*|s390*|sparc*|alpha) ++ ZERO_ENDIANNESS=big ++ ;; ++ *) ++ echo "ERROR: Unable to determine ZERO_ENDIANNESS for ${ZERO_LIBARCH}" ++ exit 1 ++ esac ++ export ZERO_ENDIANNESS ++ ++ # ZERO_ARCHDEF is used to enable architecture-specific code ++ case "${ZERO_LIBARCH}" in ++ i386) ZERO_ARCHDEF=IA32 ;; ++ ppc*) ZERO_ARCHDEF=PPC ;; ++ s390*) ZERO_ARCHDEF=S390 ;; ++ sparc*) ZERO_ARCHDEF=SPARC ;; ++ *) ZERO_ARCHDEF=$(echo "${ZERO_LIBARCH}" | tr a-z A-Z) ++ esac ++ export ZERO_ARCHDEF ++ ++ # ZERO_ARCHFLAG tells the compiler which mode to build for ++ case "${ZERO_LIBARCH}" in ++ s390) ++ ZERO_ARCHFLAG="-m31" ++ ;; ++ *) ++ ZERO_ARCHFLAG="-m${ARCH_DATA_MODEL}" ++ esac ++ export ZERO_ARCHFLAG ++ ++ # LIBFFI_CFLAGS and LIBFFI_LIBS tell the compiler how to compile and ++ # link against libffi ++ pkgconfig=$(which pkg-config 2>/dev/null) ++ if [ -x "${pkgconfig}" ] ; then ++ if [ "${LIBFFI_CFLAGS}" = "" ] ; then ++ LIBFFI_CFLAGS=$("${pkgconfig}" --cflags libffi) ++ fi ++ if [ "${LIBFFI_LIBS}" = "" ] ; then ++ LIBFFI_LIBS=$("${pkgconfig}" --libs libffi) ++ fi ++ fi ++ if [ "${LIBFFI_LIBS}" = "" ] ; then ++ LIBFFI_LIBS="-lffi" ++ fi ++ export LIBFFI_CFLAGS ++ export LIBFFI_LIBS ++fi +diff -r eacb36e30327 -r e2de121c27c4 src/share/native/com/sun/media/sound/SoundDefs.h +--- openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Wed Oct 14 23:41:11 2009 +0100 ++++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Thu Oct 15 13:27:59 2009 +0100 +@@ -38,6 +38,7 @@ + #define X_SPARCV9 3 + #define X_IA64 4 + #define X_AMD64 5 ++#define X_ZERO 6 + + // ********************************** + // Make sure you set X_PLATFORM and X_ARCH defines correctly. +diff -r eacb36e30327 -r e2de121c27c4 src/solaris/bin/ergo_zero.c +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/src/solaris/bin/ergo_zero.c Thu Oct 15 13:27:59 2009 +0100 +@@ -0,0 +1,58 @@ ++/* ++ * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. Sun designates this ++ * particular file as subject to the "Classpath" exception as provided ++ * by Sun in the LICENSE file that accompanied this code. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++#include "ergo.h" ++ ++ ++/* Methods for solaris-sparc and linux-sparc: these are easy. */ ++ ++/* Ask the OS how many processors there are. */ ++static unsigned long ++physical_processors(void) { ++ const unsigned long sys_processors = sysconf(_SC_NPROCESSORS_CONF); ++ ++ JLI_TraceLauncher("sysconf(_SC_NPROCESSORS_CONF): %lu\n", sys_processors); ++ return sys_processors; ++} ++ ++/* The sparc version of the "server-class" predicate. */ ++jboolean ++ServerClassMachineImpl(void) { ++ jboolean result = JNI_FALSE; ++ /* How big is a server class machine? */ ++ const unsigned long server_processors = 2UL; ++ const uint64_t server_memory = 2UL * GB; ++ const uint64_t actual_memory = physical_memory(); ++ ++ /* Is this a server class machine? */ ++ if (actual_memory >= server_memory) { ++ const unsigned long actual_processors = physical_processors(); ++ if (actual_processors >= server_processors) { ++ result = JNI_TRUE; ++ } ++ } ++ JLI_TraceLauncher("unix_" LIBARCHNAME "_ServerClassMachine: %s\n", ++ (result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE")); ++ return result; ++} +diff -r eacb36e30327 -r e2de121c27c4 src/solaris/bin/zero/jvm.cfg +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/src/solaris/bin/zero/jvm.cfg Thu Oct 15 13:27:59 2009 +0100 +@@ -0,0 +1,39 @@ ++# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++# ++# This code is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License version 2 only, as ++# published by the Free Software Foundation. Sun designates this ++# particular file as subject to the "Classpath" exception as provided ++# by Sun in the LICENSE file that accompanied this code. ++# ++# This code is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++# version 2 for more details (a copy is included in the LICENSE file that ++# accompanied this code). ++# ++# You should have received a copy of the GNU General Public License version ++# 2 along with this work; if not, write to the Free Software Foundation, ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++# CA 95054 USA or visit www.sun.com if you need additional information or ++# have any questions. ++# ++# ++# List of JVMs that can be used as an option to java, javac, etc. ++# Order is important -- first in this list is the default JVM. ++# NOTE that this both this file and its format are UNSUPPORTED and ++# WILL GO AWAY in a future release. ++# ++# You may also select a JVM in an arbitrary location with the ++# "-XXaltjvm=" option, but that too is unsupported ++# and may not be available in a future release. ++# ++-server KNOWN ++-client IGNORE ++-hotspot ERROR ++-classic WARN ++-native ERROR ++-green ERROR diff -r c18ada9920f7 platform_zero.in --- a/platform_zero.in Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -os_family = linux - -arch = zero - -arch_model = zero - -os_arch = linux_zero - -os_arch_model = linux_zero - -lib_arch = zero - -compiler = gcc - -gnu_dis_arch = zero - -sysdefs = -DLINUX -D_GNU_SOURCE -DCC_INTERP -DZERO -D at ZERO_ARCHDEF@ -DZERO_LIBARCH=\"@ZERO_LIBARCH@\" diff -r c18ada9920f7 ports/hotspot/build/linux/makefiles/shark.make --- a/ports/hotspot/build/linux/makefiles/shark.make Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -# -# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved. -# Copyright 2008 Red Hat, Inc. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, -# CA 95054 USA or visit www.sun.com if you need additional information or -# have any questions. -# -# - -# Sets make macros for making shark version of VM - -TYPE = SHARK - -VM_SUBDIR = server - -CFLAGS += -DSHARK diff -r c18ada9920f7 ports/hotspot/build/linux/makefiles/zero.make --- a/ports/hotspot/build/linux/makefiles/zero.make Mon Dec 07 11:11:29 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -# -# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. -# Copyright 2007, 2008 Red Hat, Inc. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, -# CA 95054 USA or visit www.sun.com if you need additional information or -# have any questions. -# -# - -ifeq ($(ZERO_LIBARCH),arm) - -Obj_Files += asm_helper.o -Obj_Files += cppInterpreter_arm.o - -CFLAGS += -DHOTSPOT_ASM - -%.o: %.S - @echo Assembling $< - $(QUIETLY) $(REMOVE_TARGET) - $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) - -cppInterpreter_arm.o: offsets_arm.s bytecodes_arm.s - -offsets_arm.s: mkoffsets - @echo Generating assembler offsets - ./mkoffsets > $@ - -bytecodes_arm.s: bytecodes_arm.def mkbc - @echo Generatine ARM assembler bytecode sequences - $(CC_COMPILE) -E -x c++ - < $< | ./mkbc - $@ $(COMPILE_DONE) - -mkbc: $(GAMMADIR)/tools/mkbc.c - @echo Compiling mkbc tool - $(CC_COMPILE) -o $@ $< $(COMPILE_DONE) - -mkoffsets: asm_helper.cpp - @echo Compiling offset generator - $(QUIETLY) $(REMOVE_TARGET) - $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) - -endif - -# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized -OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT) -# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized -OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT) - -# Specify that the CPU is little endian, if necessary -ifeq ($(ZERO_ENDIANNESS), little) - CFLAGS += -DVM_LITTLE_ENDIAN -endif - -# Specify that the CPU is 64 bit, if necessary -ifeq ($(ZERO_BITSPERWORD), 64) - CFLAGS += -D_LP64=1 -endif - -OPT_CFLAGS/compactingPermGenGen.o = -O1 diff -r c18ada9920f7 ports/hotspot/make/linux/makefiles/shark.make --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/make/linux/makefiles/shark.make Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,32 @@ +# +# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2008 Red Hat, Inc. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# +# + +# Sets make macros for making shark version of VM + +TYPE = SHARK + +VM_SUBDIR = server + +CFLAGS += -DSHARK diff -r c18ada9920f7 ports/hotspot/make/linux/makefiles/zero.make --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/make/linux/makefiles/zero.make Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,32 @@ +# +# Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2009 Red Hat, Inc. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# +# + +# Setup for Zero (non-Shark) version of VM + +# Select which includeDB files to use (in top.make) +TYPE = ZERO + +# Install libjvm.so, etc in in server directory. +VM_SUBDIR = server diff -r c18ada9920f7 ports/hotspot/make/linux/makefiles/zeroshark.make --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/make/linux/makefiles/zeroshark.make Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,76 @@ +# +# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2007, 2008 Red Hat, Inc. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# +# + +# Setup common to Zero (non-Shark) and Shark versions of VM + +ifeq ($(ZERO_LIBARCH),arm) + +Obj_Files += asm_helper.o +Obj_Files += cppInterpreter_arm.o + +CFLAGS += -DHOTSPOT_ASM + +%.o: %.S + @echo Assembling $< + $(QUIETLY) $(REMOVE_TARGET) + $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) + +cppInterpreter_arm.o: offsets_arm.s bytecodes_arm.s + +offsets_arm.s: mkoffsets + @echo Generating assembler offsets + ./mkoffsets > $@ + +bytecodes_arm.s: bytecodes_arm.def mkbc + @echo Generatine ARM assembler bytecode sequences + $(CC_COMPILE) -E -x c++ - < $< | ./mkbc - $@ $(COMPILE_DONE) + +mkbc: $(GAMMADIR)/tools/mkbc.c + @echo Compiling mkbc tool + $(CC_COMPILE) -o $@ $< $(COMPILE_DONE) + +mkoffsets: asm_helper.cpp + @echo Compiling offset generator + $(QUIETLY) $(REMOVE_TARGET) + $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) + +endif + +# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized +OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT) +# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized +OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT) + +# Specify that the CPU is little endian, if necessary +ifeq ($(ZERO_ENDIANNESS), little) + CFLAGS += -DVM_LITTLE_ENDIAN +endif + +# Specify that the CPU is 64 bit, if necessary +ifeq ($(ARCH_DATA_MODEL), 64) + CFLAGS += -D_LP64=1 +endif + +OPT_CFLAGS/compactingPermGenGen.o = -O1 diff -r c18ada9920f7 ports/hotspot/make/linux/platform_zero.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/make/linux/platform_zero.in Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,17 @@ +os_family = linux + +arch = zero + +arch_model = zero + +os_arch = linux_zero + +os_arch_model = linux_zero + +lib_arch = zero + +compiler = gcc + +gnu_dis_arch = zero + +sysdefs = -DLINUX -D_GNU_SOURCE -DCC_INTERP -DZERO -D at ZERO_ARCHDEF@ -DZERO_LIBARCH=\"@ZERO_LIBARCH@\" diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Tue Dec 08 09:36:55 2009 +0000 @@ -61,8 +61,3 @@ address ShouldNotCallThisStub(); address ShouldNotCallThisEntry(); - -// Nothing to do with the assembler (or lack of), -// just a real convenient place to include these. -#include -#include diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Tue Dec 08 09:36:55 2009 +0000 @@ -78,6 +78,7 @@ #define regset r3-r11 +// XXX hardwired constants! #define tos_btos 0 #define tos_ctos 1 #define tos_stos 2 @@ -89,11 +90,13 @@ #include "offsets_arm.s" +// XXX hardwired constants! #define RESOURCEAREA_AREA 0 #define RESOURCEAREA_CHUNK 4 #define RESOURCEAREA_HWM 8 #define RESOURCEAREA_MAX 12 +// XXX hardwired constants! #define ISTATE_THREAD 0 #define ISTATE_BCP 4 #define ISTATE_LOCALS 8 @@ -104,19 +107,22 @@ #define ISTATE_ADVANCE_PC 28 #define ISTATE_MSG 28 #define ISTATE_CALLEE 32 // union frame_manager_message - #define ISTATE_PREV_LINK 44 #define ISTATE_OOP_TEMP 48 #define ISTATE_STACK_BASE 52 #define ISTATE_STACK_LIMIT 56 #define ISTATE_MONITOR_BASE 60 #define ISTATE_SELF_LINK 64 -#define ISTATE_CAFEBABF 68 - +#define ISTATE_FRAME_TYPE 68 #define ISTATE_NEXT_FRAME 72 - #define FRAME_SIZE 76 +// XXX hardwired constants! +#define ENTRY_FRAME 1 +#define INTERPRETER_FRAME 2 +#define SHARK_FRAME 3 +#define FAKE_STUB_FRAME 4 + #define last_implemented_bytecode 201 .macro ALIGN_CODE @@ -428,12 +434,9 @@ .macro CHECK_FRAME #ifdef DISPATCH_ASSERTS - @ Check 0xCAFEBABF hasn't been overwritten - ldr r1, [istate, #ISTATE_CAFEBABF] - mvn ip, #0x540 @ form 0xCAFEBABF - bic ip, ip, #0x14000 - bic ip, ip, #0x35000000 - cmp r1, ip + @ Check #INTERPRETER_FRAME hasn't been overwritten + ldr r1, [istate, #ISTATE_FRAME_TYPE] + cmp r1, #INTERPRETER_FRAME ABORTNE @ Check we are still the topmost frame ldr r1, [istate, #ISTATE_THREAD] @@ -441,12 +444,11 @@ add r2, istate, #ISTATE_NEXT_FRAME cmp r1, r2 ABORTNE - @ And check the NEXT_FRAME pointer points to a valid frame (CAFEBABF intact) + @ And check the NEXT_FRAME pointer points to a valid frame ldr r1, [istate, #ISTATE_NEXT_FRAME] - ldr r2, [r1, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r2, r2, #0xff @ ECN: Allow for differing frames - bic ip, ip, #0xff @ Eg. ENTRY_FRAME/INTERPRETER_FRAME/SHARK_FRAME - cmp r2, ip + ldr r2, [r1, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + bic r2, r2, #7 @ ECN: Allow for differing frames + cmp r2, #0 ABORTNE #endif .endm @@ -454,17 +456,13 @@ .macro CHECK_BACKTRACE #ifdef DISPATCH_ASSERTS add r3, istate, #ISTATE_NEXT_FRAME - mvn ip, #0x540 @ form 0xCAFEBABF - bic ip, ip, #0x14000 - bic ip, ip, #0x35000000 @ ECN: Only check a limited no of frames back. topmost frame already checked @ Check 2nd frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp ip, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -474,11 +472,10 @@ ABORTNE @ Check 3rd frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp r2, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -488,11 +485,10 @@ ABORTNE @ Check 4th frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp r2, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -502,11 +498,10 @@ ABORTNE @ Check 5th frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp r2, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -516,11 +511,10 @@ ABORTNE @ Check 7th frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp r2, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -530,11 +524,10 @@ ABORTNE @ Check 8th frame up ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] - bic r1, ip, #1 - cmp r1, r2 - beq 2f - cmp ip, r2 + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] + cmp r2, #ENTRY_FRAME + beq 2f + cmp r2, #INTERPRETER_FRAME ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] @@ -1030,9 +1023,7 @@ addne r6, r0, r6, asl #2 sub ip, r0, #4 str ip, [r3, #8] - mvn ip, #0x540 @ form 0xCAFEBABF - bic ip, ip, #0x14000 - bic ip, ip, #0x35000000 + mov ip, #INTERPRETER_FRAME str r4, [r0, #-4] ldr r0, [r3, #8] sub r8, r0, #4 @@ -1326,14 +1317,12 @@ ldr r4, [r2, #THREAD_JAVA_SP] ldr r3, [r2, #THREAD_TOP_ZERO_FRAME] mov r0, #0 - mvn ip, #0x540 @ form 0xCAFEBABF in ip + mov ip, #INTERPRETER_FRAME sub r9, r4, #FRAME_SIZE - bic ip, ip, #0x14000 str r9, [r2, #THREAD_JAVA_SP] @ drop stack sub r5, r9, #4 @ stack limit = r9 - 4 - bic ip, ip, #0x35000000 str r3, [r9, #ISTATE_NEXT_FRAME] - str ip, [r9, #ISTATE_CAFEBABF] + str ip, [r9, #ISTATE_FRAME_TYPE] str r9, [r9, #ISTATE_MONITOR_BASE] str r5, [r9, #ISTATE_STACK_LIMIT] str r9, [r9, #ISTATE_STACK_BASE] @@ -4627,9 +4616,8 @@ ldrh r0, [tmp2, #METHOD_MAXLOCALS] mov r1, #0 ldrh r3, [tmp2, #METHOD_SIZEOFPARAMETERS] - mvn ip, #0x540 @ form 0xCAFEBABF in ip + mov ip, #INTERPRETER_FRAME ldrh r2, [tmp2, #METHOD_MAXSTACK] - bic ip, ip, #0x35000000 sub r7, r0, r3 ldr r3, [tmp1, #THREAD_JAVA_STACK_BASE] @@ -4641,7 +4629,6 @@ subs r5, r7, #2 tst r7, #1 - bic ip, ip, #0x14000 strne r1, [stack, #-4]! bcc 3f 1: @@ -4657,7 +4644,7 @@ str r2, [tmp1, #THREAD_JAVA_SP] sub r5, r2, #4 @ stack limit = istate - stackwords - 4 str r3, [istate, #ISTATE_NEXT_FRAME] - str ip, [istate, #ISTATE_CAFEBABF] + str ip, [istate, #ISTATE_FRAME_TYPE] @ str istate, [istate, #ISTATE_SELF_LINK] str istate, [istate, #ISTATE_MONITOR_BASE] str r5, [istate, #ISTATE_STACK_LIMIT] diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Tue Dec 08 09:36:55 2009 +0000 @@ -37,6 +37,7 @@ } frame frame::sender_for_entry_frame(RegisterMap *map) const { + assert(zeroframe()->is_entry_frame(), "wrong type of frame"); assert(map != NULL, "map must be set"); assert(!entry_frame_is_first(), "next Java fp must be non zero"); assert(entry_frame_call_wrapper()->anchor()->last_Java_sp() == sender_sp(), @@ -47,6 +48,9 @@ } frame frame::sender_for_nonentry_frame(RegisterMap *map) const { + assert(zeroframe()->is_interpreter_frame() || + zeroframe()->is_shark_frame() || + zeroframe()->is_fake_stub_frame(), "wrong type of frame"); return frame(sender_sp(), sp() + 1); } diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Tue Dec 08 09:36:55 2009 +0000 @@ -23,11 +23,6 @@ * */ -#include -#include -#include -#include - // Constructors inline frame::frame() { diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/globals_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/globals_zero.hpp Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/globals_zero.hpp Tue Dec 08 09:36:55 2009 +0000 @@ -23,10 +23,8 @@ * */ -// // Set the default values for platform dependent flags used by the // runtime system. See globals.hpp for details of what they do. -// define_pd_global(bool, ConvertSleepToYield, true); define_pd_global(bool, ShareVtableStubs, true); diff -r c18ada9920f7 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Mon Dec 07 11:11:29 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Tue Dec 08 09:36:55 2009 +0000 @@ -124,7 +124,7 @@ }; enum FrameType { - ENTRY_FRAME = 0xCAFEBABE, + ENTRY_FRAME = 1, INTERPRETER_FRAME, SHARK_FRAME, FAKE_STUB_FRAME diff -r c18ada9920f7 ports/hotspot/src/share/vm/includeDB_zero --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/src/share/vm/includeDB_zero Tue Dec 08 09:36:55 2009 +0000 @@ -0,0 +1,55 @@ +// +// Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved. +// Copyright 2009 Red Hat, Inc. +// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +// +// This code is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License version 2 only, as +// published by the Free Software Foundation. +// +// This code is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// version 2 for more details (a copy is included in the LICENSE file that +// accompanied this code). +// +// You should have received a copy of the GNU General Public License version +// 2 along with this work; if not, write to the Free Software Foundation, +// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +// +// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +// CA 95054 USA or visit www.sun.com if you need additional information or +// have any questions. +// +// + +// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps! + +entryFrame_.hpp javaCalls.hpp +entryFrame_.hpp stack_.hpp + +fakeStubFrame_.hpp stack_.hpp + +frame.hpp stack_.hpp + +frame.inline.hpp fakeStubFrame_.hpp +frame.inline.hpp entryFrame_.hpp +frame.inline.hpp interpreterFrame_.hpp +frame.inline.hpp sharkFrame_.hpp + +frame_.cpp interpreterRuntime.hpp +frame_.cpp scopeDesc.hpp + +interpreter.hpp entry_.hpp + +interpreterFrame_.hpp bytecodeInterpreter.hpp +interpreterFrame_.hpp methodOop.hpp +interpreterFrame_.hpp stack_.hpp +interpreterFrame_.hpp thread.hpp + +sharkFrame_.hpp methodOop.hpp +sharkFrame_.hpp stack_.hpp + +stack_.hpp sizes.hpp + +thread.hpp stack_.hpp From gbenson at icedtea.classpath.org Tue Dec 8 02:32:53 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 10:32:53 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset 5dfa3c51f1e5 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5dfa3c51f1e5 author: Gary Benson date: Tue Dec 08 10:37:26 2009 +0000 2009-12-08 Gary Benson * patches/zero/6896043.patch: New file. * patches/icedtea-cc-interp-backedge.patch: Removed. * patches/icedtea-cc-interp-jvmti.patch: Likewise. * patches/icedtea-ia64-bugfix.patch: Likewise. * patches/icedtea-s390-serialize.patch: Likewise. * patches/icedtea-test-atomic-operations.patch: Likewise. * Makefile.am (ICEDTEA_PATCHES): Updated. diffstat: 8 files changed, 124 insertions(+), 104 deletions(-) ChangeLog | 10 ++ Makefile.am | 6 - patches/icedtea-cc-interp-backedge.patch | 30 ------ patches/icedtea-cc-interp-jvmti.patch | 13 -- patches/icedtea-ia64-bugfix.patch | 16 --- patches/icedtea-s390-serialize.patch | 15 --- patches/icedtea-test-atomic-operations.patch | 25 ----- patches/zero/6896043.patch | 113 ++++++++++++++++++++++++++ diffs (291 lines): diff -r e7ca0bef8351 -r 5dfa3c51f1e5 ChangeLog --- a/ChangeLog Tue Dec 08 09:42:47 2009 +0000 +++ b/ChangeLog Tue Dec 08 10:37:26 2009 +0000 @@ -1,3 +1,13 @@ 2009-12-08 Gary Benson + + * patches/zero/6896043.patch: New file. + * patches/icedtea-cc-interp-backedge.patch: Removed. + * patches/icedtea-cc-interp-jvmti.patch: Likewise. + * patches/icedtea-ia64-bugfix.patch: Likewise. + * patches/icedtea-s390-serialize.patch: Likewise. + * patches/icedtea-test-atomic-operations.patch: Likewise. + * Makefile.am (ICEDTEA_PATCHES): Updated. + 2009-12-08 Gary Benson * Makefile.am diff -r e7ca0bef8351 -r 5dfa3c51f1e5 Makefile.am --- a/Makefile.am Tue Dec 08 09:42:47 2009 +0000 +++ b/Makefile.am Tue Dec 08 10:37:26 2009 +0000 @@ -509,9 +509,8 @@ ICEDTEA_PATCHES = \ ICEDTEA_PATCHES = \ patches/zero/6890308.patch \ patches/zero/6891677.patch \ + patches/zero/6896043.patch \ patches/icedtea-notice-safepoints.patch \ - patches/icedtea-test-atomic-operations.patch \ - patches/icedtea-ia64-bugfix.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ patches/icedtea-version.patch \ @@ -566,7 +565,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-6761856-freetypescaler.patch \ patches/icedtea-testenv.patch \ patches/icedtea-samejvm-safe.patch \ - patches/icedtea-cc-interp-jvmti.patch \ patches/icedtea-pr261.patch \ patches/icedtea-doc-headers.patch \ patches/openjdk/bidi-tests.patch \ @@ -593,7 +591,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ patches/icedtea-java2d-dasher.patch \ - patches/icedtea-cc-interp-backedge.patch \ patches/icedtea-xml-encodinginfo.patch \ patches/icedtea-jtreg-6592792.patch \ patches/icedtea-s390-noinline.patch \ @@ -608,7 +605,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-explicit-target-arch.patch \ patches/openjdk/6432567-debugger-socket-overflow.patch \ patches/icedtea-gcc-stack-markings.patch \ - patches/icedtea-s390-serialize.patch \ patches/openjdk/6879689-hotspot_warning_fix.patch \ patches/icedtea-no-precompiled.patch \ patches/icedtea-6897844-xshm.patch diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/icedtea-cc-interp-backedge.patch --- a/patches/icedtea-cc-interp-backedge.patch Tue Dec 08 09:42:47 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -diff -r e0f4330c215b openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 16:46:08 2009 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 17:12:20 2009 +0000 -@@ -281,7 +281,7 @@ - - #define DO_BACKEDGE_CHECKS(skip, branch_pc) \ - if ((skip) <= 0) { \ -- if (UseCompiler && UseLoopCounter) { \ -+ if (UseLoopCounter) { \ - bool do_OSR = UseOnStackReplacement; \ - BACKEDGE_COUNT->increment(); \ - if (do_OSR) do_OSR = BACKEDGE_COUNT->reached_InvocationLimit(); \ -@@ -289,16 +289,12 @@ - nmethod* osr_nmethod; \ - OSR_REQUEST(osr_nmethod, branch_pc); \ - if (osr_nmethod != NULL && osr_nmethod->osr_entry_bci() != InvalidOSREntryBci) { \ -- intptr_t* buf; \ -- CALL_VM(buf=SharedRuntime::OSR_migration_begin(THREAD), handle_exception); \ -+ intptr_t* buf = SharedRuntime::OSR_migration_begin(THREAD); \ - istate->set_msg(do_osr); \ - istate->set_osr_buf((address)buf); \ - istate->set_osr_entry(osr_nmethod->osr_entry()); \ - return; \ - } \ -- } else { \ -- INCR_INVOCATION_COUNT; \ -- SAFEPOINT; \ - } \ - } /* UseCompiler ... */ \ - INCR_INVOCATION_COUNT; \ diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/icedtea-cc-interp-jvmti.patch --- a/patches/icedtea-cc-interp-jvmti.patch Tue Dec 08 09:42:47 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ ---- openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp 2008-12-24 12:01:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp 2008-12-24 12:00:29.000000000 +0000 -@@ -115,8 +115,10 @@ - jvmtiCapabilities jc; - - memset(&jc, 0, sizeof(jc)); -+#ifndef CC_INTERP - jc.can_pop_frame = 1; - jc.can_force_early_return = 1; -+#endif // !CC_INTERP - jc.can_get_source_debug_extension = 1; - jc.can_access_local_variables = 1; - jc.can_maintain_original_method_order = 1; diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/icedtea-ia64-bugfix.patch --- a/patches/icedtea-ia64-bugfix.patch Tue Dec 08 09:42:47 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -diff -r 114e54fc994e openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Apr 04 09:33:18 2008 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Apr 04 09:34:11 2008 +0100 -@@ -1281,12 +1281,7 @@ run: - jfloat f; - jdouble r; - f = STACK_FLOAT(-1); --#ifdef IA64 -- // IA64 gcc bug -- r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; --#else - r = (jdouble) f; --#endif - MORE_STACK(-1); // POP - SET_STACK_DOUBLE(r, 1); - UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2); diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/icedtea-s390-serialize.patch --- a/patches/icedtea-s390-serialize.patch Tue Dec 08 09:42:47 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -diff -r 54de806cda4f -r 16b4f99fe54e openjdk-ecj/hotspot/src/share/vm/runtime/os.hpp ---- openjdk/hotspot/src/share/vm/runtime/os.hpp Fri Oct 02 14:46:11 2009 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/os.hpp Fri Oct 02 15:28:00 2009 +0100 -@@ -300,6 +300,11 @@ - // of the form: - // return ((_mem_serialize_page ^ addr) & -pagesize) == 0 - // -+#ifdef S390 -+ // s390 is one of those "some platforms" -+ if (addr == (address)_mem_serialize_page) -+ return true; -+#endif // S390 - thr_addr = (address)(((uintptr_t)thread >> - get_serialize_page_shift_count()) & - get_serialize_page_mask()) + (uintptr_t)_mem_serialize_page; diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/icedtea-test-atomic-operations.patch --- a/patches/icedtea-test-atomic-operations.patch Tue Dec 08 09:42:47 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -diff -r d384f5a5bd0c hotspot/src/share/vm/prims/jni.cpp ---- openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Aug 06 13:11:51 2007 +0100 -+++ openjdk/hotspot/src/share/vm/prims/jni.cpp Fri Sep 14 09:58:33 2007 +0100 -@@ -3209,6 +3209,21 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_ - jint result = JNI_ERR; - DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result); - -+ // We're about to use Atomic::xchg for locking. On Zero platforms -+ // this is implemented using the GCC builtin __sync_lock_test_and_set -+ // which is not guaranteed to do what we're using it for on all -+ // platforms. So we check it works before doing anything else. -+#if defined(ZERO) && defined(ASSERT) -+ { -+ jint a = 0xCAFEBABE; -+ jint b = Atomic::xchg(0xC0FFEE, &a); -+ void *c = &a; -+ void *d = Atomic::xchg_ptr(&b, &c); -+ assert(a == 0xC0FFEE && b == (jint) 0xCAFEBABE, "Atomic::xchg() works"); -+ assert(c == &b && d == &a, "Atomic::xchg_ptr() works"); -+ } -+#endif // ZERO && ASSERT -+ - // At the moment it's only possible to have one Java VM, - // since some of the runtime state is in global variables. - diff -r e7ca0bef8351 -r 5dfa3c51f1e5 patches/zero/6896043.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6896043.patch Tue Dec 08 10:37:26 2009 +0000 @@ -0,0 +1,113 @@ +diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/interpreter/bytecodeInterpreter.cpp +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Tue Nov 24 11:49:42 2009 -0800 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Nov 27 07:56:58 2009 -0800 +@@ -281,7 +281,7 @@ + + #define DO_BACKEDGE_CHECKS(skip, branch_pc) \ + if ((skip) <= 0) { \ +- if (UseCompiler && UseLoopCounter) { \ ++ if (UseLoopCounter) { \ + bool do_OSR = UseOnStackReplacement; \ + BACKEDGE_COUNT->increment(); \ + if (do_OSR) do_OSR = BACKEDGE_COUNT->reached_InvocationLimit(); \ +@@ -289,16 +289,12 @@ + nmethod* osr_nmethod; \ + OSR_REQUEST(osr_nmethod, branch_pc); \ + if (osr_nmethod != NULL && osr_nmethod->osr_entry_bci() != InvalidOSREntryBci) { \ +- intptr_t* buf; \ +- CALL_VM(buf=SharedRuntime::OSR_migration_begin(THREAD), handle_exception); \ ++ intptr_t* buf = SharedRuntime::OSR_migration_begin(THREAD); \ + istate->set_msg(do_osr); \ + istate->set_osr_buf((address)buf); \ + istate->set_osr_entry(osr_nmethod->osr_entry()); \ + return; \ + } \ +- } else { \ +- INCR_INVOCATION_COUNT; \ +- SAFEPOINT; \ + } \ + } /* UseCompiler ... */ \ + INCR_INVOCATION_COUNT; \ +@@ -1281,12 +1277,7 @@ + jfloat f; + jdouble r; + f = STACK_FLOAT(-1); +-#ifdef IA64 +- // IA64 gcc bug +- r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; +-#else + r = (jdouble) f; +-#endif + MORE_STACK(-1); // POP + SET_STACK_DOUBLE(r, 1); + UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2); +diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/prims/jni.cpp +--- openjdk/hotspot/src/share/vm/prims/jni.cpp Tue Nov 24 11:49:42 2009 -0800 ++++ openjdk/hotspot/src/share/vm/prims/jni.cpp Fri Nov 27 07:56:58 2009 -0800 +@@ -3231,6 +3231,21 @@ + jint result = JNI_ERR; + DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result); + ++ // We're about to use Atomic::xchg for synchronization. Some Zero ++ // platforms use the GCC builtin __sync_lock_test_and_set for this, ++ // but __sync_lock_test_and_set is not guaranteed to do what we want ++ // on all architectures. So we check it works before relying on it. ++#if defined(ZERO) && defined(ASSERT) ++ { ++ jint a = 0xcafebabe; ++ jint b = Atomic::xchg(0xdeadbeef, &a); ++ void *c = &a; ++ void *d = Atomic::xchg_ptr(&b, &c); ++ assert(a == 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works"); ++ assert(c == &b && d == &a, "Atomic::xchg_ptr() works"); ++ } ++#endif // ZERO && ASSERT ++ + // At the moment it's only possible to have one Java VM, + // since some of the runtime state is in global variables. + +diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/prims/jvmtiManageCapabilities.cpp +--- openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp Tue Nov 24 11:49:42 2009 -0800 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp Fri Nov 27 07:56:58 2009 -0800 +@@ -115,8 +115,10 @@ + jvmtiCapabilities jc; + + memset(&jc, 0, sizeof(jc)); ++#ifndef CC_INTERP + jc.can_pop_frame = 1; + jc.can_force_early_return = 1; ++#endif // !CC_INTERP + jc.can_get_source_debug_extension = 1; + jc.can_access_local_variables = 1; + jc.can_maintain_original_method_order = 1; +diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/runtime/os.hpp +--- openjdk/hotspot/src/share/vm/runtime/os.hpp Tue Nov 24 11:49:42 2009 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/os.hpp Fri Nov 27 07:56:58 2009 -0800 +@@ -294,19 +294,16 @@ + } + + static bool is_memory_serialize_page(JavaThread *thread, address addr) { +- address thr_addr; + if (UseMembar) return false; +- // Calculate thread specific address ++ // Previously this function calculated the exact address of this ++ // thread's serialize page, and checked if the faulting address ++ // was equal. However, some platforms mask off faulting addresses ++ // to the page size, so now we just check that the address is ++ // within the page. This makes the thread argument unnecessary, ++ // but we retain the NULL check to preserve existing behaviour. + if (thread == NULL) return false; +- // TODO-FIXME: some platforms mask off faulting addresses to the base pagesize. +- // Instead of using a test for equality we should probably use something +- // of the form: +- // return ((_mem_serialize_page ^ addr) & -pagesize) == 0 +- // +- thr_addr = (address)(((uintptr_t)thread >> +- get_serialize_page_shift_count()) & +- get_serialize_page_mask()) + (uintptr_t)_mem_serialize_page; +- return (thr_addr == addr); ++ address page = (address) _mem_serialize_page; ++ return addr >= page && addr < (page + os::vm_page_size()); + } + + static void block_on_serialize_page_trap(); From gbenson at icedtea.classpath.org Tue Dec 8 02:47:31 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 10:47:31 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset 711eb8ce4884 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=711eb8ce4884 author: Gary Benson date: Tue Dec 08 10:52:33 2009 +0000 2009-12-08 Gary Benson * patches/zero/6903453.patch: New file. * patches/icedtea-ia64-fdlibm.patch: Removed. * patches/icedtea-uname.patch: Fixed up. * Makefile.am (ICEDTEA_PATCHES): Updated. diffstat: 5 files changed, 46 insertions(+), 33 deletions(-) ChangeLog | 7 ++++++ Makefile.am | 2 - patches/icedtea-ia64-fdlibm.patch | 12 ----------- patches/icedtea-uname.patch | 20 ------------------- patches/zero/6903453.patch | 38 +++++++++++++++++++++++++++++++++++++ diffs (125 lines): diff -r 5dfa3c51f1e5 -r 711eb8ce4884 ChangeLog --- a/ChangeLog Tue Dec 08 10:37:26 2009 +0000 +++ b/ChangeLog Tue Dec 08 10:52:33 2009 +0000 @@ -1,3 +1,10 @@ 2009-12-08 Gary Benson + + * patches/zero/6903453.patch: New file. + * patches/icedtea-ia64-fdlibm.patch: Removed. + * patches/icedtea-uname.patch: Fixed up. + * Makefile.am (ICEDTEA_PATCHES): Updated. + 2009-12-08 Gary Benson * patches/zero/6896043.patch: New file. diff -r 5dfa3c51f1e5 -r 711eb8ce4884 Makefile.am --- a/Makefile.am Tue Dec 08 10:37:26 2009 +0000 +++ b/Makefile.am Tue Dec 08 10:52:33 2009 +0000 @@ -510,6 +510,7 @@ ICEDTEA_PATCHES = \ patches/zero/6890308.patch \ patches/zero/6891677.patch \ patches/zero/6896043.patch \ + patches/zero/6903453.patch \ patches/icedtea-notice-safepoints.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ @@ -541,7 +542,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-print-lsb-release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ - patches/icedtea-ia64-fdlibm.patch \ patches/icedtea-freetypeversion.patch \ patches/icedtea-fonts.patch \ patches/icedtea-shark-build.patch \ diff -r 5dfa3c51f1e5 -r 711eb8ce4884 patches/icedtea-ia64-fdlibm.patch --- a/patches/icedtea-ia64-fdlibm.patch Tue Dec 08 10:37:26 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -diff -r 8c25a5a32f56 openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h ---- openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Sun Apr 13 16:00:28 2008 +0100 -+++ openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue Apr 15 15:30:59 2008 +0100 -@@ -30,7 +30,7 @@ - #ifdef __NEWVALID /* special setup for Sun test regime */ - #if defined(i386) || defined(i486) || \ - defined(intel) || defined(x86) || \ -- defined(i86pc) || defined(_M_IA64) -+ defined(i86pc) || defined(ia64) - #define _LITTLE_ENDIAN - #endif - #endif diff -r 5dfa3c51f1e5 -r 711eb8ce4884 patches/icedtea-uname.patch --- a/patches/icedtea-uname.patch Tue Dec 08 10:37:26 2009 +0000 +++ b/patches/icedtea-uname.patch Tue Dec 08 10:52:33 2009 +0000 @@ -10,16 +10,6 @@ archExpr = case "$(mach)" in \ i[3-9]86) \ echo i586 \ -@@ -204,6 +207,9 @@ - sparc*) \ - echo sparc \ - ;; \ -+ arm*) \ -+ echo arm \ -+ ;; \ - *) \ - echo $(mach) \ - ;; \ --- openjdk/corba/make/common/shared/Platform.gmk.orig 2008-10-27 11:44:47.000000000 +0100 +++ openjdk/corba/make/common/shared/Platform.gmk 2008-10-27 11:53:01.000000000 +0100 @@ -181,6 +181,9 @@ @@ -32,13 +22,3 @@ archExpr = case "$(mach)" in \ i[3-9]86) \ echo i586 \ -@@ -194,6 +197,9 @@ - sparc*) \ - echo sparc \ - ;; \ -+ arm*) \ -+ echo arm \ -+ ;; \ - *) \ - echo $(mach) \ - ;; \ diff -r 5dfa3c51f1e5 -r 711eb8ce4884 patches/zero/6903453.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6903453.patch Tue Dec 08 10:52:33 2009 +0000 @@ -0,0 +1,38 @@ +diff -r 937144222e22 -r 28b983e5bb5f make/common/shared/Platform.gmk +--- openjdk/corba/make/common/shared/Platform.gmk Sun Nov 08 14:49:40 2009 -0800 ++++ openjdk/corba/make/common/shared/Platform.gmk Mon Nov 23 10:04:41 2009 +0000 +@@ -187,6 +187,9 @@ + sparc*) \ + echo sparc \ + ;; \ ++ arm*) \ ++ echo arm \ ++ ;; \ + *) \ + echo $(mach) \ + ;; \ +diff -r 8fb602395be0 -r ad1c88142958 make/common/shared/Platform.gmk +--- openjdk/jdk/make/common/shared/Platform.gmk Sun Nov 08 14:49:18 2009 -0800 ++++ openjdk/jdk/make/common/shared/Platform.gmk Mon Nov 23 10:04:47 2009 +0000 +@@ -165,6 +165,9 @@ + sparc*) \ + echo sparc \ + ;; \ ++ arm*) \ ++ echo arm \ ++ ;; \ + *) \ + echo $(mach) \ + ;; \ +diff -r 8fb602395be0 -r ad1c88142958 src/share/native/java/lang/fdlibm/include/fdlibm.h +--- openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Sun Nov 08 14:49:18 2009 -0800 ++++ openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Mon Nov 23 10:04:47 2009 +0000 +@@ -29,7 +29,7 @@ + #ifdef __NEWVALID /* special setup for Sun test regime */ + #if defined(i386) || defined(i486) || \ + defined(intel) || defined(x86) || \ +- defined(i86pc) || defined(_M_IA64) ++ defined(i86pc) || defined(_M_IA64) || defined(ia64) + #define _LITTLE_ENDIAN + #endif + #endif From gbenson at icedtea.classpath.org Tue Dec 8 02:59:34 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 10:59:34 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset abca2e2ab3c9 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=abca2e2ab3c9 author: Gary Benson date: Tue Dec 08 11:04:41 2009 +0000 2009-12-08 Gary Benson * HACKING: Updated. diffstat: 2 files changed, 16 insertions(+), 12 deletions(-) ChangeLog | 4 ++++ HACKING | 24 ++++++++++++------------ diffs (98 lines): diff -r 711eb8ce4884 -r abca2e2ab3c9 ChangeLog --- a/ChangeLog Tue Dec 08 10:52:33 2009 +0000 +++ b/ChangeLog Tue Dec 08 11:04:41 2009 +0000 @@ -1,3 +1,7 @@ 2009-12-08 Gary Benson + + * HACKING: Updated. + 2009-12-08 Gary Benson * patches/zero/6903453.patch: New file. diff -r 711eb8ce4884 -r abca2e2ab3c9 HACKING --- a/HACKING Tue Dec 08 10:52:33 2009 +0000 +++ b/HACKING Tue Dec 08 11:04:41 2009 +0000 @@ -19,7 +19,6 @@ The following patches are currently appl * icedtea-bytebuffer-compact.patch: Add clearMark() method to java.nio.Buffer (PR60). * icedtea-copy-plugs.patch: Add IcedTea's 'plugs' for Java WebStart support, add cast to getAnnotation and trapAuthenticationFailure variable to com.sun.jmx.snmp.SnmpPduTrap. -* icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) @@ -28,7 +27,6 @@ The following patches are currently appl * icedtea-gcc-4.3.patch: Fix code to compile with GCC 4.3 and turn off -Werror. * icedtea-gcc-suffix.patch: Append $(GCC_SUFFIX) to end of 'gcc' binary name. * icedtea-graphics.patch: Fix word wrap in JTextArea (PR57/S6593649) -* icedtea-ia64-fdlibm.patch: Fix name of ia64 architecture from _M_IA64 to ia64. * icedtea-javac-debuginfo.patch: Ensure debugging information is generated for all class files. * icedtea-javafiles.patch: Add missing Java files to list. * icedtea-jpegclasses.patch: Add com.sun.image.codec.jpeg support. @@ -36,7 +34,6 @@ The following patches are currently appl * icedtea-lcms-2.patch: Temporary fix for https://bugs.openjdk.java.net/show_bug.cgi?id=100050. * icedtea-lib64.patch: Add support for building on platforms with /usr/lib64. * icedtea-libraries.patch: Use system JPEG and zlib libraries. -* icedtea-linker-options.patch: Add -Xlinker option when linking. * icedtea-memory-limits.patch: Increase default memory limits. * icedtea-no-bcopy.patch: Don't define local copies of bcopy, bzero and bcmp from BSD. * icedtea-override-redirect-metacity.patch: Enable override redirect for Metacity window manager. @@ -47,7 +44,6 @@ The following patches are currently appl * icedtea-sparc-ptracefix.patch: Avoid importing asm-sparc/ptrace.h by including pt_regs directly. * icedtea-sparc-trapsfix.patch: Include traps.h from correct directory. * icedtea-ssl.patch: Add casts to AlgorithmParameterSpec in sun.security.ssl package. -* icedtea-static-libstdc++.patch: Don't use static C++ on PPC64. * icedtea-sunsrc.patch: Remove service property files from TOOLS list. * icedtea-text-relocations.patch: Use correct -fPIC/-fpic flag on all platforms. * icedtea-timerqueue.patch: Fix setting of running variable (PR87). @@ -55,7 +51,6 @@ The following patches are currently appl * icedtea-use-system-tzdata.patch: Use timezone data from the system (PR70/S6593486). * icedtea-version.patch: Replace name and bug URL with IcedTea versions. * icedtea-webservices.patch: Add applet support. -* icedtea-zero-build.patch: Add support for the zero assembler build. * icedtea-shark-build.patch: Add support for building the Shark JIT. * icedtea-alpha-fixes.patch: Fix build issues on alpha-linux. * icedtea-arch.patch: Add support for additional architectures. @@ -74,14 +69,12 @@ The following patches are currently appl * icedtea-6728542-epoll.patch: Make EPoll work on non-x86 platforms. (PR265) * icedtea-fortify-source.patch: Fix build failures with -D_FORTIFY_SOURCE=2. * icedtea-format-warnings.patch: Fix build failures with -Wformat=1. -* icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. * icedtea-demo-swingapplet.patch: Add missing html file needed to run the demo. * icedtea-6791168.patch: Fix build failure with GCC-4.4 (PR 38725) and compiler warnings. * icedtea-no-precompiled.patch: Don't use precompiled header files in hotspot when DISABLE_PRECOMPILED_HEADER is set. * icedtea-includedb.patch: Add missing include files. * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). * icedtea-java2d-dasher.patch: Fix interpretation of dash array elements in BasicStroke (S6793344). -* icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. * icedtea-xml-encodinginfo.patch: Fix possible StackOverflowError in EncodingInfo (PR295). * icedtea-jtreg-6592792.patch: Fix jtreg test for bug 6592792 so that it compiles. * icedtea-s390-noinline.patch: Add special flags for javac on s390 to work around a VM problem with bad code generation during inlining. @@ -99,12 +92,7 @@ The following patches are currently appl * icedtea-cacao.patch: For the 'java' command, create new thread depending on the current VM. * icedtea-cacao-no-mmap-first-page.patch: Don't mmap the first memory page. * cacao/no-strict-aliasing.patch: Turn off strict aliasing which causes an issue with the verifier when building with GCC 4.4 (cacao PR129). -* icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. -* icedtea-signature-iterator.patch: Add zero-specific signature handling. -* icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. -* icedtea-zero.patch: Generalise architecture support, add ARM and #ifdef out non-zero applicable parts. * icedtea-shark.patch: Add support for the Shark JIT. -* icedtea-s390-serialize.patch: Correctly detect serialization segfaults on s390. * icedtea-xshm.patch: Support newer X11 headers for awt_GraphicsEnv.h. The following patches are only applied to OpenJDK6 in IcedTea6: @@ -176,3 +164,15 @@ changes to the OpenJDK code base and/or * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485); not required with HS14. * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. Not required with HS14. * icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. Not required with HS14. +* icedtea-signature-iterator.patch: Add zero-specific signature handling. Obsoleted by zero/6890308.patch. +* icedtea-static-libstdc++.patch: Don't use static C++ on PPC64. Obsoleted by zero/6890308.patch. +* icedtea-zero.patch: Generalise architecture support, add ARM and #ifdef out non-zero applicable parts. Obsoleted by zero/6890308.patch. +* icedtea-core-build.patch: Add support for building IcedTea core VM. Obsoleted by zero/6891677.patch. +* icedtea-linker-options.patch: Add -Xlinker option when linking. Obsoleted by zero/6891677.patch. +* icedtea-zero-build.patch: Add support for the zero assembler build. Obsoleted by zero/6891677.patch. +* icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. Obsoleted by zero/6896043.patch. +* icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. Obsoleted by zero/6896043.patch. +* icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. Obsoleted by zero/6896043.patch. +* icedtea-s390-serialize.patch: Correctly detect serialization segfaults on s390. Obsoleted by zero/6896043.patch. +* icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. Obsoleted by zero/6896043.patch. +* icedtea-ia64-fdlibm.patch: Fix name of ia64 architecture from _M_IA64 to ia64. Obsoleted by zero/6903453.patch. From gbenson at redhat.com Tue Dec 8 03:19:27 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 8 Dec 2009 11:19:27 +0000 Subject: Zero patch consolidation Message-ID: <20091208111927.GB3422@redhat.com> Hi all, So the Zero patch consolidation I've been working on is now complete. As of now, the only patches relating to Zero in icedtea6 are in the patches/zero/ directory. Each one is numbered with the Sun bug ID with which it was pushed to OpenJDK7, and each one is generated from the OpenJDK7 forest into which it was initially pushed. The rationale behind this is that at some point in the future changesets relating to Zero may appear in OpenJDK6 or HotSpot Express tarballs. When this happens, patches will fail to apply. By grouping the patches in this way, only one patch needs removing for each changeset. At some further point in the future Zero itself may appear in an OpenJDK6 or HotSpot Express tarball; when this happens the relevant files under ports/ will be removed (the ARM interpreter will need turning into a patch) and changes to Zero itself will be handled in this way. Please don't use patches/zero for other files. I haven't mirrored this change in IcedTea7; that has very few Zero patches left, and after b78 (or maybe b77) they will all be gone, so it's not like it's something I'll have to keep track of long term like I do for IcedTea6. Cheers, Gary -- http://gbenson.net/ From gbenson at icedtea.classpath.org Tue Dec 8 05:10:27 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 13:10:27 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset 833a7998e7f0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=833a7998e7f0 author: Gary Benson date: Tue Dec 08 13:15:30 2009 +0000 2009-12-08 Gary Benson * ports/hotspot/make/linux/platform_zero.in: New file. * .hgignore: Updated. diffstat: 3 files changed, 22 insertions(+), 1 deletion(-) .hgignore | 1 - ChangeLog | 5 +++++ ports/hotspot/make/linux/platform_zero.in | 17 +++++++++++++++++ diffs (44 lines): diff -r abca2e2ab3c9 -r 833a7998e7f0 .hgignore --- a/.hgignore Tue Dec 08 11:04:41 2009 +0000 +++ b/.hgignore Tue Dec 08 13:15:30 2009 +0000 @@ -31,7 +31,6 @@ rt-source-files.txt rt-source-files.txt hotspot-tools-source-files.txt tools-source-files.txt -platform_zero jvm.cfg ergo.c tapset/hotspot.stp diff -r abca2e2ab3c9 -r 833a7998e7f0 ChangeLog --- a/ChangeLog Tue Dec 08 11:04:41 2009 +0000 +++ b/ChangeLog Tue Dec 08 13:15:30 2009 +0000 @@ -1,3 +1,8 @@ 2009-12-08 Gary Benson + + * ports/hotspot/make/linux/platform_zero.in: New file. + * .hgignore: Updated. + 2009-12-08 Gary Benson * HACKING: Updated. diff -r abca2e2ab3c9 -r 833a7998e7f0 ports/hotspot/make/linux/platform_zero.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/make/linux/platform_zero.in Tue Dec 08 13:15:30 2009 +0000 @@ -0,0 +1,17 @@ +os_family = linux + +arch = zero + +arch_model = zero + +os_arch = linux_zero + +os_arch_model = linux_zero + +lib_arch = zero + +compiler = gcc + +gnu_dis_arch = zero + +sysdefs = -DLINUX -D_GNU_SOURCE -DCC_INTERP -DZERO -D at ZERO_ARCHDEF@ -DZERO_LIBARCH=\"@ZERO_LIBARCH@\" From gnu_andrew at member.fsf.org Tue Dec 8 05:42:43 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 8 Dec 2009 13:42:43 +0000 Subject: Zero patch consolidation In-Reply-To: <20091208111927.GB3422@redhat.com> References: <20091208111927.GB3422@redhat.com> Message-ID: <17c6771e0912080542x134f3b2eoea8d284ae2a2cada@mail.gmail.com> 2009/12/8 Gary Benson : > Hi all, > > So the Zero patch consolidation I've been working on is now complete. > > As of now, the only patches relating to Zero in icedtea6 are in the > patches/zero/ directory. ?Each one is numbered with the Sun bug ID > with which it was pushed to OpenJDK7, and each one is generated from > the OpenJDK7 forest into which it was initially pushed. > > The rationale behind this is that at some point in the future > changesets relating to Zero may appear in OpenJDK6 or HotSpot Express > tarballs. ?When this happens, patches will fail to apply. ?By grouping > the patches in this way, only one patch needs removing for each > changeset. ?At some further point in the future Zero itself may appear > in an OpenJDK6 or HotSpot Express tarball; when this happens the > relevant files under ports/ will be removed (the ARM interpreter will > need turning into a patch) and changes to Zero itself will be handled > in this way. > > Please don't use patches/zero for other files. > I like this. Anything that makes working out which patches have been merged and removing them easier gets a big smile from me. I'm also strongly in favour of organising the patches directory a bit better, especially if it makes it clearer which stuff is going to end up in OpenJDK6 eventually and which stuff we'll be maintaining for life. > I haven't mirrored this change in IcedTea7; that has very few Zero > patches left, and after b78 (or maybe b77) they will all be gone, > so it's not like it's something I'll have to keep track of long term > like I do for IcedTea6. > b77 is already out, so I just need to get round to updating IcedTea7 to build against it, dropping the ia64 patch and part of the uname patch (the rest I'll stick in a Debian subdir as it's specific to that platform). I hope b78 will see a HotSpot promotion and IcedTea7 will be clear of zero patches for the new year. > Cheers, > Gary > > -- > http://gbenson.net/ > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Tue Dec 8 05:45:53 2009 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 08 Dec 2009 14:45:53 +0100 Subject: Zero patch consolidation In-Reply-To: <17c6771e0912080542x134f3b2eoea8d284ae2a2cada@mail.gmail.com> References: <20091208111927.GB3422@redhat.com> <17c6771e0912080542x134f3b2eoea8d284ae2a2cada@mail.gmail.com> Message-ID: <4B1E5891.5080305@ubuntu.com> On 08.12.2009 14:42, Andrew John Hughes wrote: > b77 is already out, so I just need to get round to updating IcedTea7 > to build against it, dropping the ia64 patch and part of the uname > patch (the rest I'll stick in a Debian subdir as it's specific to that > platform). the only Debian specific diff should be the mips/mipsel arch selection. is there anything else? Matthias From gnu_andrew at member.fsf.org Tue Dec 8 05:54:41 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 8 Dec 2009 13:54:41 +0000 Subject: Zero patch consolidation In-Reply-To: <4B1E5891.5080305@ubuntu.com> References: <20091208111927.GB3422@redhat.com> <17c6771e0912080542x134f3b2eoea8d284ae2a2cada@mail.gmail.com> <4B1E5891.5080305@ubuntu.com> Message-ID: <17c6771e0912080554i68e844b7if3805ae9cdfe170e@mail.gmail.com> 2009/12/8 Matthias Klose : > On 08.12.2009 14:42, Andrew John Hughes wrote: >> >> b77 is already out, so I just need to get round to updating IcedTea7 >> to build against it, dropping the ia64 patch and part of the uname >> patch (the rest I'll stick in a Debian subdir as it's specific to that >> platform). > > the only Debian specific diff should be the mips/mipsel arch selection. is > there anything else? > > ?Matthias > Sorry, my mistake it's not arch but uname: patches/icedtea-uname.patch:+ ifneq (,$(wildcard /usr/bin/dpkg-architecture)) patches/icedtea-uname.patch:+ mach := $(shell (dpkg-architecture -qDEB_BUILD_ARCH_CPU 2>/dev/null || echo $(mach)) | sed 's/powerpc$$/ppc/;s/hppa/parisc/') There's also: patches/icedtea-explicit-target-arch.patch:- ifneq (,$(wildcard /usr/bin/dpkg-architecture)) patches/icedtea-explicit-target-arch.patch:- mach := $(shell (dpkg-architecture -qDEB_BUILD_ARCH_CPU 2>/dev/null || echo $(mach) and icedtea-print-lsb-release (print_debian_lsb_file). I think the gcc-suffix patches are also only used on Debian/Ubuntu as only those distros build a gcc-x binary (at least I remember that being mentioned). There's nothing wrong with this, I'd just think it would be easier to distinguish these from other more general patches. Are any of these destined for upstream? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Tue Dec 8 06:09:50 2009 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 08 Dec 2009 15:09:50 +0100 Subject: Zero patch consolidation In-Reply-To: <17c6771e0912080554i68e844b7if3805ae9cdfe170e@mail.gmail.com> References: <20091208111927.GB3422@redhat.com> <17c6771e0912080542x134f3b2eoea8d284ae2a2cada@mail.gmail.com> <4B1E5891.5080305@ubuntu.com> <17c6771e0912080554i68e844b7if3805ae9cdfe170e@mail.gmail.com> Message-ID: <4B1E5E2E.3080301@ubuntu.com> On 08.12.2009 14:54, Andrew John Hughes wrote: > 2009/12/8 Matthias Klose: >> On 08.12.2009 14:42, Andrew John Hughes wrote: >>> >>> b77 is already out, so I just need to get round to updating IcedTea7 >>> to build against it, dropping the ia64 patch and part of the uname >>> patch (the rest I'll stick in a Debian subdir as it's specific to that >>> platform). >> >> the only Debian specific diff should be the mips/mipsel arch selection. is >> there anything else? >> >> Matthias >> > > Sorry, my mistake it's not arch but uname: > > patches/icedtea-uname.patch:+ ifneq (,$(wildcard /usr/bin/dpkg-architecture)) > patches/icedtea-uname.patch:+ mach := $(shell (dpkg-architecture > -qDEB_BUILD_ARCH_CPU 2>/dev/null || echo $(mach)) | sed > 's/powerpc$$/ppc/;s/hppa/parisc/') yes, that's what I meant; note that IcedTea has an test for endian-ness in it's configure script. how could that be integrated upstream? > There's also: > > patches/icedtea-explicit-target-arch.patch:- ifneq (,$(wildcard > /usr/bin/dpkg-architecture)) > patches/icedtea-explicit-target-arch.patch:- mach := $(shell > (dpkg-architecture -qDEB_BUILD_ARCH_CPU 2>/dev/null || echo $(mach) > > and icedtea-print-lsb-release (print_debian_lsb_file). icedtea-print-lsb-release can/should go upstream. it's just one more file which is handled. fedora and redhat are handled explicitely as well. > I think the > gcc-suffix patches are also only used on Debian/Ubuntu as only those > distros build a gcc-x binary (at least I remember that being > mentioned). maybe, otoh, upstream has these very odd prefixes for the tools ... Matthias From gbenson at icedtea.classpath.org Tue Dec 8 08:08:21 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Dec 2009 16:08:21 +0000 Subject: /hg/icedtea6: 2009-12-08 Gary Benson Message-ID: changeset 0a5b1c9b3fcf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0a5b1c9b3fcf author: Gary Benson date: Tue Dec 08 16:13:23 2009 +0000 2009-12-08 Gary Benson * Makefile.am (ICEDTEA_SHARK_BUILD): Set to "yes" instead of "true". (ICEDTEA_ENV): Replaced ICEDTEA_SHARK_BUILD with SHARK_BUILD. (ICEDTEA_ENV_ECJ): Likewise. * patches/icedtea-shark-build.patch: Changed to reflect the above. * patches/icedtea-shark-build-hotspot.patch: Likewise. diffstat: 4 files changed, 18 insertions(+), 9 deletions(-) ChangeLog | 9 +++++++++ Makefile.am | 6 +++--- patches/icedtea-shark-build-hotspot.patch | 10 +++++----- patches/icedtea-shark-build.patch | 2 +- diffs (106 lines): diff -r 833a7998e7f0 -r 0a5b1c9b3fcf ChangeLog --- a/ChangeLog Tue Dec 08 13:15:30 2009 +0000 +++ b/ChangeLog Tue Dec 08 16:13:23 2009 +0000 @@ -1,3 +1,12 @@ 2009-12-08 Gary Benson + + * Makefile.am + (ICEDTEA_SHARK_BUILD): Set to "yes" instead of "true". + (ICEDTEA_ENV): Replaced ICEDTEA_SHARK_BUILD with SHARK_BUILD. + (ICEDTEA_ENV_ECJ): Likewise. + * patches/icedtea-shark-build.patch: Changed to reflect the above. + * patches/icedtea-shark-build-hotspot.patch: Likewise. + 2009-12-08 Gary Benson * ports/hotspot/make/linux/platform_zero.in: New file. diff -r 833a7998e7f0 -r 0a5b1c9b3fcf Makefile.am --- a/Makefile.am Tue Dec 08 13:15:30 2009 +0000 +++ b/Makefile.am Tue Dec 08 16:13:23 2009 +0000 @@ -151,7 +151,7 @@ else ICEDTEA_ZERO_BUILD = endif if SHARK_BUILD - ICEDTEA_SHARK_BUILD = yes + ICEDTEA_SHARK_BUILD = true else ICEDTEA_SHARK_BUILD = endif @@ -176,7 +176,7 @@ ICEDTEA_ENV = \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ - ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ + SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ @@ -260,7 +260,7 @@ ICEDTEA_ENV_ECJ = \ LD_LIBRARY_PATH="" \ GENSRCDIR="$(abs_top_builddir)/generated" \ ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ - ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ + SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ diff -r 833a7998e7f0 -r 0a5b1c9b3fcf patches/icedtea-shark-build-hotspot.patch --- a/patches/icedtea-shark-build-hotspot.patch Tue Dec 08 13:15:30 2009 +0000 +++ b/patches/icedtea-shark-build-hotspot.patch Tue Dec 08 16:13:23 2009 +0000 @@ -119,7 +119,7 @@ diff -Nru openjdk.orig/hotspot/make/linu ifdef ICEDTEA_ZERO_BUILD CFLAGS += $(LIBFFI_CFLAGS) endif -+ifdef ICEDTEA_SHARK_BUILD ++ifeq ($(SHARK_BUILD), true) +CFLAGS += $(LLVM_CFLAGS) +endif CFLAGS += $(VM_PICFLAG) @@ -144,7 +144,7 @@ diff -Nru openjdk.orig/hotspot/make/linu STATIC_CXX = true -ifeq ($(ZERO_LIBARCH), ppc64) -+ifdef ICEDTEA_SHARK_BUILD ++ifeq ($(SHARK_BUILD), true) STATIC_CXX = false else - STATIC_CXX = true @@ -160,7 +160,7 @@ diff -Nru openjdk.orig/hotspot/make/linu ifdef ICEDTEA_ZERO_BUILD LIBS_VM += $(LIBFFI_LIBS) endif -+ifdef ICEDTEA_SHARK_BUILD ++ifeq ($(SHARK_BUILD), true) +LFLAGS_VM += $(LLVM_LDFLAGS) +LIBS_VM += $(LLVM_LIBS) +endif @@ -228,7 +228,7 @@ diff -Nru openjdk.orig/hotspot/make/Make # Misc files and generated files need to come from C1 or C2 area ifeq ($(ZERO_BUILD), true) -+ifdef ICEDTEA_SHARK_BUILD ++ifeq ($(SHARK_BUILD), true) + MISC_DIR=$(SHARK_DIR) + GEN_DIR=$(SHARK_BASE_DIR)/generated +else @@ -242,7 +242,7 @@ diff -Nru openjdk.orig/hotspot/make/Make # Shared Library ifneq ($(OSNAME),windows) ifeq ($(ZERO_BUILD), true) -+ ifdef ICEDTEA_SHARK_BUILD ++ ifeq ($(SHARK_BUILD), true) +$(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(SHARK_DIR)/%.so + $(install-file) +$(EXPORT_SERVER_DIR)/%.so: $(SHARK_DIR)/%.so diff -r 833a7998e7f0 -r 0a5b1c9b3fcf patches/icedtea-shark-build.patch --- a/patches/icedtea-shark-build.patch Tue Dec 08 13:15:30 2009 +0000 +++ b/patches/icedtea-shark-build.patch Tue Dec 08 16:13:23 2009 +0000 @@ -6,7 +6,7 @@ diff -r 8e41d25d7665 openjdk/control/mak ifeq ($(ZERO_BUILD), true) - HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero -+ ifdef ICEDTEA_SHARK_BUILD ++ ifeq ($(SHARK_BUILD), true) + HOTSPOT_TARGET := $(HOTSPOT_TARGET)shark + else + HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero From gnu_andrew at member.fsf.org Tue Dec 8 13:06:38 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 8 Dec 2009 21:06:38 +0000 Subject: Fwd: FOSDEM 2010 Devroom request granted Message-ID: <17c6771e0912081306x42701b77xf2723020ea7568d5@mail.gmail.com> For anyone not on discuss at openjdk or classpath at gnu: 2009/12/1 Dalibor Topic : > Dalibor Topic wrote: >> Hi, >> >> I expect to hear back from the FOSDEM devroom team whether the >> request was accepted (or denied) sometime next week, according to >> the published schedule. [3] > > Here's what the FOSDEM devroom team e-mailed me today: > > "Your request for a devroom at FOSDEM 2010 has been accepted, and we will > put the following at your disposal: > - room AW1.125 with 76 seats, > - a video projector with VGA cable, > - wireless internet, > for 2 days: > - on Saturday 6th February from 13:00 to 19:00 > ?and > - on Sunday 7th February from 09:00 to 17:00 > [...]" > > Yay! > > OK, with that out of the way, it's same procedure as every year: > > * there is a wiki page with the basic information: > http://wiki.debian.org/Java/DevJam/2010/Fosdem > > * there is a wiki page where talk proposals go: > http://wiki.debian.org/Java/DevJam/2010/FosdemProposedTalks > > Talk slots are either for 15 or 30 minutes. Like in the past years, > we'll group related talks into blocks, in order to allow for some > breaks between blocks of sessions. You can submit more then one > proposal if you wish. If we run out of slots (happened a couple of > times in previous years), not all submissions will get picked - so > please try to make your submission sound like a great pick. > > The call for submissions runs for four weeks until Sunday, January > 3rd 2010. You'll know if your talk was picked by January 6th, 2010. > > cheers, > dalibor topic > -- > ******************************************************************* > Dalibor Topic ? ? ? ? ? ? ? ? ? Tel: (+49 40) 23 646 738 > Java F/OSS Ambassador ? ? ? ? ? AIM: robiladonaim > Sun Microsystems GmbH ? ? ? ? ? Mobile: (+49 177) 2664 192 > Nagelsweg 55 ? ? ? ? ? ? ? ? ? ?http://openjdk.java.net > D-20097 Hamburg ? ? ? ? ? ? ? ? mailto:Dalibor.Topic at sun.com > Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten > Amtsgericht M?nchen: HRB 161028 > Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Wolf Frenkel > Vorsitzender des Aufsichtsrates: Martin H?ring > > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Tue Dec 8 18:49:11 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 09 Dec 2009 02:49:11 +0000 Subject: [Bug 179] javascript script support through rhino should not be on bootclasspath Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=179 kohsuke.kawaguchi at sun.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kohsuke.kawaguchi at sun.com ------- Comment #4 from kohsuke.kawaguchi at sun.com 2009-12-09 02:49 ------- The change proposed in #3 isn't happening in Rhino after one year. And while it's a sensible change on its own from Rhino side, it's not a good fix for this bug, since it has a compatibility problem, in that applications that are using older Rhino.jar will break if IcedTea once removes its copy of rhino.jar (in favor of RhinoScriptEngine in rhino.jar in the user space.) So I recommend the package renaming. While it's not a very smart solution, it results in the best overall user experience. I've been involved in XML technologies that are integrated into JDK, so I hope it helps add some credibility to what I'm saying. As I explained in the bug http://bugs.sun.com/view_bug.do?bug_id=6876736 , this issue is biting a number of projects, including my Hudson, and unfortunately I have to recommend people to switch to Sun JDK. A timely resolution of this issue is much appreciated. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Dec 9 04:41:01 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 09 Dec 2009 12:41:01 +0000 Subject: [Bug 417] New: IcedteaPlugin.so is not compatible witg Firefox 3.6b Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=417 Summary: IcedteaPlugin.so is not compatible witg Firefox 3.6b Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: mvyskocil at suse.cz The IcedteaPlugin.so is not compatible with Firefox 3.6b due removal of the OJI, LiveConnect, and the XPCOM plugin API in Gecko 1.9.2 [1] IcedTeaNPPlugin is supposed to be compatible, but it's not completed yet [2] [1] http://groups.google.ca/group/mozilla.dev.planning/browse_thread/thread/8741dfad2f92a59/f22f486d57707f8a?hl=en&q=&lnk=ol [2] http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385#c5 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From aph at redhat.com Wed Dec 9 07:36:39 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 09 Dec 2009 15:36:39 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files Message-ID: <4B1FC407.6010405@redhat.com> This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 The symptom is that jmap doesn't work because target libraries are stripped. The fix is to allow the symtab reader to use the separate debuginfo files that are available for all (AFAIK) GNU/Linux distributions. I'll commit this to the IcedTea repo, with a view to pushing it upstream to OpenJDK if it works on all distros. Andrew. 2009-12-09 Andrew Haley * openjdk-ecj/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): New variable. (gnu_debuglink_crc32): New. (build_symtab_internal): Rename from build_symtab, make static. Add logic to look inside debuginfo files. (open_debug_file, find_section_by_name, open_file_from_debug_link, build_id_to_debug_filename, build_symtab_from_build_id, build_symtab): New. * openjdk-ecj/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): Pass FILENAME to build_symtab(). * openjdk-ecj/hotspot/agent/src/os/linux/symtab.h (build_symtab): Add FILENAME arg. diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 @@ -174,7 +174,7 @@ return NULL; } - newlib->symtab = build_symtab(newlib->fd); + newlib->symtab = build_symtab(newlib->fd, libname); if (newlib->symtab == NULL) { print_debug("symbol table build failed for %s\n", newlib->name); } diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000 @@ -53,8 +53,272 @@ struct hsearch_data *hash_table; } symtab_t; -// read symbol table from given fd. -struct symtab* build_symtab(int fd) { + +// Directory that contains global debuginfo files. In theory it +// should be possible to change this, but in a Java environment there +// is no obvious place to put a user interface to do it. Maybe this +// could be set with an environment variable. +static const char debug_file_directory[] = "/usr/lib/debug"; + +/* The CRC used in gnu_debuglink, retrieved from + http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ +unsigned long gnu_debuglink_crc32 (unsigned long crc, + unsigned char *buf, size_t len) +{ + static const unsigned long crc32_table[256] = + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d + }; + unsigned char *end; + + crc = ~crc & 0xffffffff; + for (end = buf + len; buf < end; ++buf) + crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); + return ~crc & 0xffffffff; +} + +/* Open a debuginfo file and check its CRC. If it exists and the CRC + matches return its fd. */ +static int +open_debug_file (const char *pathname, unsigned int crc) +{ + unsigned int file_crc = 0; + unsigned char buffer[8 * 1024]; + + int fd = pathmap_open(pathname); + + if (fd < 0) + return -1; + + lseek(fd, 0, SEEK_SET); + + for (;;) { + int len = read(fd, buffer, sizeof buffer); + if (len <= 0) + break; + file_crc = gnu_debuglink_crc32(file_crc, buffer, len); + } + + if (crc == file_crc) + return fd; + else { + close(fd); + return -1; + } +} + +/* Find an ELF section. */ +static struct elf_section *find_section_by_name(char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + ELF_SHDR* cursct = NULL; + char *strtab; + int cnt; + + if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { + if ((scn_cache[ehdr->e_shstrndx].c_data + = read_section_data(fd, ehdr, cursct)) == NULL) { + return NULL; + } + } + + strtab = scn_cache[ehdr->e_shstrndx].c_data; + + for (cursct = shbuf, cnt = 0; + cnt < ehdr->e_shnum; + cnt++, cursct++) { + if (strcmp(cursct->sh_name + strtab, name) == 0) { + scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); + return &scn_cache[cnt]; + } + } + + return NULL; +} + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file. */ +static int open_file_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, + shbuf, scn_cache); + int debug_fd; + char *debug_filename = debug_link->c_data; + int offset = strlen(debug_filename) + 3 >> 2; + static unsigned int crc; + crc = ((unsigned int*)debug_link->c_data)[offset]; + char *debug_pathname = malloc(strlen(debug_filename) + + strlen(name) + + strlen(".debug/") + + strlen(debug_file_directory) + + 2); + strcpy(debug_pathname, name); + char *last_slash = strrchr(debug_pathname, '/'); + if (last_slash == NULL) + return -1; + + /* Look in the same directory as the object. */ + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in a subdirectory named ".debug". */ + strcpy(last_slash+1, ".debug/"); + strcat(last_slash, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in /usr/lib/debug + the full pathname. */ + strcpy(debug_pathname, debug_file_directory); + strcat(debug_pathname, name); + last_slash = strrchr(debug_pathname, '/'); + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + free(debug_pathname); + return -1; +} + +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file and read a symbol table from it. */ +static struct symtab *build_symtab_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); + + if (fd >= 0) { + struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + return symtab; + } + + return NULL; +} + +// Given a build_id, find the associated debuginfo file +static char * +build_id_to_debug_filename (size_t size, unsigned char *data) +{ + char *filename, *s; + + filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 + + 2 * size + (sizeof ".debug" - 1) + 1); + s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); + if (size > 0) + { + size--; + s += sprintf (s, "%02x", *data++); + } + if (size > 0) + *s++ = '/'; + while (size-- > 0) + s += sprintf (s, "%02x", *data++); + strcpy (s, ".debug"); + + return filename; +} + +// Read a build ID note. Try to open any associated debuginfo file +// and return its symtab +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) +{ + int fd; + struct symtab *symtab = NULL; + + unsigned char *bytes + = (unsigned char*)(note+1) + note->n_namesz; + unsigned char *filename + = (build_id_to_debug_filename (note->n_descsz, bytes)); + + fd = pathmap_open(filename); + if (fd >= 0) { + symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + } + free(filename); + + return symtab; +} + +// read symbol table from given fd. If try_debuginfo) is true, also +// try to open an associated debuginfo file +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { ELF_EHDR ehdr; char *names = NULL; struct symtab* symtab = NULL; @@ -90,7 +354,8 @@ for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { scn_cache[cnt].c_shdr = cursct; - if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { + if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB + || cursct->sh_type == SHT_NOTE) { if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { goto quit; } @@ -163,6 +428,28 @@ } } + // If we have no symtab in this file, look for a separate debuginfo file + if (try_debuginfo) { + // First we look for a Build ID + for (cursct = shbuf, cnt = 0; + symtab == NULL && cnt < ehdr.e_shnum; + cnt++) { + if (cursct->sh_type == SHT_NOTE) { + Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; + if (note->n_type == NT_GNU_BUILD_ID) { + symtab = build_symtab_from_build_id(note); + } + } + cursct++; + } + + // Then, if that doesn't work, the debug link + if (symtab == NULL) { + symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, + scn_cache); + } + } + quit: if (shbuf) free(shbuf); if (phbuf) free(phbuf); @@ -177,6 +464,11 @@ return symtab; } +struct symtab* build_symtab(int fd, const char *filename) { + return build_symtab_internal(fd, filename, /* try_debuginfo */ true); +} + + void destroy_symtab(struct symtab* symtab) { if (!symtab) return; if (symtab->strs) free(symtab->strs); diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 @@ -32,7 +32,7 @@ struct symtab; // build symbol table for a given ELF file descriptor -struct symtab* build_symtab(int fd); +struct symtab* build_symtab(int fd, const char *filename); // destroy the symbol table void destroy_symtab(struct symtab* symtab); From ed at camswl.com Wed Dec 9 08:02:42 2009 From: ed at camswl.com (Edward Nevill) Date: Wed, 09 Dec 2009 16:02:42 +0000 Subject: ARM VFP bug fix Message-ID: Hi folks, The following patch fixes 2 problems with the ARM asm interpreter. 1) A window exists where, immediately after a GC the dispatch table contains VFP entries on non VFP processors. 2) The C interpreter was still being called for java_lang_math_sin and friends. I am aware that there are still some problems with hard wired constants, most notably ISTATE_XXX and RESOURCEAREA_XXX. I have not included these in the current patch as I am working on a larger patch which I hope to push before year end. Regards, Ed. --- CUT HERE ------------------------------------------- --- cppInterpreter_arm.S.orig 2009-12-09 15:41:51.000000000 +0000 +++ cppInterpreter_arm.S 2009-12-09 15:47:25.000000000 +0000 @@ -1110,7 +1110,7 @@ cmp r2, #0 bne 1f - cmp r3, #6 + cmp r3, #14 adrcc ip, asm_method_table ldrcc r0, [ip, r3, lsl #2] 1: @@ -1127,6 +1127,14 @@ .word 0 @ cppInterpreter can handle native_entry_synchronized .word empty_entry .word accessor_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry ALIGN_CODE .global empty_entry @@ -6284,17 +6292,42 @@ mov r3, #0 strb r3, [r2, #0] adrl r3, main_dispatch_table +#ifdef HW_FP + ldr r0, [ip, #VFP_Flag-XXX] + cmp r0, #0 + bne 2f +#endif mov r2, #256 1: ldr r1, [r3], #4 str r1, [ip], #4 subs r2, r2, #1 bne 1b + bx lr + +@ No HW FP - must update the table from a combination main_dispatch_table and +@ vfp_table. Previously this updated from main_dispatch_table first, and then +@ overwrite the updated entries with those from vfp_table. However, this creates +@ a window where the jump table has vfp entries, so in a multithreaded world we +@ can get undefined VFP instructions. +@ The code below updates from both tables simultaneously. Note: this relies on +@ the enties in vfp_table being in opcode order. #ifdef HW_FP - sub ip, ip, #256*4 - ldr r0, [ip, #VFP_Flag-XXX] - cmp r0, #0 - beq update_vfp_table +2: + stmdb arm_sp!, {r4, lr} + mov r2, #0 + adrl r0, vfp_table + ldr r4, [r0], #4 +3: + ldr r1, [r3], #4 + cmp r2, r4 + ldreq r1, [r0], #4 + ldreq r4, [r0], #4 + str r1, [ip], #4 + add r2, r2, #1 + cmp r2, #256 + bcc 3b + ldmia arm_sp!, {r4, lr} #endif // HW_FP #endif // NOTICE_SAFEPOINTS bx lr From gbenson at redhat.com Wed Dec 9 08:15:37 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 9 Dec 2009 16:15:37 +0000 Subject: ARM VFP bug fix In-Reply-To: References: Message-ID: <20091209161537.GC3409@redhat.com> Edward Nevill wrote: > The following patch fixes 2 problems with the ARM asm interpreter. Looks good to me :) > I am aware that there are still some problems with hard wired > constants, most notably ISTATE_XXX and RESOURCEAREA_XXX. That's cool. interpreterState is a dodgy one though, it changes size between PRODUCT and not-PRODUCT (at least on my PowerPC, the last time I looked). Cheers, Gary -- http://gbenson.net/ From gnu_andrew at member.fsf.org Wed Dec 9 08:26:42 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 9 Dec 2009 16:26:42 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B1FC407.6010405@redhat.com> References: <4B1FC407.6010405@redhat.com> Message-ID: <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> 2009/12/9 Andrew Haley : > This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 > The symptom is that jmap doesn't work because target libraries are stripped. > The fix is to allow the symtab reader to use the separate debuginfo files > that are available for all (AFAIK) GNU/Linux distributions. > > I'll commit this to the IcedTea repo, with a view to pushing it upstream > to OpenJDK if it works on all distros. > > Andrew. > It would be good to see this upstream. The obvious compatibility issue I can see is hardcoding /usr/lib/debug. Passing that in from the Makefile, thus allowing to be overridden if necessary, might be better. i.e. static const char debug_file_directory[] = "/usr/lib/debug"; becomes #ifndef DEBUG_FILE_DIRECTORY #define DEBUG_FILE_DIRECTORY "/usr/lib/debug" #endif with apppropriate logic in the OpenJDK makefile(s). Only other comment is that your ChangeLog should refer to openjdk, not openjdk-ecj as we want this for all builds. The patch itself is correct, it's just the ChangeLog. Redirecting this mail to the HotSpot and serviceability lists rather than tl as it concerns the serviceability tools in HotSpot. > > > 2009-12-09 ?Andrew Haley ? > > ? ? ? ?* openjdk-ecj/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): > ? ? ? ?New variable. > ? ? ? ?(gnu_debuglink_crc32): New. > ? ? ? ?(build_symtab_internal): Rename from build_symtab, make static. > ? ? ? ?Add logic to look inside debuginfo files. > ? ? ? ?(open_debug_file, find_section_by_name, open_file_from_debug_link, > ? ? ? ?build_id_to_debug_filename, build_symtab_from_build_id, > ? ? ? ?build_symtab): New. > ? ? ? ?* openjdk-ecj/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): > ? ? ? ?Pass FILENAME to build_symtab(). > ? ? ? ?* openjdk-ecj/hotspot/agent/src/os/linux/symtab.h (build_symtab): > ? ? ? ?Add FILENAME arg. > > diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c > --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c ? ? ? 2009-05-15 00:36:38.000000000 +0100 > +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c ? 2009-12-04 16:29:27.552837905 +0000 > @@ -174,7 +174,7 @@ > ? ? ? return NULL; > ? ?} > > - ? newlib->symtab = build_symtab(newlib->fd); > + ? newlib->symtab = build_symtab(newlib->fd, libname); > ? ?if (newlib->symtab == NULL) { > ? ? ? print_debug("symbol table build failed for %s\n", newlib->name); > ? ?} > diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c > --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c ? ? 2009-05-15 00:36:38.000000000 +0100 > +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000 > @@ -53,8 +53,272 @@ > ? struct hsearch_data *hash_table; > ?} symtab_t; > > -// read symbol table from given fd. > -struct symtab* build_symtab(int fd) { > + > +// Directory that contains global debuginfo files. ?In theory it > +// should be possible to change this, but in a Java environment there > +// is no obvious place to put a user interface to do it. ?Maybe this > +// could be set with an environment variable. > +static const char debug_file_directory[] = "/usr/lib/debug"; > + > +/* The CRC used in gnu_debuglink, retrieved from > + ? http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ > +unsigned long gnu_debuglink_crc32 (unsigned long crc, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned char *buf, size_t len) > +{ > + ?static const unsigned long crc32_table[256] = > + ? ?{ > + ? ? ?0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, > + ? ? ?0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, > + ? ? ?0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, > + ? ? ?0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, > + ? ? ?0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, > + ? ? ?0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, > + ? ? ?0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, > + ? ? ?0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, > + ? ? ?0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, > + ? ? ?0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, > + ? ? ?0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, > + ? ? ?0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, > + ? ? ?0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, > + ? ? ?0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, > + ? ? ?0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, > + ? ? ?0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, > + ? ? ?0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, > + ? ? ?0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, > + ? ? ?0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, > + ? ? ?0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, > + ? ? ?0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, > + ? ? ?0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, > + ? ? ?0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, > + ? ? ?0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, > + ? ? ?0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, > + ? ? ?0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, > + ? ? ?0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, > + ? ? ?0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, > + ? ? ?0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, > + ? ? ?0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, > + ? ? ?0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, > + ? ? ?0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, > + ? ? ?0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, > + ? ? ?0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, > + ? ? ?0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, > + ? ? ?0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, > + ? ? ?0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, > + ? ? ?0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, > + ? ? ?0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, > + ? ? ?0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, > + ? ? ?0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, > + ? ? ?0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, > + ? ? ?0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, > + ? ? ?0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, > + ? ? ?0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, > + ? ? ?0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, > + ? ? ?0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, > + ? ? ?0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, > + ? ? ?0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, > + ? ? ?0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, > + ? ? ?0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, > + ? ? ?0x2d02ef8d > + ? ?}; > + ?unsigned char *end; > + > + ?crc = ~crc & 0xffffffff; > + ?for (end = buf + len; buf < end; ++buf) > + ? ?crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); > + ?return ~crc & 0xffffffff; > +} > + > +/* Open a debuginfo file and check its CRC. ?If it exists and the CRC > + ? matches return its fd. ?*/ > +static int > +open_debug_file (const char *pathname, unsigned int crc) > +{ > + ?unsigned int file_crc = 0; > + ?unsigned char buffer[8 * 1024]; > + > + ?int fd = pathmap_open(pathname); > + > + ?if (fd < 0) > + ? ?return -1; > + > + ?lseek(fd, 0, SEEK_SET); > + > + ?for (;;) { > + ? ?int len = read(fd, buffer, sizeof buffer); > + ? ?if (len <= 0) > + ? ? ?break; > + ? ?file_crc = gnu_debuglink_crc32(file_crc, buffer, len); > + ?} > + > + ?if (crc == file_crc) > + ? ?return fd; > + ?else { > + ? ?close(fd); > + ? ?return -1; > + ?} > +} > + > +/* Find an ELF section. ?*/ > +static struct elf_section *find_section_by_name(char *name, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int fd, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ELF_EHDR *ehdr, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ELF_SHDR *shbuf, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct elf_section *scn_cache) > +{ > + ?ELF_SHDR* cursct = NULL; > + ?char *strtab; > + ?int cnt; > + > + ?if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { > + ? ?if ((scn_cache[ehdr->e_shstrndx].c_data > + ? ? ? ?= read_section_data(fd, ehdr, cursct)) == NULL) { > + ? ? ?return NULL; > + ? ?} > + ?} > + > + ?strtab = scn_cache[ehdr->e_shstrndx].c_data; > + > + ?for (cursct = shbuf, cnt = 0; > + ? ? ? cnt < ehdr->e_shnum; > + ? ? ? cnt++, cursct++) { > + ? ?if (strcmp(cursct->sh_name + strtab, name) == 0) { > + ? ? ?scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); > + ? ? ?return &scn_cache[cnt]; > + ? ?} > + ?} > + > + ?return NULL; > +} > + > +/* Look for a ".gnu_debuglink" section. ?If one exists, try to open a > + ? suitable debuginfo file. ?*/ > +static int open_file_from_debug_link(const char *name, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int fd, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELF_EHDR *ehdr, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELF_SHDR *shbuf, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?struct elf_section *scn_cache) > +{ > + ?struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? shbuf, scn_cache); > + ?int debug_fd; > + ?char *debug_filename = debug_link->c_data; > + ?int offset = strlen(debug_filename) + 3 >> 2; > + ?static unsigned int crc; > + ?crc = ((unsigned int*)debug_link->c_data)[offset]; > + ?char *debug_pathname = malloc(strlen(debug_filename) > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + strlen(name) > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + strlen(".debug/") > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + strlen(debug_file_directory) > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + 2); > + ?strcpy(debug_pathname, name); > + ?char *last_slash = strrchr(debug_pathname, '/'); > + ?if (last_slash == NULL) > + ? ?return -1; > + > + ?/* Look in the same directory as the object. ?*/ > + ?strcpy(last_slash+1, debug_filename); > + > + ?debug_fd = open_debug_file(debug_pathname, crc); > + ?if (debug_fd >= 0) { > + ? ?free(debug_pathname); > + ? ?return debug_fd; > + ?} > + > + ?/* Look in a subdirectory named ".debug". ?*/ > + ?strcpy(last_slash+1, ".debug/"); > + ?strcat(last_slash, debug_filename); > + > + ?debug_fd = open_debug_file(debug_pathname, crc); > + ?if (debug_fd >= 0) { > + ? ?free(debug_pathname); > + ? ?return debug_fd; > + ?} > + > + ?/* Look in /usr/lib/debug + the full pathname. ?*/ > + ?strcpy(debug_pathname, debug_file_directory); > + ?strcat(debug_pathname, name); > + ?last_slash = strrchr(debug_pathname, '/'); > + ?strcpy(last_slash+1, debug_filename); > + > + ?debug_fd = open_debug_file(debug_pathname, crc); > + ?if (debug_fd >= 0) { > + ? ?free(debug_pathname); > + ? ?return debug_fd; > + ?} > + > + ?free(debug_pathname); > + ?return -1; > +} > + > +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); > + > +/* Look for a ".gnu_debuglink" section. ?If one exists, try to open a > + ? suitable debuginfo file and read a symbol table from it. ?*/ > +static struct symtab *build_symtab_from_debug_link(const char *name, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int fd, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELF_EHDR *ehdr, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELF_SHDR *shbuf, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?struct elf_section *scn_cache) > +{ > + ?fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); > + > + ?if (fd >= 0) { > + ? ?struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); > + ? ?close(fd); > + ? ?return symtab; > + ?} > + > + ?return NULL; > +} > + > +// Given a build_id, find the associated debuginfo file > +static char * > +build_id_to_debug_filename (size_t size, unsigned char *data) > +{ > + ?char *filename, *s; > + > + ?filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 > + ? ? ? ? ? ? ? ? ? + 2 * size + (sizeof ".debug" - 1) + 1); > + ?s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); > + ?if (size > 0) > + ? ?{ > + ? ? ?size--; > + ? ? ?s += sprintf (s, "%02x", *data++); > + ? ?} > + ?if (size > 0) > + ? ?*s++ = '/'; > + ?while (size-- > 0) > + ? ?s += sprintf (s, "%02x", *data++); > + ?strcpy (s, ".debug"); > + > + ?return filename; > +} > + > +// Read a build ID note. ?Try to open any associated debuginfo file > +// and return its symtab > +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) > +{ > + ?int fd; > + ?struct symtab *symtab = NULL; > + > + ?unsigned char *bytes > + ? ?= (unsigned char*)(note+1) + note->n_namesz; > + ?unsigned char *filename > + ? ?= (build_id_to_debug_filename (note->n_descsz, bytes)); > + > + ?fd = pathmap_open(filename); > + ?if (fd >= 0) { > + ? ?symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); > + ? ?close(fd); > + ?} > + ?free(filename); > + > + ?return symtab; > +} > + > +// read symbol table from given fd. ?If try_debuginfo) is true, also > +// try to open an associated debuginfo file > +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { > ? ELF_EHDR ehdr; > ? char *names = NULL; > ? struct symtab* symtab = NULL; > @@ -90,7 +354,8 @@ > > ? for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { > ? ? scn_cache[cnt].c_shdr = cursct; > - ? ?if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { > + ? ?if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB > + ? ? ? || cursct->sh_type == SHT_NOTE) { > ? ? ? if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { > ? ? ? ? ?goto quit; > ? ? ? } > @@ -163,6 +428,28 @@ > ? ? } > ? } > > + ?// If we have no symtab in this file, look for a separate debuginfo file > + ?if (try_debuginfo) { > + ? ?// First we look for a Build ID > + ? ?for (cursct = shbuf, cnt = 0; > + ? ? ? ?symtab == NULL && cnt < ehdr.e_shnum; > + ? ? ? ?cnt++) { > + ? ? ?if (cursct->sh_type == SHT_NOTE) { > + ? ? ? Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; > + ? ? ? if (note->n_type == NT_GNU_BUILD_ID) { > + ? ? ? ? symtab = build_symtab_from_build_id(note); > + ? ? ? } > + ? ? ?} > + ? ? ?cursct++; > + ? ?} > + > + ? ?// Then, if that doesn't work, the debug link > + ? ?if (symtab == NULL) { > + ? ? ?symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scn_cache); > + ? ?} > + ?} > + > ?quit: > ? if (shbuf) free(shbuf); > ? if (phbuf) free(phbuf); > @@ -177,6 +464,11 @@ > ? return symtab; > ?} > > +struct symtab* build_symtab(int fd, const char *filename) { > + ?return build_symtab_internal(fd, filename, /* try_debuginfo */ true); > +} > + > + > ?void destroy_symtab(struct symtab* symtab) { > ? if (!symtab) return; > ? if (symtab->strs) free(symtab->strs); > diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h > --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h ? ? 2009-05-15 00:36:38.000000000 +0100 > +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 > @@ -32,7 +32,7 @@ > ?struct symtab; > > ?// build symbol table for a given ELF file descriptor > -struct symtab* build_symtab(int fd); > +struct symtab* build_symtab(int fd, const char *filename); > > ?// destroy the symbol table > ?void destroy_symtab(struct symtab* symtab); > > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From aph at redhat.com Wed Dec 9 08:51:00 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 09 Dec 2009 16:51:00 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> Message-ID: <4B1FD574.3030004@redhat.com> Andrew John Hughes wrote: > 2009/12/9 Andrew Haley : >> This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 >> The symptom is that jmap doesn't work because target libraries are stripped. >> The fix is to allow the symtab reader to use the separate debuginfo files >> that are available for all (AFAIK) GNU/Linux distributions. >> >> I'll commit this to the IcedTea repo, with a view to pushing it upstream >> to OpenJDK if it works on all distros. > > It would be good to see this upstream. The obvious compatibility > issue I can see is hardcoding /usr/lib/debug. Passing that in from > the Makefile, thus allowing to be overridden if necessary, might be > better. > i.e. > > static const char debug_file_directory[] = "/usr/lib/debug"; > > becomes > > #ifndef DEBUG_FILE_DIRECTORY > #define DEBUG_FILE_DIRECTORY "/usr/lib/debug" > #endif > > with apppropriate logic in the OpenJDK makefile(s). I think this directory is generally assumed to be hard-coded everywhere. I will make such a change if this patch won't be committed otherwise, but I do not believe that it will ever be used. > Only other comment is that your ChangeLog should refer to openjdk, not > openjdk-ecj as we want this for all builds. The patch itself is > correct, it's just the ChangeLog. Yeah, I noticed this already. Thanks, Andrew. From Kelly.Ohair at Sun.COM Wed Dec 9 09:25:45 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Wed, 09 Dec 2009 09:25:45 -0800 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> Message-ID: <4B1FDD99.70407@sun.com> Andrew John Hughes wrote: > 2009/12/9 Andrew Haley : >> This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 >> The symptom is that jmap doesn't work because target libraries are stripped. >> The fix is to allow the symtab reader to use the separate debuginfo files >> that are available for all (AFAIK) GNU/Linux distributions. >> >> I'll commit this to the IcedTea repo, with a view to pushing it upstream >> to OpenJDK if it works on all distros. >> >> Andrew. >> > > It would be good to see this upstream. The obvious compatibility > issue I can see is hardcoding /usr/lib/debug. Passing that in from > the Makefile, thus allowing to be overridden if necessary, might be > better. > i.e. > > static const char debug_file_directory[] = "/usr/lib/debug"; > > becomes > > #ifndef DEBUG_FILE_DIRECTORY > #define DEBUG_FILE_DIRECTORY "/usr/lib/debug" > #endif > > with apppropriate logic in the OpenJDK makefile(s). > > Only other comment is that your ChangeLog should refer to openjdk, not > openjdk-ecj as we want this for all builds. The patch itself is > correct, it's just the ChangeLog. > > Redirecting this mail to the HotSpot and serviceability lists rather > than tl as it concerns the serviceability tools in HotSpot. Is there some other way than baking in 256 hex constants into our sources? Why can't this logic be in a system include file somwehere? -kto > >> >> 2009-12-09 Andrew Haley >> >> * openjdk-ecj/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): >> New variable. >> (gnu_debuglink_crc32): New. >> (build_symtab_internal): Rename from build_symtab, make static. >> Add logic to look inside debuginfo files. >> (open_debug_file, find_section_by_name, open_file_from_debug_link, >> build_id_to_debug_filename, build_symtab_from_build_id, >> build_symtab): New. >> * openjdk-ecj/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): >> Pass FILENAME to build_symtab(). >> * openjdk-ecj/hotspot/agent/src/os/linux/symtab.h (build_symtab): >> Add FILENAME arg. >> >> diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c >> --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 >> +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 >> @@ -174,7 +174,7 @@ >> return NULL; >> } >> >> - newlib->symtab = build_symtab(newlib->fd); >> + newlib->symtab = build_symtab(newlib->fd, libname); >> if (newlib->symtab == NULL) { >> print_debug("symbol table build failed for %s\n", newlib->name); >> } >> diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c >> --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c 2009-05-15 00:36:38.000000000 +0100 >> +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000 >> @@ -53,8 +53,272 @@ >> struct hsearch_data *hash_table; >> } symtab_t; >> >> -// read symbol table from given fd. >> -struct symtab* build_symtab(int fd) { >> + >> +// Directory that contains global debuginfo files. In theory it >> +// should be possible to change this, but in a Java environment there >> +// is no obvious place to put a user interface to do it. Maybe this >> +// could be set with an environment variable. >> +static const char debug_file_directory[] = "/usr/lib/debug"; >> + >> +/* The CRC used in gnu_debuglink, retrieved from >> + http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ >> +unsigned long gnu_debuglink_crc32 (unsigned long crc, >> + unsigned char *buf, size_t len) >> +{ >> + static const unsigned long crc32_table[256] = >> + { >> + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, >> + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, >> + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, >> + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, >> + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, >> + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, >> + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, >> + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, >> + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, >> + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, >> + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, >> + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, >> + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, >> + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, >> + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, >> + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, >> + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, >> + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, >> + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, >> + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, >> + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, >> + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, >> + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, >> + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, >> + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, >> + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, >> + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, >> + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, >> + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, >> + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, >> + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, >> + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, >> + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, >> + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, >> + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, >> + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, >> + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, >> + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, >> + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, >> + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, >> + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, >> + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, >> + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, >> + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, >> + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, >> + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, >> + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, >> + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, >> + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, >> + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, >> + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, >> + 0x2d02ef8d >> + }; >> + unsigned char *end; >> + >> + crc = ~crc & 0xffffffff; >> + for (end = buf + len; buf < end; ++buf) >> + crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); >> + return ~crc & 0xffffffff; >> +} >> + >> +/* Open a debuginfo file and check its CRC. If it exists and the CRC >> + matches return its fd. */ >> +static int >> +open_debug_file (const char *pathname, unsigned int crc) >> +{ >> + unsigned int file_crc = 0; >> + unsigned char buffer[8 * 1024]; >> + >> + int fd = pathmap_open(pathname); >> + >> + if (fd < 0) >> + return -1; >> + >> + lseek(fd, 0, SEEK_SET); >> + >> + for (;;) { >> + int len = read(fd, buffer, sizeof buffer); >> + if (len <= 0) >> + break; >> + file_crc = gnu_debuglink_crc32(file_crc, buffer, len); >> + } >> + >> + if (crc == file_crc) >> + return fd; >> + else { >> + close(fd); >> + return -1; >> + } >> +} >> + >> +/* Find an ELF section. */ >> +static struct elf_section *find_section_by_name(char *name, >> + int fd, >> + ELF_EHDR *ehdr, >> + ELF_SHDR *shbuf, >> + struct elf_section *scn_cache) >> +{ >> + ELF_SHDR* cursct = NULL; >> + char *strtab; >> + int cnt; >> + >> + if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { >> + if ((scn_cache[ehdr->e_shstrndx].c_data >> + = read_section_data(fd, ehdr, cursct)) == NULL) { >> + return NULL; >> + } >> + } >> + >> + strtab = scn_cache[ehdr->e_shstrndx].c_data; >> + >> + for (cursct = shbuf, cnt = 0; >> + cnt < ehdr->e_shnum; >> + cnt++, cursct++) { >> + if (strcmp(cursct->sh_name + strtab, name) == 0) { >> + scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); >> + return &scn_cache[cnt]; >> + } >> + } >> + >> + return NULL; >> +} >> + >> +/* Look for a ".gnu_debuglink" section. If one exists, try to open a >> + suitable debuginfo file. */ >> +static int open_file_from_debug_link(const char *name, >> + int fd, >> + ELF_EHDR *ehdr, >> + ELF_SHDR *shbuf, >> + struct elf_section *scn_cache) >> +{ >> + struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, >> + shbuf, scn_cache); >> + int debug_fd; >> + char *debug_filename = debug_link->c_data; >> + int offset = strlen(debug_filename) + 3 >> 2; >> + static unsigned int crc; >> + crc = ((unsigned int*)debug_link->c_data)[offset]; >> + char *debug_pathname = malloc(strlen(debug_filename) >> + + strlen(name) >> + + strlen(".debug/") >> + + strlen(debug_file_directory) >> + + 2); >> + strcpy(debug_pathname, name); >> + char *last_slash = strrchr(debug_pathname, '/'); >> + if (last_slash == NULL) >> + return -1; >> + >> + /* Look in the same directory as the object. */ >> + strcpy(last_slash+1, debug_filename); >> + >> + debug_fd = open_debug_file(debug_pathname, crc); >> + if (debug_fd >= 0) { >> + free(debug_pathname); >> + return debug_fd; >> + } >> + >> + /* Look in a subdirectory named ".debug". */ >> + strcpy(last_slash+1, ".debug/"); >> + strcat(last_slash, debug_filename); >> + >> + debug_fd = open_debug_file(debug_pathname, crc); >> + if (debug_fd >= 0) { >> + free(debug_pathname); >> + return debug_fd; >> + } >> + >> + /* Look in /usr/lib/debug + the full pathname. */ >> + strcpy(debug_pathname, debug_file_directory); >> + strcat(debug_pathname, name); >> + last_slash = strrchr(debug_pathname, '/'); >> + strcpy(last_slash+1, debug_filename); >> + >> + debug_fd = open_debug_file(debug_pathname, crc); >> + if (debug_fd >= 0) { >> + free(debug_pathname); >> + return debug_fd; >> + } >> + >> + free(debug_pathname); >> + return -1; >> +} >> + >> +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); >> + >> +/* Look for a ".gnu_debuglink" section. If one exists, try to open a >> + suitable debuginfo file and read a symbol table from it. */ >> +static struct symtab *build_symtab_from_debug_link(const char *name, >> + int fd, >> + ELF_EHDR *ehdr, >> + ELF_SHDR *shbuf, >> + struct elf_section *scn_cache) >> +{ >> + fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); >> + >> + if (fd >= 0) { >> + struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); >> + close(fd); >> + return symtab; >> + } >> + >> + return NULL; >> +} >> + >> +// Given a build_id, find the associated debuginfo file >> +static char * >> +build_id_to_debug_filename (size_t size, unsigned char *data) >> +{ >> + char *filename, *s; >> + >> + filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 >> + + 2 * size + (sizeof ".debug" - 1) + 1); >> + s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); >> + if (size > 0) >> + { >> + size--; >> + s += sprintf (s, "%02x", *data++); >> + } >> + if (size > 0) >> + *s++ = '/'; >> + while (size-- > 0) >> + s += sprintf (s, "%02x", *data++); >> + strcpy (s, ".debug"); >> + >> + return filename; >> +} >> + >> +// Read a build ID note. Try to open any associated debuginfo file >> +// and return its symtab >> +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) >> +{ >> + int fd; >> + struct symtab *symtab = NULL; >> + >> + unsigned char *bytes >> + = (unsigned char*)(note+1) + note->n_namesz; >> + unsigned char *filename >> + = (build_id_to_debug_filename (note->n_descsz, bytes)); >> + >> + fd = pathmap_open(filename); >> + if (fd >= 0) { >> + symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); >> + close(fd); >> + } >> + free(filename); >> + >> + return symtab; >> +} >> + >> +// read symbol table from given fd. If try_debuginfo) is true, also >> +// try to open an associated debuginfo file >> +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { >> ELF_EHDR ehdr; >> char *names = NULL; >> struct symtab* symtab = NULL; >> @@ -90,7 +354,8 @@ >> >> for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { >> scn_cache[cnt].c_shdr = cursct; >> - if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { >> + if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB >> + || cursct->sh_type == SHT_NOTE) { >> if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { >> goto quit; >> } >> @@ -163,6 +428,28 @@ >> } >> } >> >> + // If we have no symtab in this file, look for a separate debuginfo file >> + if (try_debuginfo) { >> + // First we look for a Build ID >> + for (cursct = shbuf, cnt = 0; >> + symtab == NULL && cnt < ehdr.e_shnum; >> + cnt++) { >> + if (cursct->sh_type == SHT_NOTE) { >> + Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; >> + if (note->n_type == NT_GNU_BUILD_ID) { >> + symtab = build_symtab_from_build_id(note); >> + } >> + } >> + cursct++; >> + } >> + >> + // Then, if that doesn't work, the debug link >> + if (symtab == NULL) { >> + symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, >> + scn_cache); >> + } >> + } >> + >> quit: >> if (shbuf) free(shbuf); >> if (phbuf) free(phbuf); >> @@ -177,6 +464,11 @@ >> return symtab; >> } >> >> +struct symtab* build_symtab(int fd, const char *filename) { >> + return build_symtab_internal(fd, filename, /* try_debuginfo */ true); >> +} >> + >> + >> void destroy_symtab(struct symtab* symtab) { >> if (!symtab) return; >> if (symtab->strs) free(symtab->strs); >> diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h >> --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 >> +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 >> @@ -32,7 +32,7 @@ >> struct symtab; >> >> // build symbol table for a given ELF file descriptor >> -struct symtab* build_symtab(int fd); >> +struct symtab* build_symtab(int fd, const char *filename); >> >> // destroy the symbol table >> void destroy_symtab(struct symtab* symtab); >> >> >> > > > From gnu_andrew at member.fsf.org Wed Dec 9 09:30:19 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 9 Dec 2009 17:30:19 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B1FD574.3030004@redhat.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> <4B1FD574.3030004@redhat.com> Message-ID: <17c6771e0912090930g758b202ahb4d0f3ca70033de7@mail.gmail.com> 2009/12/9 Andrew Haley : > Andrew John Hughes wrote: >> 2009/12/9 Andrew Haley : >>> This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 >>> The symptom is that jmap doesn't work because target libraries are stripped. >>> The fix is to allow the symtab reader to use the separate debuginfo files >>> that are available for all (AFAIK) GNU/Linux distributions. >>> >>> I'll commit this to the IcedTea repo, with a view to pushing it upstream >>> to OpenJDK if it works on all distros. >> >> It would be good to see this upstream. ?The obvious compatibility >> issue I can see is hardcoding /usr/lib/debug. ?Passing that in from >> the Makefile, thus allowing to be overridden if necessary, might be >> better. >> i.e. >> >> static const char debug_file_directory[] = "/usr/lib/debug"; >> >> becomes >> >> #ifndef DEBUG_FILE_DIRECTORY >> #define DEBUG_FILE_DIRECTORY "/usr/lib/debug" >> #endif >> >> with apppropriate logic in the OpenJDK makefile(s). > > I think this directory is generally assumed to be hard-coded everywhere. ?I > will make such a change if this patch won't be committed otherwise, but I do > not believe that it will ever be used. > Ah, ok. This was the only possibly distro-specific issue I could see in the patch. >> Only other comment is that your ChangeLog should refer to openjdk, not >> openjdk-ecj as we want this for all builds. The patch itself is >> correct, it's just the ChangeLog. > > Yeah, I noticed this already. > > Thanks, > Andrew. > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From aph at redhat.com Wed Dec 9 10:10:12 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 09 Dec 2009 18:10:12 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B1FDD99.70407@sun.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> <4B1FDD99.70407@sun.com> Message-ID: <4B1FE804.80508@redhat.com> Kelly O'Hair wrote: > Andrew John Hughes wrote: >> 2009/12/9 Andrew Haley : >>> This is https://bugzilla.redhat.com/show_bug.cgi?id=541548 >>> The symptom is that jmap doesn't work because target libraries are stripped. >>> The fix is to allow the symtab reader to use the separate debuginfo files >>> that are available for all (AFAIK) GNU/Linux distributions. >>> >>> I'll commit this to the IcedTea repo, with a view to pushing it upstream >>> to OpenJDK if it works on all distros. >>> >>> Andrew. >>> >> It would be good to see this upstream. The obvious compatibility >> issue I can see is hardcoding /usr/lib/debug. Passing that in from >> the Makefile, thus allowing to be overridden if necessary, might be >> better. >> i.e. >> >> static const char debug_file_directory[] = "/usr/lib/debug"; >> >> becomes >> >> #ifndef DEBUG_FILE_DIRECTORY >> #define DEBUG_FILE_DIRECTORY "/usr/lib/debug" >> #endif >> >> with apppropriate logic in the OpenJDK makefile(s). >> >> Only other comment is that your ChangeLog should refer to openjdk, not >> openjdk-ecj as we want this for all builds. The patch itself is >> correct, it's just the ChangeLog. >> >> Redirecting this mail to the HotSpot and serviceability lists rather >> than tl as it concerns the serviceability tools in HotSpot. > > Is there some other way than baking in 256 hex constants into our sources? I'm sure it's perfectly possible to generate the CRC-32 tables at runtime. However, the CRC function is defined in terms of this exact source code, see http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files > Why can't this logic be in a system include file somwehere? Apart from "because it isn't", I can think of no good reason. Clearly there should be a common API for this stuff, but it is spread around various tools and libraries with licences we can't use, such as GPLv3+. Andrew. From dbhole at redhat.com Wed Dec 9 10:59:57 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 9 Dec 2009 13:59:57 -0500 Subject: Patch for Review: Netx utilizing offline-allowed tag In-Reply-To: <590903473.934061259870574030.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <1524258224.933601259870282584.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <590903473.934061259870574030.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20091209185956.GA14817@redhat.com> * Man Wong [2009-12-03 15:02]: > This patch fixes the behaviour of netx such that it will no longer launch the jnlp file when system is offline and offline-allowed tag does not exist. > > Changelog: > 2009-12-03 Man Lung Wong > > * rt/net/sourceforge/jnlp/Launcher.java > (launch): No longer launches when system offline and offline-allowed tag does not exist. > > Any comments? > > Thanks, > > Man Lung Wong > > diff -r eb51df7af234 rt/net/sourceforge/jnlp/Launcher.java > --- a/rt/net/sourceforge/jnlp/Launcher.java Wed Dec 02 10:40:55 2009 +0100 > +++ b/rt/net/sourceforge/jnlp/Launcher.java Wed Dec 02 10:44:59 2009 -0500 > @@ -19,14 +19,11 @@ > > import java.applet.Applet; > import java.awt.Container; > -import java.io.BufferedInputStream; > -import java.io.File; > -import java.io.IOException; > -import java.io.InputStream; > +import java.io.*; > import java.lang.management.ManagementFactory; > import java.lang.management.ThreadMXBean; > import java.lang.reflect.Method; > -import java.net.URL; > +import java.net.*; > import java.util.LinkedList; > import java.util.List; > import java.util.jar.JarFile; > @@ -187,6 +184,21 @@ > */ > public ApplicationInstance launch(JNLPFile file, Container cont) throws LaunchException { > TgThread tg; > + > + //First checks whether offline-allowed tag is specified inside the jnlp > + //file. > + if (!file.getInformation().isOfflineAllowed()) { > + try { > + //Checks the offline/online status of the system. > + //If system is offline do not launch. > + InetAddress.getByName(file.getSourceLocation().getHost()); > + > + } catch (UnknownHostException ue) { > + return null; > + } catch (Exception e) { > + System.err.println(e); > + } > + } > > if (file instanceof PluginBridge && cont != null) > tg = new TgThread(file, cont, true); If launch() returns null, what happens? Is it handled gracefully? If not, we should have it print a message stating why the launch failed.. Deepak From aph at redhat.com Thu Dec 10 03:16:30 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Dec 2009 11:16:30 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B1FE804.80508@redhat.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> <4B1FDD99.70407@sun.com> <4B1FE804.80508@redhat.com> Message-ID: <4B20D88E.4040907@redhat.com> Andrew Haley wrote: > Kelly O'Hair wrote: >> Is there some other way than baking in 256 hex constants into our sources? > > I'm sure it's perfectly possible to generate the CRC-32 tables at runtime. > However, the CRC function is defined in terms of this exact source code, Ah, I was about to add "but it's only 1 kbyte!" when I noticed that the data are unsigned longs, and therefore maybe 2 kbytes. I presume that this is because gdb might be used on hosts with 16-bit ints, but that hardly affects us. I'll fix it before submitting a webrev. Andrew. From andrew at icedtea.classpath.org Thu Dec 10 05:49:13 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Dec 2009 13:49:13 +0000 Subject: /hg/icedtea6: 3 new changesets Message-ID: changeset cee288574c85 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=cee288574c85 author: Andrew John Hughes date: Mon Nov 23 13:37:20 2009 +0000 Reorganise Makefile.am to give a more logical and clear structure. 2009-11-23 Andrew John Hughes * Makefile.am: Reorganise to match IcedTea7 layout. Add FIXMEs for targets which still need to be moved across. changeset ac0296b09732 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ac0296b09732 author: Andrew John Hughes date: Mon Nov 23 13:38:58 2009 +0000 Merge changeset bd7b2c162084 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=bd7b2c162084 author: Andrew John Hughes date: Thu Dec 10 13:51:41 2009 +0000 Merge diffstat: 173 files changed, 4545 insertions(+), 32442 deletions(-) .hgignore | 1 ChangeLog | 266 HACKING | 27 Makefile.am | 2287 ++++---- acinclude.m4 | 132 configure.ac | 2 contrib/jck/compile-native-code.sh | 2 generated/sun/misc/Version.java | 4 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java | 131 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java | 1058 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java | 617 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatInputStream.java | 281 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizer.java | 128 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizerPropertyInfo.java | 76 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt | 310 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInfo.java | 109 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInstrument.java | 448 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSModulator.java | 351 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSRegion.java | 150 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSample.java | 122 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleLoop.java | 63 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleOptions.java | 80 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java | 1287 ---- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbankReader.java | 74 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/EmergencySoundbank.java | 2695 ---------- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/FFT.java | 748 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidDataException.java | 45 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidFormatException.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java | 120 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/LICENSE | 347 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractChannelMixer.java | 126 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractOscillator.java | 200 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBuffer.java | 329 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBufferWavetable.java | 281 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelChannelMixer.java | 50 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java | 135 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDestination.java | 117 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirectedPlayer.java | 36 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirector.java | 46 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelIdentifier.java | 169 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrument.java | 136 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrumentComparator.java | 52 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelMappedInstrument.java | 62 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillator.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillatorStream.java | 48 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPatch.java | 52 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPerformer.java | 143 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelSource.java | 109 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardDirector.java | 86 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardTransform.java | 139 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelTransform.java | 35 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelWavetable.java | 49 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/README.txt | 402 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidDataException.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidFormatException.java | 44 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java | 332 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFWriter.java | 365 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2GlobalRegion.java | 33 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Instrument.java | 911 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2InstrumentRegion.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Layer.java | 78 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2LayerRegion.java | 43 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Modulator.java | 97 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Region.java | 167 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Sample.java | 216 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java | 973 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2SoundbankReader.java | 73 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleInstrument.java | 196 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleSoundbank.java | 145 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAbstractResampler.java | 390 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java | 104 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java | 48 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java | 92 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java | 1556 ----- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannelProxy.java | 202 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java | 337 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftControl.java | 36 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftCubicResampler.java | 87 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftEnvelopeGenerator.java | 298 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java | 616 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java | 82 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java | 277 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLanczosResampler.java | 118 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java | 191 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler.java | 70 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler2.java | 108 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java | 130 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java | 1029 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java | 214 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingClip.java | 539 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java | 522 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMainMixer.java | 259 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixer.java | 529 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixerProvider.java | 66 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingSourceDataLine.java | 519 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPerformer.java | 775 -- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPointResampler.java | 63 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProcess.java | 41 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProvider.java | 51 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReceiver.java | 83 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResampler.java | 35 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResamplerStreamer.java | 38 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java | 515 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftShortMessage.java | 58 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSincResampler.java | 139 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java | 1179 ---- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftTuning.java | 256 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java | 851 --- overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java | 339 - overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileReader.java | 166 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java | 147 patches/ecj/icedtea-hotspot.patch | 16 patches/icedtea-arch.patch | 10 patches/icedtea-bytecodeInterpreter.patch | 11 patches/icedtea-cc-interp-backedge.patch | 30 patches/icedtea-cc-interp-jvmti.patch | 13 patches/icedtea-core-build-hotspot.patch | 108 patches/icedtea-core-build.patch | 81 patches/icedtea-ia64-bugfix.patch | 16 patches/icedtea-ia64-fdlibm.patch | 12 patches/icedtea-libraries.patch | 4 patches/icedtea-linker-options.patch | 48 patches/icedtea-s390-serialize.patch | 15 patches/icedtea-shark-build-hotspot.patch | 213 patches/icedtea-shark-build.patch | 49 patches/icedtea-shark.patch | 20 patches/icedtea-signature-iterator.patch | 44 patches/icedtea-static-libstdc++.patch | 16 patches/icedtea-test-atomic-operations.patch | 25 patches/icedtea-uname.patch | 20 patches/icedtea-zero-build-hotspot.patch | 129 patches/icedtea-zero-build.patch | 205 patches/icedtea-zero.patch | 229 patches/zero/6890308.patch | 760 ++ patches/zero/6891677.patch | 418 + patches/zero/6896043.patch | 113 patches/zero/6903453.patch | 38 platform_zero.in | 17 plugin/icedtea/sun/applet/PluginAppletViewer.java | 36 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 365 + plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 53 plugin/icedteanp/IcedTeaNPPlugin.cc | 4 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 652 -- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 1 plugin/icedteanp/IcedTeaPluginUtils.cc | 272 - plugin/icedteanp/IcedTeaPluginUtils.h | 56 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 258 plugin/icedteanp/IcedTeaScriptablePluginObject.h | 12 plugin/icedteanp/java/netscape/javascript/JSObject.java | 7 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 139 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 103 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 104 ports/hotspot/build/linux/makefiles/shark.make | 32 ports/hotspot/build/linux/makefiles/zero.make | 74 ports/hotspot/make/linux/makefiles/shark.make | 32 ports/hotspot/make/linux/makefiles/zero.make | 32 ports/hotspot/make/linux/makefiles/zeroshark.make | 76 ports/hotspot/make/linux/platform_zero.in | 17 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 5 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 93 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 12 ports/hotspot/src/cpu/zero/vm/entry_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 4 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 5 ports/hotspot/src/cpu/zero/vm/globals_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 2 ports/hotspot/src/share/vm/includeDB_zero | 55 rt/net/sourceforge/jnlp/JNLPFile.java | 8 rt/net/sourceforge/jnlp/Launcher.java | 2 rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 31 rt/net/sourceforge/jnlp/runtime/Boot.java | 5 rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 2 rt/net/sourceforge/jnlp/util/XDesktopEntry.java | 5 diffs (truncated from 39495 to 500 lines): diff -r d5f77a4c9214 -r bd7b2c162084 .hgignore --- a/.hgignore Wed Nov 18 10:56:39 2009 -0500 +++ b/.hgignore Thu Dec 10 13:51:41 2009 +0000 @@ -31,7 +31,6 @@ rt-source-files.txt rt-source-files.txt hotspot-tools-source-files.txt tools-source-files.txt -platform_zero jvm.cfg ergo.c tapset/hotspot.stp diff -r d5f77a4c9214 -r bd7b2c162084 ChangeLog --- a/ChangeLog Wed Nov 18 10:56:39 2009 -0500 +++ b/ChangeLog Thu Dec 10 13:51:41 2009 +0000 @@ -1,3 +1,269 @@ 2009-11-18 Gary Benson + + * Makefile.am: + Reorganise to match IcedTea7 layout. + Add FIXMEs for targets which still need + to be moved across. + +2009-12-08 Gary Benson + + * Makefile.am + (ICEDTEA_SHARK_BUILD): Set to "yes" instead of "true". + (ICEDTEA_ENV): Replaced ICEDTEA_SHARK_BUILD with SHARK_BUILD. + (ICEDTEA_ENV_ECJ): Likewise. + * patches/icedtea-shark-build.patch: Changed to reflect the above. + * patches/icedtea-shark-build-hotspot.patch: Likewise. + +2009-12-08 Gary Benson + + * ports/hotspot/make/linux/platform_zero.in: New file. + * .hgignore: Updated. + +2009-12-08 Gary Benson + + * HACKING: Updated. + +2009-12-08 Gary Benson + + * patches/zero/6903453.patch: New file. + * patches/icedtea-ia64-fdlibm.patch: Removed. + * patches/icedtea-uname.patch: Fixed up. + * Makefile.am (ICEDTEA_PATCHES): Updated. + +2009-12-08 Gary Benson + + * patches/zero/6896043.patch: New file. + * patches/icedtea-cc-interp-backedge.patch: Removed. + * patches/icedtea-cc-interp-jvmti.patch: Likewise. + * patches/icedtea-ia64-bugfix.patch: Likewise. + * patches/icedtea-s390-serialize.patch: Likewise. + * patches/icedtea-test-atomic-operations.patch: Likewise. + * Makefile.am (ICEDTEA_PATCHES): Updated. + +2009-12-08 Gary Benson + + * Makefile.am + (ICEDTEA_CORE_BUILD): Removed. + (ICEDTEA_ZERO_BUILD): Set to "yes" instead of "true". + (ICEDTEA_ENV): Removed ICEDTEA_CORE_BUILD, replaced + ICEDTEA_ZERO_BUILD with ZERO_BUILD, and replaced ZERO_BITSPERWORD + with ARCH_DATA_MODEL. + (ICEDTEA_ENV_ECJ): Likewise. + (stamps/ports.stamp): Updated paths, and don't make jvm.cfg or + ergo_$arch.c for Zero. + (ICEDTEA_PATCHES): Added new patches and removed old ones. + + * acinclude.m4 + (ENABLE_ZERO_BUILD): Removed old CORE_BUILD stuff. + (SET_CORE_OR_SHARK_BUILD): Replaced with... + (SET_SHARK_BUILD): New macro. + + * configure.ac: Use SET_SHARK_BUILD before ENABLE_ZERO_BUILD in + place of SET_CORE_OR_SHARK_BUILD after it. + + * patches/zero/6890308.patch: New file. + * patches/zero/6891677.patch: Likewise. + + * patches/icedtea-core-build.patch: Removed. + * patches/icedtea-core-build-hotspot.patch: Likewise. + * patches/icedtea-linker-options.patch: Likewise. + * patches/icedtea-signature-iterator.patch: Likewise. + * patches/icedtea-static-libstdc++.patch: Likewise. + * patches/icedtea-zero.patch: Likewise. + * patches/icedtea-zero-build.patch: Likewise. + * patches/icedtea-zero-build-hotspot.patch: Likewise. + + * patches/ecj/icedtea-hotspot.patch: Updated. + * patches/icedtea-shark-build.patch: Likewise. + * patches/icedtea-shark-build-hotspot.patch: Likewise. + + * patches/icedtea-arch.patch: Fixed up. + * patches/icedtea-libraries.patch: Likewise. + * patches/icedtea-shark.patch: Likewise. + + * ports/hotspot/build/linux/makefiles/shark.make: Moved to... + * ports/hotspot/make/linux/makefiles/shark.make: New file. + + * ports/hotspot/build/linux/makefiles/zero.make: Moved to... + * ports/hotspot/make/linux/makefiles/zeroshark.make: New file. + + * ports/hotspot/make/linux/makefiles/zero.make: New file. + * ports/hotspot/src/share/vm/includeDB_zero: Likewise. + + * ports/hotspot/make/linux/platform_zero.in: Removed. + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Sync with upstream. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Fixed up. + +2009-12-07 Gary Benson + + PR icedtea/416: + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (CppInterpreter::native_entry): Always unlock synchronized + native methods prior to returning. + +2009-12-03 Man Lung Wong + + * rt/net/sourceforge/jnlp/JNLPFile.java + (JNLPFile): Download the jnlp file from the webspace it originated, if + it exists. + * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Enable desktop element and revise the list of fixme. + (addMenuAndDesktopEntries): No longer errors out when shortcut tag not + specified. + * rt/net/sourceforge/jnlp/runtime/Boot.java + (getFile): Launches the original jnlp file (i.e. if the file was + downloaded from http://icedtea.classpath.org, then it will launch the + one from http://icedtea.classpath.org). + * rt/net/sourceforge/jnlp/util/XDesktopEntry.java + (getContentsAsReader): Shortcut uses jnlp file in cache and launches + with system preferred javaws. + +2009-12-03 Gary Benson + + * patches/icedtea-core-build.patch: Remove a very old workaround. + +2009-12-03 Gary Benson + + * patches/icedtea-bytecodeInterpreter.patch: Removed. + * Makefile.am (ICEDTEA_PATCHES): Don't apply the above. + * HACKING: Document the above. + +2009-12-03 Gary Benson + + * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/: + Removed. + +2009-12-02 Deepak Bhole + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc + (newMessageOnBus): Fix error handling code. Add support for NewArray, + GetValue, and literal returns (primitives). + (getValue): New function. Requests the value of a field from Java, + converted to literal for primitives/boxable types. + (setSlot): Bypass NPVariant creation. + (newArray): New function, creates an array of given type on Java side. + (set): Use value directly instead of NPVariant. + (setStaticField): Same. + (getArrayTypeForJava): New function. Given a variant, returns what type of + array should be created to store that variant on Java side. + (createJavaObjectFromVariant): Added support for arrays. + (callStaticMethod): use direct values instead of NPVariants. + (callMethod): Same. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Updates as needed by + changes to IcedTeaJavaRequestProcessor.cc. + * plugin/icedteanp/IcedTeaNPPlugin.cc + (GCJ_Destroy): Invalidate all NPObjects related to an instance. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (sendWindow): Use NPVariant address to store windows info on Java side, + rather than the corresponding NPObject address. + (call): Use IcedTeaPluginUtilities::javaResultToNPVariant for java var to + NPVariant conversion, rather than custom conversion. + (sendString): Use new AyncCallThreadData struct and + pluginthreadasynccall() for calls that need to be in main thread. + (setMember): Send value information directly to _setMember, and let it + sort out how to set values. + (convertToNPVariant): Moved to utilities class. + (sendMember): Deal with NPVariants instead of NPObjects. + (queue_processor): Add case for GetSlot (WIP). + (storeVariantInJava): Remove deprecated function. + (_setMember): Use javaResultToNPVariant to get a value loaded into a + variant. Deal with NPVariants instead of NPObjects. + (_getMember): Deal with NPVariants instead of NPObjects. + (_getString): New function. Returns toString values for variables. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Declare new _getString + function. + * plugin/icedteanp/IcedTeaPluginUtils.cc: Move object map from the plugin + request processor class. + (strSplit): For efficiency, reserve enough space for strings beforehand. + (getUTF8String): Same. + (printStringVector): Run only if in debug. + (removeInstanceID): New function to remove mapping between an object and + an instance. + (invalidateInstance): New function. Removes all mappings from objects to + the given instance. + (getNPObjectFromJavaKey): New function. Given a java object key, returns + the corresponding JS object, if any. + (storeObjectMapping): New function. Stores a mapping between Java + objects and JS objects (peering). + (removeObjectMapping): New function. Removes peering between JS object and + Java object. + (printStringPtrVector): Run only if in debug. + (printNPVariant): Same. + (NPVariantToString): Store result in provided parameter. + (javaResultToNPVariant): New function, moved from + IcedTeaScriptablePluginObject. + (isObjectJSArray): New function. Returns if given NPObject represents an + array. + * plugin/icedteanp/IcedTeaPluginUtils.h: Misc. changes as needed by + updates to IcedTeaPluginUtils.cc. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Move object_map to + utilities class. + (getProperty): Supply instance id to findClass. + (get_scriptable_java_object): Use the new + getNPObjectFromJavaKey/storeObjectMapping functions in the utilities + class. Also, create object asynchronously. + (_createAndRetainJavaObject): New function. Creates a scriptable Java + object and increments reference count. + (is_valid_java_object): New function. Returns if the given object is still + valid. + (invalidate): Remove instance and Java side object mapping for given + object. + (javaResultToNPVariant): Moved to utilities class. + (invoke): Create variants peer on Java side before calling + callMethod/callStaticMethod. + (setProperty): Create variant peers on Java side before calling + setField/setStaticField. + (construct): Create variant peers on Java side before calling the + constructor. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Misc. changes as + needed by updates to IcedTeaScriptablePluginObject.cc. + * plugin/icedteanp/java/netscape/javascript/JSObject.java: Added a new + string constructor. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java + (getCostAndCastedObject): Add support for array type parameters. + (isNum): Return true for boolean (booleans are convertible to int as per + spec). + (getNum): Remove case for char/Character. + (getArrayAsString): New function. For debug only. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (handleMessage): Add support for getValue. Wire in array creaion support. + Support a '[System]' source for privileged calls. + (isInt): New function. Returns if given object is an integer/convertible to + an int. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (setMember): Send primitive/boxable values as literals. + (setSlot): Same. + (getWindow): Fortify condition for wait for panel initialization. + (parse): Handle nested objected tags, don't allow parameter value + overwrite. + +2009-11-27 Deepak Bhole + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (getWindow): Fortify condition for wait for panel initialization. + (parse): Handle nested objected tags, don't allow parameter value + overwrite. + * rt/net/sourceforge/jnlp/Launcher.java + (createApplet): Set context classloader for the thread to the applet's + classloader, so that getContextClassLoader calls succeed. + +2009-11-25 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp + (ZeroEntry::entry_point): Removed explicit inline. + (ZeroEntry::invoke): Likewise. + (ZeroEntry::invoke_osr): Likewise. + +2009-11-23 Gary Benson + + * contrib/jck/compile-native-code.sh: Support s390x. + 2009-11-18 Gary Benson * patches/icedtea-shark.patch diff -r d5f77a4c9214 -r bd7b2c162084 HACKING --- a/HACKING Wed Nov 18 10:56:39 2009 -0500 +++ b/HACKING Thu Dec 10 13:51:41 2009 +0000 @@ -19,7 +19,6 @@ The following patches are currently appl * icedtea-bytebuffer-compact.patch: Add clearMark() method to java.nio.Buffer (PR60). * icedtea-copy-plugs.patch: Add IcedTea's 'plugs' for Java WebStart support, add cast to getAnnotation and trapAuthenticationFailure variable to com.sun.jmx.snmp.SnmpPduTrap. -* icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) @@ -28,7 +27,6 @@ The following patches are currently appl * icedtea-gcc-4.3.patch: Fix code to compile with GCC 4.3 and turn off -Werror. * icedtea-gcc-suffix.patch: Append $(GCC_SUFFIX) to end of 'gcc' binary name. * icedtea-graphics.patch: Fix word wrap in JTextArea (PR57/S6593649) -* icedtea-ia64-fdlibm.patch: Fix name of ia64 architecture from _M_IA64 to ia64. * icedtea-javac-debuginfo.patch: Ensure debugging information is generated for all class files. * icedtea-javafiles.patch: Add missing Java files to list. * icedtea-jpegclasses.patch: Add com.sun.image.codec.jpeg support. @@ -36,7 +34,6 @@ The following patches are currently appl * icedtea-lcms-2.patch: Temporary fix for https://bugs.openjdk.java.net/show_bug.cgi?id=100050. * icedtea-lib64.patch: Add support for building on platforms with /usr/lib64. * icedtea-libraries.patch: Use system JPEG and zlib libraries. -* icedtea-linker-options.patch: Add -Xlinker option when linking. * icedtea-memory-limits.patch: Increase default memory limits. * icedtea-no-bcopy.patch: Don't define local copies of bcopy, bzero and bcmp from BSD. * icedtea-override-redirect-metacity.patch: Enable override redirect for Metacity window manager. @@ -47,7 +44,6 @@ The following patches are currently appl * icedtea-sparc-ptracefix.patch: Avoid importing asm-sparc/ptrace.h by including pt_regs directly. * icedtea-sparc-trapsfix.patch: Include traps.h from correct directory. * icedtea-ssl.patch: Add casts to AlgorithmParameterSpec in sun.security.ssl package. -* icedtea-static-libstdc++.patch: Don't use static C++ on PPC64. * icedtea-sunsrc.patch: Remove service property files from TOOLS list. * icedtea-text-relocations.patch: Use correct -fPIC/-fpic flag on all platforms. * icedtea-timerqueue.patch: Fix setting of running variable (PR87). @@ -55,7 +51,6 @@ The following patches are currently appl * icedtea-use-system-tzdata.patch: Use timezone data from the system (PR70/S6593486). * icedtea-version.patch: Replace name and bug URL with IcedTea versions. * icedtea-webservices.patch: Add applet support. -* icedtea-zero-build.patch: Add support for the zero assembler build. * icedtea-shark-build.patch: Add support for building the Shark JIT. * icedtea-alpha-fixes.patch: Fix build issues on alpha-linux. * icedtea-arch.patch: Add support for additional architectures. @@ -74,14 +69,12 @@ The following patches are currently appl * icedtea-6728542-epoll.patch: Make EPoll work on non-x86 platforms. (PR265) * icedtea-fortify-source.patch: Fix build failures with -D_FORTIFY_SOURCE=2. * icedtea-format-warnings.patch: Fix build failures with -Wformat=1. -* icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. * icedtea-demo-swingapplet.patch: Add missing html file needed to run the demo. * icedtea-6791168.patch: Fix build failure with GCC-4.4 (PR 38725) and compiler warnings. * icedtea-no-precompiled.patch: Don't use precompiled header files in hotspot when DISABLE_PRECOMPILED_HEADER is set. * icedtea-includedb.patch: Add missing include files. * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). * icedtea-java2d-dasher.patch: Fix interpretation of dash array elements in BasicStroke (S6793344). -* icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. * icedtea-xml-encodinginfo.patch: Fix possible StackOverflowError in EncodingInfo (PR295). * icedtea-jtreg-6592792.patch: Fix jtreg test for bug 6592792 so that it compiles. * icedtea-s390-noinline.patch: Add special flags for javac on s390 to work around a VM problem with bad code generation during inlining. @@ -99,14 +92,7 @@ The following patches are currently appl * icedtea-cacao.patch: For the 'java' command, create new thread depending on the current VM. * icedtea-cacao-no-mmap-first-page.patch: Don't mmap the first memory page. * cacao/no-strict-aliasing.patch: Turn off strict aliasing which causes an issue with the verifier when building with GCC 4.4 (cacao PR129). - -* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. -* icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. -* icedtea-signature-iterator.patch: Add zero-specific signature handling. -* icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. -* icedtea-zero.patch: Generalise architecture support, add ARM and #ifdef out non-zero applicable parts. * icedtea-shark.patch: Add support for the Shark JIT. -* icedtea-s390-serialize.patch: Correctly detect serialization segfaults on s390. * icedtea-xshm.patch: Support newer X11 headers for awt_GraphicsEnv.h. The following patches are only applied to OpenJDK6 in IcedTea6: @@ -177,3 +163,16 @@ changes to the OpenJDK code base and/or * icedtea-core-zero-build.patch: Not required with HS14. * icedtea-bytecodeInterpreterWithChecks.patch: Same as icedtea-xslfix.patch (OpenJDK6 only, S6707485); not required with HS14. * icedtea-eclipse-hotspot-6614100-7b24.patch: Fix Eclipse crash (S6614100). Fixed in OpenJDK7 b29/hs13. Not required with HS14. +* icedtea-bytecodeInterpreter.patch: Replace fast opcodes with opc_default. Not required with HS14. +* icedtea-signature-iterator.patch: Add zero-specific signature handling. Obsoleted by zero/6890308.patch. +* icedtea-static-libstdc++.patch: Don't use static C++ on PPC64. Obsoleted by zero/6890308.patch. +* icedtea-zero.patch: Generalise architecture support, add ARM and #ifdef out non-zero applicable parts. Obsoleted by zero/6890308.patch. +* icedtea-core-build.patch: Add support for building IcedTea core VM. Obsoleted by zero/6891677.patch. +* icedtea-linker-options.patch: Add -Xlinker option when linking. Obsoleted by zero/6891677.patch. +* icedtea-zero-build.patch: Add support for the zero assembler build. Obsoleted by zero/6891677.patch. +* icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. Obsoleted by zero/6896043.patch. +* icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. Obsoleted by zero/6896043.patch. +* icedtea-ia64-bugfix.patch: Remove workaround for IA64 GCC bug. Obsoleted by zero/6896043.patch. +* icedtea-s390-serialize.patch: Correctly detect serialization segfaults on s390. Obsoleted by zero/6896043.patch. +* icedtea-test-atomic-operations.patch: Add check to see if GCC's sync_lock_test works. Obsoleted by zero/6896043.patch. +* icedtea-ia64-fdlibm.patch: Fix name of ia64 architecture from _M_IA64 to ia64. Obsoleted by zero/6903453.patch. diff -r d5f77a4c9214 -r bd7b2c162084 Makefile.am --- a/Makefile.am Wed Nov 18 10:56:39 2009 -0500 +++ b/Makefile.am Thu Dec 10 13:51:41 2009 +0000 @@ -1,13 +1,116 @@ OPENJDK_DATE = 14_oct_2009 +# Dependencies + OPENJDK_DATE = 14_oct_2009 OPENJDK_MD5SUM = 078fe0ab744c98694decc77f2456c560 OPENJDK_VERSION = b17 +OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/ CACAO_VERSION = 0.99.4 CACAO_MD5SUM = c5e6525c5212ddbb6026e4a7cde37ca6 +CACAO_BASE_URL = http://www.complang.tuwien.ac.at +CACAO_URL = $(CACAO_BASE_URL)/cacaojvm/download/cacao-$(CACAO_VERSION)/ NETBEANS_PROFILER_MD5SUM = a6756a62291ebea5c0e2431389b31380 +NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ +NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_release65_mod.tar.gz + VISUALVM_MD5SUM = a289739f4a5bcdb9a2c642cfcc1e83fe - +VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127170/ +VISUALVM_SRC_ZIP = visualvm-111-src.tar.gz + +OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 + +# Build directories + +OS_DIR = $(BUILD_OS_DIR)-$(BUILD_ARCH_DIR) +BUILD_OUTPUT_DIR = openjdk/build/$(OS_DIR) +ECJ_BUILD_OUTPUT_DIR = openjdk-ecj/build/$(OS_DIR) +ICEDTEA_BUILD_DIR = \ + $(abs_top_builddir)/$(BUILD_OUTPUT_DIR) +# The Binary plugs directory is called jdk1.7.0 for historical reasons. The +# name is completely irrelevant; only contains the plugs to build IcedTea. +ICEDTEA_RT = \ + $(abs_top_builddir)/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar +ICEDTEA_CLS_DIR = \ + $(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/classes +ICEDTEA_BOOT_DIR= \ + $(abs_top_builddir)/bootstrap/jdk1.6.0 +ICEDTEA_ENDORSED_DIR = \ + $(ICEDTEA_BOOT_DIR)/lib/endorsed +ICEDTEA_BUILD_DIR_ECJ = \ + $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/ +ICEDTEA_CLS_DIR_ECJ = \ + $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/classes +SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server +BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +BUILD_DEBUG_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)-debug/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) + +# Source directories + +SHARE = openjdk/jdk/src/share/classes +SOLARIS = openjdk/jdk/src/solaris/classes +LANGTOOLS = openjdk/langtools/src/share/classes +JAXP = openjdk/jaxp/src/share/classes +CORBA = openjdk/corba/src/share/classes +JAXWS = openjdk/jaxws/src/share/classes + +# FIXME (netx): NetX source directories go here + +OPENJDK_SOURCEPATH_DIRS = \ + $(SHARE):$(SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) + +ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt:$(LIVECONNECT_SRCS) + +# Sources copied from OpenJDK. +ICEDTEA_COPY_DIRS = \ + com/sun/jdi \ + com/sun/jdi/connect \ + com/sun/jdi/connect/spi \ + com/sun/jdi/event \ + com/sun/jdi/request \ + com/sun/jmx/snmp/agent \ + com/sun/tools/jdi \ + java/io \ + java/util \ + java/rmi \ + sun/awt/ \ + javax/net/ssl \ + javax/script + +# FIXME (javac): Settings for javac go here + +# Conditional defintions + +if USE_ALT_OPENJDK_SRC_ZIP + OPENJDK_SRC_ZIP = $(ALT_OPENJDK_SRC_ZIP) +else +if USE_HG + OPENJDK_SRC_ZIP = +else + OPENJDK_SRC_ZIP = openjdk-6-src-$(OPENJDK_VERSION)-$(OPENJDK_DATE).tar.gz +endif +endif + +if USE_ALT_HOTSPOT_SRC_ZIP + HOTSPOT_SRC_ZIP = $(ALT_HOTSPOT_SRC_ZIP) +else + HOTSPOT_SRC_ZIP = hotspot.tar.gz +endif + +if USE_ALT_CACAO_SRC_ZIP + CACAO_SRC_ZIP = $(ALT_CACAO_SRC_ZIP) +else +if USE_ALT_CACAO_SRC_DIR + CACAO_SRC_ZIP = "not needed" +else + CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz +endif +endif + +# FIXME (HotSpot): HotSpot changeset logic goes here + +# FIXME (plugin): LIVECONNECT_DIR becomes sun/applet netscape +# FIXME (plugin): NPPLUGIN_DIR becomes PLUGIN_DIR if ENABLE_NPPLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaNPPlugin ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so @@ -58,469 +161,45 @@ PULSE_JAVA_CLASS_DIR = PULSE_JAVA_CLASS_DIR = endif +# FIXME (HotSpot): no longer needed From xerxes at zafena.se Thu Dec 10 06:00:33 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 10 Dec 2009 15:00:33 +0100 Subject: Native method wrapper generation In-Reply-To: <20091111163839.GL3256@redhat.com> References: <20091111163839.GL3256@redhat.com> Message-ID: <4B20FF01.5060108@zafena.se> Gary Benson wrote: > Hi all, > > This commit adds native wrapper generation to Shark. It also removes > support for LLVM < 2.6, because the new code requires it. I'll write > this up in more detail tomorrow with some benchmarks. > > Cheers, > Gary > > Hi +void SharkCompiler::generate_native_code(SharkEntry* entry, ... +#if SHARK_LLVM_VERSION >= 27 + if (!fnmatch(SharkPrintAsmOf, name, 0)) { + llvm::SetCurrentDebugType(X86_ONLY("x86-emitter") NOT_X86("jit")); + llvm::DebugFlag = true; + } + else { + llvm::SetCurrentDebugType(""); + llvm::DebugFlag = false; + } +#else This part of the code dont work with llvm 2.7svn *release* builds since llvm::DebugFlag and llvm::SetCurrentDebugType are only defined in the llvm headers for llvm debug builds. This was only a minor issue before the shark rewrite since the code then where only included in non product hotspot builds, now it fail on product builds as well in combination with a llvm 2.7svn release build. One way to fix this would be to introduce a new debug flag based on the info from llvm-config --build-mode that are set to true when llvm-config --build-mode spits out "Debug" , and then conditionalise the code block to be compiled if the new debug flag are percent. Cheers Xerxes From aph at redhat.com Thu Dec 10 06:20:05 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Dec 2009 14:20:05 +0000 Subject: Native method wrapper generation In-Reply-To: <4B20FF01.5060108@zafena.se> References: <20091111163839.GL3256@redhat.com> <4B20FF01.5060108@zafena.se> Message-ID: <4B210395.5050804@redhat.com> Xerxes R?nby wrote: > Gary Benson wrote: >> Hi all, >> >> This commit adds native wrapper generation to Shark. It also removes >> support for LLVM < 2.6, because the new code requires it. I'll write >> this up in more detail tomorrow with some benchmarks. > > +void SharkCompiler::generate_native_code(SharkEntry* entry, > ... > +#if SHARK_LLVM_VERSION >= 27 > + if (!fnmatch(SharkPrintAsmOf, name, 0)) { > + llvm::SetCurrentDebugType(X86_ONLY("x86-emitter") NOT_X86("jit")); > + llvm::DebugFlag = true; > + } > + else { > + llvm::SetCurrentDebugType(""); > + llvm::DebugFlag = false; > + } > +#else > > This part of the code dont work with llvm 2.7svn *release* builds since > > llvm::DebugFlag > > and > > llvm::SetCurrentDebugType > > are only defined in the llvm headers for llvm debug builds. > > This was only a minor issue before the shark rewrite since the code then > where only included in non product hotspot builds, now it fail on > product builds as well in combination with a llvm 2.7svn release build. > One way to fix this would be to introduce a new debug flag based on the > info from > llvm-config --build-mode > that are set to true when llvm-config --build-mode spits out "Debug" , > and then conditionalise the code block to be compiled if the new debug > flag are percent. But the debug dumps aren't just for people who build their own OpenJDK, they're useful for debugging the installed OpenJDK and for people who are just writing apps and want to look at the generated code. This is a bad decision on the part of LLVM, but I guess we can live with it as long as the LLVM packages we use are build with debugging. Andrew. From gnu_andrew at member.fsf.org Thu Dec 10 07:05:30 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Dec 2009 15:05:30 +0000 Subject: Recent IcedTea6 push Message-ID: <17c6771e0912100705u6e05e974rda5b4c0284dbe741@mail.gmail.com> I've just pushed a changeset which reorganises the IcedTea6 Makefile.am to match the cleaner structure used by IcedTea7. There shouldn't be any actual changes -- just some reorganisation and the addition of FIXMEs for later changes to be ported over from IcedTea7. If there is, feel free to fix it :) I rebased the Makefile.am so as to more easily port across a number of IcedTea7 changes needed by b18, changes for which are being pushed to the icedtea6-hg repository (http://icedtea.classpath.org/people/andrew/icedtea6-hg). I wanted to get this in sooner rather than later so that any interim Makefile.am changes (like Gary's recent ones) don't have to be redone against the new version. The new version should hopefully be clearer, but feedback is welcomed. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mwong at redhat.com Thu Dec 10 07:58:25 2009 From: mwong at redhat.com (Man Wong) Date: Thu, 10 Dec 2009 10:58:25 -0500 (EST) Subject: Patch for Review: Netx utilizing offline-allowed tag In-Reply-To: <1486007673.165871260460558870.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <1168990652.166411260460705911.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> ----- "Deepak Bhole" wrote: > * Man Wong [2009-12-03 15:02]: > > This patch fixes the behaviour of netx such that it will no longer > launch the jnlp file when system is offline and offline-allowed tag > does not exist. > > > > Changelog: > > 2009-12-03 Man Lung Wong > > > > * rt/net/sourceforge/jnlp/Launcher.java > > (launch): No longer launches when system offline and > offline-allowed tag does not exist. > > > > Any comments? > > > > Thanks, > > > > Man Lung Wong > > > > > diff -r eb51df7af234 rt/net/sourceforge/jnlp/Launcher.java > > --- a/rt/net/sourceforge/jnlp/Launcher.java Wed Dec 02 10:40:55 2009 > +0100 > > +++ b/rt/net/sourceforge/jnlp/Launcher.java Wed Dec 02 10:44:59 2009 > -0500 > > @@ -19,14 +19,11 @@ > > > > import java.applet.Applet; > > import java.awt.Container; > > -import java.io.BufferedInputStream; > > -import java.io.File; > > -import java.io.IOException; > > -import java.io.InputStream; > > +import java.io.*; > > import java.lang.management.ManagementFactory; > > import java.lang.management.ThreadMXBean; > > import java.lang.reflect.Method; > > -import java.net.URL; > > +import java.net.*; > > import java.util.LinkedList; > > import java.util.List; > > import java.util.jar.JarFile; > > @@ -187,6 +184,21 @@ > > */ > > public ApplicationInstance launch(JNLPFile file, Container > cont) throws LaunchException { > > TgThread tg; > > + > > + //First checks whether offline-allowed tag is specified > inside the jnlp > > + //file. > > + if (!file.getInformation().isOfflineAllowed()) { > > + try { > > + //Checks the offline/online status of the system. > > + //If system is offline do not launch. > > + > InetAddress.getByName(file.getSourceLocation().getHost()); > > + > > + } catch (UnknownHostException ue) { > > + return null; > > + } catch (Exception e) { > > + System.err.println(e); > > + } > > + } > > > > if (file instanceof PluginBridge && cont != null) > > tg = new TgThread(file, cont, true); > > If launch() returns null, what happens? Is it handled gracefully? If > not, we should have it print a message stating why the launch > failed.. Ok, that sounds good. > > Deepak From aph at icedtea.classpath.org Thu Dec 10 08:10:36 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Thu, 10 Dec 2009 16:10:36 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset fb09ff959ed0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=fb09ff959ed0 author: aph date: Thu Dec 10 15:38:03 2009 +0000 * patches/icedtea-linux-separate-debuginfo.patch: New file. 2009-12-10 Andrew Haley * patches/icedtea-linux-separate-debuginfo.patch: New file. * Makefile.am (ICEDTEA_PATCHES): Add it. changeset fb86c0967aa1 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=fb86c0967aa1 author: aph date: Thu Dec 10 15:40:56 2009 +0000 Merge diffstat: 3 files changed, 1557 insertions(+), 1089 deletions(-) ChangeLog | 14 Makefile.am | 2263 ++++++++++++------------ patches/icedtea-linux-separate-debuginfo.patch | 369 +++ diffs (truncated from 2819 to 500 lines): diff -r 0a5b1c9b3fcf -r fb86c0967aa1 ChangeLog --- a/ChangeLog Tue Dec 08 16:13:23 2009 +0000 +++ b/ChangeLog Thu Dec 10 15:40:56 2009 +0000 @@ -1,3 +1,15 @@ 2009-12-08 Gary Benson + + * Makefile.am: + Reorganise to match IcedTea7 layout. + Add FIXMEs for targets which still need + to be moved across. + +2009-12-10 Andrew Haley + + * patches/icedtea-linux-separate-debuginfo.patch: New file. + * Makefile.am (ICEDTEA_PATCHES): Add it. + 2009-12-08 Gary Benson * Makefile.am @@ -254,7 +266,7 @@ 2009-11-25 Gary Benson - + * contrib/jck/compile-native-code.sh: Support s390x. 2009-11-18 Gary Benson diff -r 0a5b1c9b3fcf -r fb86c0967aa1 Makefile.am --- a/Makefile.am Tue Dec 08 16:13:23 2009 +0000 +++ b/Makefile.am Thu Dec 10 15:40:56 2009 +0000 @@ -1,13 +1,116 @@ OPENJDK_DATE = 14_oct_2009 +# Dependencies + OPENJDK_DATE = 14_oct_2009 OPENJDK_MD5SUM = 078fe0ab744c98694decc77f2456c560 OPENJDK_VERSION = b17 +OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/ CACAO_VERSION = 0.99.4 CACAO_MD5SUM = c5e6525c5212ddbb6026e4a7cde37ca6 +CACAO_BASE_URL = http://www.complang.tuwien.ac.at +CACAO_URL = $(CACAO_BASE_URL)/cacaojvm/download/cacao-$(CACAO_VERSION)/ NETBEANS_PROFILER_MD5SUM = a6756a62291ebea5c0e2431389b31380 +NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ +NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_release65_mod.tar.gz + VISUALVM_MD5SUM = a289739f4a5bcdb9a2c642cfcc1e83fe - +VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127170/ +VISUALVM_SRC_ZIP = visualvm-111-src.tar.gz + +OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 + +# Build directories + +OS_DIR = $(BUILD_OS_DIR)-$(BUILD_ARCH_DIR) +BUILD_OUTPUT_DIR = openjdk/build/$(OS_DIR) +ECJ_BUILD_OUTPUT_DIR = openjdk-ecj/build/$(OS_DIR) +ICEDTEA_BUILD_DIR = \ + $(abs_top_builddir)/$(BUILD_OUTPUT_DIR) +# The Binary plugs directory is called jdk1.7.0 for historical reasons. The +# name is completely irrelevant; only contains the plugs to build IcedTea. +ICEDTEA_RT = \ + $(abs_top_builddir)/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar +ICEDTEA_CLS_DIR = \ + $(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/classes +ICEDTEA_BOOT_DIR= \ + $(abs_top_builddir)/bootstrap/jdk1.6.0 +ICEDTEA_ENDORSED_DIR = \ + $(ICEDTEA_BOOT_DIR)/lib/endorsed +ICEDTEA_BUILD_DIR_ECJ = \ + $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/ +ICEDTEA_CLS_DIR_ECJ = \ + $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/classes +SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server +BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +BUILD_DEBUG_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)-debug/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) + +# Source directories + +SHARE = openjdk/jdk/src/share/classes +SOLARIS = openjdk/jdk/src/solaris/classes +LANGTOOLS = openjdk/langtools/src/share/classes +JAXP = openjdk/jaxp/src/share/classes +CORBA = openjdk/corba/src/share/classes +JAXWS = openjdk/jaxws/src/share/classes + +# FIXME (netx): NetX source directories go here + +OPENJDK_SOURCEPATH_DIRS = \ + $(SHARE):$(SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) + +ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt:$(LIVECONNECT_SRCS) + +# Sources copied from OpenJDK. +ICEDTEA_COPY_DIRS = \ + com/sun/jdi \ + com/sun/jdi/connect \ + com/sun/jdi/connect/spi \ + com/sun/jdi/event \ + com/sun/jdi/request \ + com/sun/jmx/snmp/agent \ + com/sun/tools/jdi \ + java/io \ + java/util \ + java/rmi \ + sun/awt/ \ + javax/net/ssl \ + javax/script + +# FIXME (javac): Settings for javac go here + +# Conditional defintions + +if USE_ALT_OPENJDK_SRC_ZIP + OPENJDK_SRC_ZIP = $(ALT_OPENJDK_SRC_ZIP) +else +if USE_HG + OPENJDK_SRC_ZIP = +else + OPENJDK_SRC_ZIP = openjdk-6-src-$(OPENJDK_VERSION)-$(OPENJDK_DATE).tar.gz +endif +endif + +if USE_ALT_HOTSPOT_SRC_ZIP + HOTSPOT_SRC_ZIP = $(ALT_HOTSPOT_SRC_ZIP) +else + HOTSPOT_SRC_ZIP = hotspot.tar.gz +endif + +if USE_ALT_CACAO_SRC_ZIP + CACAO_SRC_ZIP = $(ALT_CACAO_SRC_ZIP) +else +if USE_ALT_CACAO_SRC_DIR + CACAO_SRC_ZIP = "not needed" +else + CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz +endif +endif + +# FIXME (HotSpot): HotSpot changeset logic goes here + +# FIXME (plugin): LIVECONNECT_DIR becomes sun/applet netscape +# FIXME (plugin): NPPLUGIN_DIR becomes PLUGIN_DIR if ENABLE_NPPLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaNPPlugin ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so @@ -58,451 +161,36 @@ PULSE_JAVA_CLASS_DIR = PULSE_JAVA_CLASS_DIR = endif +# FIXME (HotSpot): no longer needed HOTSPOT_MAKE_DIR = make -# Top-Level Targets -# ================= - -all-local: icedtea-against-icedtea - -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java - rm -rf stamps - rm -f rt-source-files.txt \ - hotspot-tools-source-files.txt \ - extra-source-files.txt - rm -rf bootstrap - rm -rf lib - rm -rf extra-lib - rm -rf openjdk-ecj - rm -rf openjdk - rm -rf hotspot-tools - rm -rf rt/netscape - rm -rf visualvm - rm -rf netbeans -if ENABLE_NPPLUGIN - rm -f $(NPPLUGIN_DIR)/*.o $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so -else -if ENABLE_PLUGIN - rm -f IcedTeaPlugin.o IcedTeaPlugin.so -endif -endif - -if BUILD_CACAO - rm -rf cacao -endif - rm -f jni-common.o -if ADD_ZERO_BUILD - rm -rf zerovm -endif - -install: - -.PHONY: \ - env env-ecj snapshot clean-clone clean-patch \ - clean-clone-ecj clean-patch-ecj clean-bootstrap-directory \ - clean-bootstrap-directory-symlink clean-bootstrap-directory-ecj \ - clean-bootstrap-directory-symlink-ecj icedtea icedtea-debug \ - clean-icedtea icedtea-against-icedtea clean-icedtea-ecj clean-plugs \ - clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ - clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ - $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ - clean-jtreg-reports - -EXTRA_DIST = rt generated \ - patches/* \ - tools-copy contrib ports \ - extra overlays \ - javaws.png javaws.desktop visualvm.desktop \ - jconsole.desktop policytool.desktop \ - test/jtreg \ - IcedTeaPlugin.cc \ - IcedTeaNPPlugin.cc \ - HACKING pulseaudio fsg.sh \ - plugin \ - hotspot.map \ - autogen.sh \ - tapset/hotspot.stp.in \ - tapset/hotspot_jni.stp.in \ - scripts/jni_create_stap.c \ - scripts/jni_desc - -# The Binary plugs directory is called jdk1.7.0 for historical reasons. The -# name is completely irrelevant; only contains the plugs to build IcedTea. - -# OpenJDK build environment. -OS_DIR = $(BUILD_OS_DIR)-$(BUILD_ARCH_DIR) -BUILD_OUTPUT_DIR = openjdk/build/$(OS_DIR) -ECJ_BUILD_OUTPUT_DIR = openjdk-ecj/build/$(OS_DIR) -ICEDTEA_BUILD_DIR = \ - $(abs_top_builddir)/$(BUILD_OUTPUT_DIR) -ICEDTEA_RT = \ - $(abs_top_builddir)/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar -ICEDTEA_CLS_DIR = \ - $(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/classes -ICEDTEA_BOOT_DIR= \ - $(abs_top_builddir)/bootstrap/jdk1.6.0 -ICEDTEA_ENDORSED_DIR = \ - $(ICEDTEA_BOOT_DIR)/lib/endorsed -JDK_UPDATE_VERSION = 0 -COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) -if ZERO_BUILD - ICEDTEA_ZERO_BUILD = true -else - ICEDTEA_ZERO_BUILD = -endif -if SHARK_BUILD - ICEDTEA_SHARK_BUILD = true -else - ICEDTEA_SHARK_BUILD = -endif -ICEDTEA_ENV = \ - IMPORT_BINARY_PLUGS=true \ - ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ - ANT="$(ANT)" \ - BUILD_NUMBER="$(OPENJDK_VERSION)" \ - JDK_UPDATE_VERSION="$(JDK_UPDATE_VERSION)" \ - JRE_RELEASE_VERSION="1.6.0_$(COMBINED_VERSION)" \ - MILESTONE="fcs" \ - LANG="C" \ - PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ - ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ - BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ - ICEDTEA_RT="$(ICEDTEA_RT)" \ - ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ - ICEDTEA_CLS_DIR="$(ICEDTEA_CLS_DIR)" \ - ICEDTEA_ENDORSED_DIR="$(ICEDTEA_ENDORSED_DIR)" \ - ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ - CLASSPATH="" \ - LD_LIBRARY_PATH="" \ - ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ - SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ - ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ - ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ - ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ - ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ - LIBFFI_CFLAGS="$(LIBFFI_CFLAGS)" \ - LIBFFI_LIBS="$(LIBFFI_LIBS)" \ - LLVM_CFLAGS="$(LLVM_CFLAGS)" \ - LLVM_LDFLAGS="$(LLVM_LDFLAGS)" \ - LLVM_LIBS="$(LLVM_LIBS)" \ - FREETYPE2_HEADERS="$(FREETYPE2_CFLAGS)" \ - FT2_LIB="$(FREETYPE2_LIBS)" \ - ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ - HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ - JAVAC="" \ - JAVA_HOME="" \ - JDK_HOME="" \ - RHINO_JAR="$(RHINO_JAR)" \ - DISTRIBUTION_ID="$(DIST_ID)" \ - DEBUG_CLASSFILES="true" \ - DEBUG_BINARIES="true" +# FIXME: This should not depend on bootstrapping +# but on whether MEMORY_LIMIT is accepted +# as an argument to javac +if WITH_OPENJDK + MEMORY_LIMIT = -J-Xmx1024m +else + MEMORY_LIMIT = +endif if WITH_CACAO -ICEDTEA_ENV += \ - ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" -endif - -if !ENABLE_OPTIMIZATIONS -ICEDTEA_ENV += \ - NO_OPTIMIZATIONS="true" \ - CC_NO_OPT="-O0 -g" -endif - -if !ENABLE_DOCS -ICEDTEA_ENV += \ - NO_DOCS="true" -endif - -if ENABLE_CROSS_COMPILATION -ICEDTEA_ENV += \ - CROSS_COMPILATION="true" \ - CROSS_TARGET_ARCH="$(CROSS_TARGET_ARCH)" -endif - -if USE_ALT_JAR -ICEDTEA_ENV += \ - ALT_JAR_CMD="$(ALT_JAR_CMD)" -endif - -env: - @echo 'unset JAVA_HOME' - @echo 'export $(ICEDTEA_ENV)' - -# OpenJDK ecj build environment. -ICEDTEA_BUILD_DIR_ECJ = \ - $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/ -ICEDTEA_CLS_DIR_ECJ = \ - $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/classes -ICEDTEA_ENV_ECJ = \ - IMPORT_BINARY_PLUGS=true \ - ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ - ANT="$(ANT)" \ - BUILD_NUMBER="$(OPENJDK_VERSION)" \ - JDK_UPDATE_VERSION="$(JDK_UPDATE_VERSION)" \ - JRE_RELEASE_VERSION="1.6.0_$(COMBINED_VERSION)" \ - MILESTONE="fcs" \ - LANG=C"" \ - PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ - ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ - BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ - ICEDTEA_RT="$(ICEDTEA_RT)" \ - ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR_ECJ)" \ - ICEDTEA_CLS_DIR="$(ICEDTEA_CLS_DIR_ECJ)" \ - ICEDTEA_ENDORSED_DIR="$(ICEDTEA_ENDORSED_DIR)" \ - ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ - BOOTCLASSPATH_CLS_RT="-bootclasspath $(ICEDTEA_CLS_DIR_ECJ):$(ICEDTEA_RT)" \ - BOOTCLASSPATH_CLS="-bootclasspath $(ICEDTEA_CLS_DIR_ECJ)" \ - BOOTCLASSPATH_RT_LIBGCJ="-bootclasspath $(ICEDTEA_RT):$(SYSTEM_GCJ_DIR)/jre/lib/rt.jar" \ - CLASSPATH="" \ - LD_LIBRARY_PATH="" \ - GENSRCDIR="$(abs_top_builddir)/generated" \ - ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ - SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ - ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" \ - ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ - ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ - ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ - LIBFFI_CFLAGS="$(LIBFFI_CFLAGS)" \ - LIBFFI_LIBS="$(LIBFFI_LIBS)" \ - LLVM_CFLAGS="$(LLVM_CFLAGS)" \ - LLVM_LDFLAGS="$(LLVM_LDFLAGS)" \ - LLVM_LIBS="$(LLVM_LIBS)" \ - FREETYPE2_HEADERS="$(FREETYPE2_CFLAGS)" \ - FT2_LIB="$(FREETYPE2_LIBS)" \ - ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ - HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ - JAVAC="" \ - JAVA_HOME="" \ - JDK_HOME="" \ - RHINO_JAR="$(RHINO_JAR)" \ - JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ - JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ - JAR_ACCEPTS_STDIN_LIST="$(JAR_ACCEPTS_STDIN_LIST)" \ - DEBUG_CLASSFILES="true" \ - DEBUG_BINARIES="true" - -if WITH_CACAO -ICEDTEA_ENV_ECJ += \ - ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" -endif - -if !ENABLE_OPTIMIZATIONS -ICEDTEA_ENV_ECJ += \ - NO_OPTIMIZATIONS="true" \ - CC_NO_OPT="-O0 -g" -endif - -if !ENABLE_DOCS -ICEDTEA_ENV_ECJ += \ - NO_DOCS="true" -endif - -if ENABLE_CROSS_COMPILATION -ICEDTEA_ENV_ECJ += \ - CROSS_COMPILATION="true" \ - CROSS_TARGET_ARCH="$(CROSS_TARGET_ARCH)" -endif - -env-ecj: - @echo 'unset JAVA_HOME' - @echo 'export $(ICEDTEA_ENV_ECJ)' - -# Mercurial snapshot. -snapshot: dist - mv $(DIST_ARCHIVES) $(distdir)-`$(HG) tip --template '{node}'`.tar.gz - -# OpenJDK Source Preparation Targets -# ================================== - -# Download OpenJDK sources. -OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/ -OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 - -if USE_ALT_OPENJDK_SRC_ZIP - OPENJDK_SRC_ZIP = $(ALT_OPENJDK_SRC_ZIP) -else -if USE_HG - OPENJDK_SRC_ZIP = -else - OPENJDK_SRC_ZIP = openjdk-6-src-$(OPENJDK_VERSION)-$(OPENJDK_DATE).tar.gz -endif -endif - -if USE_ALT_HOTSPOT_SRC_ZIP - HOTSPOT_SRC_ZIP = $(ALT_HOTSPOT_SRC_ZIP) -else - HOTSPOT_SRC_ZIP = hotspot.tar.gz -endif - -CACAO_BASE_URL = http://www.complang.tuwien.ac.at -CACAO_URL = $(CACAO_BASE_URL)/cacaojvm/download/cacao-$(CACAO_VERSION)/ - -if USE_ALT_CACAO_SRC_ZIP - CACAO_SRC_ZIP = $(ALT_CACAO_SRC_ZIP) -else -if USE_ALT_CACAO_SRC_DIR - CACAO_SRC_ZIP = "not needed" -else - CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz -endif -endif - -# VisualVM sources. Alternatives cannot be used here. -NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ -NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_release65_mod.tar.gz - -VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127170/ -VISUALVM_SRC_ZIP = visualvm-111-src.tar.gz - - -stamps/hgforest.stamp: -if OPENJDK_SRC_DIR_FOUND -else -if USE_ALT_OPENJDK_SRC_ZIP -else -if !USE_HG -else - if ! $(HG) fclone -h; \ - then \ - echo "No forest extension found. Please refer to" \ - "http://selenic.com/mercurial/wiki/index.cgi/ForestExtension"; \ - exit 1; \ - fi; -endif -endif -endif - mkdir -p stamps - touch stamps/hgforest.stamp - -stamps/download.stamp: stamps/hgforest.stamp -if OPENJDK_SRC_DIR_FOUND -else -if USE_ALT_OPENJDK_SRC_ZIP -else -if USE_HG -if WITH_HGREV - $(HG) fclone -r $(HGREV) $(OPENJDK_HG_URL) openjdk; -else - $(HG) fclone $(OPENJDK_HG_URL) openjdk; -endif -else - if ! echo "$(OPENJDK_MD5SUM) $(OPENJDK_SRC_ZIP)" \ - | $(MD5SUM) --check ; \ - then \ - if [ $(OPENJDK_SRC_ZIP) ] ; \ - then \ - mv $(OPENJDK_SRC_ZIP) $(OPENJDK_SRC_ZIP).old ; \ From andrew at icedtea.classpath.org Thu Dec 10 08:46:25 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Dec 2009 16:46:25 +0000 Subject: /hg/release/icedtea6-1.5: Ensure debuginfo is turned on in all c... Message-ID: changeset 98d260aaa04b in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=98d260aaa04b author: Andrew John Hughes date: Thu Dec 10 16:51:16 2009 +0000 Ensure debuginfo is turned on in all cases. 2009-12-10 Andrew Haley * patches/hotspot/default/icedtea-debuginfo.patch: Ensure debuginfo is turned on in the saproc and jsig Makefiles. diffstat: 2 files changed, 25 insertions(+) ChangeLog | 6 ++++++ patches/hotspot/default/icedtea-debuginfo.patch | 19 +++++++++++++++++++ diffs (40 lines): diff -r 3f74ae338023 -r 98d260aaa04b ChangeLog --- a/ChangeLog Mon Nov 09 23:19:15 2009 +0000 +++ b/ChangeLog Thu Dec 10 16:51:16 2009 +0000 @@ -1,3 +1,9 @@ 2009-11-09 Andrew John Hughes + + * patches/hotspot/default/icedtea-debuginfo.patch: + Ensure debuginfo is turned on in the saproc and + jsig Makefiles. + 2009-11-09 Andrew John Hughes * Makefile.am: diff -r 3f74ae338023 -r 98d260aaa04b patches/hotspot/default/icedtea-debuginfo.patch --- a/patches/hotspot/default/icedtea-debuginfo.patch Mon Nov 09 23:19:15 2009 +0000 +++ b/patches/hotspot/default/icedtea-debuginfo.patch Thu Dec 10 16:51:16 2009 +0000 @@ -12,4 +12,23 @@ diff -Nru openjdk.orig/hotspot/make/linu ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ARCHFLAG/i486 = -m32 -march=i586 ARCHFLAG/amd64 = -m64 +--- openjdk/hotspot/make/linux/makefiles/saproc.make~ 2009-12-09 14:12:24.873247017 +0000 ++++ openjdk/hotspot/make/linux/makefiles/saproc.make 2009-12-09 14:19:53.382369557 +0000 +@@ -67,6 +67,7 @@ + -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \ + $(SASRCFILES) \ + $(SA_LFLAGS) \ ++ -g \ + -o $@ \ + -lthread_db +--- openjdk/hotspot/make/linux/makefiles/jsig.make~ 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/jsig.make 2009-12-09 14:18:04.041371508 +0000 +@@ -44,4 +44,5 @@ + $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE) + @echo Making signal interposition lib... + $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ ++ -g \ + $(LFLAGS_JSIG) -o $@ $< -ldl + + install_jsig: $(LIBJSIG) From andrew at icedtea.classpath.org Thu Dec 10 09:21:34 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Dec 2009 17:21:34 +0000 Subject: /hg/release/icedtea6-1.6: Ensure debuginfo is enabled across the... Message-ID: changeset cc49b25f85f4 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=cc49b25f85f4 author: Andrew John Hughes date: Thu Dec 10 17:26:37 2009 +0000 Ensure debuginfo is enabled across the whole JDK. 2009-12-10 Andrew Haley * patches/hotspot/default/icedtea-debuginfo.patch: Ensure debuginfo is turned on in the saproc and jsig Makefiles. diffstat: 2 files changed, 25 insertions(+) ChangeLog | 6 ++++++ patches/hotspot/default/icedtea-debuginfo.patch | 19 +++++++++++++++++++ diffs (40 lines): diff -r aa390e8856a1 -r cc49b25f85f4 ChangeLog --- a/ChangeLog Mon Nov 09 22:59:12 2009 +0000 +++ b/ChangeLog Thu Dec 10 17:26:37 2009 +0000 @@ -1,3 +1,9 @@ 2009-11-09 Andrew John Hughes + + * patches/hotspot/default/icedtea-debuginfo.patch: + Ensure debuginfo is turned on in the saproc and + jsig Makefiles. + 2009-11-09 Andrew John Hughes * Makefile.am: diff -r aa390e8856a1 -r cc49b25f85f4 patches/hotspot/default/icedtea-debuginfo.patch --- a/patches/hotspot/default/icedtea-debuginfo.patch Mon Nov 09 22:59:12 2009 +0000 +++ b/patches/hotspot/default/icedtea-debuginfo.patch Thu Dec 10 17:26:37 2009 +0000 @@ -12,4 +12,23 @@ diff -Nru openjdk.orig/hotspot/make/linu ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ARCHFLAG/i486 = -m32 -march=i586 ARCHFLAG/amd64 = -m64 +--- openjdk/hotspot/make/linux/makefiles/saproc.make~ 2009-12-09 14:12:24.873247017 +0000 ++++ openjdk/hotspot/make/linux/makefiles/saproc.make 2009-12-09 14:19:53.382369557 +0000 +@@ -67,6 +67,7 @@ + -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \ + $(SASRCFILES) \ + $(SA_LFLAGS) \ ++ -g \ + -o $@ \ + -lthread_db +--- openjdk/hotspot/make/linux/makefiles/jsig.make~ 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/jsig.make 2009-12-09 14:18:04.041371508 +0000 +@@ -44,4 +44,5 @@ + $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE) + @echo Making signal interposition lib... + $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ ++ -g \ + $(LFLAGS_JSIG) -o $@ $< -ldl + + install_jsig: $(LIBJSIG) From gnu_andrew at member.fsf.org Thu Dec 10 09:29:31 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Dec 2009 17:29:31 +0000 Subject: New IcedTea6 major release (1.7) Message-ID: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> I notice we haven't had a major IcedTea6 release since 1.6 in September. I think it's time to at least consider when we want to do so. HEAD is currently on b17, whereas the previous releases are on b16. The main feature in b17 was the switch to HotSpot 14 but this was already supported by IcedTea6 anyway since 1.4. My personal preference would be to wait at least until b18, which will include the Nimbus backport. Nimbus is one of the major areas (if not only) where OpenJDK still lags the proprietary Sun JDK. The release is fairly imminent; we've been discussing it at some length on jdk6-dev: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html However, I understand that others may want to delay this until 1.8 if a 1.7 is desired sooner, prior to extensive testing of b18. What other features would people like to see in a release? What things are we waiting on? The new plugin springs to mind. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From enevill at icedtea.classpath.org Thu Dec 10 09:24:26 2009 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Thu, 10 Dec 2009 17:24:26 +0000 Subject: /hg/icedtea6: VFP bug fix + java_lang_Math_* bug fix. Message-ID: changeset 82a9d7f61beb in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=82a9d7f61beb author: "Edward Nevill (ed at camswl.com)" date: Thu Dec 10 17:29:39 2009 +0000 VFP bug fix + java_lang_Math_* bug fix. diffstat: 2 files changed, 44 insertions(+), 5 deletions(-) ChangeLog | 6 ++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 43 +++++++++++++++++--- diffs (87 lines): diff -r fb86c0967aa1 -r 82a9d7f61beb ChangeLog --- a/ChangeLog Thu Dec 10 15:40:56 2009 +0000 +++ b/ChangeLog Thu Dec 10 17:29:39 2009 +0000 @@ -1,3 +1,9 @@ 2009-11-23 Andrew John Hughes + + * cppInterpreter_asm.S + Fix bug where it could execute VFP on non-VFP processors + Fix bug where it was calling C interpreter for java_lang_Math_sin and co. + 2009-11-23 Andrew John Hughes * Makefile.am: diff -r fb86c0967aa1 -r 82a9d7f61beb ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Thu Dec 10 15:40:56 2009 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Thu Dec 10 17:29:39 2009 +0000 @@ -1110,7 +1110,7 @@ asm_generate_method_entry: cmp r2, #0 bne 1f - cmp r3, #6 + cmp r3, #14 adrcc ip, asm_method_table ldrcc r0, [ip, r3, lsl #2] 1: @@ -1127,6 +1127,14 @@ asm_method_table: .word 0 @ cppInterpreter can handle native_entry_synchronized .word empty_entry .word accessor_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry + .word normal_entry ALIGN_CODE .global empty_entry @@ -6284,17 +6292,42 @@ _ZN14CppInterpreter17ignore_safepointsEv mov r3, #0 strb r3, [r2, #0] adrl r3, main_dispatch_table +#ifdef HW_FP + ldr r0, [ip, #VFP_Flag-XXX] + cmp r0, #0 + bne 2f +#endif mov r2, #256 1: ldr r1, [r3], #4 str r1, [ip], #4 subs r2, r2, #1 bne 1b + bx lr + +@ No HW FP - must update the table from a combination main_dispatch_table and +@ vfp_table. Previously this updated from main_dispatch_table first, and then +@ overwrite the updated entries with those from vfp_table. However, this creates +@ a window where the jump table has vfp entries, so in a multithreaded world we +@ can get undefined VFP instructions. +@ The code below updates from both tables simultaneously. Note: this relies on +@ the enties in vfp_table being in opcode order. #ifdef HW_FP - sub ip, ip, #256*4 - ldr r0, [ip, #VFP_Flag-XXX] - cmp r0, #0 - beq update_vfp_table +2: + stmdb arm_sp!, {r4, lr} + mov r2, #0 + adrl r0, vfp_table + ldr r4, [r0], #4 +3: + ldr r1, [r3], #4 + cmp r2, r4 + ldreq r1, [r0], #4 + ldreq r4, [r0], #4 + str r1, [ip], #4 + add r2, r2, #1 + cmp r2, #256 + bcc 3b + ldmia arm_sp!, {r4, lr} #endif // HW_FP #endif // NOTICE_SAFEPOINTS bx lr From gnu_andrew at member.fsf.org Thu Dec 10 09:35:11 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Dec 2009 17:35:11 +0000 Subject: IcedTea release tree (1.5, 1.6) patches Message-ID: <17c6771e0912100935s518fe411gf669dfef50c07ebd@mail.gmail.com> I've just pushed a fix from Andrew Haley to the 1.5 and 1.6 release trees which ensures debuginfo is turned on through the JDK http://icedtea.classpath.org/hg/release/icedtea6-1.5/rev/98d260aaa04b http://icedtea.classpath.org/hg/release/icedtea6-1.6/rev/cc49b25f85f4 This is not required for HEAD, where the superior upstream version (DEBUG_BINARIES) is already in place. I did notice some issues when building these trees. On newer systems, 1.5 fails due to a clash with execvpe in glibc (fixed in 1.6 by patches/openjdk/icedtea-rename-execvpe.patch) and 1.6 fails due to the X11 update issue (and presumably 1.5 would too if it got this far). Is it safe to backport the patches for these? The failures are unlikely to occur on the systems packaging these older versions, but it's going to make it hard for us to test any further updates. This of course also depends on a prospective 1.7 release that I just posted about. We certainly need to make 1.6 buildable if it's going to continue to be the primary release much longer and receive security updates. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Thu Dec 10 10:00:49 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 10 Dec 2009 19:00:49 +0100 Subject: New IcedTea6 major release (1.7) In-Reply-To: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> Message-ID: <4B213751.1080801@ubuntu.com> On 10.12.2009 18:29, Andrew John Hughes wrote: > I notice we haven't had a major IcedTea6 release since 1.6 in > September. I think it's time to at least consider when we want to do > so. > > HEAD is currently on b17, whereas the previous releases are on b16. > The main feature in b17 was the switch to HotSpot 14 but this was > already supported by IcedTea6 anyway since 1.4. > > My personal preference would be to wait at least until b18, which will > include the Nimbus backport. Nimbus is one of the major areas (if not > only) where OpenJDK still lags the proprietary Sun JDK. The release > is fairly imminent; we've been discussing it at some length on > jdk6-dev: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html > However, I understand that others may want to delay this until 1.8 if > a 1.7 is desired sooner, prior to extensive testing of b18. from a distribution standpoint, b17 will likely not be released as part of a Linux distribution (all distros just had their releases), so I would be happy to concentrate on b18 instead. > What other features would people like to see in a release? What > things are we waiting on? The new plugin springs to mind. do you mean the icedtea npp plugin? Matthias From mark at klomp.org Thu Dec 10 10:43:47 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 10 Dec 2009 19:43:47 +0100 Subject: New IcedTea6 major release (1.7) In-Reply-To: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> Message-ID: <1260470627.2369.10.camel@hermans.wildebeest.org> On Thu, 2009-12-10 at 17:29 +0000, Andrew John Hughes wrote: > I notice we haven't had a major IcedTea6 release since 1.6 in > September. I think it's time to at least consider when we want to do > so. Yes, definitely has been too long since there has been a new release. > My personal preference would be to wait at least until b18, which will > include the Nimbus backport. Nimbus is one of the major areas (if not > only) where OpenJDK still lags the proprietary Sun JDK. The release > is fairly imminent; we've been discussing it at some length on > jdk6-dev: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html > However, I understand that others may want to delay this until 1.8 if > a 1.7 is desired sooner, prior to extensive testing of b18. I like early and often. I don't mind waiting a bit longer, but there is nothing wrong with doing a quick release now and then do another in a few weeks. > What other features would people like to see in a release? What > things are we waiting on? The new plugin springs to mind. Stuff I have been working on that is already in is the hotspot jni tapset support. Jon has been writing some scripts using that, so that is nicely tested already. Might be nice to have some of those example scripts also in the distro, Jon? But they can be shipped later separately also. The other stuff I have been working on is the systemtap jstack support I posted about last week. I think that is basically ready, but it needs a new systemtap release to be usable. It just doesn't work (although the build will be fine) with older systemtap releases. It also could be added/used separately (as long as icedtea is build with configure --enable-systemtap). So it isn't really release critical. Cheers, Mark From bugzilla-daemon at icedtea.classpath.org Thu Dec 10 23:20:48 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 11 Dec 2009 07:20:48 +0000 Subject: [Bug 418] New: JVM Crasch (SIGSEGV) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=418 Summary: JVM Crasch (SIGSEGV) Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: cmr at financial.com # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002ab168b1f6fc, pid=29399, tid=1091897664 # # Java VM: OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode linux-amd64) # Problematic frame: # V [libjvm.so+0x2756fc] # # If you would like to submit a bug report, please visit: # http://icedtea.classpath.org/bugzilla # --------------- T H R E A D --------------- Current thread (0x000000000bb0f000): GCTaskThread [stack: 0x0000000000000000,0x0000000000000000] [id=29413] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=128 (), si_addr=0x0000000000000000 Registers: RAX=0x8800000000000000, RBX=0x000000004114fbe0, RCX=0x000000000bb10240, RDX=0x000000004114fa40 RSP=0x000000004114fa10, RBP=0x000000004114fb10, RSI=0x00002ab549be7270, RDI=0x00002ab549be6ee1 R8 =0x00002ab8c4fa41c8, R9 =0x0000000000007201, R10=0x000000004114fa40, R11=0x0000000000000206 R12=0x00002ab549be7270, R13=0x000000009b3a13ce, R14=0x000000004114fadc, R15=0x00002ab169263ae8 RIP=0x00002ab168b1f6fc, EFL=0x0000000000010206, CSGSFS=0x0000000000000033, ERR=0x0000000000000000 TRAPNO=0x000000000000000d Top of Stack: (sp=0x000000004114fa10) 0x000000004114fa10: 000000000bb0d240 00002ab555831c40 0x000000004114fa20: 00000000406a8be8 000000004114fbe0 0x000000004114fa30: 0000000000000000 000000004114fa40 0x000000004114fa40: 00002ab16922e470 000000000bc57610 0x000000004114fa50: 000000000bb0cee0 00002ab1792a0000 0x000000004114fa60: 00000000e6a80000 00002ab5550a0390 0x000000004114fa70: 000000000001ff8e 000000000bb0d040 0x000000004114fa80: 000000000bb10240 000000000bb0d180 0x000000004114fa90: 000000000bb0d240 00002ab555831c40 0x000000004114faa0: 00000000406a8be8 000000004114fbe0 0x000000004114fab0: 0000000000000000 00000037d620ac34 0x000000004114fac0: 00002ab5550a0390 000000000001ff8e 0x000000004114fad0: 000000000bb0d948 9b3b13ce00001392 0x000000004114fae0: 00000037d620a9f0 000000007b7c8248 0x000000004114faf0: 000000007b7e0000 000000000bb0d0c8 0x000000004114fb00: 0000000001edf209 000000000f6f9048 0x000000004114fb10: 000000004114fb60 00002ab168a98971 0x000000004114fb20: 3371082c00000000 000000004114fbe0 0x000000004114fb30: 0000000001edf801 00002ab5551a0000 0x000000004114fb40: 000000000bb0d180 00000000406a8ba0 0x000000004114fb50: 00002ab5550a0390 000000000ba3b710 0x000000004114fb60: 000000004114fce0 00002ab168b1a79e 0x000000004114fb70: 000000000bb0d180 000000000bb0d240 0x000000004114fb80: b89f00d600000001 000000004114fc60 0x000000004114fb90: 000000004114fbe0 000000004114fcac 0x000000004114fba0: 000000004114fc90 000000004114fc70 0x000000004114fbb0: 000000004114fc80 000000004114fa40 0x000000004114fbc0: 0000000000100000 0000000100000000 0x000000004114fbd0: 000000000ba3b778 00002ab1792a0000 0x000000004114fbe0: 00002ab16922e550 000000000bb0cee0 0x000000004114fbf0: 00002ab1792a0000 00000000e6a80000 0x000000004114fc00: 00002ab5550a0390 000000000001ff8e Instructions: (pc=0x00002ab168b1f6fc) 0x00002ab168b1f6ec: 95 28 ff ff ff 4c 89 e6 48 8d 78 10 48 8b 40 10 0x00002ab168b1f6fc: ff 90 50 02 00 00 41 8b 07 85 c0 0f 8e 03 ff ff Stack: [0x0000000000000000,0x0000000000000000], sp=0x000000004114fa10, free space=1066302k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x2756fc] V [libjvm.so+0x1ee971] V [libjvm.so+0x27079e] V [libjvm.so+0x275a60] V [libjvm.so+0x626d1d] V [libjvm.so+0x4e1924] --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x00002aaab4151c00 JavaThread "Timer-1" [_thread_blocked, id=29579, stack(0x0000000043264000,0x0000000043365000)] 0x00002aaab414a400 JavaThread "Server" daemon [_thread_in_native, id=29578, stack(0x0000000043163000,0x0000000043264000)] 0x00002aaab406d800 JavaThread "WatchDog" daemon [_thread_blocked, id=29577, stack(0x0000000043062000,0x0000000043163000)] 0x00002aaab4068000 JavaThread "workerThread#9" daemon [_thread_blocked, id=29576, stack(0x0000000042f61000,0x0000000043062000)] 0x00002aaab4139c00 JavaThread "workerThread#8" daemon [_thread_blocked, id=29575, stack(0x0000000042e60000,0x0000000042f61000)] 0x00002aaab4138400 JavaThread "workerThread#7" daemon [_thread_blocked, id=29574, stack(0x0000000042d5f000,0x0000000042e60000)] 0x00002aaab4137000 JavaThread "workerThread#6" daemon [_thread_blocked, id=29573, stack(0x0000000042c5e000,0x0000000042d5f000)] 0x00002aaab4135c00 JavaThread "workerThread#5" daemon [_thread_blocked, id=29572, stack(0x0000000042b5d000,0x0000000042c5e000)] 0x00002aaab4134800 JavaThread "workerThread#4" daemon [_thread_blocked, id=29571, stack(0x0000000041836000,0x0000000041937000)] 0x00002aaab4297000 JavaThread "workerThread#3" daemon [_thread_blocked, id=29570, stack(0x000000004295b000,0x0000000042a5c000)] 0x00002aaab4296800 JavaThread "workerThread#2" daemon [_thread_blocked, id=29569, stack(0x000000004285a000,0x000000004295b000)] 0x00002aaab4296000 JavaThread "workerThread#1" daemon [_thread_blocked, id=29568, stack(0x0000000042a5c000,0x0000000042b5d000)] 0x00002aaab4295c00 JavaThread "workerThread#0" daemon [_thread_blocked, id=29567, stack(0x0000000041252000,0x0000000041353000)] 0x00002aaab4120c00 JavaThread "Thread-1" [_thread_blocked, id=29429, stack(0x0000000041735000,0x0000000041836000)] 0x00002aaab4120400 JavaThread "Timer-0" daemon [_thread_blocked, id=29428, stack(0x000000004005a000,0x000000004015b000)] 0x00002aaab412b800 JavaThread "Client" daemon [_thread_in_native, id=29427, stack(0x0000000042759000,0x000000004285a000)] 0x00002aaab4116800 JavaThread "PingThread" daemon [_thread_blocked, id=29426, stack(0x0000000041b7e000,0x0000000041c7f000)] 0x00002aaab4128000 JavaThread "Reconnector" daemon [_thread_blocked, id=29425, stack(0x0000000041a7d000,0x0000000041b7e000)] 0x00002aaab400b400 JavaThread "Reactor" [_thread_in_native, id=29424, stack(0x000000004197c000,0x0000000041a7d000)] 0x00002aaab402c800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=29422, stack(0x0000000042557000,0x0000000042658000)] 0x00002aaab402ac00 JavaThread "CompilerThread1" daemon [_thread_blocked, id=29421, stack(0x0000000042456000,0x0000000042557000)] 0x00002aaab4029400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=29420, stack(0x0000000041ce7000,0x0000000041de8000)] 0x00002aaab4027c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=29419, stack(0x0000000041414000,0x0000000041515000)] 0x00002aaab4026800 JavaThread "Surrogate Locker Thread (CMS)" daemon [_thread_blocked, id=29418, stack(0x0000000041151000,0x0000000041252000)] 0x000000000bc60800 JavaThread "Finalizer" daemon [_thread_blocked, id=29417, stack(0x0000000040c31000,0x0000000040d32000)] 0x000000000bc5f000 JavaThread "Reference Handler" daemon [_thread_blocked, id=29416, stack(0x0000000040b30000,0x0000000040c31000)] 0x000000000ba29400 JavaThread "main" [_thread_blocked, id=29403, stack(0x0000000040edb000,0x0000000040fdc000)] Other Threads: 0x000000000bc59c00 VMThread [stack: 0x0000000040a2f000,0x0000000040b30000] [id=29415] 0x00002aaab402ec00 WatcherThread [stack: 0x0000000042658000,0x0000000042759000] [id=29423] =>0x000000000bb0f000 (exited) GCTaskThread [stack: 0x0000000000000000,0x0000000000000000] [id=29413] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap par new generation total 235968K, used 101223K [0x00002ab1692a0000, 0x00002ab1792a0000, 0x00002ab1792a0000) eden space 209792K, 37% used [0x00002ab1692a0000, 0x00002ab16dfc4b50, 0x00002ab175f80000) from space 26176K, 84% used [0x00002ab175f80000, 0x00002ab177535250, 0x00002ab177910000) to space 26176K, 0% used [0x00002ab177910000, 0x00002ab177910000, 0x00002ab1792a0000) concurrent mark-sweep generation total 30146560K, used 18112080K [0x00002ab1792a0000, 0x00002ab8a92a0000, 0x00002ab8a92a0000) concurrent-mark-sweep perm gen total 21248K, used 8168K [0x00002ab8a92a0000, 0x00002ab8aa760000, 0x00002ab8ae6a0000) Dynamic libraries: 00400000-00409000 r-xp 00000000 fd:00 28481952 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java 00608000-0060a000 rw-p 00008000 fd:00 28481952 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java 0ba20000-125f5000 rw-p 0ba20000 00:00 0 [heap] 4005a000-4005d000 ---p 4005a000 00:00 0 4005d000-4015b000 rw-p 4005d000 00:00 0 4015b000-4015e000 rwxp 4015b000 00:00 0 4015e000-4025c000 rw-p 4015e000 00:00 0 405a9000-405aa000 ---p 405a9000 00:00 0 405aa000-406aa000 rw-p 405aa000 00:00 0 4092e000-4092f000 ---p 4092e000 00:00 0 4092f000-40a2f000 rw-p 4092f000 00:00 0 40a2f000-40a30000 ---p 40a2f000 00:00 0 40a30000-40b30000 rw-p 40a30000 00:00 0 40b30000-40b33000 ---p 40b30000 00:00 0 40b33000-40c31000 rw-p 40b33000 00:00 0 40c31000-40c34000 ---p 40c31000 00:00 0 40c34000-40d32000 rw-p 40c34000 00:00 0 40edb000-40ede000 ---p 40edb000 00:00 0 40ede000-40fdc000 rw-p 40ede000 00:00 0 41050000-41051000 ---p 41050000 00:00 0 41051000-41151000 rw-p 41051000 00:00 0 41151000-41154000 ---p 41151000 00:00 0 41154000-41252000 rw-p 41154000 00:00 0 41252000-41255000 ---p 41252000 00:00 0 41255000-41353000 rw-p 41255000 00:00 0 41414000-41417000 ---p 41414000 00:00 0 41417000-41515000 rw-p 41417000 00:00 0 41533000-41534000 ---p 41533000 00:00 0 41534000-41634000 rw-p 41534000 00:00 0 41634000-41635000 ---p 41634000 00:00 0 41635000-41735000 rw-p 41635000 00:00 0 41735000-41738000 ---p 41735000 00:00 0 41738000-41836000 rw-p 41738000 00:00 0 41836000-41839000 ---p 41836000 00:00 0 41839000-41937000 rw-p 41839000 00:00 0 4197c000-4197f000 ---p 4197c000 00:00 0 4197f000-41a7d000 rw-p 4197f000 00:00 0 41a7d000-41a80000 ---p 41a7d000 00:00 0 41a80000-41b7e000 rw-p 41a80000 00:00 0 41b7e000-41b81000 ---p 41b7e000 00:00 0 41b81000-41c7f000 rw-p 41b81000 00:00 0 41ce7000-41cea000 ---p 41ce7000 00:00 0 41cea000-41de8000 rw-p 41cea000 00:00 0 41e50000-41e51000 ---p 41e50000 00:00 0 41e51000-41f51000 rw-p 41e51000 00:00 0 41f51000-41f52000 ---p 41f51000 00:00 0 41f52000-42052000 rw-p 41f52000 00:00 0 42052000-42053000 ---p 42052000 00:00 0 42053000-42153000 rw-p 42053000 00:00 0 42153000-42154000 ---p 42153000 00:00 0 42154000-42254000 rw-p 42154000 00:00 0 42254000-42255000 ---p 42254000 00:00 0 42255000-42355000 rw-p 42255000 00:00 0 42355000-42356000 ---p 42355000 00:00 0 42356000-42456000 rw-p 42356000 00:00 0 42456000-42459000 ---p 42456000 00:00 0 42459000-42557000 rw-p 42459000 00:00 0 42557000-4255a000 ---p 42557000 00:00 0 4255a000-42658000 rw-p 4255a000 00:00 0 42658000-42659000 ---p 42658000 00:00 0 42659000-42759000 rw-p 42659000 00:00 0 42759000-4275c000 ---p 42759000 00:00 0 4275c000-4285a000 rw-p 4275c000 00:00 0 4285a000-4285d000 ---p 4285a000 00:00 0 4285d000-4295b000 rw-p 4285d000 00:00 0 4295b000-4295e000 ---p 4295b000 00:00 0 4295e000-42a5c000 rw-p 4295e000 00:00 0 42a5c000-42a5f000 ---p 42a5c000 00:00 0 42a5f000-42b5d000 rw-p 42a5f000 00:00 0 42b5d000-42b60000 ---p 42b5d000 00:00 0 42b60000-42c5e000 rw-p 42b60000 00:00 0 42c5e000-42c61000 ---p 42c5e000 00:00 0 42c61000-42d5f000 rw-p 42c61000 00:00 0 42d5f000-42d62000 ---p 42d5f000 00:00 0 42d62000-42e60000 rw-p 42d62000 00:00 0 42e60000-42e63000 ---p 42e60000 00:00 0 42e63000-42f61000 rw-p 42e63000 00:00 0 42f61000-42f64000 ---p 42f61000 00:00 0 42f64000-43062000 rw-p 42f64000 00:00 0 43062000-43065000 ---p 43062000 00:00 0 43065000-43163000 rw-p 43065000 00:00 0 43163000-43166000 ---p 43163000 00:00 0 43166000-43264000 rw-p 43166000 00:00 0 43264000-43267000 ---p 43264000 00:00 0 43267000-43365000 rw-p 43267000 00:00 0 43365000-43368000 rwxp 43365000 00:00 0 43368000-43466000 rw-p 43368000 00:00 0 43466000-43469000 rwxp 43466000 00:00 0 43469000-43567000 rw-p 43469000 00:00 0 43567000-4356a000 rwxp 43567000 00:00 0 4356a000-43668000 rw-p 4356a000 00:00 0 369d200000-369d204000 r-xp 00000000 fd:00 28481951 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/jli/libjli.so 369d204000-369d403000 ---p 00004000 fd:00 28481951 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/jli/libjli.so 369d403000-369d404000 rw-p 00003000 fd:00 28481951 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/jli/libjli.so 37d5600000-37d561c000 r-xp 00000000 fd:00 91226137 /lib64/ld-2.5.so 37d581b000-37d581c000 r--p 0001b000 fd:00 91226137 /lib64/ld-2.5.so 37d581c000-37d581d000 rw-p 0001c000 fd:00 91226137 /lib64/ld-2.5.so 37d5a00000-37d5b4d000 r-xp 00000000 fd:00 91226163 /lib64/libc-2.5.so 37d5b4d000-37d5d4d000 ---p 0014d000 fd:00 91226163 /lib64/libc-2.5.so 37d5d4d000-37d5d51000 r--p 0014d000 fd:00 91226163 /lib64/libc-2.5.so 37d5d51000-37d5d52000 rw-p 00151000 fd:00 91226163 /lib64/libc-2.5.so 37d5d52000-37d5d57000 rw-p 37d5d52000 00:00 0 37d5e00000-37d5e02000 r-xp 00000000 fd:00 91226316 /lib64/libdl-2.5.so 37d5e02000-37d6002000 ---p 00002000 fd:00 91226316 /lib64/libdl-2.5.so 37d6002000-37d6003000 r--p 00002000 fd:00 91226316 /lib64/libdl-2.5.so 37d6003000-37d6004000 rw-p 00003000 fd:00 91226316 /lib64/libdl-2.5.so 37d6200000-37d6216000 r-xp 00000000 fd:00 91226350 /lib64/libpthread-2.5.so 37d6216000-37d6415000 ---p 00016000 fd:00 91226350 /lib64/libpthread-2.5.so 37d6415000-37d6416000 r--p 00015000 fd:00 91226350 /lib64/libpthread-2.5.so 37d6416000-37d6417000 rw-p 00016000 fd:00 91226350 /lib64/libpthread-2.5.so 37d6417000-37d641b000 rw-p 37d6417000 00:00 0 37d6600000-37d6682000 r-xp 00000000 fd:00 91226182 /lib64/libm-2.5.so 37d6682000-37d6881000 ---p 00082000 fd:00 91226182 /lib64/libm-2.5.so 37d6881000-37d6882000 r--p 00081000 fd:00 91226182 /lib64/libm-2.5.so 37d6882000-37d6883000 rw-p 00082000 fd:00 91226182 /lib64/libm-2.5.so 37d6e00000-37d6e0a000 r-xp 00000000 fd:00 91226177 /lib64/libnss_files-2.5.so 37d6e0a000-37d7009000 ---p 0000a000 fd:00 91226177 /lib64/libnss_files-2.5.so 37d7009000-37d700a000 r--p 00009000 fd:00 91226177 /lib64/libnss_files-2.5.so 37d700a000-37d700b000 rw-p 0000a000 fd:00 91226177 /lib64/libnss_files-2.5.so 37d7200000-37d7207000 r-xp 00000000 fd:00 91226355 /lib64/librt-2.5.so 37d7207000-37d7407000 ---p 00007000 fd:00 91226355 /lib64/librt-2.5.so 37d7407000-37d7408000 r--p 00007000 fd:00 91226355 /lib64/librt-2.5.so 37d7408000-37d7409000 rw-p 00008000 fd:00 91226355 /lib64/librt-2.5.so 37d7600000-37d7614000 r-xp 00000000 fd:00 28025086 /usr/lib64/libz.so.1.2.3 37d7614000-37d7813000 ---p 00014000 fd:00 28025086 /usr/lib64/libz.so.1.2.3 37d7813000-37d7814000 rw-p 00013000 fd:00 28025086 /usr/lib64/libz.so.1.2.3 37d8200000-37d8215000 r-xp 00000000 fd:00 91226306 /lib64/libnsl-2.5.so 37d8215000-37d8414000 ---p 00015000 fd:00 91226306 /lib64/libnsl-2.5.so 37d8414000-37d8415000 r--p 00014000 fd:00 91226306 /lib64/libnsl-2.5.so 37d8415000-37d8416000 rw-p 00015000 fd:00 91226306 /lib64/libnsl-2.5.so 37d8416000-37d8418000 rw-p 37d8416000 00:00 0 37daa00000-37daa11000 r-xp 00000000 fd:00 91226406 /lib64/libresolv-2.5.so 37daa11000-37dac11000 ---p 00011000 fd:00 91226406 /lib64/libresolv-2.5.so 37dac11000-37dac12000 r--p 00011000 fd:00 91226406 /lib64/libresolv-2.5.so 37dac12000-37dac13000 rw-p 00012000 fd:00 91226406 /lib64/libresolv-2.5.so 37dac13000-37dac15000 rw-p 37dac13000 00:00 0 2aaaaaaab000-2aaaaaab3000 r--s 00061000 fd:00 28508180 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/ext/gnome-java-bridge.jar 2aaaaaab5000-2aaaaaab6000 r--p 2aaaaaab5000 00:00 0 2aaaaaab6000-2aaaaaab7000 rwxp 2aaaaaab6000 00:00 0 2aaaaaab7000-2aaaaaabf000 r-xp 00000000 fd:00 28508162 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/native_threads/libhpi.so 2aaaaaabf000-2aaaaacbe000 ---p 00008000 fd:00 28508162 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/native_threads/libhpi.so 2aaaaacbe000-2aaaaacbf000 rw-p 00007000 fd:00 28508162 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/native_threads/libhpi.so 2aaaaacbf000-2aaaaacc0000 rw-p 2aaaaacbf000 00:00 0 2aaaaacc0000-2aaaaacc8000 rw-s 00000000 fd:00 160661515 /tmp/hsperfdata_extraserver/29399 2aaaaacc8000-2aaaaacd6000 r-xp 00000000 fd:00 28481907 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libverify.so 2aaaaacd6000-2aaaaaed5000 ---p 0000e000 fd:00 28481907 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libverify.so 2aaaaaed5000-2aaaaaed7000 rw-p 0000d000 fd:00 28481907 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libverify.so 2aaaaaed7000-2aaaaaf03000 r-xp 00000000 fd:00 28481888 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libjava.so 2aaaaaf03000-2aaaab102000 ---p 0002c000 fd:00 28481888 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libjava.so 2aaaab102000-2aaaab106000 rw-p 0002b000 fd:00 28481888 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libjava.so 2aaaab106000-2aaaab10d000 r-xp 00000000 fd:00 28481908 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libzip.so 2aaaab10d000-2aaaab30c000 ---p 00007000 fd:00 28481908 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libzip.so 2aaaab30c000-2aaaab30d000 rw-p 00006000 fd:00 28481908 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libzip.so 2aaaab30d000-2aaaab6cd000 rwxp 2aaaab30d000 00:00 0 2aaaab6cd000-2aaaae30d000 rwxp 2aaaab6cd000 00:00 0 2aaaae30d000-2aaaae31c000 rwxp 2aaaae30d000 00:00 0 2aaaae31c000-2aaaae3cd000 rwxp 2aaaae31c000 00:00 0 2aaaae3cd000-2aaaae531000 rw-p 2aaaae3cd000 00:00 0 2aaaae531000-2aaaae6be000 r--s 03385000 fd:00 28481934 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rt.jar 2aaaae6be000-2aaaae6f0000 rw-p 2aaaae6be000 00:00 0 2aaaae6f0000-2aaab1cc6000 r--p 00000000 fd:00 28025160 /usr/lib/locale/locale-archive 2aaab1cc6000-2aaab1cca000 r--s 00022000 fd:00 28028040 /usr/bin/extraserver.jar 2aaab1cca000-2aaab1cce000 r--s 00079000 fd:00 28481925 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jsse.jar 2aaab1cce000-2aaab1cd6000 r--s 0007a000 fd:00 28028039 /usr/lib/allinone.jar 2aaab1cd6000-2aaab1cda000 r--s 00076000 fd:00 28508181 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/ext/localedata.jar 2aaab1cda000-2aaab1ce8000 r--s 000a7000 fd:00 28028041 /usr/lib/trove-2.0.2.jar 2aaab1ce8000-2aaab1cea000 r--s 00009000 fd:00 28028038 /usr/lib/fincs.jar 2aaab1cea000-2aaab1cfe000 r-xp 00000000 fd:00 28481900 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnet.so 2aaab1cfe000-2aaab1efd000 ---p 00014000 fd:00 28481900 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnet.so 2aaab1efd000-2aaab1efe000 rw-p 00013000 fd:00 28481900 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnet.so 2aaab1efe000-2aaab1f05000 r-xp 00000000 fd:00 28481901 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnio.so 2aaab1f05000-2aaab2105000 ---p 00007000 fd:00 28481901 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnio.so 2aaab2105000-2aaab2106000 rw-p 00007000 fd:00 28481901 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libnio.so 2aaab210f000-2aaab2113000 r-xp 00000000 fd:00 91226136 /lib64/libnss_dns-2.5.so 2aaab2113000-2aaab2312000 ---p 00004000 fd:00 91226136 /lib64/libnss_dns-2.5.so 2aaab2312000-2aaab2313000 r--p 00003000 fd:00 91226136 /lib64/libnss_dns-2.5.so 2aaab2313000-2aaab2314000 rw-p 00004000 fd:00 91226136 /lib64/libnss_dns-2.5.so 2aaab4000000-2aaab6099000 rw-p 2aaab4000000 00:00 0 2aaab6099000-2aaab8000000 ---p 2aaab6099000 00:00 0 2aaab8000000-2aaabc000000 rw-p 2aaab8000000 00:00 0 2aaabd000000-2aaabf000000 rwxp 2aaabd000000 00:00 0 2aaac0000000-2aaac113f000 rw-p 2aaac0000000 00:00 0 2aaac113f000-2aaac4000000 ---p 2aaac113f000 00:00 0 2ab16889c000-2ab16889d000 rw-p 2ab16889c000 00:00 0 2ab1688a6000-2ab1688aa000 rw-p 2ab1688a6000 00:00 0 2ab1688aa000-2ab168fe6000 r-xp 00000000 fd:00 28508166 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so 2ab168fe6000-2ab1691e6000 ---p 0073c000 fd:00 28508166 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so 2ab1691e6000-2ab16925e000 rw-p 0073c000 fd:00 28508166 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so 2ab16925e000-2ab169297000 rw-p 2ab16925e000 00:00 0 2ab1692a0000-2ab8a92a0000 rwxp 2ab1692a0000 00:00 0 2ab8a92a0000-2ab8aa760000 rwxp 2ab8a92a0000 00:00 0 2ab8aa760000-2ab8ae6a0000 rwxp 2ab8aa760000 00:00 0 2ab8ae6a0000-2ab8b20a0000 rwxp 2ab8ae6a0000 00:00 0 2ab8b20a0000-2ab8b20ab000 rwxp 2ab8b20a0000 00:00 0 2ab8b20ab000-2ab8b20ca000 rwxp 2ab8b20ab000 00:00 0 2ab8b20ca000-2ab8b20cb000 rwxp 2ab8b20ca000 00:00 0 2ab8b20cb000-2ab8b21d3000 rw-p 2ab8b20cb000 00:00 0 2ab8b21d3000-2ab8b5b54000 rwxp 2ab8b21d3000 00:00 0 2ab8b5b54000-2ab8b5b5f000 rwxp 2ab8b5b54000 00:00 0 2ab8b5b5f000-2ab8b5b7f000 rwxp 2ab8b5b5f000 00:00 0 2ab8b5b7f000-2ab8d3006000 rwxp 2ab8b5b7f000 00:00 0 2ab8d3046000-2ab8d3846000 rwxp 2ab8d3046000 00:00 0 7fffd6423000-7fffd6438000 rw-p 7ffffffea000 00:00 0 [stack] ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0 [vdso] VM Arguments: jvm_args: -DServer.Name=extraserver -DFIN_LOGGING_PROPERTIES=/etc/financial.com/extraserver/extraserver.logging.properties -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xmx29g -Xms20g -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:+CMSIncrementalMode -XX:CMSIncrementalDutyCycleMin=20 -DFIN_LOG=/var/log/financial.com/extraserver java_command: com.financial.extraserver.ExtraServer Launcher Type: SUN_STANDARD Environment Variables: JRE_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 CLASSPATH=/usr/lib/allinone.jar:/usr/lib/trove-2.0.2.jar::/usr/lib/allinone.jar:/usr/lib/fincs.jar:/usr/lib/allinone.jar:/usr/lib/fincs.jar PATH=.:/bin:/usr/bin:/sbin:/usr/sbin: LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64 SHELL=/bin/bash DISPLAY=localhost:10.0 Signal Handlers: SIGSEGV: [libjvm.so+0x618c80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x618c80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x4e02a0], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:CentOS release 5.4 (Final) uname:Linux 2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:12:36 EST 2009 x86_64 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 0k, NPROC 532480, NOFILE 1024, AS infinity load average:1.36 1.08 0.84 CPU:total 8 (8 cores per cpu, 2 threads per core) family 6 model 10 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, ht Memory: 4k page, physical 65997184k(20825508k free), swap 68059128k(68059128k free) vm_info: OpenJDK 64-Bit Server VM (1.6.0-b09) for linux-amd64 JRE (1.6.0-b09), built on Nov 16 2009 11:22:06 by "mockbuild" with gcc 4.1.2 20080704 (Red Hat 4.1.2-46) time: Fri Dec 11 08:10:34 2009 elapsed time: 87578 seconds -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mark at klomp.org Fri Dec 11 04:04:25 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 11 Dec 2009 13:04:25 +0100 Subject: /hg/icedtea6: VFP bug fix + java_lang_Math_* bug fix. In-Reply-To: References: Message-ID: <1260533065.26155.6.camel@springer.wildebeest.org> Hi Ed, On Thu, 2009-12-10 at 17:24 +0000, enevill at icedtea.classpath.org wrote: > changeset 82a9d7f61beb in /hg/icedtea6 > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=82a9d7f61beb > author: "Edward Nevill (ed at camswl.com)" Could you set your user name in ~/.hgrc (or alternatively in your icedtea6/.hg/hgrc file) to a valid user/email address please? The extra double quotes and the rounded brackets confuses the autobuilder/tester a litter (there wasn't actually anything wrong with your patch, the autobuilder just wanted to tell you it was all fine). See: http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html#sec:tour-basic:username Using username = Firstname Lastname as you already use in your ChangeLog entries would be fine: > +2009-12-10 Edward Nevill > + > + * cppInterpreter_asm.S > + Fix bug where it could execute VFP on non-VFP processors > + Fix bug where it was calling C interpreter for java_lang_Math_sin and co. Thanks, Mark From aph at redhat.com Fri Dec 11 08:26:24 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 11 Dec 2009 16:26:24 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B20D88E.4040907@redhat.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> <4B1FDD99.70407@sun.com> <4B1FE804.80508@redhat.com> <4B20D88E.4040907@redhat.com> Message-ID: <4B2272B0.2000205@redhat.com> This is a revised patch that fixes a build failure on Linuxes that don't have NT_GNU_BUILD_ID. In that case we ignore the Build ID, and look for a .gnu_debuglink" section. Tested on Red Hat Enterprise Linux Version 5. Andrew. 2009-12-09 Andrew Haley * openjdk/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): New variable. (gnu_debuglink_crc32): New. (build_symtab_internal): Rename from build_symtab, make static. Add logic to look inside debuginfo files. (open_debug_file, find_section_by_name, open_file_from_debug_link, build_id_to_debug_filename, build_symtab_from_build_id, build_symtab): New. * openjdk/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): Pass FILENAME to build_symtab(). * openjdk/hotspot/agent/src/os/linux/symtab.h (build_symtab): Add FILENAME arg. diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 @@ -174,7 +174,7 @@ return NULL; } - newlib->symtab = build_symtab(newlib->fd); + newlib->symtab = build_symtab(newlib->fd, libname); if (newlib->symtab == NULL) { print_debug("symbol table build failed for %s\n", newlib->name); } diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 @@ -32,7 +32,7 @@ struct symtab; // build symbol table for a given ELF file descriptor -struct symtab* build_symtab(int fd); +struct symtab* build_symtab(int fd, const char *filename); // destroy the symbol table void destroy_symtab(struct symtab* symtab); --- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-10-14 18:13:08.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/symtab.c @@ -53,8 +53,272 @@ struct hsearch_data *hash_table; } symtab_t; -// read symbol table from given fd. -struct symtab* build_symtab(int fd) { + +// Directory that contains global debuginfo files. In theory it +// should be possible to change this, but in a Java environment there +// is no obvious place to put a user interface to do it. Maybe this +// could be set with an environment variable. +static const char debug_file_directory[] = "/usr/lib/debug"; + +/* The CRC used in gnu_debuglink, retrieved from + http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ +unsigned long gnu_debuglink_crc32 (unsigned long crc, + unsigned char *buf, size_t len) +{ + static const unsigned long crc32_table[256] = + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d + }; + unsigned char *end; + + crc = ~crc & 0xffffffff; + for (end = buf + len; buf < end; ++buf) + crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); + return ~crc & 0xffffffff; +} + +/* Open a debuginfo file and check its CRC. If it exists and the CRC + matches return its fd. */ +static int +open_debug_file (const char *pathname, unsigned int crc) +{ + unsigned int file_crc = 0; + unsigned char buffer[8 * 1024]; + + int fd = pathmap_open(pathname); + + if (fd < 0) + return -1; + + lseek(fd, 0, SEEK_SET); + + for (;;) { + int len = read(fd, buffer, sizeof buffer); + if (len <= 0) + break; + file_crc = gnu_debuglink_crc32(file_crc, buffer, len); + } + + if (crc == file_crc) + return fd; + else { + close(fd); + return -1; + } +} + +/* Find an ELF section. */ +static struct elf_section *find_section_by_name(char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + ELF_SHDR* cursct = NULL; + char *strtab; + int cnt; + + if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { + if ((scn_cache[ehdr->e_shstrndx].c_data + = read_section_data(fd, ehdr, cursct)) == NULL) { + return NULL; + } + } + + strtab = scn_cache[ehdr->e_shstrndx].c_data; + + for (cursct = shbuf, cnt = 0; + cnt < ehdr->e_shnum; + cnt++, cursct++) { + if (strcmp(cursct->sh_name + strtab, name) == 0) { + scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); + return &scn_cache[cnt]; + } + } + + return NULL; +} + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file. */ +static int open_file_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, + shbuf, scn_cache); + int debug_fd; + char *debug_filename = debug_link->c_data; + int offset = strlen(debug_filename) + 3 >> 2; + static unsigned int crc; + crc = ((unsigned int*)debug_link->c_data)[offset]; + char *debug_pathname = malloc(strlen(debug_filename) + + strlen(name) + + strlen(".debug/") + + strlen(debug_file_directory) + + 2); + strcpy(debug_pathname, name); + char *last_slash = strrchr(debug_pathname, '/'); + if (last_slash == NULL) + return -1; + + /* Look in the same directory as the object. */ + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in a subdirectory named ".debug". */ + strcpy(last_slash+1, ".debug/"); + strcat(last_slash, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in /usr/lib/debug + the full pathname. */ + strcpy(debug_pathname, debug_file_directory); + strcat(debug_pathname, name); + last_slash = strrchr(debug_pathname, '/'); + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + free(debug_pathname); + return -1; +} + +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file and read a symbol table from it. */ +static struct symtab *build_symtab_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); + + if (fd >= 0) { + struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + return symtab; + } + + return NULL; +} + +// Given a build_id, find the associated debuginfo file +static char * +build_id_to_debug_filename (size_t size, unsigned char *data) +{ + char *filename, *s; + + filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 + + 2 * size + (sizeof ".debug" - 1) + 1); + s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); + if (size > 0) + { + size--; + s += sprintf (s, "%02x", *data++); + } + if (size > 0) + *s++ = '/'; + while (size-- > 0) + s += sprintf (s, "%02x", *data++); + strcpy (s, ".debug"); + + return filename; +} + +// Read a build ID note. Try to open any associated debuginfo file +// and return its symtab +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) +{ + int fd; + struct symtab *symtab = NULL; + + unsigned char *bytes + = (unsigned char*)(note+1) + note->n_namesz; + unsigned char *filename + = (build_id_to_debug_filename (note->n_descsz, bytes)); + + fd = pathmap_open(filename); + if (fd >= 0) { + symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + } + free(filename); + + return symtab; +} + +// read symbol table from given fd. If try_debuginfo) is true, also +// try to open an associated debuginfo file +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { ELF_EHDR ehdr; char *names = NULL; struct symtab* symtab = NULL; @@ -90,7 +354,8 @@ for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { scn_cache[cnt].c_shdr = cursct; - if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { + if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB + || cursct->sh_type == SHT_NOTE) { if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { goto quit; } @@ -163,6 +428,30 @@ } } + // If we have no symtab in this file, look for a separate debuginfo file + if (try_debuginfo) { +#ifdef NT_GNU_BUILD_ID + // First we look for a Build ID + for (cursct = shbuf, cnt = 0; + symtab == NULL && cnt < ehdr.e_shnum; + cnt++) { + if (cursct->sh_type == SHT_NOTE) { + Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; + if (note->n_type == NT_GNU_BUILD_ID) { + symtab = build_symtab_from_build_id(note); + } + } + cursct++; + } +#endif + + // Then, if that doesn't work, the debug link + if (symtab == NULL) { + symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, + scn_cache); + } + } + quit: if (shbuf) free(shbuf); if (phbuf) free(phbuf); @@ -177,6 +466,11 @@ return symtab; } +struct symtab* build_symtab(int fd, const char *filename) { + return build_symtab_internal(fd, filename, /* try_debuginfo */ true); +} + + void destroy_symtab(struct symtab* symtab) { if (!symtab) return; if (symtab->strs) free(symtab->strs); From aph at icedtea.classpath.org Fri Dec 11 08:50:56 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Fri, 11 Dec 2009 16:50:56 +0000 Subject: /hg/icedtea6: * patches/icedtea-linux-separate-debuginfo.patch: ... Message-ID: changeset 638dec038e6f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=638dec038e6f author: aph date: Fri Dec 11 16:55:40 2009 +0000 * patches/icedtea-linux-separate-debuginfo.patch: Add #ifdef for NT_GNU_BUILD_ID. diffstat: 2 files changed, 11 insertions(+), 5 deletions(-) ChangeLog | 5 +++++ patches/icedtea-linux-separate-debuginfo.patch | 11 ++++++----- diffs (59 lines): diff -r 82a9d7f61beb -r 638dec038e6f ChangeLog --- a/ChangeLog Thu Dec 10 17:29:39 2009 +0000 +++ b/ChangeLog Fri Dec 11 16:55:40 2009 +0000 @@ -1,3 +1,8 @@ 2009-12-10 Edward Nevill + + * patches/icedtea-linux-separate-debuginfo.patch: Add #ifdef + for NT_GNU_BUILD_ID. + 2009-12-10 Edward Nevill * cppInterpreter_asm.S diff -r 82a9d7f61beb -r 638dec038e6f patches/icedtea-linux-separate-debuginfo.patch --- a/patches/icedtea-linux-separate-debuginfo.patch Thu Dec 10 17:29:39 2009 +0000 +++ b/patches/icedtea-linux-separate-debuginfo.patch Fri Dec 11 16:55:40 2009 +0000 @@ -25,9 +25,8 @@ diff -u ../openjdk/icedtea6/openjdk/hots if (newlib->symtab == NULL) { print_debug("symbol table build failed for %s\n", newlib->name); } -diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c ---- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c 2009-05-15 00:36:38.000000000 +0100 -+++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000 +--- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-10-14 18:13:08.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-11 16:16:39.106634861 +0000 @@ -53,8 +53,272 @@ struct hsearch_data *hash_table; } symtab_t; @@ -313,12 +312,13 @@ diff -u ../openjdk/icedtea6/openjdk/hots if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { goto quit; } -@@ -163,6 +428,28 @@ +@@ -163,6 +428,30 @@ } } + // If we have no symtab in this file, look for a separate debuginfo file + if (try_debuginfo) { ++#ifdef NT_GNU_BUILD_ID + // First we look for a Build ID + for (cursct = shbuf, cnt = 0; + symtab == NULL && cnt < ehdr.e_shnum; @@ -331,6 +331,7 @@ diff -u ../openjdk/icedtea6/openjdk/hots + } + cursct++; + } ++#endif + + // Then, if that doesn't work, the debug link + if (symtab == NULL) { @@ -342,7 +343,7 @@ diff -u ../openjdk/icedtea6/openjdk/hots quit: if (shbuf) free(shbuf); if (phbuf) free(phbuf); -@@ -177,6 +464,11 @@ +@@ -177,6 +466,11 @@ return symtab; } From jon.vanalten at redhat.com Fri Dec 11 13:32:33 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Fri, 11 Dec 2009 16:32:33 -0500 (EST) Subject: systemtap java hotspot backtrace support In-Reply-To: <1181732312.1158021260566711521.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1430409734.1158551260567153681.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hi, Gave this a go, seems to work as advertised (for better or worse). I tend to agree that the dependency on info extracted in the vm_init probe is less than desireable. From a usefulness perspective, this is especially because an attempt to target an already-running java process will fail horribly. Even so, once the x86_64 blocker is resolved and the unreleased systemtap fixes you mentioned are released, I'd also like to see this in IcedTea with the tapsets already there. It might then be a good idea to note the systemtap version dependency in the comments at the top of the script. cheers, jon ----- "Mark Wielaard" wrote: > Hi, > > Attached is a systemtap helper script to go with the other tapsets > (hotspot.stp and hotspot_jni.stp) in icedtea. (And some > build/configury > patches to slot it in the build). > > At the moment on x86_64 it is blocked on systemtap bug #11034, but > when > that is solved I like to check this in as a first step (it works fine > on > i386 with either client or server libjvm.so and a smaller version - > with > some of the frames smarts removes works fine on x86_64). You will > need > the latest systemtap from git for the moment though, since it relies > on > some recent bug/feature fixes on git trunk. > > With this you can get java backtraces, with or without full method > signatures and with or without native frames in between, from any > hotspot probe context. You can directly print the stack to the trace > log, or collect it as a space separated string to inspect (and if > needed > tweak some parameters to say how many frames you want and whether or > not > to include method signatures and/or native frames). There is > documentation in the jstack.stp script about the various jstack() > function variants. > > There are a couple of points that can use improvements (suggestions > how > to do it very welcome): > > - Collecting of frames isn't as useful as it looks since they are > limited by MAXSTRINGLEN. > - The server (c2) compiler can trash the frame pointer, so we try to > catch up by inspecting the stack. This mostly works, but can miss a > frame. It would be nice to be able to retrieve the register map for > the frame somehow. > - Similar to the above, we collect "native frames", while it would be > nice to somehow collect the "virtual frames" (so inlined code > expands > to the corresponding java frames again). > - We are using the server libjvm.so dwarf info to extract all > structure > info, this is actually wrong, we should use the client libjvm.so > when > the client libjvm.so is probed (but the key structures are the > same). > - The @casts in the actual jstack_call() function look somewhat ugly > because they need to explicitly reference the absolute libjvm.so > path. > - Related to the above, $vars cannot be used in stap functions > (unlike > @cast), which means we need to extract some info in a global probe > (hotspot.vm_init_ended). Some way to associate an helper function > with > the probed module would be really nice. > This creates two major limitations: > - When starting to trace after this global probe has triggered > jstack() just doesn't work. > - Only one java process at a time can be traced since multiple > global variables will conflict otherwise (this impacts tracing > eclipse and netbeans, which start in "stages" running multiple > java processes). > - For native frames it helps to add -d .../.../libjava.so also to see > the core library jni helper functions. Would be nice to somehow > include this (and maybe other libraries under jre/lib) > automatically. > > If anybody uses the jstack script please let me know how it works > out. > And if you hit any of the above limitations or have ideas how to > resolve > them, please also let me know. > > Cheers, > > Mark From a.radke at arcor.de Sun Dec 13 01:26:42 2009 From: a.radke at arcor.de (Andreas Radke) Date: Sun, 13 Dec 2009 10:26:42 +0100 Subject: New IcedTea6 major release (1.7) In-Reply-To: <4B213751.1080801@ubuntu.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <4B213751.1080801@ubuntu.com> Message-ID: <20091213102642.59929a45@laptop64.home> Am Thu, 10 Dec 2009 19:00:49 +0100 schrieb Matthias Klose : > On 10.12.2009 18:29, Andrew John Hughes wrote: > > I notice we haven't had a major IcedTea6 release since 1.6 in > > September. I think it's time to at least consider when we want to > > do so. > > > > HEAD is currently on b17, whereas the previous releases are on b16. > > The main feature in b17 was the switch to HotSpot 14 but this was > > already supported by IcedTea6 anyway since 1.4. > > > > My personal preference would be to wait at least until b18, which > > will include the Nimbus backport. Nimbus is one of the major areas > > (if not only) where OpenJDK still lags the proprietary Sun JDK. > > The release is fairly imminent; we've been discussing it at some > > length on jdk6-dev: > > http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html > > However, I understand that others may want to delay this until 1.8 > > if a 1.7 is desired sooner, prior to extensive testing of b18. > > from a distribution standpoint, b17 will likely not be released as > part of a Linux distribution (all distros just had their releases), > so I would be happy to concentrate on b18 instead. We at ArchLinux are a rolling release distribution and package whatever will be released as "final". > > What other features would people like to see in a release? What > > things are we waiting on? The new plugin springs to mind. > > do you mean the icedtea npp plugin? > > Matthias > Yes, the new plugin would be nice to have and should be in a usable state for people using Chromium and other webkit based browsers. That would be a nice feature. It would be awesome if it would become possible to build both plugins in one step. http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=414 - should be fixed for any release. -Andy ArchLinux openjdk package maintainer From gnu_andrew at member.fsf.org Sun Dec 13 05:46:15 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 13 Dec 2009 13:46:15 +0000 Subject: hg: hsx/hsx16/baseline: 6909480: Disable Escape Analysis in jdk6u18 In-Reply-To: <4B21E924.9000701@sun.com> References: <20091211031351.A0521419B3@hg.openjdk.java.net> <4B21E924.9000701@sun.com> Message-ID: <17c6771e0912130546u7759e2c0k4a4485074524bb83@mail.gmail.com> 2009/12/11 Vladimir Kozlov : > Yes, users will not be able to switch it on in jdk6u18. > > Currently it is still experimental optimization > and it could produce incorrect results. > > Use early access jdk7 if you want to try it. > > Vladimir > > On 12/10/09 10:14 PM, Ismael Juma wrote: >> >> Hey Vladimir, >> >> ? ?writes: >>> >>> 6909480: Disable Escape Analysis in jdk 6u18 >>> Summary: Disable Escape Analysis in jdk 6u18. >> >> Does this mean that escape analysis will be disabled in 6u18 even if a >> user >> explicitly enables it? If so, is it a stability issue? Sorry if this has >> been >> discussed already (I looked for a previous discussion, but did not find >> it). >> >> Thanks, >> Ismael >> > I don't think this is the appropriate place for such a patch. By all means, disable escape analysis in Sun's builds but I don't think this is appropriate for being pulled into OpenJDK6 as well. It obviously shouldn't be the default, but if users want to turn on a feature that's there in the codebase, they should be able to. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Sun Dec 13 07:16:52 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 13 Dec 2009 15:16:52 +0000 Subject: New IcedTea6 major release (1.7) In-Reply-To: <1260470627.2369.10.camel@hermans.wildebeest.org> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <1260470627.2369.10.camel@hermans.wildebeest.org> Message-ID: <17c6771e0912130716k40d61e42w684a1f1b66b8a667@mail.gmail.com> 2009/12/10 Mark Wielaard : > On Thu, 2009-12-10 at 17:29 +0000, Andrew John Hughes wrote: >> I notice we haven't had a major IcedTea6 release since 1.6 in >> September. ?I think it's time to at least consider when we want to do >> so. > > Yes, definitely has been too long since there has been a new release. > >> My personal preference would be to wait at least until b18, which will >> include the Nimbus backport. ?Nimbus is one of the major areas (if not >> only) where OpenJDK still lags the proprietary Sun JDK. ?The release >> is fairly imminent; we've been discussing it at some length on >> jdk6-dev: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html >> ?However, I understand that others may want to delay this until 1.8 if >> a 1.7 is desired sooner, prior to extensive testing of b18. > > I like early and often. I don't mind waiting a bit longer, but there is > nothing wrong with doing a quick release now and then do another in a > few weeks. > So do I. Does anyone have any objections to me creating a major branch on Monday for 1.7? In retrospect, I'd rather we base 1.7 on the more stable base we have now. Believe me, there are quite a few changes in b18! >> What other features would people like to see in a release? ?What >> things are we waiting on? ?The new plugin springs to mind. > > Stuff I have been working on that is already in is the hotspot jni > tapset support. Jon has been writing some scripts using that, so that is > nicely tested already. Might be nice to have some of those example > scripts also in the distro, Jon? But they can be shipped later > separately also. > > The other stuff I have been working on is the systemtap jstack support I > posted about last week. I think that is basically ready, but it needs a > new systemtap release to be usable. It just doesn't work (although the > build will be fine) with older systemtap releases. It also could be > added/used separately (as long as icedtea is build with configure > --enable-systemtap). So it isn't really release critical. > > Cheers, > > Mark > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Sun Dec 13 07:18:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 13 Dec 2009 15:18:21 +0000 Subject: New IcedTea6 major release (1.7) In-Reply-To: <4B213751.1080801@ubuntu.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <4B213751.1080801@ubuntu.com> Message-ID: <17c6771e0912130718j368d872aye7d4ce01364d790b@mail.gmail.com> 2009/12/10 Matthias Klose : > On 10.12.2009 18:29, Andrew John Hughes wrote: >> >> I notice we haven't had a major IcedTea6 release since 1.6 in >> September. ?I think it's time to at least consider when we want to do >> so. >> >> HEAD is currently on b17, whereas the previous releases are on b16. >> The main feature in b17 was the switch to HotSpot 14 but this was >> already supported by IcedTea6 anyway since 1.4. >> >> My personal preference would be to wait at least until b18, which will >> include the Nimbus backport. ?Nimbus is one of the major areas (if not >> only) where OpenJDK still lags the proprietary Sun JDK. ?The release >> is fairly imminent; we've been discussing it at some length on >> jdk6-dev: >> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html >> ?However, I understand that others may want to delay this until 1.8 if >> a 1.7 is desired sooner, prior to extensive testing of b18. > > from a distribution standpoint, b17 will likely not be released as part of a > Linux distribution (all distros just had their releases), so I would be > happy to concentrate on b18 instead. > >> What other features would people like to see in a release? ?What >> things are we waiting on? ?The new plugin springs to mind. > > do you mean the icedtea npp plugin? > I do. Deepak, can you give us all a status update on the state of both plugins including the bug mentioned by Andreas? > ?Matthias > Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mjw at icedtea.classpath.org Sun Dec 13 13:27:49 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Sun, 13 Dec 2009 21:27:49 +0000 Subject: /hg/icedtea6: Add systemtap jstack support. Message-ID: changeset 6eb1a59f370f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6eb1a59f370f author: Mark Wielaard date: Sun Dec 13 22:32:25 2009 +0100 Add systemtap jstack support. * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. (stamps /icedtea-debug.stamp): Likewise. * configure.ac (AC_CONFIG_FILES): Add tapset/jstack.stp. * tapset/jstack.stp.in: New tapset. diffstat: 4 files changed, 517 insertions(+), 2 deletions(-) ChangeLog | 7 Makefile.am | 8 configure.ac | 1 tapset/jstack.stp.in | 503 ++++++++++++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 557 to 500 lines): diff -r 638dec038e6f -r 6eb1a59f370f ChangeLog --- a/ChangeLog Fri Dec 11 16:55:40 2009 +0000 +++ b/ChangeLog Sun Dec 13 22:32:25 2009 +0100 @@ -1,3 +1,10 @@ 2009-12-11 Andrew Haley + + * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. + (stamps/icedtea-debug.stamp): Likewise. + * configure.ac (AC_CONFIG_FILES): Add tapset/jstack.stp. + * tapset/jstack.stp.in: New tapset. + 2009-12-11 Andrew Haley * patches/icedtea-linux-separate-debuginfo.patch: Add #ifdef diff -r 638dec038e6f -r 6eb1a59f370f Makefile.am --- a/Makefile.am Fri Dec 11 16:55:40 2009 +0000 +++ b/Makefile.am Sun Dec 13 22:32:25 2009 +0100 @@ -1255,7 +1255,9 @@ if ENABLE_SYSTEMTAP $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ cp $(abs_top_builddir)/tapset/hotspot_jni.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ - fi + fi; \ + cp $(abs_top_builddir)/tapset/jstack.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/jstack.stp endif if ENABLE_NSS cp $(abs_top_builddir)/nss.cfg \ @@ -1352,7 +1354,9 @@ if ENABLE_SYSTEMTAP $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ cp $(abs_top_builddir)/tapset/hotspot_jni.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ - fi + fi; \ + cp $(abs_top_builddir)/tapset/jstack.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/jstack.stp endif if ENABLE_NSS cp $(abs_top_builddir)/nss.cfg \ diff -r 638dec038e6f -r 6eb1a59f370f configure.ac --- a/configure.ac Fri Dec 11 16:55:40 2009 +0000 +++ b/configure.ac Sun Dec 13 22:32:25 2009 +0100 @@ -389,6 +389,7 @@ public: AC_SUBST(ABS_SERVER_LIBJVM_SO) AC_CONFIG_FILES([tapset/hotspot.stp]) AC_CONFIG_FILES([tapset/hotspot_jni.stp]) + AC_CONFIG_FILES([tapset/jstack.stp]) fi dnl Check for libpng headers and libraries. diff -r 638dec038e6f -r 6eb1a59f370f tapset/jstack.stp.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tapset/jstack.stp.in Sun Dec 13 22:32:25 2009 +0100 @@ -0,0 +1,503 @@ +/* jstack systemtap tapset, for extracting hotspot java backtraces. + Copyright (C) 2009, Red Hat Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. +*/ + +/* + Provides helper functions to log and print hotspot java based backtraces. + jstack() provides up to 32 pure java frames from the current probe point + (space separated). jstack_print() does the same, but logs each frame + immediately. jstack_full() provides up to 32 "mixed" frames, including + full method signatures plus native code frames. print_jstack_full() does + the same, but prints eachs frame to the log immediately. To request + more or less frames use the jstack_n(), jstack_full_n(), print_jstack_n() + and print_jstack_full_n() variants. And to have full controll over the + amount of information included in each frame use the jstack_call() + function. + + Currently only works with full path in process probes below. + When things don't seem to work look if the correct + jre/lib/[arch]/[client|server]/libjvm.so is used + and exists under @ABS_JAVA_HOME_DIR@/. + This version of jstack.stp has been configured to instrument the + libjvm.so for arch @INSTALL_ARCH_DIR@ installed at: + @ABS_CLIENT_LIBJVM_SO@ + @ABS_SERVER_LIBJVM_SO@ + + Note that you need a systemtap version > 1.0. + Otherwise you will not be able to fetch global vars, which would show as: + semantic error: failed to retrieve location attribute for local +*/ + +global Universe_methodKlassObj; +global Universe_collectedHeap; +global HeapWordSize; +global CodeCache_heap; + +global sp_register; +global fp_register; +global pc_register; +global ptr_size; +global ptr_mask; + +global constantPoolOopDesc_size; +global HeapBlock_Header_size; +global oopDesc_size; + +global vm_inited; + +/* We need to collect some global symbol addresses that cannot be resolved + in a bare function and vm_init_end seems a good place to use. */ +probe hotspot.vm_init_end +{ + // The parent/type oop for a methodOop. + Universe_methodKlassObj = $_methodKlassObj; + + // For compressed oops. + // Universe_heap_base = $_heap_base; + + /** + * The Universe class holds some of the interesting statics for + * introspection into HotSpot. The CollectedHeap + * (Universe::_collectedHeap) is an abstraction of a java heap for Hotspot + * it contains a _reserved MemRegion which represents a contigous + * region of the address space consisting of HeapWords (which just + * have one field member char *i). + * + * Note that we access it through its "short name" _collectedHeap. + */ + Universe_collectedHeap = $_collectedHeap; + HeapWordSize = $HeapWordSize; + + /** + * The CodeCache class contains the static CodeHeap _heap that + * is malloced at the start of the vm run and holds all generated + * code. If the program counter is between the low and high memory + * marks of the CodeHeap then it is generated code. Note that the + * interpreter CodeBlob itself is also generated at runtime. + * + * The code heap is made up of segments which are described in the + * CodeHeap _segmap. Each segment is of size _segment_size, which + * must be an exact power of 2 (_log2_segment_size). For each segment + * the _segmap has an unsigned char which is 0xFF if the segment + * isn't used, 0 if the segment is the start of a block and N + * (Where in is 1 till 0xFE) to indicate the segment belongs to + * the segment at index - N (which can be recursive if a block + * contains more than 0xFE segments). + */ + CodeCache_heap = $_heap; + + // Should really check arch of user space (for 32bit jvm on 64bit kernel). + %( arch == "i386" %? + sp_register = "esp"; + fp_register = "ebp"; + pc_register = "eip"; + ptr_size = 4; + ptr_mask = 0xFFFFFFFF; + constantPoolOopDesc_size = 32; // Should use dwarf @size + %: %(arch == "x86_64" %? + sp_register = "rsp"; + fp_register = "rbp"; + pc_register = "rip"; + ptr_size = 8; // XXX - might be probing 32-on-64 jvm. + ptr_mask = 0xFFFFFFFFFFFFFFFF; + constantPoolOopDesc_size = 56; // Should use dwarf @size + %: **ERROR** unknown architecture + %) %) + + // Really should get from dwarf: @size("HeapBlock::Header"), @size("oopDesc") + HeapBlock_Header_size = 2 * ptr_size; + oopDesc_size = 2 * ptr_size; + + vm_inited = 1; +} + +function jstack:string() +{ + // java backtraces can be a lot bigger, but we risk going over MAXACTION. + // 32 frames only gives us ~32 actions per frame (with MAXACTION == 1024). + max_depth = 32; + + return jstack_n(max_depth); +} + +function jstack_n:string(max_depth:long) +{ + // Whether to log the method signatures. + log_sig = 0; + + // Set to zero to only print pure java frames + log_native = 0; + + // whether to print or just return the frames as space separated string + print_frames = 0; + + return jstack_call(max_depth, log_sig, log_native, print_frames); +} + +function print_jstack() +{ + // java backtraces can be a lot bigger, but we risk going over MAXACTION. + // 32 frames only gives us ~32 actions per frame (with MAXACTION == 1024). + max_depth = 32; + + return print_jstack_n(max_depth); +} + +function print_jstack_n:string(max_depth:long) +{ + // Whether to log the method signatures. + log_sig = 0; + + // Set to zero to only print pure java frames + log_native = 0; + + // whether to print or just return the frames as space separated string + print_frames = 1; + + jstack_call(max_depth, log_sig, log_native, print_frames); +} + +function jstack_full:string() +{ + // java backtraces can be a lot bigger, but we risk going over MAXACTION. + // 32 frames only gives us ~32 actions per frame (with MAXACTION == 1024). + max_depth = 32; + + return jstack_full_n(max_depth); +} + +function jstack_full_n:string(max_depth:long) +{ + // Whether to log the method signatures. + log_sig = 1; + + // Set to zero to only print pure java frames + log_native = 1; + + // whether to print or just return the frames as space separated string + print_frames = 0; + + return jstack_call(max_depth, log_sig, log_native, print_frames); +} + +function print_jstack_full() +{ + // java backtraces can be a lot bigger, but we risk going over MAXACTION. + // 32 frames only gives us ~32 actions per frame (with MAXACTION == 1024). + max_depth = 32; + + return print_jstack_full_n(max_depth); +} + +function print_jstack_full_n:string(max_depth:long) +{ + // Whether to log the method signatures. + log_sig = 1; + + // Set to zero to only print pure java frames + log_native = 1; + + // whether to print or just return the frames as space separated string + print_frames = 1; + + jstack_call(max_depth, log_sig, log_native, print_frames); +} + +function jstack_call:string(max_depth:long, log_sig:long, log_native:long, + print_frames:long) +{ + if (! vm_inited) + { + frame = ""; + if (print_frames) + { + log(frame); + return ""; + } + else + return frame; + } + + // Extract heap and code bounds. + heap_start = @cast(Universe_collectedHeap, + "CollectedHeap", + "@ABS_SERVER_LIBJVM_SO@")->_reserved->_start; + heap_size = HeapWordSize * @cast(Universe_collectedHeap, + "CollectedHeap", + "@ABS_SERVER_LIBJVM_SO@")->_reserved->_word_size; + heap_end = heap_start + heap_size; + + CodeCache_low = @cast(CodeCache_heap, "CodeHeap", + "@ABS_SERVER_LIBJVM_SO@")->_memory->_low; + CodeCache_high = @cast(CodeCache_heap, "CodeHeap", + "@ABS_SERVER_LIBJVM_SO@")->_memory->_high; + + CodeHeap_log2_segment_size = @cast(CodeCache_heap, + "CodeHeap", + "@ABS_SERVER_LIBJVM_SO@")->_log2_segment_size; + CodeCache_segmap_low = @cast(CodeCache_heap, + "CodeHeap", + "@ABS_SERVER_LIBJVM_SO@")->_segmap->_low; + + // Might want to sanity check above values. + + // Loop through all the frames. The program counter is the starting + // point to find the CodeBlob corresponding to the current frame. In + // most cases the frame pointer will help us detect the class/method + // and next pc value. But we need the stack pointer to help us out + // to "recover" the previous fp in case we hit a code blob that didn't + // preserve it. + frames = ""; + sp = register(sp_register); + fp = register(fp_register); + pc = register(pc_register); + depth = 0; + while (pc != 0 && depth < max_depth) + { + frame = ""; + + // Assume things are fine unless indicated otherwise. + trust_fp = 1; + + // Generated code? (Interpreter and stub methods are also generated) + if (CodeCache_low <= pc && pc < CodeCache_high) + { + // Find the start of the code segment and code block that + // this pc is in. + segments = 0; + segment = (pc - CodeCache_low) >> CodeHeap_log2_segment_size; + tag = user_char(CodeCache_segmap_low + segment) & 0xFF; + while (tag > 0 && segments < 16) + { + segment = segment - tag; + tag = user_char(CodeCache_segmap_low + segment) & 0xFF; + segments++; + } + block = CodeCache_low + (segment << CodeHeap_log2_segment_size); + + // Do some sanity checking. + used = @cast(block, "HeapBlock", + "@ABS_SERVER_LIBJVM_SO@")->_header->_used; + if (used != 1) + { + // Something very odd has happened. + frame = sprintf("0x%x ", pc); + blob_name = "unused"; + trust_fp = 0; + frame_size = 0; + } + else + { + // We don't like spaces in frames (makes it hard to return + // a space separated frame list). So make sure they are + // replaced by underscores when used in frames. + blob = block + HeapBlock_Header_size; + blob_name_ptr = @cast(blob, "CodeBlob", + "@ABS_SERVER_LIBJVM_SO@")->_name; + blob_name = ((blob_name_ptr == 0) ? "" + : user_string(blob_name_ptr)); + } + + // For compiled code the methodOop is part of the code blob. + // For the interpreter (and other code blobs) it is on the + // stack relative to the frame pointer. + if (blob_name == "nmethod") + methodOopPtr = @cast(blob, "nmethod", + "@ABS_SERVER_LIBJVM_SO@")->_method + else + methodOopPtr = user_long(fp + (-3 * ptr_size)) & ptr_mask + + // Start optimistic. A methodOop is only valid if it was + // heap allocated. And if the "type class" oop equals the + // Universe::methodKlassObj. + if (heap_start > methodOopPtr || methodOopPtr >= heap_end) + isMethodOop = 0 + else + { + methodOopKlass = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass; + isMethodOop = (methodOopKlass == Universe_methodKlassObj); + } + + if (isMethodOop) + { + // The java class is the holder of the constants (strings) + // that describe the method and signature. This constant pool + // contains symbolic information that describe the properties + // of the class. The indexes for methods and signaturates in + // the constant pool are symbolOopDescs that contain utf8 + // strings (plus lenghts). (We could also sanity check that + // the tag value is correct [CONSTANT_String = 8]). + // Note that the class name uses '/' instead of '.' as + // package name separator and that the method signature is + // encoded as a method descriptor string. Both of which we + // don't demangle here. + constantPoolOopDesc = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_constants; + constantPoolOop_base = constantPoolOopDesc + constantPoolOopDesc_size; + + klassPtr = @cast(constantPoolOopDesc, "constantPoolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_pool_holder; + klassSymbol = @cast(klassPtr + oopDesc_size, "Klass", + "@ABS_SERVER_LIBJVM_SO@")->_name; + klassName = &@cast(klassSymbol, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_body[0]; + klassLength = @cast(klassSymbol, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_length; + + methodIndex = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_constMethod->_name_index; + methodOopDesc = user_long(constantPoolOop_base + (methodIndex * ptr_size)); + methodName = &@cast(methodOopDesc, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_body[0]; + methodLength = @cast(methodOopDesc, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_length; + + if (log_sig) + { + sigIndex = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_constMethod->_signature_index; + sigOopDesc = user_long(constantPoolOop_base + + (sigIndex * ptr_size)); + sigName = &@cast(sigOopDesc, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_body[0]; + sigLength = @cast(sigOopDesc, "symbolOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_length; + sig = user_string_n(sigName, sigLength); + } + else + sig = ""; + + code_name = (log_native + ? sprintf("<%s at 0x%x>", + str_replace(blob_name, " ", "_"), pc) + : ""); + + frame = sprintf("%s.%s%s%s", + user_string_n(klassName, klassLength), + user_string_n(methodName, methodLength), + sig, code_name); + } + else + { + // This is probably just an internal function, not a java + // method, just print the blob_name and continue. + // fp is probably still trusted. + if (log_native) + frame = sprintf("<%s at 0x%x>", + str_replace(blob_name, " ", "_"), pc); + } + + // We cannot trust the frame pointer of compiled methods. + // The server (c2) jit compiler uses the fp register. + // We do know the method frame size on the stack. But + // this seems to be useful only as a hint of the minimum + // stack being used. + if (blob_name == "nmethod") + { + trust_fp = 0; + frame_size = @cast(blob, "CodeBlob", + "@ABS_SERVER_LIBJVM_SO@")->_frame_size; + } + } + else + { + // "Normal" hotspot code. Just print what usymname() gets us. + // All such code is compiled with -fno-omit-frame-pointer so + // we can use that to get at the next frame. + // Theoretically there could be libraries or jni code not + // compiled with -fno-omit-frame-pointer, then we should really + // use the dwarf unwinder or some stack crawling heuristics. + if (log_native) + frame = usymname(pc); + } + + // Get next frame by assuming frame pointers are being used. + // (which is not always true for c2 (server) compiled nmethods). + old_fp = fp; + old_sp = sp + + sp = fp; + fp = user_long(sp); + pc = user_long(fp + ptr_size); + + // Do we need to double check? We do not want to do this + // unless necessary. We have to assume most code is "sane" + // and has fp setup correctly because we do not have good + // heuristics that cover all cases (native code, interpreted + // code, client code, codeblob stubs). So we only check and try + // to adapt for nmethods. Scanning the stack for plausible From mjw at redhat.com Sun Dec 13 13:33:40 2009 From: mjw at redhat.com (Mark Wielaard) Date: Sun, 13 Dec 2009 22:33:40 +0100 Subject: systemtap java hotspot backtrace support In-Reply-To: <1430409734.1158551260567153681.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1430409734.1158551260567153681.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1260740020.2313.105.camel@hermans.wildebeest.org> On Fri, 2009-12-11 at 16:32 -0500, jon.vanalten at redhat.com wrote: > Gave this a go, seems to work as advertised (for better or worse). I > tend to agree that the dependency on info extracted in the vm_init > probe is less than desireable. From a usefulness perspective, this is > especially because an attempt to target an already-running java > process will fail horribly. Even so, once the x86_64 blocker is > resolved and the unreleased systemtap fixes you mentioned are > released, I'd also like to see this in IcedTea with the tapsets > already there. It might then be a good idea to note the systemtap > version dependency in the comments at the top of the script. Thanks for testing. I do have some ideas how to resolve the init dependency, but it will need some systemtap extensions to access program/library globals from function contexts. The x86_64 blocker has been fixed: http://sourceware.org/bugzilla/show_bug.cgi?id=11034 Good idea to note the dependency in the script. I added that. I also added one small addition to work around the fact that on 32bit systems get_long might return negative longs. So we now mask against a new global ptr_mask that is set in the init probe depending on architecture. Just like we do with user_char. Maybe there should be a systemtap tapset for fetching unsigned user data? 2009-12-13 Mark Wielaard * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. (stamps/icedtea-debug.stamp): Likewise. * configure.ac (AC_CONFIG_FILES): Add tapset/jstack.stp. * tapset/jstack.stp.in: New tapset. Cheers, Mark From bugzilla-daemon at icedtea.classpath.org Sun Dec 13 22:12:44 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 14 Dec 2009 06:12:44 +0000 Subject: [Bug 412] build fails at final link Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=412 ------- Comment #11 from jlpoole at pon.net 2009-12-14 06:12 ------- performing an update on trunk and attempting to make against the revised build. Will update when I results (takes a long time, e.g. over 24 hours). -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Mon Dec 14 12:30:12 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 14 Dec 2009 20:30:12 +0000 Subject: /hg/icedtea: Bump to b77. Message-ID: changeset 3a383ae55a7e in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=3a383ae55a7e author: Andrew John Hughes date: Mon Dec 14 20:35:12 2009 +0000 Bump to b77. 2009-12-14 Andrew John Hughes * patches/boot/icedtea.patch: Split into individual patches for easier maintenance. * patches/icedtea-ant.patch: Removed; set ANT instead of ANT_HOME instead. * patches/icedtea-ia64-fdlibm.patch: Dropped, upstream zero (jdk/ad1c88142958) patch. * patches/icedtea-mbeanintrospector.patch: Dropped, troublesome line no longer present. * patches/icedtea-renderer-crossing.patch: Dropped, upstream (ccc36189f2a7) * patches/icedtea-uname.patch: Mostly dropped (upstream zero, jdk/ad1c88142958 & corba/28b983e5bb5f), remainder moved to debian/icedtea-uname.patch. * .hgignore: Severly trim to avoid issues with new files not appearing in hg status. It should only mask autoconf and temp files, not everything the build produces. * Makefile.am: Bump to b77, remove patches, list new boot patches, set ANT rather than ANT_HOME. * configure.ac: Remove SYSTEM_ANT_DIR setting. * patches/boot/corba-defs.patch, * patches/boot/corba-idlj.patch, * patches/boot/corba-libgcj.patch, * patches/boot/corba-no-gen.patch, * patches/boot/corba-orb.patch, * patches/boot/demos.patch, * patches/boot/ecj-fphexconstants.patch, * patches/boot/ecj-opts.patch, * patches/boot/fontconfig.patch, * patches/boot/generated-comments.patch, * patches/boot/icedtea-jaxp-dependency.patch, * patches/boot/icedteart.patch, * patches/boot/jar.patch, * patches/boot/javah.patch, * patches/boot/symbols.patch, * patches/boot/tobin.patch, * patches/boot/xbootclasspath.patch: New patches split out from patches/boot/icedtea.patch. * patches/debian/icedtea-uname.patch: Remants of patches /icedtea-uname.patch. Debian-specific as use dpkg- architecture. * HACKING: Updated diffstat: 29 files changed, 870 insertions(+), 1485 deletions(-) .hgignore | 482 ----------------- ChangeLog | 49 + HACKING | 57 +- Makefile.am | 61 +- configure.ac | 18 patches/boot/corba-defs.patch | 35 + patches/boot/corba-idlj.patch | 98 +++ patches/boot/corba-libgcj.patch | 12 patches/boot/corba-no-gen.patch | 12 patches/boot/corba-orb.patch | 42 + patches/boot/demos.patch | 32 + patches/boot/ecj-fphexconstants.patch | 60 ++ patches/boot/ecj-opts.patch | 27 patches/boot/fontconfig.patch | 17 patches/boot/generated-comments.patch | 21 patches/boot/icedtea-jaxp-dependency.patch | 29 - patches/boot/icedtea.patch | 767 ---------------------------- patches/boot/icedteart.patch | 60 ++ patches/boot/jar.patch | 26 patches/boot/javah.patch | 92 +++ patches/boot/symbols.patch | 23 patches/boot/tobin.patch | 39 + patches/boot/xbootclasspath.patch | 108 +++ patches/debian/icedtea-uname.patch | 26 patches/icedtea-ant.patch | 77 -- patches/icedtea-ia64-fdlibm.patch | 12 patches/icedtea-mbeanintrospector.patch | 12 patches/icedtea-renderer-crossing.patch | 15 patches/icedtea-uname.patch | 46 - diffs (truncated from 2606 to 500 lines): diff -r e9eb1d9c06e7 -r 3a383ae55a7e .hgignore --- a/.hgignore Mon Dec 07 16:36:16 2009 +0000 +++ b/.hgignore Mon Dec 14 20:35:12 2009 +0000 @@ -1,490 +1,12 @@ syntax: glob syntax: glob *~ - -syntax: regexp configure missing aclocal.m4 autom4te.cache -cacao -netbeans -visualvm -openjdk -bootstrap -debian -lib -stamps -Makefile -config.log config.guess config.sub config.status install-sh -javac -javap -gcjwebplugin.so -jni-common.o -IcedTeaPlugin.o -IcedTeaPlugin.so -extra-source-files.txt -rt-source-files.txt -hotspot-tools-source-files.txt -tools-source-files.txt -platform_zero -jvm.cfg -ergo.c -hotspot-tools/ -tapset/hotspot.stp -test/hotspot -test/jdk -test/langtools -test/jtreg.jar -test/jtreg/classes -test/jtreg-summary.log -test/check-.*log -rt/com/sun/jdi/AbsentInformationException.java -rt/com/sun/jdi/Accessible.java -rt/com/sun/jdi/ArrayReference.java -rt/com/sun/jdi/ArrayType.java -rt/com/sun/jdi/BooleanType.java -rt/com/sun/jdi/BooleanValue.java -rt/com/sun/jdi/Bootstrap.java -rt/com/sun/jdi/ByteType.java -rt/com/sun/jdi/ByteValue.java -rt/com/sun/jdi/CharType.java -rt/com/sun/jdi/CharValue.java -rt/com/sun/jdi/ClassLoaderReference.java -rt/com/sun/jdi/ClassNotLoadedException.java -rt/com/sun/jdi/ClassNotPreparedException.java -rt/com/sun/jdi/ClassObjectReference.java -rt/com/sun/jdi/ClassType.java -rt/com/sun/jdi/connect/AttachingConnector.java -rt/com/sun/jdi/connect/Connector.java -rt/com/sun/jdi/connect/IllegalConnectorArgumentsException.java -rt/com/sun/jdi/connect/LaunchingConnector.java -rt/com/sun/jdi/connect/ListeningConnector.java -rt/com/sun/jdi/connect/spi/ClosedConnectionException.java -rt/com/sun/jdi/connect/spi/Connection.java -rt/com/sun/jdi/connect/spi/TransportService.java -rt/com/sun/jdi/connect/Transport.java -rt/com/sun/jdi/connect/TransportTimeoutException.java -rt/com/sun/jdi/connect/VMStartException.java -rt/com/sun/jdi/DoubleType.java -rt/com/sun/jdi/DoubleValue.java -rt/com/sun/jdi/event/AccessWatchpointEvent.java -rt/com/sun/jdi/event/BreakpointEvent.java -rt/com/sun/jdi/event/ClassPrepareEvent.java -rt/com/sun/jdi/event/ClassUnloadEvent.java -rt/com/sun/jdi/event/EventIterator.java -rt/com/sun/jdi/event/Event.java -rt/com/sun/jdi/event/EventQueue.java -rt/com/sun/jdi/event/EventSet.java -rt/com/sun/jdi/event/ExceptionEvent.java -rt/com/sun/jdi/event/LocatableEvent.java -rt/com/sun/jdi/event/MethodEntryEvent.java -rt/com/sun/jdi/event/MethodExitEvent.java -rt/com/sun/jdi/event/ModificationWatchpointEvent.java -rt/com/sun/jdi/event/MonitorContendedEnteredEvent.java -rt/com/sun/jdi/event/MonitorContendedEnterEvent.java -rt/com/sun/jdi/event/MonitorWaitedEvent.java -rt/com/sun/jdi/event/MonitorWaitEvent.java -rt/com/sun/jdi/event/StepEvent.java -rt/com/sun/jdi/event/ThreadDeathEvent.java -rt/com/sun/jdi/event/ThreadStartEvent.java -rt/com/sun/jdi/event/VMDeathEvent.java -rt/com/sun/jdi/event/VMDisconnectEvent.java -rt/com/sun/jdi/event/VMStartEvent.java -rt/com/sun/jdi/event/WatchpointEvent.java -rt/com/sun/jdi/Field.java -rt/com/sun/jdi/FloatType.java -rt/com/sun/jdi/FloatValue.java -rt/com/sun/jdi/IncompatibleThreadStateException.java -rt/com/sun/jdi/InconsistentDebugInfoException.java -rt/com/sun/jdi/IntegerType.java -rt/com/sun/jdi/IntegerValue.java -rt/com/sun/jdi/InterfaceType.java -rt/com/sun/jdi/InternalException.java -rt/com/sun/jdi/InvalidCodeIndexException.java -rt/com/sun/jdi/InvalidLineNumberException.java -rt/com/sun/jdi/InvalidStackFrameException.java -rt/com/sun/jdi/InvalidTypeException.java -rt/com/sun/jdi/InvocationException.java -rt/com/sun/jdi/JDIPermission.java -rt/com/sun/jdi/LocalVariable.java -rt/com/sun/jdi/Locatable.java -rt/com/sun/jdi/Location.java -rt/com/sun/jdi/LongType.java -rt/com/sun/jdi/LongValue.java -rt/com/sun/jdi/Method.java -rt/com/sun/jdi/Mirror.java -rt/com/sun/jdi/MonitorInfo.java -rt/com/sun/jdi/NativeMethodException.java -rt/com/sun/jdi/ObjectCollectedException.java -rt/com/sun/jdi/ObjectReference.java -rt/com/sun/jdi/PathSearchingVirtualMachine.java -rt/com/sun/jdi/PrimitiveType.java -rt/com/sun/jdi/PrimitiveValue.java -rt/com/sun/jdi/ReferenceType.java -rt/com/sun/jdi/request/AccessWatchpointRequest.java -rt/com/sun/jdi/request/BreakpointRequest.java -rt/com/sun/jdi/request/ClassPrepareRequest.java -rt/com/sun/jdi/request/ClassUnloadRequest.java -rt/com/sun/jdi/request/DuplicateRequestException.java -rt/com/sun/jdi/request/EventRequest.java -rt/com/sun/jdi/request/EventRequestManager.java -rt/com/sun/jdi/request/ExceptionRequest.java -rt/com/sun/jdi/request/InvalidRequestStateException.java -rt/com/sun/jdi/request/MethodEntryRequest.java -rt/com/sun/jdi/request/MethodExitRequest.java -rt/com/sun/jdi/request/ModificationWatchpointRequest.java -rt/com/sun/jdi/request/MonitorContendedEnteredRequest.java -rt/com/sun/jdi/request/MonitorContendedEnterRequest.java -rt/com/sun/jdi/request/MonitorWaitedRequest.java -rt/com/sun/jdi/request/MonitorWaitRequest.java -rt/com/sun/jdi/request/StepRequest.java -rt/com/sun/jdi/request/ThreadDeathRequest.java -rt/com/sun/jdi/request/ThreadStartRequest.java -rt/com/sun/jdi/request/VMDeathRequest.java -rt/com/sun/jdi/request/WatchpointRequest.java -rt/com/sun/jdi/ShortType.java -rt/com/sun/jdi/ShortValue.java -rt/com/sun/jdi/StackFrame.java -rt/com/sun/jdi/StringReference.java -rt/com/sun/jdi/ThreadGroupReference.java -rt/com/sun/jdi/ThreadReference.java -rt/com/sun/jdi/TypeComponent.java -rt/com/sun/jdi/Type.java -rt/com/sun/jdi/Value.java -rt/com/sun/jdi/VirtualMachine.java -rt/com/sun/jdi/VirtualMachineManager.java -rt/com/sun/jdi/VMCannotBeModifiedException.java -rt/com/sun/jdi/VMDisconnectedException.java -rt/com/sun/jdi/VMMismatchException.java -rt/com/sun/jdi/VMOutOfMemoryException.java -rt/com/sun/jdi/VoidType.java -rt/com/sun/jdi/VoidValue.java -rt/com/sun/jmx/snmp/agent/SnmpEntryOid.java -rt/com/sun/jmx/snmp/agent/SnmpErrorHandlerAgent.java -rt/com/sun/jmx/snmp/agent/SnmpGenericMetaServer.java -rt/com/sun/jmx/snmp/agent/SnmpGenericObjectServer.java -rt/com/sun/jmx/snmp/agent/SnmpIndex.java -rt/com/sun/jmx/snmp/agent/SnmpMibAgent.java -rt/com/sun/jmx/snmp/agent/SnmpMibAgentMBean.java -rt/com/sun/jmx/snmp/agent/SnmpMibEntry.java -rt/com/sun/jmx/snmp/agent/SnmpMibGroup.java -rt/com/sun/jmx/snmp/agent/SnmpMibHandler.java -rt/com/sun/jmx/snmp/agent/SnmpMib.java -rt/com/sun/jmx/snmp/agent/SnmpMibNode.java -rt/com/sun/jmx/snmp/agent/SnmpMibOid.java -rt/com/sun/jmx/snmp/agent/SnmpMibRequestImpl.java -rt/com/sun/jmx/snmp/agent/SnmpMibRequest.java -rt/com/sun/jmx/snmp/agent/SnmpMibSubRequest.java -rt/com/sun/jmx/snmp/agent/SnmpMibTable.java -rt/com/sun/jmx/snmp/agent/SnmpRequestTree.java -rt/com/sun/jmx/snmp/agent/SnmpStandardMetaServer.java -rt/com/sun/jmx/snmp/agent/SnmpStandardObjectServer.java -rt/com/sun/jmx/snmp/agent/SnmpTableCallbackHandler.java -rt/com/sun/jmx/snmp/agent/SnmpTableEntryFactory.java -rt/com/sun/jmx/snmp/agent/SnmpTableEntryNotification.java -rt/com/sun/jmx/snmp/agent/SnmpTableSupport.java -rt/com/sun/jmx/snmp/agent/SnmpUserDataFactory.java -rt/com/sun/jmx/snmp/daemon/SnmpInformRequest.java -rt/com/sun/jmx/snmp/daemon/SnmpSession.java -rt/com/sun/jmx/snmp/SnmpDataTypeEnums.java -rt/com/sun/jmx/snmp/SnmpDefinitions.java -rt/com/sun/jmx/snmp/SnmpOid.java -rt/com/sun/jmx/snmp/SnmpOidRecord.java -rt/com/sun/jmx/snmp/SnmpOidTable.java -rt/com/sun/jmx/snmp/SnmpOidTableSupport.java -rt/com/sun/jmx/snmp/SnmpParameters.java -rt/com/sun/jmx/snmp/SnmpPduPacket.java -rt/com/sun/jmx/snmp/SnmpPeer.java -rt/com/sun/jmx/snmp/SnmpSession.java -rt/com/sun/jmx/snmp/SnmpTimeticks.java -rt/com/sun/jmx/snmp/SnmpVarBind.java -rt/com/sun/jmx/snmp/SnmpVarBindList.java -rt/com/sun/tools/jdi/AbstractLauncher.java -rt/com/sun/tools/jdi/ArrayReferenceImpl.java -rt/com/sun/tools/jdi/ArrayTypeImpl.java -rt/com/sun/tools/jdi/BaseLineInfo.java -rt/com/sun/tools/jdi/BooleanTypeImpl.java -rt/com/sun/tools/jdi/BooleanValueImpl.java -rt/com/sun/tools/jdi/ByteTypeImpl.java -rt/com/sun/tools/jdi/ByteValueImpl.java -rt/com/sun/tools/jdi/CharTypeImpl.java -rt/com/sun/tools/jdi/CharValueImpl.java -rt/com/sun/tools/jdi/ClassLoaderReferenceImpl.java -rt/com/sun/tools/jdi/ClassObjectReferenceImpl.java -rt/com/sun/tools/jdi/ClassTypeImpl.java -rt/com/sun/tools/jdi/CommandSender.java -rt/com/sun/tools/jdi/ConcreteMethodImpl.java -rt/com/sun/tools/jdi/ConnectorImpl.java -rt/com/sun/tools/jdi/DoubleTypeImpl.java -rt/com/sun/tools/jdi/DoubleValueImpl.java -rt/com/sun/tools/jdi/EventQueueImpl.java -rt/com/sun/tools/jdi/EventRequestManagerImpl.java -rt/com/sun/tools/jdi/EventSetImpl.java -rt/com/sun/tools/jdi/FieldImpl.java -rt/com/sun/tools/jdi/FloatTypeImpl.java -rt/com/sun/tools/jdi/FloatValueImpl.java -rt/com/sun/tools/jdi/GenericAttachingConnector.java -rt/com/sun/tools/jdi/GenericListeningConnector.java -rt/com/sun/tools/jdi/IntegerTypeImpl.java -rt/com/sun/tools/jdi/IntegerValueImpl.java -rt/com/sun/tools/jdi/InterfaceTypeImpl.java -rt/com/sun/tools/jdi/InternalEventHandler.java -rt/com/sun/tools/jdi/JDWPException.java -rt/com/sun/tools/jdi/JNITypeParser.java -rt/com/sun/tools/jdi/LineInfo.java -rt/com/sun/tools/jdi/LinkedHashMap.java -rt/com/sun/tools/jdi/LocalVariableImpl.java -rt/com/sun/tools/jdi/LocationImpl.java -rt/com/sun/tools/jdi/LockObject.java -rt/com/sun/tools/jdi/LongTypeImpl.java -rt/com/sun/tools/jdi/LongValueImpl.java -rt/com/sun/tools/jdi/MethodImpl.java -rt/com/sun/tools/jdi/MirrorImpl.java -rt/com/sun/tools/jdi/MonitorInfoImpl.java -rt/com/sun/tools/jdi/NonConcreteMethodImpl.java -rt/com/sun/tools/jdi/ObjectReferenceImpl.java -rt/com/sun/tools/jdi/ObsoleteMethodImpl.java -rt/com/sun/tools/jdi/Packet.java -rt/com/sun/tools/jdi/PacketStream.java -rt/com/sun/tools/jdi/PrimitiveTypeImpl.java -rt/com/sun/tools/jdi/PrimitiveValueImpl.java -rt/com/sun/tools/jdi/ProcessAttachingConnector.java -rt/com/sun/tools/jdi/RawCommandLineLauncher.java -rt/com/sun/tools/jdi/ReferenceTypeImpl.java -rt/com/sun/tools/jdi/SDE.java -rt/com/sun/tools/jdi/ShortTypeImpl.java -rt/com/sun/tools/jdi/ShortValueImpl.java -rt/com/sun/tools/jdi/SocketAttachingConnector.java -rt/com/sun/tools/jdi/SocketListeningConnector.java -rt/com/sun/tools/jdi/SocketTransportService.java -rt/com/sun/tools/jdi/StackFrameImpl.java -rt/com/sun/tools/jdi/StratumLineInfo.java -rt/com/sun/tools/jdi/StringReferenceImpl.java -rt/com/sun/tools/jdi/SunCommandLineLauncher.java -rt/com/sun/tools/jdi/TargetVM.java -rt/com/sun/tools/jdi/ThreadAction.java -rt/com/sun/tools/jdi/ThreadGroupReferenceImpl.java -rt/com/sun/tools/jdi/ThreadListener.java -rt/com/sun/tools/jdi/ThreadReferenceImpl.java -rt/com/sun/tools/jdi/TypeComponentImpl.java -rt/com/sun/tools/jdi/TypeImpl.java -rt/com/sun/tools/jdi/ValueContainer.java -rt/com/sun/tools/jdi/ValueImpl.java -rt/com/sun/tools/jdi/VirtualMachineImpl.java -rt/com/sun/tools/jdi/VirtualMachineManagerImpl.java -rt/com/sun/tools/jdi/VirtualMachineManagerService.java -rt/com/sun/tools/jdi/VMAction.java -rt/com/sun/tools/jdi/VMListener.java -rt/com/sun/tools/jdi/VMModifiers.java -rt/com/sun/tools/jdi/VMState.java -rt/com/sun/tools/jdi/VoidTypeImpl.java -rt/com/sun/tools/jdi/VoidValueImpl.java -rt/java/util/AbstractCollection.java -rt/java/util/AbstractList.java -rt/java/util/AbstractMap.java -rt/java/util/AbstractQueue.java -rt/java/util/AbstractSequentialList.java -rt/java/util/AbstractSet.java -rt/java/util/ArrayDeque.java -rt/java/util/ArrayList.java -rt/java/util/Arrays.java -rt/java/util/BitSet.java -rt/java/util/Calendar.java -rt/java/util/Collection.java -rt/java/util/Collections.java -rt/java/util/Comparator.java -rt/java/util/ConcurrentModificationException.java -rt/java/util/Currency.java -rt/java/util/Date.java -rt/java/util/Deque.java -rt/java/util/Dictionary.java -rt/java/util/DuplicateFormatFlagsException.java -rt/java/util/EmptyStackException.java -rt/java/util/Enumeration.java -rt/java/util/EnumMap.java -rt/java/util/EnumSet.java -rt/java/util/EventListener.java -rt/java/util/EventListenerProxy.java -rt/java/util/EventObject.java -rt/java/util/FormatFlagsConversionMismatchException.java -rt/java/util/FormattableFlags.java -rt/java/util/Formattable.java -rt/java/util/FormatterClosedException.java -rt/java/util/Formatter.java -rt/java/util/GregorianCalendar.java -rt/java/util/HashMap.java -rt/java/util/HashSet.java -rt/java/util/Hashtable.java -rt/java/util/IdentityHashMap.java -rt/java/util/IllegalFormatCodePointException.java -rt/java/util/IllegalFormatConversionException.java -rt/java/util/IllegalFormatException.java -rt/java/util/IllegalFormatFlagsException.java -rt/java/util/IllegalFormatPrecisionException.java -rt/java/util/IllegalFormatWidthException.java -rt/java/util/InputMismatchException.java -rt/java/util/InvalidPropertiesFormatException.java -rt/java/util/Iterator.java -rt/java/util/JapaneseImperialCalendar.java -rt/java/util/JumboEnumSet.java -rt/java/util/LinkedHashMap.java -rt/java/util/LinkedHashSet.java -rt/java/util/LinkedList.java -rt/java/util/ListIterator.java -rt/java/util/List.java -rt/java/util/ListResourceBundle.java -rt/java/util/LocaleISOData.java -rt/java/util/Locale.java -rt/java/util/Map.java -rt/java/util/MissingFormatArgumentException.java -rt/java/util/MissingFormatWidthException.java -rt/java/util/MissingResourceException.java -rt/java/util/NavigableMap.java -rt/java/util/NavigableSet.java -rt/java/util/NoSuchElementException.java -rt/java/util/Observable.java -rt/java/util/Observer.java -rt/java/util/PriorityQueue.java -rt/java/util/Properties.java -rt/java/util/PropertyPermission.java -rt/java/util/PropertyResourceBundle.java -rt/java/util/Queue.java -rt/java/util/RandomAccess.java -rt/java/util/Random.java -rt/java/util/RegularEnumSet.java -rt/java/util/ResourceBundle.java -rt/java/util/Scanner.java -rt/java/util/ServiceConfigurationError.java -rt/java/util/ServiceLoader.java -rt/java/util/Set.java -rt/java/util/SimpleTimeZone.java -rt/java/util/SortedMap.java -rt/java/util/SortedSet.java -rt/java/util/Stack.java -rt/java/util/StringTokenizer.java -rt/java/util/Timer.java -rt/java/util/TimerTask.java -rt/java/util/TimeZone.java -rt/java/util/TooManyListenersException.java -rt/java/util/TreeMap.java -rt/java/util/TreeSet.java -rt/java/util/UnknownFormatConversionException.java -rt/java/util/UnknownFormatFlagsException.java -rt/java/util/UUID.java -rt/java/util/Vector.java -rt/java/util/WeakHashMap.java -rt/java/util/XMLUtils.java -rt/java/rmi/AccessException.java -rt/java/rmi/AlreadyBoundException.java -rt/java/rmi/ConnectException.java -rt/java/rmi/ConnectIOException.java -rt/java/rmi/MarshalException.java -rt/java/rmi/MarshalledObject.java -rt/java/rmi/Naming.java -rt/java/rmi/NoSuchObjectException.java -rt/java/rmi/NotBoundException.java -rt/java/rmi/RMISecurityException.java -rt/java/rmi/RMISecurityManager.java -rt/java/rmi/Remote.java -rt/java/rmi/RemoteException.java -rt/java/rmi/ServerError.java -rt/java/rmi/ServerException.java -rt/java/rmi/ServerRuntimeException.java -rt/java/rmi/StubNotFoundException.java -rt/java/rmi/UnexpectedException.java -rt/java/rmi/UnknownHostException.java -rt/java/rmi/UnmarshalException.java -rt/sun/rmi/rmic/BatchEnvironment.java -rt/sun/rmi/rmic/Constants.java -rt/sun/rmi/rmic/Generator.java -rt/sun/rmi/rmic/IndentingWriter.java -rt/sun/rmi/rmic/Main.java -rt/sun/rmi/rmic/Names.java -rt/sun/rmi/rmic/RMIConstants.java -rt/sun/rmi/rmic/RMIGenerator.java -rt/sun/rmi/rmic/RemoteClass.java -rt/sun/rmi/rmic/Util.java -rt/javax/net/ssl/CertPathTrustManagerParameters.java -rt/javax/net/ssl/HandshakeCompletedEvent.java -rt/javax/net/ssl/HandshakeCompletedListener.java -rt/javax/net/ssl/HostnameVerifier.java -rt/javax/net/ssl/HttpsURLConnection.java -rt/javax/net/ssl/KeyManager.java -rt/javax/net/ssl/KeyManagerFactory.java -rt/javax/net/ssl/KeyManagerFactorySpi.java -rt/javax/net/ssl/KeyStoreBuilderParameters.java -rt/javax/net/ssl/ManagerFactoryParameters.java -rt/javax/net/ssl/SSLContext.java -rt/javax/net/ssl/SSLContextSpi.java -rt/javax/net/ssl/SSLEngine.java -rt/javax/net/ssl/SSLEngineResult.java -rt/javax/net/ssl/SSLException.java -rt/javax/net/ssl/SSLHandshakeException.java -rt/javax/net/ssl/SSLKeyException.java -rt/javax/net/ssl/SSLParameters.java -rt/javax/net/ssl/SSLPeerUnverifiedException.java -rt/javax/net/ssl/SSLPermission.java -rt/javax/net/ssl/SSLProtocolException.java -rt/javax/net/ssl/SSLServerSocket.java -rt/javax/net/ssl/SSLServerSocketFactory.java -rt/javax/net/ssl/SSLSession.java -rt/javax/net/ssl/SSLSessionBindingEvent.java -rt/javax/net/ssl/SSLSessionBindingListener.java -rt/javax/net/ssl/SSLSessionContext.java -rt/javax/net/ssl/SSLSocket.java -rt/javax/net/ssl/SSLSocketFactory.java -rt/javax/net/ssl/TrustManager.java -rt/javax/net/ssl/TrustManagerFactory.java -rt/javax/net/ssl/TrustManagerFactorySpi.java -rt/javax/net/ssl/X509ExtendedKeyManager.java -rt/javax/net/ssl/X509KeyManager.java -rt/javax/net/ssl/X509TrustManager.java -rt/javax/script/AbstractScriptEngine.java -rt/javax/script/Bindings.java -rt/javax/script/Compilable.java -rt/javax/script/CompiledScript.java -rt/javax/script/Invocable.java -rt/javax/script/ScriptContext.java -rt/javax/script/ScriptEngine.java -rt/javax/script/ScriptEngineFactory.java -rt/javax/script/ScriptEngineManager.java -rt/javax/script/ScriptException.java -rt/javax/script/SimpleBindings.java -rt/javax/script/SimpleScriptContext.java -rt/java/io/ -rt/sun/awt -rt/netscape/javascript/JSException.java -rt/netscape/javascript/JSObject.java -rt/netscape/javascript/JSProxy.java -rt/netscape/javascript/JSRunnable.java -rt/netscape/javascript/JSUtil.java -rt/com/sun/net/httpserver/Authenticator.java -rt/com/sun/net/httpserver/BasicAuthenticator.java -rt/com/sun/net/httpserver/Filter.java -rt/com/sun/net/httpserver/Headers.java -rt/com/sun/net/httpserver/HttpContext.java -rt/com/sun/net/httpserver/HttpExchange.java -rt/com/sun/net/httpserver/HttpHandler.java -rt/com/sun/net/httpserver/HttpPrincipal.java -rt/com/sun/net/httpserver/HttpServer.java -rt/com/sun/net/httpserver/HttpsConfigurator.java -rt/com/sun/net/httpserver/HttpsExchange.java -rt/com/sun/net/httpserver/HttpsParameters.java -rt/com/sun/net/httpserver/HttpsServer.java -rt/com/sun/net/httpserver/package-info.java -generated/sun/awt/X11/generator/sizer.32.orig -pulseaudio/bin -pulseaudio/.*\.o -pulseaudio/src/native/org_.*.h -pulseaudio/.*jar -pulse-java.jar -hotspot.tar.gz -corba.tar.gz -jaxp.tar.gz -jaxws.tar.gz -jdk.tar.gz -langtools.tar.gz +Makefile.in +*.sh diff -r e9eb1d9c06e7 -r 3a383ae55a7e ChangeLog --- a/ChangeLog Mon Dec 07 16:36:16 2009 +0000 +++ b/ChangeLog Mon Dec 14 20:35:12 2009 +0000 @@ -1,3 +1,52 @@ 2009-12-07 Andrew John Hughes changeset 5a82408b6932 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5a82408b6932 author: Man Lung Wong date: Mon Dec 14 15:41:21 2009 -0500 JNLP files are now launched when system offline only if offline- allowed tag is present. diffstat: 1 file changed, 18 insertions(+), 5 deletions(-) rt/net/sourceforge/jnlp/Launcher.java | 23 ++++++++++++++++++----- diffs (43 lines): diff -r 6eb1a59f370f -r 5a82408b6932 rt/net/sourceforge/jnlp/Launcher.java --- a/rt/net/sourceforge/jnlp/Launcher.java Sun Dec 13 22:32:25 2009 +0100 +++ b/rt/net/sourceforge/jnlp/Launcher.java Mon Dec 14 15:41:21 2009 -0500 @@ -19,14 +19,11 @@ package net.sourceforge.jnlp; import java.applet.Applet; import java.awt.Container; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.lang.management.ManagementFactory; import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; -import java.net.URL; +import java.net.*; import java.util.LinkedList; import java.util.List; import java.util.jar.JarFile; @@ -187,6 +184,22 @@ public class Launcher { */ public ApplicationInstance launch(JNLPFile file, Container cont) throws LaunchException { TgThread tg; + + //First checks whether offline-allowed tag is specified inside the jnlp + //file. + if (!file.getInformation().isOfflineAllowed()) { + try { + //Checks the offline/online status of the system. + //If system is offline do not launch. + InetAddress.getByName(file.getSourceLocation().getHost()); + + } catch (UnknownHostException ue) { + System.err.println("File cannot be launched because offline-allowed tag not specified and system currently offline."); + return null; + } catch (Exception e) { + System.err.println(e); + } + } if (file instanceof PluginBridge && cont != null) tg = new TgThread(file, cont, true); From mwong at icedtea.classpath.org Mon Dec 14 12:57:52 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Mon, 14 Dec 2009 20:57:52 +0000 Subject: /hg/icedtea: JNLP files are now launched when system is offline ... Message-ID: changeset c431444e42b9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=c431444e42b9 author: Man Lung Wong date: Mon Dec 14 16:00:31 2009 -0500 JNLP files are now launched when system is offline only if offline- allowed tag is present. Also corrected my previous Changelog entry on Dec 03, 09. diffstat: 2 files changed, 28 insertions(+), 9 deletions(-) ChangeLog | 14 ++++++++++---- netx/net/sourceforge/jnlp/Launcher.java | 23 ++++++++++++++++++----- diffs (79 lines): diff -r 3a383ae55a7e -r c431444e42b9 ChangeLog --- a/ChangeLog Mon Dec 14 20:35:12 2009 +0000 +++ b/ChangeLog Mon Dec 14 16:00:31 2009 -0500 @@ -1,3 +1,9 @@ 2009-12-14 Andrew John Hughes + + * netx/net/sourceforge/jnlp/Launcher.java + (launch): File is not launched if offline-allowed tag not present and + system offline. + 2009-12-14 Andrew John Hughes * patches/boot/icedtea.patch: @@ -56,18 +62,18 @@ 2009-12-07 Andrew John Hughes - * rt/net/sourceforge/jnlp/JNLPFile.java + * netx/net/sourceforge/jnlp/JNLPFile.java (JNLPFile): Download the jnlp file from the webspace it originated, if it exists. - * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java + * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java (initialize): Enable desktop element and revise the list of fixme. (addMenuAndDesktopEntries): No longer errors out when shortcut tag not specified. - * rt/net/sourceforge/jnlp/runtime/Boot.java + * netx/net/sourceforge/jnlp/runtime/Boot.java (getFile): Launches the original jnlp file (i.e. if the file was downloaded from http://icedtea.classpath.org, then it will launch the one from http://icedtea.classpath.org). - * rt/net/sourceforge/jnlp/util/XDesktopEntry.java + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (getContentsAsReader): Shortcut uses jnlp file in cache and launches with system preferred javaws. diff -r 3a383ae55a7e -r c431444e42b9 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Mon Dec 14 20:35:12 2009 +0000 +++ b/netx/net/sourceforge/jnlp/Launcher.java Mon Dec 14 16:00:31 2009 -0500 @@ -19,14 +19,11 @@ package net.sourceforge.jnlp; import java.applet.Applet; import java.awt.Container; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.lang.management.ManagementFactory; import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; -import java.net.URL; +import java.net.*; import java.util.LinkedList; import java.util.List; import java.util.jar.JarFile; @@ -187,6 +184,22 @@ public class Launcher { */ public ApplicationInstance launch(JNLPFile file, Container cont) throws LaunchException { TgThread tg; + + //First checks whether offline-allowed tag is specified inside the jnlp + //file. + if (!file.getInformation().isOfflineAllowed()) { + try { + //Checks the offline/online status of the system. + //If system is offline do not launch. + InetAddress.getByName(file.getSourceLocation().getHost()); + + } catch (UnknownHostException ue) { + System.err.println("File cannot be launched because offline-allowed tag not specified and system currently offline."); + return null; + } catch (Exception e) { + System.err.println(e); + } + } if (file instanceof PluginBridge && cont != null) tg = new TgThread(file, cont, true); From mwong at icedtea.classpath.org Mon Dec 14 13:00:14 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Mon, 14 Dec 2009 21:00:14 +0000 Subject: /hg/icedtea6: Updated Changelog to reflect my commit of changese... Message-ID: changeset f6e0a3a725f2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f6e0a3a725f2 author: Man Lung Wong date: Mon Dec 14 16:03:07 2009 -0500 Updated Changelog to reflect my commit of changeset 5a82408b6932. diffstat: 1 file changed, 6 insertions(+) ChangeLog | 6 ++++++ diffs (13 lines): diff -r 5a82408b6932 -r f6e0a3a725f2 ChangeLog --- a/ChangeLog Mon Dec 14 15:41:21 2009 -0500 +++ b/ChangeLog Mon Dec 14 16:03:07 2009 -0500 @@ -1,3 +1,9 @@ 2009-12-13 Mark Wielaard + + * rt/net/sourceforge/jnlp/Launcher.java + (launch): File is not launched if offline-allowed tag not present and + system offline. + 2009-12-13 Mark Wielaard * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. From andrew at icedtea.classpath.org Mon Dec 14 15:37:50 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 14 Dec 2009 23:37:50 +0000 Subject: /hg/icedtea: Explicitly set the path to the javac executable. Message-ID: changeset 4ba5f5be5a37 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=4ba5f5be5a37 author: Andrew John Hughes date: Mon Dec 14 23:42:58 2009 +0000 Explicitly set the path to the javac executable. 2009-12-14 Andrew John Hughes * Makefile.am: Add Ant patch to explicitly set the javac executable. * patches/boot/ant-javac.patch: New patch (revised from old boot/icedtea.patch version). * HACKING: Updated. diffstat: 4 files changed, 39 insertions(+), 1 deletion(-) ChangeLog | 10 ++++++++++ HACKING | 1 + Makefile.am | 3 ++- patches/boot/ant-javac.patch | 26 ++++++++++++++++++++++++++ diffs (71 lines): diff -r c431444e42b9 -r 4ba5f5be5a37 ChangeLog --- a/ChangeLog Mon Dec 14 16:00:31 2009 -0500 +++ b/ChangeLog Mon Dec 14 23:42:58 2009 +0000 @@ -1,3 +1,13 @@ 2009-12-14 Man Lung Wong + + * Makefile.am: + Add Ant patch to explicitly set the + javac executable. + * patches/boot/ant-javac.patch: + New patch (revised from old boot/icedtea.patch + version). + * HACKING: Updated. + 2009-12-14 Man Lung Wong * netx/net/sourceforge/jnlp/Launcher.java diff -r c431444e42b9 -r 4ba5f5be5a37 HACKING --- a/HACKING Mon Dec 14 16:00:31 2009 -0500 +++ b/HACKING Mon Dec 14 23:42:58 2009 +0000 @@ -124,6 +124,7 @@ The following patches are only applied t The following patches are only applied to the icedtea-boot bootstrap tree in IcedTea7: +* ant-javac.patch: Explicitly set the patch to the javac executable. * corba-defs.patch: Add LANGTOOLS_DIST, remove GENSRCDIR, remove PLATFORMSRC from VPATH0.java. * corba-idlj.patch: Turn off calls to idlj. * corba-libgcj.patch: Link against libgcj instead of libjava. diff -r c431444e42b9 -r 4ba5f5be5a37 Makefile.am --- a/Makefile.am Mon Dec 14 16:00:31 2009 -0500 +++ b/Makefile.am Mon Dec 14 23:42:58 2009 +0000 @@ -362,7 +362,8 @@ ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHE # Bootstrapping patches -ICEDTEA_BOOT_PATCHES = patches/boot/corba-defs.patch \ +ICEDTEA_BOOT_PATCHES = patches/boot/ant-javac.patch \ + patches/boot/corba-defs.patch \ patches/boot/corba-idlj.patch \ patches/boot/corba-libgcj.patch \ patches/boot/corba-no-gen.patch \ diff -r c431444e42b9 -r 4ba5f5be5a37 patches/boot/ant-javac.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/boot/ant-javac.patch Mon Dec 14 23:42:58 2009 +0000 @@ -0,0 +1,26 @@ +diff -Nru openjdk-boot.orig/jaxp/build.xml openjdk-boot/jaxp/build.xml +--- openjdk-boot.orig/jaxp/build.xml 2009-12-04 15:29:13.000000000 +0000 ++++ openjdk-boot/jaxp/build.xml 2009-12-14 22:57:23.000000000 +0000 +@@ -122,7 +122,8 @@ + memoryMaximumSize="${javac.memoryMaximumSize}" + source="${javac.source}" + debug="${javac.debug}" +- target="${javac.target}"> ++ target="${javac.target}" ++ executable="${jdk.home}/bin/javac"> + + + +diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml +--- openjdk-boot.orig/jaxws/build.xml 2009-12-04 15:35:01.000000000 +0000 ++++ openjdk-boot/jaxws/build.xml 2009-12-14 22:57:41.000000000 +0000 +@@ -122,7 +122,8 @@ + memoryMaximumSize="${javac.memoryMaximumSize}" + source="${javac.source}" + debug="${javac.debug}" +- target="${javac.target}"> ++ target="${javac.target}" ++ executable="${jdk.home}/bin/javac"> + + + From bugzilla-daemon at icedtea.classpath.org Tue Dec 15 04:21:18 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 15 Dec 2009 12:21:18 +0000 Subject: [Bug 419] New: SIGSEGV when in file chooser dialog Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=419 Summary: SIGSEGV when in file chooser dialog Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: critical Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: levon.sa at gmail.com My eclipse exited with SIGSEGV when I was about to select a file for (project) import. Attaching log. Not sure if it is eclipse-related or icedtea-related. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Dec 15 04:23:09 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 15 Dec 2009 12:23:09 +0000 Subject: [Bug 419] SIGSEGV when in file chooser dialog Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=419 ------- Comment #1 from levon.sa at gmail.com 2009-12-15 12:23 ------- Created an attachment (id=277) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=277&action=view) Crash log -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Dec 15 04:23:51 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 15 Dec 2009 12:23:51 +0000 Subject: [Bug 419] SIGSEGV when in file chooser dialog Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=419 levon.sa at gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #277|application/octet-stream |text/plain mime type| | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Tue Dec 15 06:01:34 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 15 Dec 2009 14:01:34 +0000 Subject: /hg/icedtea: Always turn off doc generation for the bootstrap bu... Message-ID: changeset c865cb07202d in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=c865cb07202d author: Andrew John Hughes date: Tue Dec 15 14:06:44 2009 +0000 Always turn off doc generation for the bootstrap build. 2009-12-15 Andrew John Hughes * Makefile.am: Always turn off doc generation for bootstrap build. diffstat: 2 files changed, 8 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ Makefile.am | 3 ++- diffs (26 lines): diff -r 4ba5f5be5a37 -r c865cb07202d ChangeLog --- a/ChangeLog Mon Dec 14 23:42:58 2009 +0000 +++ b/ChangeLog Tue Dec 15 14:06:44 2009 +0000 @@ -1,3 +1,9 @@ 2009-12-14 Andrew John Hughes + + * Makefile.am: + Always turn off doc generation for bootstrap + build. + 2009-12-14 Andrew John Hughes * Makefile.am: diff -r 4ba5f5be5a37 -r c865cb07202d Makefile.am --- a/Makefile.am Mon Dec 14 23:42:58 2009 +0000 +++ b/Makefile.am Tue Dec 15 14:06:44 2009 +0000 @@ -508,7 +508,8 @@ ICEDTEA_ENV_BOOT = $(ICEDTEA_ENV) \ JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ JAR_ACCEPTS_STDIN_LIST="$(JAR_ACCEPTS_STDIN_LIST)" \ - DISABLE_NIMBUS="true" + DISABLE_NIMBUS="true" \ + NO_DOCS="true" # Source files From bugzilla-daemon at icedtea.classpath.org Tue Dec 15 07:56:36 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 15 Dec 2009 15:56:36 +0000 Subject: [Bug 412] build fails at final link Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=412 jlpoole at pon.net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #12 from jlpoole at pon.net 2009-12-15 15:56 ------- Hurray: make worked! I had updated my pull to: svn info trunk Path: trunk URL: svn://gcc.gnu.org/svn/gcc/trunk Repository Root: svn://gcc.gnu.org/svn/gcc Repository UUID: 138bc75d-0d04-0410-961f-82ee72b054a4 Revision: 155206 Node Kind: directory Schedule: normal Last Changed Author: bje Last Changed Rev: 155206 Last Changed Date: 2009-12-13 21:06:50 -0800 (Sun, 13 Dec 2009) I had to add some additional modules to my environment that were required by the revised configure. I'll update this bug this weekend with the specifics as the output is on another computer I will not have access to until the end of this week. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Tue Dec 15 13:05:44 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 15 Dec 2009 16:05:44 -0500 Subject: New IcedTea6 major release (1.7) In-Reply-To: <17c6771e0912130718j368d872aye7d4ce01364d790b@mail.gmail.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <4B213751.1080801@ubuntu.com> <17c6771e0912130718j368d872aye7d4ce01364d790b@mail.gmail.com> Message-ID: <20091215210543.GA22599@redhat.com> * Andrew John Hughes [2009-12-13 10:18]: > 2009/12/10 Matthias Klose : > > On 10.12.2009 18:29, Andrew John Hughes wrote: > >> > >> I notice we haven't had a major IcedTea6 release since 1.6 in > >> September. ?I think it's time to at least consider when we want to do > >> so. > >> > >> HEAD is currently on b17, whereas the previous releases are on b16. > >> The main feature in b17 was the switch to HotSpot 14 but this was > >> already supported by IcedTea6 anyway since 1.4. > >> > >> My personal preference would be to wait at least until b18, which will > >> include the Nimbus backport. ?Nimbus is one of the major areas (if not > >> only) where OpenJDK still lags the proprietary Sun JDK. ?The release > >> is fairly imminent; we've been discussing it at some length on > >> jdk6-dev: > >> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html > >> ?However, I understand that others may want to delay this until 1.8 if > >> a 1.7 is desired sooner, prior to extensive testing of b18. > > > > from a distribution standpoint, b17 will likely not be released as part of a > > Linux distribution (all distros just had their releases), so I would be > > happy to concentrate on b18 instead. > > > >> What other features would people like to see in a release? ?What > >> things are we waiting on? ?The new plugin springs to mind. > > > > do you mean the icedtea npp plugin? > > > > I do. Deepak, can you give us all a status update on the state of > both plugins including the bug mentioned by Andreas? The NP plugin is close to being functionally complete. I am currently concentrating on cross-browser testing with chromium, and firefox 3.5 (most of the development I did was against 3.6 and there are some header issues across 3.5/3.6). I expect to make an alpha release before the holidays (24th Dec.) and a beta around 2-3rd week of Jan., followed by polishing+final release later on, depending on how many issues crop up. Cheers, Deepak > > > ?Matthias > > > > Thanks, > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Tue Dec 15 13:29:19 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 15 Dec 2009 21:29:19 +0000 Subject: New IcedTea6 major release (1.7) In-Reply-To: <20091215210543.GA22599@redhat.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <4B213751.1080801@ubuntu.com> <17c6771e0912130718j368d872aye7d4ce01364d790b@mail.gmail.com> <20091215210543.GA22599@redhat.com> Message-ID: <17c6771e0912151329w7b69e5a0s10a9d7bdbf4c2135@mail.gmail.com> 2009/12/15 Deepak Bhole : > * Andrew John Hughes [2009-12-13 10:18]: >> 2009/12/10 Matthias Klose : >> > On 10.12.2009 18:29, Andrew John Hughes wrote: >> >> >> >> I notice we haven't had a major IcedTea6 release since 1.6 in >> >> September. ?I think it's time to at least consider when we want to do >> >> so. >> >> >> >> HEAD is currently on b17, whereas the previous releases are on b16. >> >> The main feature in b17 was the switch to HotSpot 14 but this was >> >> already supported by IcedTea6 anyway since 1.4. >> >> >> >> My personal preference would be to wait at least until b18, which will >> >> include the Nimbus backport. ?Nimbus is one of the major areas (if not >> >> only) where OpenJDK still lags the proprietary Sun JDK. ?The release >> >> is fairly imminent; we've been discussing it at some length on >> >> jdk6-dev: >> >> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html >> >> ?However, I understand that others may want to delay this until 1.8 if >> >> a 1.7 is desired sooner, prior to extensive testing of b18. >> > >> > from a distribution standpoint, b17 will likely not be released as part of a >> > Linux distribution (all distros just had their releases), so I would be >> > happy to concentrate on b18 instead. >> > >> >> What other features would people like to see in a release? ?What >> >> things are we waiting on? ?The new plugin springs to mind. >> > >> > do you mean the icedtea npp plugin? >> > >> >> I do. ?Deepak, can you give us all a status update on the state of >> both plugins including the bug mentioned by Andreas? > > The NP plugin is close to being functionally complete. I am currently > concentrating on cross-browser testing with chromium, and firefox 3.5 > (most of the development I did was against 3.6 and there are some header > issues across 3.5/3.6). > > I expect to make an alpha release before the holidays (24th Dec.) and a > beta around 2-3rd week of Jan., followed by polishing+final release > later on, depending on how many issues crop up. > > Cheers, > Deepak > >> >> > ?Matthias >> > >> >> Thanks, >> -- >> Andrew :-) >> >> Free Java Software Engineer >> Red Hat, Inc. (http://www.redhat.com) >> >> Support Free Java! >> Contribute to GNU Classpath and the OpenJDK >> http://www.gnu.org/software/classpath >> http://openjdk.java.net >> >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > Thanks for the summary. So my proposal would be: * A 1.7 release based on b17 in late December, with a major branch created now. * A 1.8 release based on b18 in early February (for FOSDEM?) Any objections? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Tue Dec 15 13:30:49 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 15 Dec 2009 21:30:49 +0000 Subject: New IcedTea6 major release (1.7) In-Reply-To: <17c6771e0912151329w7b69e5a0s10a9d7bdbf4c2135@mail.gmail.com> References: <17c6771e0912100929n5f61f4a9i8960ebe42ffa07f8@mail.gmail.com> <4B213751.1080801@ubuntu.com> <17c6771e0912130718j368d872aye7d4ce01364d790b@mail.gmail.com> <20091215210543.GA22599@redhat.com> <17c6771e0912151329w7b69e5a0s10a9d7bdbf4c2135@mail.gmail.com> Message-ID: <17c6771e0912151330i255b0c1avb96569e24d73f9f8@mail.gmail.com> 2009/12/15 Andrew John Hughes : > 2009/12/15 Deepak Bhole : >> * Andrew John Hughes [2009-12-13 10:18]: >>> 2009/12/10 Matthias Klose : >>> > On 10.12.2009 18:29, Andrew John Hughes wrote: >>> >> >>> >> I notice we haven't had a major IcedTea6 release since 1.6 in >>> >> September. ?I think it's time to at least consider when we want to do >>> >> so. >>> >> >>> >> HEAD is currently on b17, whereas the previous releases are on b16. >>> >> The main feature in b17 was the switch to HotSpot 14 but this was >>> >> already supported by IcedTea6 anyway since 1.4. >>> >> >>> >> My personal preference would be to wait at least until b18, which will >>> >> include the Nimbus backport. ?Nimbus is one of the major areas (if not >>> >> only) where OpenJDK still lags the proprietary Sun JDK. ?The release >>> >> is fairly imminent; we've been discussing it at some length on >>> >> jdk6-dev: >>> >> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-December/000984.html >>> >> ?However, I understand that others may want to delay this until 1.8 if >>> >> a 1.7 is desired sooner, prior to extensive testing of b18. >>> > >>> > from a distribution standpoint, b17 will likely not be released as part of a >>> > Linux distribution (all distros just had their releases), so I would be >>> > happy to concentrate on b18 instead. >>> > >>> >> What other features would people like to see in a release? ?What >>> >> things are we waiting on? ?The new plugin springs to mind. >>> > >>> > do you mean the icedtea npp plugin? >>> > >>> >>> I do. ?Deepak, can you give us all a status update on the state of >>> both plugins including the bug mentioned by Andreas? >> >> The NP plugin is close to being functionally complete. I am currently >> concentrating on cross-browser testing with chromium, and firefox 3.5 >> (most of the development I did was against 3.6 and there are some header >> issues across 3.5/3.6). >> >> I expect to make an alpha release before the holidays (24th Dec.) and a >> beta around 2-3rd week of Jan., followed by polishing+final release >> later on, depending on how many issues crop up. >> >> Cheers, >> Deepak >> >>> >>> > ?Matthias >>> > >>> >>> Thanks, >>> -- >>> Andrew :-) >>> >>> Free Java Software Engineer >>> Red Hat, Inc. (http://www.redhat.com) >>> >>> Support Free Java! >>> Contribute to GNU Classpath and the OpenJDK >>> http://www.gnu.org/software/classpath >>> http://openjdk.java.net >>> >>> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >>> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 >> > > Thanks for the summary. > > So my proposal would be: > > * A 1.7 release based on b17 in late December, with a major branch created now. > * A 1.8 release based on b18 in early February (for FOSDEM?) > > Any objections? > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > Actually, better replace the 'now' above with 'Friday' :) I'll create the branch then if no-one has any strong objections. Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Dec 16 05:54:58 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 16 Dec 2009 13:54:58 +0000 Subject: [Bug 420] New: CompilerThread crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=420 Summary: CompilerThread crashes Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: critical Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: mjansson at inconso.de This Error crashes the Application every few hours and is, by now, not reproducible. # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00f116b6, pid=32544, tid=1945303952 # # Java VM: OpenJDK Server VM (1.6.0-b09 mixed mode linux-x86) # Problematic frame: # V [libjvm.so+0x4286b6] # # If you would like to submit a bug report, please visit: # http://icedtea.classpath.org/bugzilla # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x74017000): JavaThread "CompilerThread1" daemon [_thread_in_native, id=32553, stack(0x73eb0000,0x73f30000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x00000004 Registers: EAX=0x09744c18, EBX=0x0112ab74, ECX=0x00000000, EDX=0x00000200 ESP=0x73f2d9a0, EBP=0x73f2d9c8, ESI=0x00000000, EDI=0x09744c18 EIP=0x00f116b6, CR2=0x00000004, EFLAGS=0x00010206 Top of Stack: (sp=0x73f2d9a0) 0x73f2d9a0: 740174a8 095ee3d0 73f2e214 00f55d09 0x73f2d9b0: 095bf818 09725830 00001000 0112ab74 0x73f2d9c0: 00000127 73f2e204 73f2da08 00f11d13 0x73f2d9d0: 73f2e204 094d5334 00000000 00000001 0x73f2d9e0: 73f2e4b8 095ec710 73f2e4a8 094d5334 0x73f2d9f0: 00000001 00000001 00200000 0112ab74 0x73f2da00: 73f2e204 73f2db94 73f2dbb8 00f18ce8 0x73f2da10: 73f2e204 73f2db94 73f2db74 73f2db84 Instructions: (pc=0x00f116b6) 0x00f116a6: 3c b5 00 00 00 00 8b 81 c4 02 00 00 01 c7 8b 0f 0x00f116b6: 8b 41 04 8b 00 85 c0 75 24 8b 45 e0 8b 70 04 8b Stack: [0x73eb0000,0x73f30000], sp=0x73f2d9a0, free space=502k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x4286b6] V [libjvm.so+0x428d13] V [libjvm.so+0x42fce8] V [libjvm.so+0x214820] V [libjvm.so+0x216078] V [libjvm.so+0x1b0025] V [libjvm.so+0x21a06b] V [libjvm.so+0x21a755] V [libjvm.so+0x551a08] V [libjvm.so+0x55800c] V [libjvm.so+0x5580e4] V [libjvm.so+0x48c1e8] C [libpthread.so.0+0x533a] Current CompileTask: C2:146 com.inconso.wt.events.WebIOInputEvent.extractBitset()Ljava/util/Vector; (124 bytes) --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x098ddc00 JavaThread "database access" [_thread_blocked, id=32614, stack(0x73b60000,0x73bb0000)] 0x098dd800 JavaThread "WebIO" [_thread_blocked, id=32613, stack(0x73bb0000,0x73c00000)] 0x740d5c00 JavaThread "DestroyJavaVM" [_thread_blocked, id=32545, stack(0xb7f30000,0xb7f80000)] 0x740c2800 JavaThread "reading at: 10.43.14.143 port: 80" [_thread_in_native, id=32612, stack(0x73d39000,0x73d89000)] 0x740e2800 JavaThread "polling at: 10.43.14.143 port: 80" [_thread_blocked, id=32611, stack(0x73d89000,0x73dd9000)] 0x74018c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=32554, stack(0x73e60000,0x73eb0000)] =>0x74017000 JavaThread "CompilerThread1" daemon [_thread_in_native, id=32553, stack(0x73eb0000,0x73f30000)] 0x74015c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=32552, stack(0x73f30000,0x73fb0000)] 0x74014c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=32551, stack(0x73fb0000,0x74000000)] 0x094c4000 JavaThread "Finalizer" daemon [_thread_blocked, id=32550, stack(0x7434c000,0x7439c000)] 0x094c3000 JavaThread "Reference Handler" daemon [_thread_blocked, id=32549, stack(0x7439c000,0x743ec000)] Other Threads: 0x094bfc00 VMThread [stack: 0x743ec000,0x7446c000] [id=32548] 0x7401a800 WatcherThread [stack: 0x73de0000,0x73e60000] [id=32555] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap PSYoungGen total 8128K, used 6412K [0xb1570000, 0xb1ed0000, 0xb7f30000) eden space 7168K, 89% used [0xb1570000,0xb1bab060,0xb1c70000) from space 960K, 3% used [0xb1de0000,0xb1de8000,0xb1ed0000) to space 1216K, 0% used [0xb1c70000,0xb1c70000,0xb1da0000) PSOldGen total 54208K, used 1264K [0x7c730000, 0x7fc20000, 0xb1570000) object space 54208K, 2% used [0x7c730000,0x7c86c0d0,0x7fc20000) PSPermGen total 16384K, used 14091K [0x74730000, 0x75730000, 0x7c730000) object space 16384K, 86% used [0x74730000,0x754f2f50,0x75730000) Dynamic libraries: 00110000-00135000 r-xp 00000000 08:03 4620358 /lib/libm-2.5.so 00135000-00136000 r-xp 00024000 08:03 4620358 /lib/libm-2.5.so 00136000-00137000 rwxp 00025000 08:03 4620358 /lib/libm-2.5.so 00137000-00140000 rwxp 00137000 00:00 0 00140000-001f7000 rwxp 00140000 00:00 0 001f7000-0020a000 r-xp 00000000 08:03 1909855 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnet.so 0020a000-0020b000 rwxp 00012000 08:03 1909855 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnet.so 00220000-00229000 r-xp 00000000 08:03 4620327 /lib/libnss_files-2.5.so 00229000-0022a000 r-xp 00008000 08:03 4620327 /lib/libnss_files-2.5.so 0022a000-0022b000 rwxp 00009000 08:03 4620327 /lib/libnss_files-2.5.so 0022b000-00233000 rwxp 0022b000 00:00 0 00233000-0026b000 rwxp 00233000 00:00 0 00279000-00285000 r-xp 00000000 08:03 1909862 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libverify.so 00285000-00286000 rwxp 0000b000 08:03 1909862 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libverify.so 00335000-0033b000 r-xp 00000000 08:03 1909863 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libzip.so 0033b000-0033c000 rwxp 00006000 08:03 1909863 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libzip.so 0033c000-00344000 rwxp 0033c000 00:00 0 00344000-0037c000 rwxp 00344000 00:00 0 0037c000-00397000 rwxp 0037c000 00:00 0 00397000-00523000 rwxp 00397000 00:00 0 00523000-00528000 rwxp 00523000 00:00 0 00528000-00558000 rwxp 00528000 00:00 0 00558000-00559000 rwxp 00558000 00:00 0 00598000-005b1000 r-xp 00000000 08:03 4620336 /lib/ld-2.5.so 005b1000-005b2000 r-xp 00018000 08:03 4620336 /lib/ld-2.5.so 005b2000-005b3000 rwxp 00019000 08:03 4620336 /lib/ld-2.5.so 005b5000-006f6000 r-xp 00000000 08:03 4620338 /lib/libc-2.5.so 006f6000-006f8000 r-xp 00141000 08:03 4620338 /lib/libc-2.5.so 006f8000-006f9000 rwxp 00143000 08:03 4620338 /lib/libc-2.5.so 006f9000-006fc000 rwxp 006f9000 00:00 0 006fe000-00701000 r-xp 00000000 08:03 3571719 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/jli/libjli.so 00701000-00702000 rwxp 00003000 08:03 3571719 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/jli/libjli.so 00727000-00729000 r-xp 00000000 08:03 4620356 /lib/libdl-2.5.so 00729000-0072a000 r-xp 00001000 08:03 4620356 /lib/libdl-2.5.so 0072a000-0072b000 rwxp 00002000 08:03 4620356 /lib/libdl-2.5.so 0072d000-00740000 r-xp 00000000 08:03 4620347 /lib/libpthread-2.5.so 00740000-00741000 r-xp 00012000 08:03 4620347 /lib/libpthread-2.5.so 00741000-00742000 rwxp 00013000 08:03 4620347 /lib/libpthread-2.5.so 00742000-00744000 rwxp 00742000 00:00 0 00746000-00758000 r-xp 00000000 08:03 1471967 /usr/lib/libz.so.1.2.3 00758000-00759000 rwxp 00011000 08:03 1471967 /usr/lib/libz.so.1.2.3 0075b000-00761000 r-xp 00000000 08:03 4620348 /lib/librt-2.5.so 00761000-00762000 r-xp 00005000 08:03 4620348 /lib/librt-2.5.so 00762000-00763000 rwxp 00006000 08:03 4620348 /lib/librt-2.5.so 008b2000-008d4000 r-xp 00000000 08:03 1909843 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libjava.so 008d4000-008d6000 rwxp 00022000 08:03 1909843 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libjava.so 009ba000-009cd000 r-xp 00000000 08:03 4620354 /lib/libnsl-2.5.so 009cd000-009ce000 r-xp 00012000 08:03 4620354 /lib/libnsl-2.5.so 009ce000-009cf000 rwxp 00013000 08:03 4620354 /lib/libnsl-2.5.so 009cf000-009d1000 rwxp 009cf000 00:00 0 00aa5000-00aab000 r-xp 00000000 08:03 1942420 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/native_threads/libhpi.so 00aab000-00aac000 rwxp 00006000 08:03 1942420 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/native_threads/libhpi.so 00ae8000-00ae9000 r-xp 00ae8000 00:00 0 [vdso] 00ae9000-010ee000 r-xp 00000000 08:03 1942424 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/server/libjvm.so 010ee000-01139000 rwxp 00604000 08:03 1942424 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/server/libjvm.so 01139000-01559000 rwxp 01139000 00:00 0 01c0b000-01e4b000 rwxp 01c0b000 00:00 0 01e4b000-04c0b000 rwxp 01e4b000 00:00 0 06e5c000-06e77000 rwxp 06e5c000 00:00 0 06e77000-07004000 rwxp 06e77000 00:00 0 08048000-08051000 r-xp 00000000 08:03 1909831 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/bin/java 08051000-08053000 rwxp 00008000 08:03 1909831 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/bin/java 09430000-099ab000 rwxp 09430000 00:00 0 [heap] 73b60000-73b63000 --xp 73b60000 00:00 0 73b63000-73bb0000 rwxp 73b63000 00:00 0 73bb0000-73bb3000 --xp 73bb0000 00:00 0 73bb3000-73cd5000 rwxp 73bb3000 00:00 0 73cd5000-73d00000 --xp 73cd5000 00:00 0 73d39000-73d3c000 --xp 73d39000 00:00 0 73d3c000-73d89000 rwxp 73d3c000 00:00 0 73d89000-73d8c000 --xp 73d89000 00:00 0 73d8c000-73dd9000 rwxp 73d8c000 00:00 0 73dd9000-73de0000 r-xs 000f9000 08:03 1909874 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/resources.jar 73de0000-73de1000 --xp 73de0000 00:00 0 73de1000-73e60000 rwxp 73de1000 00:00 0 73e60000-73e63000 --xp 73e60000 00:00 0 73e63000-73eb0000 rwxp 73e63000 00:00 0 73eb0000-73eb3000 --xp 73eb0000 00:00 0 73eb3000-73f30000 rwxp 73eb3000 00:00 0 73f30000-73f33000 --xp 73f30000 00:00 0 73f33000-73fb0000 rwxp 73f33000 00:00 0 73fb0000-73fb3000 --xp 73fb0000 00:00 0 73fb3000-74100000 rwxp 73fb3000 00:00 0 74101000-74104000 r-xs 00014000 08:03 1909864 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/jce.jar 74104000-74105000 r-xs 00006000 fd:01 82227 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/jdbcappender.jar 74105000-7410d000 r-xs 0004f000 fd:01 82259 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/log4j-1.2.8.jar 7410d000-7410e000 r-xs 00002000 fd:01 82226 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/toplink-essentials-agent.jar 7410e000-7412e000 r-xs 00236000 fd:01 82221 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/toplink-essentials.jar 7412e000-74132000 r-xs 00079000 08:03 1909866 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/jsse.jar 74132000-74134000 r-xs 0000e000 fd:01 1064961 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/WT.jar 74134000-74144000 r-xs 00169000 fd:01 82225 /mp2/work/prd/projdisk/bin/web_io/wt3/RadebergerModel/setup/deployment/lib/ojdbc14.jar 74144000-7414c000 r-xs 00061000 08:03 1909809 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/ext/gnome-java-bridge.jar 7414c000-7434c000 r-xp 00000000 08:03 1471772 /usr/lib/locale/locale-archive 7434c000-7434f000 --xp 7434c000 00:00 0 7434f000-7439c000 rwxp 7434f000 00:00 0 7439c000-7439f000 --xp 7439c000 00:00 0 7439f000-743ec000 rwxp 7439f000 00:00 0 743ec000-743ed000 --xp 743ec000 00:00 0 743ed000-7449f000 rwxp 743ed000 00:00 0 7449f000-74630000 r-xs 033e8000 08:03 1909875 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/rt.jar 74630000-74631000 --xp 74630000 00:00 0 74631000-746b0000 rwxp 74631000 00:00 0 746b0000-746b1000 --xp 746b0000 00:00 0 746b1000-74730000 rwxp 746b1000 00:00 0 74730000-75730000 rwxp 74730000 00:00 0 75730000-7c730000 rwxp 75730000 00:00 0 7c730000-7fc20000 rwxp 7c730000 00:00 0 7fc20000-b1570000 rwxp 7fc20000 00:00 0 b1570000-b1ed0000 rwxp b1570000 00:00 0 b1ed0000-b7f30000 rwxp b1ed0000 00:00 0 b7f30000-b7f33000 ---p b7f30000 00:00 0 b7f33000-b7f82000 rw-p b7f33000 00:00 0 b7f86000-b7f89000 r--s 00031000 08:03 1909812 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/ext/sunjce_provider.jar b7f89000-b7f91000 rw-s 00000000 08:03 5112438 /tmp/hsperfdata_scheduler/32544 b7f91000-b7f92000 rwxp b7f91000 00:00 0 b7f92000-b7f93000 r--p b7f92000 00:00 0 b7f93000-b7f94000 rw-p b7f93000 00:00 0 bfed7000-bfeec000 rw-p bffea000 00:00 0 [stack] VM Arguments: jvm_args: -Djava.util.logging.config.file=logging.properties -Dlog4j.configuration=log4j.properties java_command: com.inconso.wt.application.Application Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre PATH=/mp2/work/userdisk/radipadm/bin:/mp2/work/prd/projdisk/bin:/usr/local/usr/local/bin:/oracle/11g/DB/bin:.:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin://oracle/11g/DB/oc4j/ant/bin LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../lib/i386:/usr/local/scheduler/lib:/usr/local/lib:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client: SHELL=/bin/bash Signal Handlers: SIGSEGV: [libjvm.so+0x598ca0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x598ca0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x4870b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x4870b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x4870b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x4870b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x489970], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x488680], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: SIG_IGN, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGTERM: [libjvm.so+0x488680], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x488680], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:Enterprise Linux Enterprise Linux Server release 5.3 (Carthage) uname:Linux 2.6.18-128.4.1.0.1.el5 #1 SMP Tue Aug 4 15:10:25 EDT 2009 i686 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 0k, NPROC 61440, NOFILE 1024, AS infinity load average:2.06 1.87 1.83 CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 Memory: 4k page, physical 3896204k(217748k free), swap 4192956k(3834236k free) vm_info: OpenJDK Server VM (1.6.0-b09) for linux-x86 JRE (1.6.0-b09), built on Aug 6 2009 18:40:22 by "mockbuild" with gcc 4.1.2 20080704 (Red Hat 4.1.2-44) time: Wed Dec 16 14:03:02 2009 elapsed time: 4778 seconds -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From aph at icedtea.classpath.org Wed Dec 16 09:41:47 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Wed, 16 Dec 2009 17:41:47 +0000 Subject: /hg/icedtea6: * patches/icedtea-linux-separate-debuginfo.patch: ... Message-ID: changeset 4fdd81d3fe25 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=4fdd81d3fe25 author: aph date: Wed Dec 16 17:46:42 2009 +0000 * patches/icedtea-linux-separate-debuginfo.patch: Fix buglets. diffstat: 2 files changed, 34 insertions(+), 21 deletions(-) ChangeLog | 4 + patches/icedtea-linux-separate-debuginfo.patch | 51 ++++++++++++++---------- diffs (114 lines): diff -r f6e0a3a725f2 -r 4fdd81d3fe25 ChangeLog --- a/ChangeLog Mon Dec 14 16:03:07 2009 -0500 +++ b/ChangeLog Wed Dec 16 17:46:42 2009 +0000 @@ -1,3 +1,7 @@ 2009-12-14 Man Lung Wong + + * patches/icedtea-linux-separate-debuginfo.patch: Fix buglets. + 2009-12-14 Man Lung Wong * rt/net/sourceforge/jnlp/Launcher.java diff -r f6e0a3a725f2 -r 4fdd81d3fe25 patches/icedtea-linux-separate-debuginfo.patch --- a/patches/icedtea-linux-separate-debuginfo.patch Mon Dec 14 16:03:07 2009 -0500 +++ b/patches/icedtea-linux-separate-debuginfo.patch Wed Dec 16 17:46:42 2009 +0000 @@ -13,6 +13,13 @@ 2009-12-09 Andrew Haley + + * openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link): + Check for NULL. + Fix off by one error in aligning the CRC: the offset is 4 bytes, + not 3. + diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 @@ -25,9 +32,22 @@ diff -u ../openjdk/icedtea6/openjdk/hots if (newlib->symtab == NULL) { print_debug("symbol table build failed for %s\n", newlib->name); } ---- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-10-14 18:13:08.000000000 +0100 -+++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-11 16:16:39.106634861 +0000 -@@ -53,8 +53,272 @@ +diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h +--- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 +@@ -32,7 +32,7 @@ + struct symtab; + + // build symbol table for a given ELF file descriptor +-struct symtab* build_symtab(int fd); ++struct symtab* build_symtab(int fd, const char *filename); + + // destroy the symbol table + void destroy_symtab(struct symtab* symtab); + +--- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:13:28.879599584 +0000 ++++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:14:15.871601226 +0000 +@@ -53,8 +53,274 @@ struct hsearch_data *hash_table; } symtab_t; @@ -178,11 +198,13 @@ diff -u ../openjdk/icedtea6/openjdk/hots + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ ++ int debug_fd; + struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, + shbuf, scn_cache); -+ int debug_fd; ++ if (debug_link == NULL) ++ return -1; + char *debug_filename = debug_link->c_data; -+ int offset = strlen(debug_filename) + 3 >> 2; ++ int offset = (strlen(debug_filename) + 4) >> 2; + static unsigned int crc; + crc = ((unsigned int*)debug_link->c_data)[offset]; + char *debug_pathname = malloc(strlen(debug_filename) @@ -302,7 +324,7 @@ diff -u ../openjdk/icedtea6/openjdk/hots ELF_EHDR ehdr; char *names = NULL; struct symtab* symtab = NULL; -@@ -90,7 +354,8 @@ +@@ -90,7 +356,8 @@ for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { scn_cache[cnt].c_shdr = cursct; @@ -312,7 +334,7 @@ diff -u ../openjdk/icedtea6/openjdk/hots if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { goto quit; } -@@ -163,6 +428,30 @@ +@@ -163,6 +430,30 @@ } } @@ -343,7 +365,7 @@ diff -u ../openjdk/icedtea6/openjdk/hots quit: if (shbuf) free(shbuf); if (phbuf) free(phbuf); -@@ -177,6 +466,11 @@ +@@ -177,6 +468,11 @@ return symtab; } @@ -355,16 +377,3 @@ diff -u ../openjdk/icedtea6/openjdk/hots void destroy_symtab(struct symtab* symtab) { if (!symtab) return; if (symtab->strs) free(symtab->strs); -diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h ---- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 -+++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 -@@ -32,7 +32,7 @@ - struct symtab; - - // build symbol table for a given ELF file descriptor --struct symtab* build_symtab(int fd); -+struct symtab* build_symtab(int fd, const char *filename); - - // destroy the symbol table - void destroy_symtab(struct symtab* symtab); - From aph at redhat.com Wed Dec 16 09:47:23 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 16 Dec 2009 17:47:23 +0000 Subject: Allow Java's ELF symtab reader to use separate debuginfo files In-Reply-To: <4B2272B0.2000205@redhat.com> References: <4B1FC407.6010405@redhat.com> <17c6771e0912090826x4d641784vb4efd1f562d555ff@mail.gmail.com> <4B1FDD99.70407@sun.com> <4B1FE804.80508@redhat.com> <4B20D88E.4040907@redhat.com> <4B2272B0.2000205@redhat.com> Message-ID: <4B291D2B.1080609@redhat.com> Testing revealed a couple of failures with separate debuginfo. I made a silly off-by-one error and I missed a null pointer check. Fixed, pushed. Andrew. 2009-12-16 Andrew Haley * openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link): Check for NULL. Fix off by one error in aligning the CRC: the offset is 4 bytes, not 3. --- openjdk/hotspot/agent/src/os/linux/symtab.c~ 2009-12-11 16:33:49.926655750 +0000 +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 16:08:22.525718029 +0000 @@ -198,11 +198,13 @@ ELF_SHDR *shbuf, struct elf_section *scn_cache) { + int debug_fd; struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, shbuf, scn_cache); - int debug_fd; + if (debug_link == NULL) + return -1; char *debug_filename = debug_link->c_data; - int offset = strlen(debug_filename) + 3 >> 2; + int offset = (strlen(debug_filename) + 4) >> 2; static unsigned int crc; crc = ((unsigned int*)debug_link->c_data)[offset]; char *debug_pathname = malloc(strlen(debug_filename) From doko at icedtea.classpath.org Thu Dec 17 05:47:20 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 17 Dec 2009 13:47:20 +0000 Subject: /hg/icedtea6: Fix build of cacao for armv7 and in thumb mode. Message-ID: changeset a56c45c73a74 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a56c45c73a74 author: doko at ubuntu.com date: Thu Dec 17 14:51:20 2009 +0100 Fix build of cacao for armv7 and in thumb mode. 2009-12-17 Matthias Klose * patches/cacao/arm-arch-defines.patch: New, fix cacao build on ARM in thumb mode. Cacao bug PR135. * Makefile.am (ICEDTEA_PATCHES): Apply the above. diffstat: 3 files changed, 55 insertions(+), 1 deletion(-) ChangeLog | 6 ++++ Makefile.am | 3 +- patches/cacao/arm-arch-defines.patch | 47 ++++++++++++++++++++++++++++++++++ diffs (77 lines): diff -r 4fdd81d3fe25 -r a56c45c73a74 ChangeLog --- a/ChangeLog Wed Dec 16 17:46:42 2009 +0000 +++ b/ChangeLog Thu Dec 17 14:51:20 2009 +0100 @@ -1,3 +1,9 @@ 2009-12-16 Andrew Haley + + * patches/cacao/arm-arch-defines.patch: New, fix cacao build on + ARM in thumb mode. Cacao bug PR135. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + 2009-12-16 Andrew Haley * patches/icedtea-linux-separate-debuginfo.patch: Fix buglets. diff -r 4fdd81d3fe25 -r a56c45c73a74 Makefile.am --- a/Makefile.am Wed Dec 16 17:46:42 2009 +0000 +++ b/Makefile.am Thu Dec 17 14:51:20 2009 +0100 @@ -307,7 +307,8 @@ ICEDTEA_PATCHES += \ ICEDTEA_PATCHES += \ patches/icedtea-cacao.patch \ patches/icedtea-cacao-no-mmap-first-page.patch \ - patches/cacao/no-strict-aliasing.patch + patches/cacao/no-strict-aliasing.patch \ + patches/cacao/arm-arch-defines.patch endif if WITH_CACAO ICEDTEA_PATCHES += \ diff -r 4fdd81d3fe25 -r a56c45c73a74 patches/cacao/arm-arch-defines.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/arm-arch-defines.patch Thu Dec 17 14:51:20 2009 +0100 @@ -0,0 +1,47 @@ +--- cacao/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h~ 2008-08-04 18:51:12.000000000 +0200 ++++ cacao/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h 2009-12-15 16:28:12.000000000 +0100 +@@ -33,7 +33,13 @@ + + /* NEC LE-IT: gcc has no way to easily check the arm architecture + * but defines only one of __ARM_ARCH_x__ to be true */ +-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7__) ++#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ ++ || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ ++ || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ ++ || defined(__ARM_ARCH_6M__) \ ++ || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ ++ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ++ + AO_INLINE void + AO_nop_full() + { +--- cacao/cacao/src/vm/jit/arm/md-atomic.hpp~ 2008-08-04 16:51:28.000000000 +0000 ++++ cacao/cacao/src/vm/jit/arm/md-atomic.hpp 2009-12-16 06:40:37.000000000 +0000 +@@ -44,26 +44,7 @@ + */ + inline static uint32_t Atomic_compare_and_swap_32(volatile uint32_t *p, uint32_t oldval, uint32_t newval) + { +- uint32_t result; +- uint32_t temp; +- +- /* TODO: improve this one! */ +- __asm__ __volatile__ ( +- "1:\t" +- "ldr %0,[%2]\n\t" +- "cmp %0,%4\n\t" +- "bne 2f\n\t" +- "swp %1,%3,[%2]\n\t" +- "cmp %1,%0\n\t" +- "swpne %0,%1,[%2]\n\t" +- "bne 1b\n\t" +- "2:" +- : "=&r" (result), "=&r" (temp) +- : "r" (p), "r" (newval), "r" (oldval) +- : "cc", "memory" +- ); +- +- return result; ++ return __sync_val_compare_and_swap (p, oldval, newval); + } + + From aph at redhat.com Thu Dec 17 08:23:01 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 17 Dec 2009 16:23:01 +0000 Subject: Backport 3 patches to icedtea6-1.5 Message-ID: <4B2A5AE5.8070803@redhat.com> One of these patches allows tools like jmap to work, the other two allow building on new GNU/Linux systems. Applied to icedtea6-1.5. Andrew. 2009-12-17 Andrew Haley * Makefile.am (ICEDTEA_PATCHES): Add rename-execvpe.patch, icedtea-6897844-xshm.patch, icedtea-linux-separate-debuginfo.patch. diff -r 98d260aaa04b Makefile.am --- a/Makefile.am Thu Dec 10 16:51:16 2009 +0000 +++ b/Makefile.am Thu Dec 17 16:19:24 2009 +0000 @@ -588,6 +588,7 @@ patches/icedtea-doc-headers.patch \ patches/openjdk/bidi-tests.patch \ patches/openjdk/annotation-tests.patch \ + patches/openjdk/rename-execvpe.patch \ patches/security/icedtea-6588003.patch \ patches/security/icedtea-6656586.patch \ patches/security/icedtea-6656610.patch \ @@ -623,7 +624,9 @@ patches/security/icedtea-6822057.patch \ patches/security/icedtea-6824265.patch \ patches/security/icedtea-6861062.patch \ - patches/security/icedtea-6872358.patch + patches/security/icedtea-6872358.patch \ + patches/icedtea-6897844-xshm.patch \ + patches/icedtea-linux-separate-debuginfo.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ From aph at icedtea.classpath.org Thu Dec 17 08:22:21 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Thu, 17 Dec 2009 16:22:21 +0000 Subject: /hg/release/icedtea6-1.5: * Makefile.am (ICEDTEA_PATCHES): Add r... Message-ID: changeset b0bb743c12d1 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=b0bb743c12d1 author: aph date: Thu Dec 17 16:24:09 2009 +0000 * Makefile.am (ICEDTEA_PATCHES): Add rename-execvpe.patch, icedtea-6897844-xshm.patch, icedtea-linux-separate- debuginfo.patch. diffstat: 5 files changed, 444 insertions(+), 1 deletion(-) ChangeLog | 6 Makefile.am | 5 patches/icedtea-6897844-xshm.patch | 13 patches/icedtea-linux-separate-debuginfo.patch | 379 ++++++++++++++++++++++++ patches/openjdk/rename-execvpe.patch | 42 ++ diffs (481 lines): diff -r 98d260aaa04b -r b0bb743c12d1 ChangeLog --- a/ChangeLog Thu Dec 10 16:51:16 2009 +0000 +++ b/ChangeLog Thu Dec 17 16:24:09 2009 +0000 @@ -1,3 +1,9 @@ 2009-12-10 Andrew Haley + + * Makefile.am (ICEDTEA_PATCHES): Add rename-execvpe.patch, + icedtea-6897844-xshm.patch, + icedtea-linux-separate-debuginfo.patch. + 2009-12-10 Andrew Haley * patches/hotspot/default/icedtea-debuginfo.patch: diff -r 98d260aaa04b -r b0bb743c12d1 Makefile.am --- a/Makefile.am Thu Dec 10 16:51:16 2009 +0000 +++ b/Makefile.am Thu Dec 17 16:24:09 2009 +0000 @@ -588,6 +588,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-doc-headers.patch \ patches/openjdk/bidi-tests.patch \ patches/openjdk/annotation-tests.patch \ + patches/openjdk/rename-execvpe.patch \ patches/security/icedtea-6588003.patch \ patches/security/icedtea-6656586.patch \ patches/security/icedtea-6656610.patch \ @@ -623,7 +624,9 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6822057.patch \ patches/security/icedtea-6824265.patch \ patches/security/icedtea-6861062.patch \ - patches/security/icedtea-6872358.patch + patches/security/icedtea-6872358.patch \ + patches/icedtea-6897844-xshm.patch \ + patches/icedtea-linux-separate-debuginfo.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 98d260aaa04b -r b0bb743c12d1 patches/icedtea-6897844-xshm.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-6897844-xshm.patch Thu Dec 17 16:24:09 2009 +0000 @@ -0,0 +1,13 @@ +--- old/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-17 10:36:09.000000000 -0400 ++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-30 13:25:52.000000000 -0400 +@@ -42,6 +42,10 @@ + #include + #include + #include ++#ifndef X_ShmAttach ++#include ++#include ++#endif + + extern int XShmQueryExtension(); + diff -r 98d260aaa04b -r b0bb743c12d1 patches/icedtea-linux-separate-debuginfo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-linux-separate-debuginfo.patch Thu Dec 17 16:24:09 2009 +0000 @@ -0,0 +1,379 @@ +2009-12-09 Andrew Haley + + * openjdk/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): + New variable. + (gnu_debuglink_crc32): New. + (build_symtab_internal): Rename from build_symtab, make static. + Add logic to look inside debuginfo files. + (open_debug_file, find_section_by_name, open_file_from_debug_link, + build_id_to_debug_filename, build_symtab_from_build_id, + build_symtab): New. + * openjdk/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): + Pass FILENAME to build_symtab(). + * openjdk/hotspot/agent/src/os/linux/symtab.h (build_symtab): + Add FILENAME arg. + +2009-12-16 Andrew Haley + + * openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link): + Check for NULL. + Fix off by one error in aligning the CRC: the offset is 4 bytes, + not 3. + +diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c +--- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 +@@ -174,7 +174,7 @@ + return NULL; + } + +- newlib->symtab = build_symtab(newlib->fd); ++ newlib->symtab = build_symtab(newlib->fd, libname); + if (newlib->symtab == NULL) { + print_debug("symbol table build failed for %s\n", newlib->name); + } +diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h +--- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 +@@ -32,7 +32,7 @@ + struct symtab; + + // build symbol table for a given ELF file descriptor +-struct symtab* build_symtab(int fd); ++struct symtab* build_symtab(int fd, const char *filename); + + // destroy the symbol table + void destroy_symtab(struct symtab* symtab); + +--- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:13:28.879599584 +0000 ++++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:14:15.871601226 +0000 +@@ -53,8 +53,274 @@ + struct hsearch_data *hash_table; + } symtab_t; + +-// read symbol table from given fd. +-struct symtab* build_symtab(int fd) { ++ ++// Directory that contains global debuginfo files. In theory it ++// should be possible to change this, but in a Java environment there ++// is no obvious place to put a user interface to do it. Maybe this ++// could be set with an environment variable. ++static const char debug_file_directory[] = "/usr/lib/debug"; ++ ++/* The CRC used in gnu_debuglink, retrieved from ++ http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ ++unsigned long gnu_debuglink_crc32 (unsigned long crc, ++ unsigned char *buf, size_t len) ++{ ++ static const unsigned long crc32_table[256] = ++ { ++ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, ++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, ++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, ++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, ++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, ++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, ++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, ++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, ++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, ++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, ++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, ++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, ++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, ++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, ++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, ++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, ++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, ++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, ++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, ++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, ++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, ++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, ++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, ++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, ++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, ++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, ++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, ++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, ++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, ++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, ++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, ++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, ++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, ++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, ++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, ++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, ++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, ++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, ++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, ++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, ++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, ++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, ++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, ++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, ++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, ++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, ++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, ++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, ++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, ++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, ++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, ++ 0x2d02ef8d ++ }; ++ unsigned char *end; ++ ++ crc = ~crc & 0xffffffff; ++ for (end = buf + len; buf < end; ++buf) ++ crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); ++ return ~crc & 0xffffffff; ++} ++ ++/* Open a debuginfo file and check its CRC. If it exists and the CRC ++ matches return its fd. */ ++static int ++open_debug_file (const char *pathname, unsigned int crc) ++{ ++ unsigned int file_crc = 0; ++ unsigned char buffer[8 * 1024]; ++ ++ int fd = pathmap_open(pathname); ++ ++ if (fd < 0) ++ return -1; ++ ++ lseek(fd, 0, SEEK_SET); ++ ++ for (;;) { ++ int len = read(fd, buffer, sizeof buffer); ++ if (len <= 0) ++ break; ++ file_crc = gnu_debuglink_crc32(file_crc, buffer, len); ++ } ++ ++ if (crc == file_crc) ++ return fd; ++ else { ++ close(fd); ++ return -1; ++ } ++} ++ ++/* Find an ELF section. */ ++static struct elf_section *find_section_by_name(char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ ELF_SHDR* cursct = NULL; ++ char *strtab; ++ int cnt; ++ ++ if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { ++ if ((scn_cache[ehdr->e_shstrndx].c_data ++ = read_section_data(fd, ehdr, cursct)) == NULL) { ++ return NULL; ++ } ++ } ++ ++ strtab = scn_cache[ehdr->e_shstrndx].c_data; ++ ++ for (cursct = shbuf, cnt = 0; ++ cnt < ehdr->e_shnum; ++ cnt++, cursct++) { ++ if (strcmp(cursct->sh_name + strtab, name) == 0) { ++ scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); ++ return &scn_cache[cnt]; ++ } ++ } ++ ++ return NULL; ++} ++ ++/* Look for a ".gnu_debuglink" section. If one exists, try to open a ++ suitable debuginfo file. */ ++static int open_file_from_debug_link(const char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ int debug_fd; ++ struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, ++ shbuf, scn_cache); ++ if (debug_link == NULL) ++ return -1; ++ char *debug_filename = debug_link->c_data; ++ int offset = (strlen(debug_filename) + 4) >> 2; ++ static unsigned int crc; ++ crc = ((unsigned int*)debug_link->c_data)[offset]; ++ char *debug_pathname = malloc(strlen(debug_filename) ++ + strlen(name) ++ + strlen(".debug/") ++ + strlen(debug_file_directory) ++ + 2); ++ strcpy(debug_pathname, name); ++ char *last_slash = strrchr(debug_pathname, '/'); ++ if (last_slash == NULL) ++ return -1; ++ ++ /* Look in the same directory as the object. */ ++ strcpy(last_slash+1, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ /* Look in a subdirectory named ".debug". */ ++ strcpy(last_slash+1, ".debug/"); ++ strcat(last_slash, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ /* Look in /usr/lib/debug + the full pathname. */ ++ strcpy(debug_pathname, debug_file_directory); ++ strcat(debug_pathname, name); ++ last_slash = strrchr(debug_pathname, '/'); ++ strcpy(last_slash+1, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ free(debug_pathname); ++ return -1; ++} ++ ++static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); ++ ++/* Look for a ".gnu_debuglink" section. If one exists, try to open a ++ suitable debuginfo file and read a symbol table from it. */ ++static struct symtab *build_symtab_from_debug_link(const char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); ++ ++ if (fd >= 0) { ++ struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); ++ close(fd); ++ return symtab; ++ } ++ ++ return NULL; ++} ++ ++// Given a build_id, find the associated debuginfo file ++static char * ++build_id_to_debug_filename (size_t size, unsigned char *data) ++{ ++ char *filename, *s; ++ ++ filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 ++ + 2 * size + (sizeof ".debug" - 1) + 1); ++ s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); ++ if (size > 0) ++ { ++ size--; ++ s += sprintf (s, "%02x", *data++); ++ } ++ if (size > 0) ++ *s++ = '/'; ++ while (size-- > 0) ++ s += sprintf (s, "%02x", *data++); ++ strcpy (s, ".debug"); ++ ++ return filename; ++} ++ ++// Read a build ID note. Try to open any associated debuginfo file ++// and return its symtab ++static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) ++{ ++ int fd; ++ struct symtab *symtab = NULL; ++ ++ unsigned char *bytes ++ = (unsigned char*)(note+1) + note->n_namesz; ++ unsigned char *filename ++ = (build_id_to_debug_filename (note->n_descsz, bytes)); ++ ++ fd = pathmap_open(filename); ++ if (fd >= 0) { ++ symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); ++ close(fd); ++ } ++ free(filename); ++ ++ return symtab; ++} ++ ++// read symbol table from given fd. If try_debuginfo) is true, also ++// try to open an associated debuginfo file ++static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { + ELF_EHDR ehdr; + char *names = NULL; + struct symtab* symtab = NULL; +@@ -90,7 +356,8 @@ + + for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { + scn_cache[cnt].c_shdr = cursct; +- if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { ++ if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB ++ || cursct->sh_type == SHT_NOTE) { + if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { + goto quit; + } +@@ -163,6 +430,30 @@ + } + } + ++ // If we have no symtab in this file, look for a separate debuginfo file ++ if (try_debuginfo) { ++#ifdef NT_GNU_BUILD_ID ++ // First we look for a Build ID ++ for (cursct = shbuf, cnt = 0; ++ symtab == NULL && cnt < ehdr.e_shnum; ++ cnt++) { ++ if (cursct->sh_type == SHT_NOTE) { ++ Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; ++ if (note->n_type == NT_GNU_BUILD_ID) { ++ symtab = build_symtab_from_build_id(note); ++ } ++ } ++ cursct++; ++ } ++#endif ++ ++ // Then, if that doesn't work, the debug link ++ if (symtab == NULL) { ++ symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, ++ scn_cache); ++ } ++ } ++ + quit: + if (shbuf) free(shbuf); + if (phbuf) free(phbuf); +@@ -177,6 +468,11 @@ + return symtab; + } + ++struct symtab* build_symtab(int fd, const char *filename) { ++ return build_symtab_internal(fd, filename, /* try_debuginfo */ true); ++} ++ ++ + void destroy_symtab(struct symtab* symtab) { + if (!symtab) return; + if (symtab->strs) free(symtab->strs); diff -r 98d260aaa04b -r b0bb743c12d1 patches/openjdk/rename-execvpe.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/rename-execvpe.patch Thu Dec 17 16:24:09 2009 +0000 @@ -0,0 +1,42 @@ +# HG changeset patch +# User martin +# Date 1248923453 25200 +# Node ID 0f6e8cdc0cbab5221e81b7d25f1b869bd6ecf34a +# Parent ac4f0c58f4c771267f1b5c65a8cf5bf2722a881b +[mq]: rename-execvpe + +diff --git a/src/solaris/native/java/lang/UNIXProcess_md.c b/src/solaris/native/java/lang/UNIXProcess_md.c +--- openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c ++++ openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c +@@ -423,9 +423,20 @@ + return -1; + } + +-/* execvpe should have been included in the Unix standards. */ ++/** ++ * 'execvpe' should have been included in the Unix standards, ++ * and is a GNU extension in glibc 2.10. ++ * ++ * JDK_execvpe is identical to execvp, except that the child environment is ++ * specified via the 3rd argument instead of being inherited from environ. ++ * ++ * This implementation of JDK_execvpe does not work if memory is shared ++ * with the parent, when using vfork(2), or clone(2) with CLONE_VM. ++ */ + static int +-execvpe(const char *file, const char *const argv[], const char *const envp[]) ++JDK_execvpe(const char *file, ++ const char *const argv[], ++ const char *const envp[]) + { + /* This is one of the rare times it's more portable to declare an + * external symbol explicitly, rather than via a system header. +@@ -601,7 +612,7 @@ + if (fcntl(FAIL_FILENO, F_SETFD, FD_CLOEXEC) == -1) + goto WhyCantJohnnyExec; + +- execvpe(argv[0], argv, envv); ++ JDK_execvpe(argv[0], argv, envv); + + WhyCantJohnnyExec: + /* We used to go to an awful lot of trouble to predict whether the From aph at redhat.com Thu Dec 17 08:59:20 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 17 Dec 2009 16:59:20 +0000 Subject: Backport patches from trunk to 1.6 branch Message-ID: <4B2A6368.1020201@redhat.com> Does what it says on the tin... Also, I noticed that mkbc.c was missing from EXTRA_DIST. Andrew. 2009-12-17 Andrew Haley * Makefile.am (EXTRA_DIST): Add mkbc.c. (ICEDTEA_PATCHES): Add icedtea-6897844-xshm.patch and icedtea-linux-separate-debuginfo.patch * patches/icedtea-6897844-xshm.patch, patches/icedtea-linux-separate-debuginfo.patch: New. diff -r cc49b25f85f4 Makefile.am --- a/Makefile.am Thu Dec 10 17:26:37 2009 +0000 +++ b/Makefile.am Thu Dec 17 16:56:57 2009 +0000 @@ -111,7 +111,8 @@ HACKING pulseaudio fsg.sh \ plugin \ hotspot.map \ - autogen.sh + autogen.sh \ + mkbc.c # The Binary plugs directory is called jdk1.7.0 for historical reasons. The # name is completely irrelevant; only contains the plugs to build IcedTea. @@ -641,7 +642,9 @@ patches/security/icedtea-6824265.patch \ patches/security/icedtea-6861062.patch \ patches/security/icedtea-6872358.patch \ - patches/icedtea-jar-misc.patch + patches/icedtea-jar-misc.patch \ + patches/icedtea-6897844-xshm.patch \ + patches/icedtea-linux-separate-debuginfo.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ --- old/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-17 10:36:09.000000000 -0400 +++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-30 13:25:52.000000000 -0400 @@ -42,6 +42,10 @@ #include #include #include +#ifndef X_ShmAttach +#include +#include +#endif extern int XShmQueryExtension(); 2009-12-09 Andrew Haley * openjdk/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): New variable. (gnu_debuglink_crc32): New. (build_symtab_internal): Rename from build_symtab, make static. Add logic to look inside debuginfo files. (open_debug_file, find_section_by_name, open_file_from_debug_link, build_id_to_debug_filename, build_symtab_from_build_id, build_symtab): New. * openjdk/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): Pass FILENAME to build_symtab(). * openjdk/hotspot/agent/src/os/linux/symtab.h (build_symtab): Add FILENAME arg. 2009-12-16 Andrew Haley * openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link): Check for NULL. Fix off by one error in aligning the CRC: the offset is 4 bytes, not 3. diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 @@ -174,7 +174,7 @@ return NULL; } - newlib->symtab = build_symtab(newlib->fd); + newlib->symtab = build_symtab(newlib->fd, libname); if (newlib->symtab == NULL) { print_debug("symbol table build failed for %s\n", newlib->name); } diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 @@ -32,7 +32,7 @@ struct symtab; // build symbol table for a given ELF file descriptor -struct symtab* build_symtab(int fd); +struct symtab* build_symtab(int fd, const char *filename); // destroy the symbol table void destroy_symtab(struct symtab* symtab); --- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:13:28.879599584 +0000 +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:14:15.871601226 +0000 @@ -53,8 +53,274 @@ struct hsearch_data *hash_table; } symtab_t; -// read symbol table from given fd. -struct symtab* build_symtab(int fd) { + +// Directory that contains global debuginfo files. In theory it +// should be possible to change this, but in a Java environment there +// is no obvious place to put a user interface to do it. Maybe this +// could be set with an environment variable. +static const char debug_file_directory[] = "/usr/lib/debug"; + +/* The CRC used in gnu_debuglink, retrieved from + http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ +unsigned long gnu_debuglink_crc32 (unsigned long crc, + unsigned char *buf, size_t len) +{ + static const unsigned long crc32_table[256] = + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d + }; + unsigned char *end; + + crc = ~crc & 0xffffffff; + for (end = buf + len; buf < end; ++buf) + crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); + return ~crc & 0xffffffff; +} + +/* Open a debuginfo file and check its CRC. If it exists and the CRC + matches return its fd. */ +static int +open_debug_file (const char *pathname, unsigned int crc) +{ + unsigned int file_crc = 0; + unsigned char buffer[8 * 1024]; + + int fd = pathmap_open(pathname); + + if (fd < 0) + return -1; + + lseek(fd, 0, SEEK_SET); + + for (;;) { + int len = read(fd, buffer, sizeof buffer); + if (len <= 0) + break; + file_crc = gnu_debuglink_crc32(file_crc, buffer, len); + } + + if (crc == file_crc) + return fd; + else { + close(fd); + return -1; + } +} + +/* Find an ELF section. */ +static struct elf_section *find_section_by_name(char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + ELF_SHDR* cursct = NULL; + char *strtab; + int cnt; + + if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { + if ((scn_cache[ehdr->e_shstrndx].c_data + = read_section_data(fd, ehdr, cursct)) == NULL) { + return NULL; + } + } + + strtab = scn_cache[ehdr->e_shstrndx].c_data; + + for (cursct = shbuf, cnt = 0; + cnt < ehdr->e_shnum; + cnt++, cursct++) { + if (strcmp(cursct->sh_name + strtab, name) == 0) { + scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); + return &scn_cache[cnt]; + } + } + + return NULL; +} + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file. */ +static int open_file_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + int debug_fd; + struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, + shbuf, scn_cache); + if (debug_link == NULL) + return -1; + char *debug_filename = debug_link->c_data; + int offset = (strlen(debug_filename) + 4) >> 2; + static unsigned int crc; + crc = ((unsigned int*)debug_link->c_data)[offset]; + char *debug_pathname = malloc(strlen(debug_filename) + + strlen(name) + + strlen(".debug/") + + strlen(debug_file_directory) + + 2); + strcpy(debug_pathname, name); + char *last_slash = strrchr(debug_pathname, '/'); + if (last_slash == NULL) + return -1; + + /* Look in the same directory as the object. */ + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in a subdirectory named ".debug". */ + strcpy(last_slash+1, ".debug/"); + strcat(last_slash, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + /* Look in /usr/lib/debug + the full pathname. */ + strcpy(debug_pathname, debug_file_directory); + strcat(debug_pathname, name); + last_slash = strrchr(debug_pathname, '/'); + strcpy(last_slash+1, debug_filename); + + debug_fd = open_debug_file(debug_pathname, crc); + if (debug_fd >= 0) { + free(debug_pathname); + return debug_fd; + } + + free(debug_pathname); + return -1; +} + +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); + +/* Look for a ".gnu_debuglink" section. If one exists, try to open a + suitable debuginfo file and read a symbol table from it. */ +static struct symtab *build_symtab_from_debug_link(const char *name, + int fd, + ELF_EHDR *ehdr, + ELF_SHDR *shbuf, + struct elf_section *scn_cache) +{ + fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); + + if (fd >= 0) { + struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + return symtab; + } + + return NULL; +} + +// Given a build_id, find the associated debuginfo file +static char * +build_id_to_debug_filename (size_t size, unsigned char *data) +{ + char *filename, *s; + + filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 + + 2 * size + (sizeof ".debug" - 1) + 1); + s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); + if (size > 0) + { + size--; + s += sprintf (s, "%02x", *data++); + } + if (size > 0) + *s++ = '/'; + while (size-- > 0) + s += sprintf (s, "%02x", *data++); + strcpy (s, ".debug"); + + return filename; +} + +// Read a build ID note. Try to open any associated debuginfo file +// and return its symtab +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) +{ + int fd; + struct symtab *symtab = NULL; + + unsigned char *bytes + = (unsigned char*)(note+1) + note->n_namesz; + unsigned char *filename + = (build_id_to_debug_filename (note->n_descsz, bytes)); + + fd = pathmap_open(filename); + if (fd >= 0) { + symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); + close(fd); + } + free(filename); + + return symtab; +} + +// read symbol table from given fd. If try_debuginfo) is true, also +// try to open an associated debuginfo file +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { ELF_EHDR ehdr; char *names = NULL; struct symtab* symtab = NULL; @@ -90,7 +356,8 @@ for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { scn_cache[cnt].c_shdr = cursct; - if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { + if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB + || cursct->sh_type == SHT_NOTE) { if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { goto quit; } @@ -163,6 +430,30 @@ } } + // If we have no symtab in this file, look for a separate debuginfo file + if (try_debuginfo) { +#ifdef NT_GNU_BUILD_ID + // First we look for a Build ID + for (cursct = shbuf, cnt = 0; + symtab == NULL && cnt < ehdr.e_shnum; + cnt++) { + if (cursct->sh_type == SHT_NOTE) { + Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; + if (note->n_type == NT_GNU_BUILD_ID) { + symtab = build_symtab_from_build_id(note); + } + } + cursct++; + } +#endif + + // Then, if that doesn't work, the debug link + if (symtab == NULL) { + symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, + scn_cache); + } + } + quit: if (shbuf) free(shbuf); if (phbuf) free(phbuf); @@ -177,6 +468,11 @@ return symtab; } +struct symtab* build_symtab(int fd, const char *filename) { + return build_symtab_internal(fd, filename, /* try_debuginfo */ true); +} + + void destroy_symtab(struct symtab* symtab) { if (!symtab) return; if (symtab->strs) free(symtab->strs); From aph at icedtea.classpath.org Thu Dec 17 08:55:10 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Thu, 17 Dec 2009 16:55:10 +0000 Subject: /hg/release/icedtea6-1.6: * Makefile.am (EXTRA_DIST): Add mkbc.c. Message-ID: changeset 66c327225114 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=66c327225114 author: aph date: Thu Dec 17 16:59:58 2009 +0000 * Makefile.am (EXTRA_DIST): Add mkbc.c. (ICEDTEA_PATCHES): Add icedtea-6897844-xshm.patch and icedtea-linux-separate-debuginfo.patch * patches/icedtea-6897844-xshm.patch, patches/icedtea-linux- separate-debuginfo.patch: New. diffstat: 4 files changed, 405 insertions(+), 2 deletions(-) ChangeLog | 8 Makefile.am | 7 patches/icedtea-6897844-xshm.patch | 13 patches/icedtea-linux-separate-debuginfo.patch | 379 ++++++++++++++++++++++++ diffs (439 lines): diff -r cc49b25f85f4 -r 66c327225114 ChangeLog --- a/ChangeLog Thu Dec 10 17:26:37 2009 +0000 +++ b/ChangeLog Thu Dec 17 16:59:58 2009 +0000 @@ -1,3 +1,11 @@ 2009-12-10 Andrew Haley + + * Makefile.am (EXTRA_DIST): Add mkbc.c. + (ICEDTEA_PATCHES): Add icedtea-6897844-xshm.patch and + icedtea-linux-separate-debuginfo.patch + * patches/icedtea-6897844-xshm.patch, + patches/icedtea-linux-separate-debuginfo.patch: New. + 2009-12-10 Andrew Haley * patches/hotspot/default/icedtea-debuginfo.patch: diff -r cc49b25f85f4 -r 66c327225114 Makefile.am --- a/Makefile.am Thu Dec 10 17:26:37 2009 +0000 +++ b/Makefile.am Thu Dec 17 16:59:58 2009 +0000 @@ -111,7 +111,8 @@ EXTRA_DIST = rt generated \ HACKING pulseaudio fsg.sh \ plugin \ hotspot.map \ - autogen.sh + autogen.sh \ + mkbc.c # The Binary plugs directory is called jdk1.7.0 for historical reasons. The # name is completely irrelevant; only contains the plugs to build IcedTea. @@ -641,7 +642,9 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6824265.patch \ patches/security/icedtea-6861062.patch \ patches/security/icedtea-6872358.patch \ - patches/icedtea-jar-misc.patch + patches/icedtea-jar-misc.patch \ + patches/icedtea-6897844-xshm.patch \ + patches/icedtea-linux-separate-debuginfo.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r cc49b25f85f4 -r 66c327225114 patches/icedtea-6897844-xshm.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-6897844-xshm.patch Thu Dec 17 16:59:58 2009 +0000 @@ -0,0 +1,13 @@ +--- old/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-17 10:36:09.000000000 -0400 ++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h 2009-07-30 13:25:52.000000000 -0400 +@@ -42,6 +42,10 @@ + #include + #include + #include ++#ifndef X_ShmAttach ++#include ++#include ++#endif + + extern int XShmQueryExtension(); + diff -r cc49b25f85f4 -r 66c327225114 patches/icedtea-linux-separate-debuginfo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-linux-separate-debuginfo.patch Thu Dec 17 16:59:58 2009 +0000 @@ -0,0 +1,379 @@ +2009-12-09 Andrew Haley + + * openjdk/hotspot/agent/src/os/linux/symtab.c (debug_file_directory): + New variable. + (gnu_debuglink_crc32): New. + (build_symtab_internal): Rename from build_symtab, make static. + Add logic to look inside debuginfo files. + (open_debug_file, find_section_by_name, open_file_from_debug_link, + build_id_to_debug_filename, build_symtab_from_build_id, + build_symtab): New. + * openjdk/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd): + Pass FILENAME to build_symtab(). + * openjdk/hotspot/agent/src/os/linux/symtab.h (build_symtab): + Add FILENAME arg. + +2009-12-16 Andrew Haley + + * openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link): + Check for NULL. + Fix off by one error in aligning the CRC: the offset is 4 bytes, + not 3. + +diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c +--- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2009-12-04 16:29:27.552837905 +0000 +@@ -174,7 +174,7 @@ + return NULL; + } + +- newlib->symtab = build_symtab(newlib->fd); ++ newlib->symtab = build_symtab(newlib->fd, libname); + if (newlib->symtab == NULL) { + print_debug("symbol table build failed for %s\n", newlib->name); + } +diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h +--- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h 2009-05-15 00:36:38.000000000 +0100 ++++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000 +@@ -32,7 +32,7 @@ + struct symtab; + + // build symbol table for a given ELF file descriptor +-struct symtab* build_symtab(int fd); ++struct symtab* build_symtab(int fd, const char *filename); + + // destroy the symbol table + void destroy_symtab(struct symtab* symtab); + +--- openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:13:28.879599584 +0000 ++++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-16 17:14:15.871601226 +0000 +@@ -53,8 +53,274 @@ + struct hsearch_data *hash_table; + } symtab_t; + +-// read symbol table from given fd. +-struct symtab* build_symtab(int fd) { ++ ++// Directory that contains global debuginfo files. In theory it ++// should be possible to change this, but in a Java environment there ++// is no obvious place to put a user interface to do it. Maybe this ++// could be set with an environment variable. ++static const char debug_file_directory[] = "/usr/lib/debug"; ++ ++/* The CRC used in gnu_debuglink, retrieved from ++ http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */ ++unsigned long gnu_debuglink_crc32 (unsigned long crc, ++ unsigned char *buf, size_t len) ++{ ++ static const unsigned long crc32_table[256] = ++ { ++ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, ++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, ++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, ++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, ++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, ++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, ++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, ++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, ++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, ++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, ++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, ++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, ++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, ++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, ++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, ++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, ++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, ++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, ++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, ++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, ++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, ++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, ++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, ++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, ++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, ++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, ++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, ++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, ++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, ++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, ++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, ++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, ++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, ++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, ++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, ++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, ++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, ++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, ++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, ++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, ++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, ++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, ++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, ++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, ++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, ++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, ++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, ++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, ++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, ++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, ++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, ++ 0x2d02ef8d ++ }; ++ unsigned char *end; ++ ++ crc = ~crc & 0xffffffff; ++ for (end = buf + len; buf < end; ++buf) ++ crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); ++ return ~crc & 0xffffffff; ++} ++ ++/* Open a debuginfo file and check its CRC. If it exists and the CRC ++ matches return its fd. */ ++static int ++open_debug_file (const char *pathname, unsigned int crc) ++{ ++ unsigned int file_crc = 0; ++ unsigned char buffer[8 * 1024]; ++ ++ int fd = pathmap_open(pathname); ++ ++ if (fd < 0) ++ return -1; ++ ++ lseek(fd, 0, SEEK_SET); ++ ++ for (;;) { ++ int len = read(fd, buffer, sizeof buffer); ++ if (len <= 0) ++ break; ++ file_crc = gnu_debuglink_crc32(file_crc, buffer, len); ++ } ++ ++ if (crc == file_crc) ++ return fd; ++ else { ++ close(fd); ++ return -1; ++ } ++} ++ ++/* Find an ELF section. */ ++static struct elf_section *find_section_by_name(char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ ELF_SHDR* cursct = NULL; ++ char *strtab; ++ int cnt; ++ ++ if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { ++ if ((scn_cache[ehdr->e_shstrndx].c_data ++ = read_section_data(fd, ehdr, cursct)) == NULL) { ++ return NULL; ++ } ++ } ++ ++ strtab = scn_cache[ehdr->e_shstrndx].c_data; ++ ++ for (cursct = shbuf, cnt = 0; ++ cnt < ehdr->e_shnum; ++ cnt++, cursct++) { ++ if (strcmp(cursct->sh_name + strtab, name) == 0) { ++ scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); ++ return &scn_cache[cnt]; ++ } ++ } ++ ++ return NULL; ++} ++ ++/* Look for a ".gnu_debuglink" section. If one exists, try to open a ++ suitable debuginfo file. */ ++static int open_file_from_debug_link(const char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ int debug_fd; ++ struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr, ++ shbuf, scn_cache); ++ if (debug_link == NULL) ++ return -1; ++ char *debug_filename = debug_link->c_data; ++ int offset = (strlen(debug_filename) + 4) >> 2; ++ static unsigned int crc; ++ crc = ((unsigned int*)debug_link->c_data)[offset]; ++ char *debug_pathname = malloc(strlen(debug_filename) ++ + strlen(name) ++ + strlen(".debug/") ++ + strlen(debug_file_directory) ++ + 2); ++ strcpy(debug_pathname, name); ++ char *last_slash = strrchr(debug_pathname, '/'); ++ if (last_slash == NULL) ++ return -1; ++ ++ /* Look in the same directory as the object. */ ++ strcpy(last_slash+1, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ /* Look in a subdirectory named ".debug". */ ++ strcpy(last_slash+1, ".debug/"); ++ strcat(last_slash, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ /* Look in /usr/lib/debug + the full pathname. */ ++ strcpy(debug_pathname, debug_file_directory); ++ strcat(debug_pathname, name); ++ last_slash = strrchr(debug_pathname, '/'); ++ strcpy(last_slash+1, debug_filename); ++ ++ debug_fd = open_debug_file(debug_pathname, crc); ++ if (debug_fd >= 0) { ++ free(debug_pathname); ++ return debug_fd; ++ } ++ ++ free(debug_pathname); ++ return -1; ++} ++ ++static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo); ++ ++/* Look for a ".gnu_debuglink" section. If one exists, try to open a ++ suitable debuginfo file and read a symbol table from it. */ ++static struct symtab *build_symtab_from_debug_link(const char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache); ++ ++ if (fd >= 0) { ++ struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); ++ close(fd); ++ return symtab; ++ } ++ ++ return NULL; ++} ++ ++// Given a build_id, find the associated debuginfo file ++static char * ++build_id_to_debug_filename (size_t size, unsigned char *data) ++{ ++ char *filename, *s; ++ ++ filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 ++ + 2 * size + (sizeof ".debug" - 1) + 1); ++ s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory); ++ if (size > 0) ++ { ++ size--; ++ s += sprintf (s, "%02x", *data++); ++ } ++ if (size > 0) ++ *s++ = '/'; ++ while (size-- > 0) ++ s += sprintf (s, "%02x", *data++); ++ strcpy (s, ".debug"); ++ ++ return filename; ++} ++ ++// Read a build ID note. Try to open any associated debuginfo file ++// and return its symtab ++static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note) ++{ ++ int fd; ++ struct symtab *symtab = NULL; ++ ++ unsigned char *bytes ++ = (unsigned char*)(note+1) + note->n_namesz; ++ unsigned char *filename ++ = (build_id_to_debug_filename (note->n_descsz, bytes)); ++ ++ fd = pathmap_open(filename); ++ if (fd >= 0) { ++ symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false); ++ close(fd); ++ } ++ free(filename); ++ ++ return symtab; ++} ++ ++// read symbol table from given fd. If try_debuginfo) is true, also ++// try to open an associated debuginfo file ++static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) { + ELF_EHDR ehdr; + char *names = NULL; + struct symtab* symtab = NULL; +@@ -90,7 +356,8 @@ + + for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) { + scn_cache[cnt].c_shdr = cursct; +- if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) { ++ if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB ++ || cursct->sh_type == SHT_NOTE) { + if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) { + goto quit; + } +@@ -163,6 +430,30 @@ + } + } + ++ // If we have no symtab in this file, look for a separate debuginfo file ++ if (try_debuginfo) { ++#ifdef NT_GNU_BUILD_ID ++ // First we look for a Build ID ++ for (cursct = shbuf, cnt = 0; ++ symtab == NULL && cnt < ehdr.e_shnum; ++ cnt++) { ++ if (cursct->sh_type == SHT_NOTE) { ++ Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data; ++ if (note->n_type == NT_GNU_BUILD_ID) { ++ symtab = build_symtab_from_build_id(note); ++ } ++ } ++ cursct++; ++ } ++#endif ++ ++ // Then, if that doesn't work, the debug link ++ if (symtab == NULL) { ++ symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf, ++ scn_cache); ++ } ++ } ++ + quit: + if (shbuf) free(shbuf); + if (phbuf) free(phbuf); +@@ -177,6 +468,11 @@ + return symtab; + } + ++struct symtab* build_symtab(int fd, const char *filename) { ++ return build_symtab_internal(fd, filename, /* try_debuginfo */ true); ++} ++ ++ + void destroy_symtab(struct symtab* symtab) { + if (!symtab) return; + if (symtab->strs) free(symtab->strs); From mjw at icedtea.classpath.org Thu Dec 17 13:42:05 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Thu, 17 Dec 2009 21:42:05 +0000 Subject: /hg/release/icedtea6-1.5: 9 new changesets Message-ID: changeset 85ecc550df1f in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=85ecc550df1f author: Mark Wielaard date: Wed Aug 05 20:43:00 2009 +0200 Add systemtap java method tracing support. 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. * tapset/hotspot.stp.in: Add tapset functions for hotspot.method_entry, hotspot.method_return, hotspot.compiled_method_load and hotspot.compiled_method_unload. * NEWS: Metion new support for java method tracing. * INSTALL: Add that java method tracing support needs systemtap 0.9.9 or higher. changeset e77f7270fd22 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=e77f7270fd22 author: Mark Wielaard date: Thu Dec 17 16:54:20 2009 +0100 Move NEWS about systemtap support from 1.6 to 1.5.4. changeset 58b7ae54c4de in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=58b7ae54c4de author: Mark Wielaard date: Wed Oct 14 15:42:32 2009 +0200 Enable systemtap JNI tracing. 2009-10-14 Mark Wielaard * configure.ac: When enabling systemtap support check sys/sdt.h and g++ are recent enough to allow probes in class constructors and destructors. * patches/icedtea-systemtap.patch: Enable compiling probes in jni.cpp. Rewrite SetField and SetStaticField macros to use DTRACE_PROBE interface directly instead of generating dtrace implementation calls. Clean up dtrace.hpp. * tapset/hotspot.stp.in: Enable hotspot.monitor_notify. Fix up comments. changeset 397c2dcd4a51 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=397c2dcd4a51 author: Mark Wielaard date: Mon Oct 19 21:23:00 2009 +0200 JNI GetObjectArrayElement mark probe ret value shadowed. 2009-10-19 Mark Wielaard * patches/icedtea-systemtap.patch: Add fix for GetObjectArrayElement return probe ret value. changeset 6bb9237570f2 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=6bb9237570f2 author: Mark Wielaard date: Mon Oct 19 21:49:33 2009 +0200 Fix JNI DEFINE_NEWSCALARARRAY usage of DT_RETURN_MARK_DECL_FOR. 2009-10-19 Mark Wielaard * patches/icedtea-systemtap.patch: Add fix for JNI DEFINE_NEWSCALARARRAY uses DT_RETURN_MARK_DECL_FOR. changeset 292aecacc3f7 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=292aecacc3f7 author: Mark Wielaard date: Mon Oct 19 23:19:26 2009 +0200 Add hotspot_jni tapset. 2009-10-19 Mark Wielaard * tapset/hotspot_jni.stp.in: New tapset. * scripts/jni_create_stap.c: New file. * scripts/jni_desc: Likewise. * configure.ac (AC_CONFIG_FILES): Add tapset/hotspot_jni.stp. * Makefile.am (EXTRA_DIST): Add tapsets and scripts. (stamps/icedtea.stamp): Handle tapset/hotspot_jni.stp.in. (stamps/icedtea-debug.stamp): Likewise. changeset 31398144ad0b in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=31398144ad0b author: Mark Wielaard date: Tue Oct 13 11:13:46 2009 +0200 tapsets/hotspot.stp.in (hotspot.gc_end): Match gc__end, not begin. changeset ff13d97de406 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=ff13d97de406 author: Mark Wielaard date: Sun Dec 13 22:32:25 2009 +0100 Add systemtap jstack support. * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. (stamps /icedtea-debug.stamp): Likewise. * configure.ac (AC_CONFIG_FILES): Add tapset/jstack.stp. * tapset/jstack.stp.in: New tapset. changeset 60f5ceb2ad2e in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=60f5ceb2ad2e author: doko at ubuntu.com date: Thu Aug 27 17:48:27 2009 +0200 2009-08-27 Kees Cook * patches/hotspot/default/icedtea-gcc-stack-markings.patch: New. Adding stack markings to the x86 assembly for not using executable stack. diffstat: 12 files changed, 9834 insertions(+), 60 deletions(-) ChangeLog | 59 INSTALL | 1 Makefile.am | 25 NEWS | 4 configure.ac | 39 patches/hotspot/default/icedtea-gcc-stack-markings.patch | 14 patches/icedtea-systemtap.patch | 108 scripts/jni_create_stap.c | 190 scripts/jni_desc | 1471 ++ tapset/hotspot.stp.in | 96 tapset/hotspot_jni.stp.in | 7384 ++++++++++++++ tapset/jstack.stp.in | 503 diffs (truncated from 10091 to 500 lines): diff -r b0bb743c12d1 -r 60f5ceb2ad2e ChangeLog --- a/ChangeLog Thu Dec 17 16:24:09 2009 +0000 +++ b/ChangeLog Thu Aug 27 17:48:27 2009 +0200 @@ -3,6 +3,65 @@ 2009-12-17 Andrew Haley + + * patches/hotspot/default/icedtea-gcc-stack-markings.patch: New. + Adding stack markings to the x86 assembly for not using executable + stack. + +2009-12-13 Mark Wielaard + + * Makefile.am (stamps/icedtea.stamp): Install jstack.stp. + (stamps/icedtea-debug.stamp): Likewise. + * configure.ac (AC_CONFIG_FILES): Add tapset/jstack.stp. + * tapset/jstack.stp.in: New tapset. + +2009-10-13 Mark Wielaard + + * tapsets/hotspot.stp.in (hotspot.gc_end): Match gc__end, not begin. + +2009-10-19 Mark Wielaard + + * tapset/hotspot_jni.stp.in: New tapset. + * scripts/jni_create_stap.c: New file. + * scripts/jni_desc: Likewise. + * configure.ac (AC_CONFIG_FILES): Add tapset/hotspot_jni.stp. + * Makefile.am (EXTRA_DIST): Add tapsets and scripts. + (stamps/icedtea.stamp): Handle tapset/hotspot_jni.stp.in. + (stamps/icedtea-debug.stamp): Likewise. + +2009-10-19 Mark Wielaard + + * patches/icedtea-systemtap.patch: Add fix for JNI + DEFINE_NEWSCALARARRAY uses DT_RETURN_MARK_DECL_FOR. + +2009-10-19 Mark Wielaard + + * patches/icedtea-systemtap.patch: Add fix for GetObjectArrayElement + return probe ret value. + +2009-10-14 Mark Wielaard + + * configure.ac: When enabling systemtap support check sys/sdt.h + and g++ are recent enough to allow probes in class constructors + and destructors. + * patches/icedtea-systemtap.patch: Enable compiling probes in + jni.cpp. Rewrite SetField and SetStaticField macros + to use DTRACE_PROBE interface directly instead of generating + dtrace implementation calls. Clean up dtrace.hpp. + * tapset/hotspot.stp.in: Enable hotspot.monitor_notify. Fix up + comments. + +2009-08-05 Mark Wielaard + + * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. + * tapset/hotspot.stp.in: Add tapset functions for + hotspot.method_entry, hotspot.method_return, + hotspot.compiled_method_load and hotspot.compiled_method_unload. + * NEWS: Metion new support for java method tracing. + * INSTALL: Add that java method tracing support needs systemtap + 0.9.9 or higher. 2009-12-10 Andrew Haley diff -r b0bb743c12d1 -r 60f5ceb2ad2e INSTALL --- a/INSTALL Thu Dec 17 16:24:09 2009 +0000 +++ b/INSTALL Thu Aug 27 17:48:27 2009 +0200 @@ -48,6 +48,7 @@ you cannot move that to another location you cannot move that to another location without adjusting the paths in the tapset/hotspot.stp file. For example: --enable-systemtap --with-abs-install-dir=/usr/lib/jvm/java-1.6.0-openjdk +(Java method tracing works starting with systemtap 0.9.9) See ./configure --help if you need to override the defaults. diff -r b0bb743c12d1 -r 60f5ceb2ad2e Makefile.am --- a/Makefile.am Thu Dec 17 16:24:09 2009 +0000 +++ b/Makefile.am Thu Aug 27 17:48:27 2009 +0200 @@ -106,7 +106,11 @@ EXTRA_DIST = rt generated \ HACKING pulseaudio fsg.sh \ plugin \ hotspot.map \ - autogen.sh + autogen.sh \ + tapset/hotspot.stp.in \ + tapset/hotspot_jni.stp.in \ + scripts/jni_create_stap.c \ + scripts/jni_desc # The Binary plugs directory is called jdk1.7.0 for historical reasons. The # name is completely irrelevant; only contains the plugs to build IcedTea. @@ -706,6 +710,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ patches/openjdk/6648816.patch \ + patches/hotspot/$(HSBUILD)/icedtea-gcc-stack-markings.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp @@ -1215,10 +1220,17 @@ if ENABLE_SYSTEMTAP sed -e '/\/client\/libjvm.so/d' \ < $(abs_top_builddir)/tapset/hotspot.stp \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ + sed -e '/\/client\/libjvm.so/d' \ + < $(abs_top_builddir)/tapset/hotspot_jni.stp \ + > $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ else \ cp $(abs_top_builddir)/tapset/hotspot.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ - fi + cp $(abs_top_builddir)/tapset/hotspot_jni.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ + fi; \ + cp $(abs_top_builddir)/tapset/jstack.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/jstack.stp endif @echo "IcedTea is served:" $(BUILD_OUTPUT_DIR) mkdir -p stamps @@ -1300,10 +1312,17 @@ if ENABLE_SYSTEMTAP sed -e '/\/client\/libjvm.so/d' \ < $(abs_top_builddir)/tapset/hotspot.stp \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ + sed -e '/\/client\/libjvm.so/d' \ + < $(abs_top_builddir)/tapset/hotspot_jni.stp \ + > $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ else \ cp $(abs_top_builddir)/tapset/hotspot.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ - fi + cp $(abs_top_builddir)/tapset/hotspot_jni.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot_jni.stp; \ + fi; \ + cp $(abs_top_builddir)/tapset/jstack.stp \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/jstack.stp endif @echo "IcedTea (debug build) is served:" \ $(BUILD_OUTPUT_DIR)-debug diff -r b0bb743c12d1 -r 60f5ceb2ad2e NEWS --- a/NEWS Thu Dec 17 16:24:09 2009 +0000 +++ b/NEWS Thu Aug 27 17:48:27 2009 +0200 @@ -1,3 +1,7 @@ New in release 1.5.3 (2009-11-09) +New in release 1.5.4 + +- Added java method tracing using systemtap version 0.9.9+. + New in release 1.5.3 (2009-11-09) - Latest security updates: - (CVE-2009-3728) ICC_Profile file existence detection information leak (6631533) diff -r b0bb743c12d1 -r 60f5ceb2ad2e configure.ac --- a/configure.ac Thu Dec 17 16:24:09 2009 +0000 +++ b/configure.ac Thu Aug 27 17:48:27 2009 +0200 @@ -382,6 +382,43 @@ AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUN [SDT_H_FOUND='no'; AC_MSG_ERROR([systemtap support needs sys/sdt.h header])]) + AC_MSG_CHECKING([working sys/sdt.h and g++ support]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +class ProbeClass +{ +private: + int& ref; + const char *name; + +public: + ProbeClass(int& v, const char *n) : ref(v), name(n) + { + DTRACE_PROBE2(_test_, cons, name, ref); + } + + void method(int min) + { + DTRACE_PROBE3(_test_, meth, name, ref, min); + ref -= min; + } + + ~ProbeClass() + { + DTRACE_PROBE2(_test_, dest, name, ref); + } +}; +]], +[[ + int i = 64; + DTRACE_PROBE1(_test_, call, i); + ProbeClass inst = ProbeClass(i, "call"); + inst.method(24); +]])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([systemtap sdt.h or g++ too old])]) + AC_LANG_RESTORE + AC_MSG_CHECKING([for absolute java home install dir]) AC_ARG_WITH([abs-install-dir], [AS_HELP_STRING([--with-abs-install-dir], @@ -398,6 +435,8 @@ AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUN AC_SUBST(ABS_CLIENT_LIBJVM_SO) AC_SUBST(ABS_SERVER_LIBJVM_SO) AC_CONFIG_FILES([tapset/hotspot.stp]) + AC_CONFIG_FILES([tapset/hotspot_jni.stp]) + AC_CONFIG_FILES([tapset/jstack.stp]) fi dnl Check for libpng headers and libraries. diff -r b0bb743c12d1 -r 60f5ceb2ad2e patches/hotspot/default/icedtea-gcc-stack-markings.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-gcc-stack-markings.patch Thu Aug 27 17:48:27 2009 +0200 @@ -0,0 +1,14 @@ +--- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s~ 2009-08-06 01:08:57.000000000 -0700 ++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s 2009-08-06 01:09:27.000000000 -0700 +@@ -650,3 +650,4 @@ _Atomic_cmpxchg_long: + popl %ebx + ret + ++.section .note.GNU-stack, "", @progbits +--- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s~ 2009-08-06 01:08:57.000000000 -0700 ++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s 2009-08-06 01:09:27.000000000 -0700 +@@ -400,3 +400,4 @@ _Atomic_cmpxchg_long: + addq $4,%rdx + jg 4b + ret ++.section .note.GNU-stack, "", @progbits diff -r b0bb743c12d1 -r 60f5ceb2ad2e patches/icedtea-systemtap.patch --- a/patches/icedtea-systemtap.patch Thu Dec 17 16:24:09 2009 +0000 +++ b/patches/icedtea-systemtap.patch Thu Aug 27 17:48:27 2009 +0200 @@ -9,40 +9,59 @@ diff -r 945bf7540697 make/linux/makefile +CFLAGS += -DDTRACE_ENABLED + +# It doesn't support HAVE_DTRACE_H though. -diff -r 945bf7540697 src/share/vm/code/nmethod.cpp ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp Thu Jan 22 14:42:01 2009 -0800 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Mon Feb 02 13:47:34 2009 +0100 -@@ -22,6 +22,14 @@ - * - */ +--- openjdk/hotspot/src/share/vm/prims/jni.cpp 2009-10-13 15:34:52.499809508 +0200 ++++ openjdk/hotspot/src/share/vm/prims/jni.cpp 2009-10-13 15:31:26.117823588 +0200 +@@ -1747,10 +1744,7 @@ + JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \ + JNIWrapper("Set" XSTR(Result) "Field"); \ + \ +- HS_DTRACE_PROBE_CDECL_N(hotspot_jni, Set##Result##Field__entry, \ +- ( JNIEnv*, jobject, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \ +- HS_DTRACE_PROBE_N(hotspot_jni, Set##Result##Field__entry, \ +- ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \ ++ FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID, value),DTRACE_PROBE3(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID)); \ + \ + oop o = JNIHandles::resolve_non_null(obj); \ + klassOop k = o->klass(); \ +@@ -1924,10 +1918,7 @@ + \ + JNI_ENTRY(void, jni_SetStatic##Result##Field(JNIEnv *env, jclass clazz, jfieldID fieldID, Argument value)) \ + JNIWrapper("SetStatic" XSTR(Result) "Field"); \ +- HS_DTRACE_PROBE_CDECL_N(hotspot_jni, SetStatic##Result##Field__entry,\ +- ( JNIEnv*, jclass, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \ +- HS_DTRACE_PROBE_N(hotspot_jni, SetStatic##Result##Field__entry, \ +- ( env, clazz, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \ ++ FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID, value),DTRACE_PROBE3(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID)); \ + \ + JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \ + assert(id->is_static_field_id(), "invalid static field id"); \ +@@ -2116,7 +2101,7 @@ + DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret); + objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array)); + if (a->is_within_bounds(index)) { +- jobject ret = JNIHandles::make_local(env, a->obj_at(index)); ++ ret = JNIHandles::make_local(env, a->obj_at(index)); + return ret; + } else { + char buf[jintAsStringSize]; +@@ -2150,14 +2150,14 @@ -+#ifdef __GNUC__ -+// GCC seems to have some trouble with the inserted probes. -+// error: _probe_compiled__method__unload causes a section type conflict -+// error: compiled__method__unload_probe_name causes a section type conflict -+// So disable probe insertion for now. -+#undef DTRACE_ENABLED -+#endif -+ - # include "incls/_precompiled.incl" - # include "incls/_nmethod.cpp.incl" - -diff -r 945bf7540697 src/share/vm/prims/jni.cpp ---- openjdk/hotspot/src/share/vm/prims/jni.cpp Thu Jan 22 14:42:01 2009 -0800 -+++ openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Feb 02 13:47:34 2009 +0100 -@@ -22,6 +22,12 @@ - * - */ - -+#ifdef __GNUC__ -+// Unfortunately the gcc c preprocessor doesn't like some of the -+// FP_SELECT defines below, so for now we make sure to disable them. -+#undef DTRACE_ENABLED -+#endif -+ - # include "incls/_precompiled.incl" - # include "incls/_jni.cpp.incl" - + #define DEFINE_NEWSCALARARRAY(Return,Allocator,Result) \ + \ +- DT_RETURN_MARK_DECL_FOR(Result, New##Result##Array, Return);\ ++ DT_RETURN_MARK_DECL(New##Result##Array, Return);\ + \ + JNI_ENTRY(Return, \ + jni_New##Result##Array(JNIEnv *env, jsize len)) \ + JNIWrapper("New" XSTR(Result) "Array"); \ + DTRACE_PROBE2(hotspot_jni, New##Result##Array__entry, env, len);\ + Return ret = NULL;\ +- DT_RETURN_MARK_FOR(Result, New##Result##Array, Return, (const Return&)ret);\ ++ DT_RETURN_MARK(New##Result##Array, Return, (const Return&)ret);\ + \ + oop obj= oopFactory::Allocator(len, CHECK_0); \ + ret = (Return) JNIHandles::make_local(env, obj); \ + diff -r 945bf7540697 src/share/vm/utilities/dtrace.hpp --- openjdk/hotspot/src/share/vm/utilities/dtrace.hpp Thu Jan 22 14:42:01 2009 -0800 +++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp Mon Feb 02 13:47:34 2009 +0100 @@ -70,7 +89,7 @@ diff -r 945bf7540697 src/share/vm/utilit #define DTRACE_ONLY(x) #define NOT_DTRACE(x) x -@@ -40,9 +41,15 @@ +@@ -40,9 +41,16 @@ #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) {;} @@ -78,6 +97,7 @@ diff -r 945bf7540697 src/share/vm/utilit +#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;} +#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;} +#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) {;} #endif @@ -86,30 +106,28 @@ diff -r 945bf7540697 src/share/vm/utilit #define HS_DTRACE_PROBE_FN(provider,name)\ __dtrace_##provider##___##name -@@ -50,6 +57,13 @@ +@@ -50,6 +58,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) +#else +// Systemtap dtrace compatible probes on GNU/Linux don't. -+#define HS_DTRACE_PROBE_FN(provider,name) -+ +#define HS_DTRACE_PROBE_DECL_N(provider,name,args) +#define HS_DTRACE_PROBE_CDECL_N(provider,name,args) +#endif /* Dtrace probe declarations */ #define HS_DTRACE_PROBE_DECL(provider,name) \ -@@ -91,6 +105,8 @@ +@@ -88,6 +101,8 @@ + uintptr_t,uintptr_t,uintptr_t)) + + /* Dtrace probe definitions */ ++#if defined(SOLARIS) ++// Solaris dtrace uses actual function calls. #define HS_DTRACE_PROBE_N(provider,name, args) \ DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args) -+#if defined(SOLARIS) -+// Solaris dtrace uses actual function calls. - #define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name) - #define HS_DTRACE_PROBE0(provider,name)\ - HS_DTRACE_PROBE_N(provider,name,()) -@@ -123,3 +139,27 @@ +@@ -123,3 +138,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)) @@ -136,6 +154,8 @@ diff -r 945bf7540697 src/share/vm/utilit + DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7) +#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\ + DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8) ++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\ ++ DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8) +#endif --- openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-03-04 14:39:43.000000000 +0100 +++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-03-04 22:11:37.000000000 +0100 diff -r b0bb743c12d1 -r 60f5ceb2ad2e scripts/jni_create_stap.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/jni_create_stap.c Thu Aug 27 17:48:27 2009 +0200 @@ -0,0 +1,190 @@ +/* jni_create_stap.c -- Parses jni_desc into hotspot_jni.stp.in + Copyright (C) 2009 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. +*/ + +// g++ -o jni_create_stap jni_create_stap +// ./jni_create_stap < jni_desc > hotspot_jni.stp.in +// (Don't forget to add header plus documentation) + +// data file: +// JNIProbeNameDescription +// arg1_nameDescription +// arg2_name... +// [retDescription] +// blank line +// +// Notes: +// JNIProbeName doesn't include __entry or __return. +// ret is the the return argument (if there is a __return probe) +// /representation is one of: +// v - void, s - string, x - hex number, d - number +// void is only used for return ret arguments. + +#include +#include +#include +#include +using namespace std; + +struct probe +{ + string name; + string desc; + vector args; + vector types; + vector descs; +}; + +int +main() +{ + vector probes; + + string line; + size_t index; + while (getline (cin, line)) + { + if (line.size () == 0 || line[0] == '#') + continue; + probe p; + // probe name and description + index = line.find (' '); + p.name = line.substr (0, index); + p.desc = line.substr (index + 1); + + // arguments + while (getline (cin, line) && line.size () != 0) + { + if (line[0] == '#') + continue; + + index = line.find (' '); + p.args.push_back (line.substr (0, index)); + p.types.push_back (line[index + 1]); + p.descs.push_back (line.substr (index + 3)); + } + + probes.push_back (p); + } + + vector::iterator it = probes.begin(); + while (it != probes.end()) + { + // Output probe entry + probe p = *it; + cout << "/* hotspot.jni." << p.name << endl; + cout << " * " << p.desc << endl; + cout << " *" << endl; + for (index = 0; index < p.args.size (); index++) + { + if (p.args[index] == "ret") + continue; + cout << " * " << p.args[index] << " - " << p.descs[index] << endl; + } + cout << " */" << endl; + cout << "probe hotspot.jni." << p.name << " =" << endl; + cout << " process(\"@ABS_CLIENT_LIBJVM_SO@\").mark(\"" + << p.name << "__entry" << "\")," << endl; + cout << " process(\"@ABS_SERVER_LIBJVM_SO@\").mark(\"" + << p.name << "__entry" << "\")" << endl; + cout << "{" << endl; + cout << " name = \"" << p.name << '"' << endl; From mark at klomp.org Thu Dec 17 13:47:48 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 17 Dec 2009 22:47:48 +0100 Subject: Backport systemtap support to IcedTea6 1.5 branch Message-ID: <1261086468.10186.7.camel@hermans.wildebeest.org> Hi, Andrew asked if the systemtap support could be backported to the 1.5 branch. It wasn't too hard (hg transplant is your friend). It looks larger than it is, because 1.5 had very little systemtap support to begin with. But all patches applied cleanly and build fine (but only if you add --enable-systemtap to configure). Note that the newer systemtap support needs a new systemtap and g++. configure will now check for that when --enable-systemtap is given. I also backported the stack-markings patch to support building on newer systems with stricter selinux settings. I haven't bothered with backporting anything to the 1.6 branch. It seems more productive to just release a 1.7 soon. But if people want to see the systemtap support there please yell. Backported commits: changeset: 1581:85ecc550df1f user: Mark Wielaard date: Wed Aug 05 20:43:00 2009 +0200 summary: Add systemtap java method tracing support. changeset: 1582:e77f7270fd22 user: Mark Wielaard date: Thu Dec 17 16:54:20 2009 +0100 summary: Move NEWS about systemtap support from 1.6 to 1.5.4. changeset: 1583:58b7ae54c4de user: Mark Wielaard date: Wed Oct 14 15:42:32 2009 +0200 summary: Enable systemtap JNI tracing. changeset: 1584:397c2dcd4a51 user: Mark Wielaard date: Mon Oct 19 21:23:00 2009 +0200 summary: JNI GetObjectArrayElement mark probe ret value shadowed. changeset: 1585:6bb9237570f2 user: Mark Wielaard date: Mon Oct 19 21:49:33 2009 +0200 summary: Fix JNI DEFINE_NEWSCALARARRAY usage of DT_RETURN_MARK_DECL_FOR. changeset: 1586:292aecacc3f7 user: Mark Wielaard date: Mon Oct 19 23:19:26 2009 +0200 summary: Add hotspot_jni tapset. changeset: 1587:31398144ad0b user: Mark Wielaard date: Tue Oct 13 11:13:46 2009 +0200 summary: tapsets/hotspot.stp.in (hotspot.gc_end): Match gc__end, not begin. changeset: 1588:ff13d97de406 user: Mark Wielaard date: Sun Dec 13 22:32:25 2009 +0100 summary: Add systemtap jstack support. changeset: 1589:60f5ceb2ad2e tag: tip user: doko at ubuntu.com date: Thu Aug 27 17:48:27 2009 +0200 summary: 2009-08-27 Kees Cook Cheers, Mark From jon.vanalten at redhat.com Thu Dec 17 15:09:32 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Thu, 17 Dec 2009 18:09:32 -0500 (EST) Subject: RFC: Java/Systemtap examples In-Reply-To: <821339981.172781261091184107.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hi, I've added a small tapset which builds on the hotspot.stp and hotspot_jni.stp to help keep track of java/native threads, and a few example systemtap scripts that demo these tapsets. I'd like them to go out in the next release, if people think they are potentially useful (even if only as demonstration for how to make use of the other tapsets). Diff attached. Comments? cheers, jon -------------- next part -------------- A non-text attachment was scrubbed... Name: add_systemtap_examples.patch Type: text/x-patch Size: 42201 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091217/9b267751/add_systemtap_examples.patch From aph at redhat.com Fri Dec 18 02:20:36 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 18 Dec 2009 10:20:36 +0000 Subject: RFC: Java/Systemtap examples In-Reply-To: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <4B2B5774.10106@redhat.com> jon.vanalten at redhat.com wrote: > I've added a small tapset which builds on the hotspot.stp and > hotspot_jni.stp to help keep track of java/native threads, and a few > example systemtap scripts that demo these tapsets. I'd like them to > go out in the next release, if people think they are potentially > useful (even if only as demonstration for how to make use of the > other tapsets). Diff attached. Comments? What does it do? How do we use it? I'd love to use SystemTap but I fear I'd have to spend a week reading docs before I could do anything. Maybe mjw should present at FOSDEM... :-) Andrew. From bugzilla-daemon at icedtea.classpath.org Fri Dec 18 04:21:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 18 Dec 2009 12:21:33 +0000 Subject: [Bug 405] Cannot link default plugin when building on CentOS 5.4 x86_64 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=405 ------- Comment #1 from mbaudier at argeo.org 2009-12-18 12:21 ------- Interestingly I just rebuilt Icedtea on a CentOS i386 and did not face this issue. So it seems to be related to x86_64 (as implied by the -fPIC error message) Any idea of what I could do to help progress on this issue? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mark at klomp.org Fri Dec 18 05:16:47 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 18 Dec 2009 14:16:47 +0100 Subject: RFC: Java/Systemtap examples In-Reply-To: <4B2B5774.10106@redhat.com> References: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <4B2B5774.10106@redhat.com> Message-ID: <1261142207.2340.36.camel@hermans.wildebeest.org> On Fri, 2009-12-18 at 10:20 +0000, Andrew Haley wrote: > jon.vanalten at redhat.com wrote: > > > I've added a small tapset which builds on the hotspot.stp and > > hotspot_jni.stp to help keep track of java/native threads, and a few > > example systemtap scripts that demo these tapsets. I'd like them to > > go out in the next release, if people think they are potentially > > useful (even if only as demonstration for how to make use of the > > other tapsets). Diff attached. Comments? > > What does it do? How do we use it? I'd love to use SystemTap but I > fear I'd have to spend a week reading docs before I could do anything. Inside the big patch there was a README. I have added it below. Could you go over that and tell us if that is enough of an (practical) introduction to using Systemtap with java? We might think it is all obvious, but I am sure that for someone that has never used it there are some things we forget to mention. It might be good to have a minimal concrete example in the README, so someone can just step in directly. The current README only gives abstract examples. Maybe something like: [Make sure systemtap is installed and setup for your user account.] To show when threads are started and stopped go into the j2sdk-image directory and do: $ stap -I tapset -e \ 'probe hotspot.thread_* { printf("%s: %s %s\n", ctime(gettimeofday_s()), name, thread_name) }' \ -c 'bin/java -classpath ~/src/tests Hello' This uses the tapsets in the directory given by -I tapset, it will execute (-e) the given stap script, where the probes will trigger for the given program (-c). The script sets up a handler on all hotspot.thread_* probes (start and stop). The handler (between { and }) prints the time (gettimeofday_s) in human readable form (ctime), the name of the probe and the name of the thread: Fri Dec 18 13:03:39 2009: thread_start Reference Handler Fri Dec 18 13:03:39 2009: thread_start Finalizer Fri Dec 18 13:03:39 2009: thread_start Signal Dispatcher Fri Dec 18 13:03:39 2009: thread_start CompilerThread0 Fri Dec 18 13:03:39 2009: thread_start CompilerThread1 Fri Dec 18 13:03:39 2009: thread_start Low Memory Detector Fri Dec 18 13:03:40 2009: thread_start Thread-0 Fri Dec 18 13:03:40 2009: thread_stop Thread-0 [...] If you already have icedtea installed systemwide you don't need to add the -I and can just invoke java (the classpath and the Hello class are just examples that you can replace with any java program you want to inspect). Would that be a simple/easy introduction to the rest of the scripts and using systemtap/java? Should we instead of a handwritten example use one of the actual example scripts Jon has added? I'll review Jon's actual tapset examples in a bit. > Maybe mjw should present at FOSDEM... :-) I definitely will. Cheers, Mark +diff -ruN openjdkold/jdk/src/share/sample/systemtap/README openjdk/jdk/src/share/sample/systemtap/README +--- openjdkold/jdk/src/share/sample/systemtap/README 1969-12-31 19:00:00.000000000 -0500 ++++ openjdk/jdk/src/share/sample/systemtap/README 2009-12-14 17:35:35.000000000 -0500 +@@ -0,0 +1,85 @@ ++******************************************************************************* ++Copyright (C) 2009, Red Hat Inc. ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++******************************************************************************* ++ ++These are some examples of systemtap scripts that demonstrate the use of some ++of the probes available in the Hotspot JVM and JNI code. For more information ++about systemtap, see: ++ ++ http://sourceware.org/systemtap/index.html ++ ++This README assumes that the reader is familiar with, or will use the above ++URL to become familiar with, how to run systemtap scripts in the general case. ++The probes available are the same as those provided for dtrace. These are ++documented at: ++ ++ http://java.sun.com/javase/6/docs/technotes/guides/vm/dtrace.html ++ ++In order to use these scripts, systemtap must be able to see the tapsets ++hotspot.stp, hotspot_jni.stp, and jthread.stp. Your installation of java may ++have installed these files in the standard systemtap tapsets directory. If ++not, you can specify the argument: ++ ++ -I /tapset ++ ++to the stap executable. The tapsets noted should be found in this directory. ++ ++Each of these scripts begins with some documentation. You should take a look ++at this before running. In the general case, you will probably be doing this: ++ ++ $ stap [-I path] -c 'java <-XX:JVMARGUMENT> ' ++ ++Each script requires different -XX arguments; these details are noted in the ++comments at the top of each script file. You can also run these scripts ++attached to java programs that are launched without calling the "java" ++executable explicitly, provided that the program provides a way to pass the ++necessary argument(s) to the JVM. For example, attaching to eclipse: ++ ++ $ stap -c 'eclipse -vmargs <-XX:JVMARGUMENT>' ++ ++Systemtap also supports attaching to an existing process. These examples are ++intended to provide contrast between java threads (which in most cases are ++implemented as OS threads), so this might not be as interesting as attaching ++to an entire java program right as it starts. The jmethod.stp script in ++particular simply will not work if it is not started along with the program. ++Your mileage may vary with the other examples, but since one might conceivably ++write a script that is more useful for such a case, you would attach by: ++ ++ $ stap -x ++ ++If things are not working properly, you may wish to add verbosity with the ++-v[vv...] stap argument and examine the output as systemtap makes its passes ++over the script, or use the -t argument to see some statistics on the firing ++(and skipping) of probes once the stap run is complete. These scripts have ++been tuned to (mostly) stay within the default safety and security limits set ++by systemtap, but have not been used on a wide variety of java applications ++so your mileage may vary. Script values that can be adjusted to consume less ++resources are noted in comments. ++ ++While hotspot.stp and hotspot_jni.stp expose probes in the JVM and JNI code, ++jthread.stp actually provides wrapper aliases for a selection of probes within ++the other tapsets. These, along with a handful of global variables and a ++couple of helper functions, provide some logic for keeping information ++straight between java threads and native threads. This may be useful for ++scripts that use probes from both the hotspot and the jni tapsets, because the ++hotspot probes all provide the java thread ID while the jni probes are only ++able to provide the native thread ID. The reader is encouraged to read the ++comments in jthread.stp for more details, and examine the source of these ++examples to understand the use of this tapset. From Dalibor.Topic at Sun.COM Fri Dec 18 05:25:30 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 18 Dec 2009 14:25:30 +0100 Subject: RFC: Java/Systemtap examples In-Reply-To: <1261142207.2340.36.camel@hermans.wildebeest.org> References: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <4B2B5774.10106@redhat.com> <1261142207.2340.36.camel@hermans.wildebeest.org> Message-ID: <4B2B82CA.4050009@sun.com> Mark Wielaard wrote: > >> Maybe mjw should present at FOSDEM... :-) > > I definitely will. Python systemtap in Fedora devroom, Java systemtep in Free Java devroom would be awesome. cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Wolf Frenkel Vorsitzender des Aufsichtsrates: Martin H?ring From aph at redhat.com Fri Dec 18 06:52:36 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 18 Dec 2009 14:52:36 +0000 Subject: RFC: Java/Systemtap examples In-Reply-To: <1261142207.2340.36.camel@hermans.wildebeest.org> References: <1407168757.172861261091372288.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <4B2B5774.10106@redhat.com> <1261142207.2340.36.camel@hermans.wildebeest.org> Message-ID: <4B2B9734.1070102@redhat.com> Mark Wielaard wrote: > On Fri, 2009-12-18 at 10:20 +0000, Andrew Haley wrote: >> jon.vanalten at redhat.com wrote: >> >>> I've added a small tapset which builds on the hotspot.stp and >>> hotspot_jni.stp to help keep track of java/native threads, and a few >>> example systemtap scripts that demo these tapsets. I'd like them to >>> go out in the next release, if people think they are potentially >>> useful (even if only as demonstration for how to make use of the >>> other tapsets). Diff attached. Comments? >> What does it do? How do we use it? I'd love to use SystemTap but I >> fear I'd have to spend a week reading docs before I could do anything. > > Inside the big patch there was a README. I have added it below. Could > you go over that and tell us if that is enough of an (practical) > introduction to using Systemtap with java? Well, it starts with > ++These are some examples of systemtap scripts that demonstrate the use of some > ++of the probes available in the Hotspot JVM and JNI code. For more information > ++about systemtap, see: > ++ > ++ http://sourceware.org/systemtap/index.html > ++ > ++This README assumes that the reader is familiar with, or will use the above > ++URL to become familiar with, how to run systemtap scripts in the general case. > We might think it is all obvious, but I am sure that for someone > that has never used it there are some things we forget to mention. A document that begins with "go and read some other document" isn't going to encourage a Java programmer. Especially when that document starts with "how to probe your kernel". This is going to turn a Java programmer off straight away. How about we assume that the user does *not* want to learn about SystemTap in the general case, but instead wants to solve a simple Java problem. They certainly don't know about kernels, system tracing, ect, ect. > It might be good to have a minimal concrete example in the README, so > someone can just step in directly. The current README only gives > abstract examples. Definitely, yes. A page along the lines of "I had this problem and I solved it with SystemTap. This is how I did it..." > Maybe something like: > > [Make sure systemtap is installed and setup for your user account.] > > To show when threads are started and stopped go into the > j2sdk-image directory and do: > $ stap -I tapset -e \ > 'probe hotspot.thread_* { printf("%s: %s %s\n", > ctime(gettimeofday_s()), > name, thread_name) }' \ > -c 'bin/java -classpath ~/src/tests Hello' > > This uses the tapsets in the directory given by -I tapset, > it will execute (-e) the given stap script, where the probes > will trigger for the given program (-c). The script sets up > a handler on all hotspot.thread_* probes (start and stop). The > handler (between { and }) prints the time (gettimeofday_s) in > human readable form (ctime), the name of the probe and the name > of the thread: > > Fri Dec 18 13:03:39 2009: thread_start Reference Handler > Fri Dec 18 13:03:39 2009: thread_start Finalizer > Fri Dec 18 13:03:39 2009: thread_start Signal Dispatcher > Fri Dec 18 13:03:39 2009: thread_start CompilerThread0 > Fri Dec 18 13:03:39 2009: thread_start CompilerThread1 > Fri Dec 18 13:03:39 2009: thread_start Low Memory Detector > Fri Dec 18 13:03:40 2009: thread_start Thread-0 > Fri Dec 18 13:03:40 2009: thread_stop Thread-0 > [...] > > If you already have icedtea installed systemwide you don't need to > add the -I and can just invoke java (the classpath and the Hello > class are just examples that you can replace with any java program > you want to inspect). > > Would that be a simple/easy introduction to the rest of the scripts and > using systemtap/java? Should we instead of a handwritten example use one > of the actual example scripts Jon has added? The best way, I think, is to assume that icedtea is installed in the usual place. Assume that the user doesn't know about SystemTap. Don't use jargon words like "tapset": the reader doesn't want to know what one is. Just tell the user where to put the files they need, and let them play. Then, when they learn how truly cool StsremTap is they will ask "OK, how do I write my own scripts, then?" The key is to present the ordinary Java programmer -- whatever one of those is -- with something cool that demonstrates instant useful results without requiring them to go away and study. Andrew. From jon.vanalten at redhat.com Fri Dec 18 14:51:42 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Fri, 18 Dec 2009 17:51:42 -0500 (EST) Subject: RFC: Java/Systemtap examples In-Reply-To: <1024331565.247751261176109259.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1566912496.248501261176702266.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> > > The key is to present the ordinary Java programmer -- whatever one of > those is -- with something cool that demonstrates instant useful > results without requiring them to go away and study. > > Andrew. I have reworked the README with the comments so far in mind. Thanks Mark, I borrowed your example! I think though (and maybe I am wrong here), that where this will be most useful is not really the use case for "ordinary" Java programmers. Which I am taking to mean the hordes of programmers who learn Java because it is easy and are writing relatively simple applications that do not truly tax any one part of the system they are running on and whose problems can be solved by any old debugger. There are already tools that work well enough for this. Where I currently see the greatest potential is in writing scripts that use not just the hotspot* provider probes, but also probes in the kernel, watching IO, CPU scheduling issues, and so forth, combining information from the JVM and the operating system. The people who will find this most useful I think are those who know perhaps more than a little bit about the systems they are programming for, but are frustrated by lack of a single tool that can look both inside and outside the JVM; I don't think that these people will be so turned off by needing some background in order to effectively use a tool that can do just that. That said, my revision (attached) does more to get an interested developer started doing cool things without having to look up other documentation, and points to more relevant (and less scary-kernel-tracey) stuff on the systemtap page. :) cheers, jon -------------- next part -------------- A non-text attachment was scrubbed... Name: README Type: text/x-readme Size: 9161 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091218/5301db39/README.bin From doko at icedtea.classpath.org Sat Dec 19 04:51:02 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Sat, 19 Dec 2009 12:51:02 +0000 Subject: /hg/icedtea6: Fix sanity check for parisc Message-ID: changeset 40a336c2526b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=40a336c2526b author: doko at ubuntu.com date: Sat Dec 19 13:55:02 2009 +0100 Fix sanity check for parisc 2009-12-19 Matthias Klose * patches/icedtea-parisc.patch: Fix sanity check for parisc. * Makefile.am (ICEDTEA_PATCHES): Apply the above. diffstat: 3 files changed, 21 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 3 ++- patches/icedtea-parisc.patch | 14 ++++++++++++++ diffs (43 lines): diff -r a56c45c73a74 -r 40a336c2526b ChangeLog --- a/ChangeLog Thu Dec 17 14:51:20 2009 +0100 +++ b/ChangeLog Sat Dec 19 13:55:02 2009 +0100 @@ -1,3 +1,8 @@ 2009-12-17 Matthias Klose + + * patches/icedtea-parisc.patch: Fix sanity check for parisc. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + 2009-12-17 Matthias Klose * patches/cacao/arm-arch-defines.patch: New, fix cacao build on diff -r a56c45c73a74 -r 40a336c2526b Makefile.am --- a/Makefile.am Thu Dec 17 14:51:20 2009 +0100 +++ b/Makefile.am Sat Dec 19 13:55:02 2009 +0100 @@ -296,7 +296,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6879689-hotspot_warning_fix.patch \ patches/icedtea-no-precompiled.patch \ patches/icedtea-6897844-xshm.patch \ - patches/icedtea-linux-separate-debuginfo.patch + patches/icedtea-linux-separate-debuginfo.patch \ + patches/icedtea-parisc.patch if WITH_RHINO ICEDTEA_PATCHES += \ diff -r a56c45c73a74 -r 40a336c2526b patches/icedtea-parisc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-parisc.patch Sat Dec 19 13:55:02 2009 +0100 @@ -0,0 +1,14 @@ +--- openjdk/jdk/make/common/shared/Compiler-gcc.gmk.orig 2009-12-19 12:45:34.000000000 +0000 ++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-19 12:45:09.000000000 +0000 +@@ -106,6 +106,11 @@ + REQUIRED_CC_VER = 3.2 + REQUIRED_GCC_VER = 3.2.* + endif ++ ifneq ("$(findstring parisc,$(ARCH))", "") ++ # mips ++ REQUIRED_CC_VER = 4.4 ++ REQUIRED_GCC_VER = 4.4.* ++ endif + ifneq ("$(findstring ppc,$(ARCH))", "") + # ppc or ppc64 + REQUIRED_CC_VER = 3.2 From gnu_andrew at member.fsf.org Sun Dec 20 09:12:40 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 20 Dec 2009 17:12:40 +0000 Subject: Backport 3 patches to icedtea6-1.5 In-Reply-To: <4B2A5AE5.8070803@redhat.com> References: <4B2A5AE5.8070803@redhat.com> Message-ID: <17c6771e0912200912w62e48fd5xba9a2d5a760951e8@mail.gmail.com> 2009/12/17 Andrew Haley : > One of these patches allows tools like jmap to work, the other two allow > building on new GNU/Linux systems. > > Applied to icedtea6-1.5. > > Andrew. > > > > 2009-12-17 ?Andrew Haley ? > > ? ? ? ?* Makefile.am (ICEDTEA_PATCHES): Add rename-execvpe.patch, > ? ? ? ?icedtea-6897844-xshm.patch, > ? ? ? ?icedtea-linux-separate-debuginfo.patch. > > diff -r 98d260aaa04b Makefile.am > --- a/Makefile.am ? ? ? Thu Dec 10 16:51:16 2009 +0000 > +++ b/Makefile.am ? ? ? Thu Dec 17 16:19:24 2009 +0000 > @@ -588,6 +588,7 @@ > ? ? ? ?patches/icedtea-doc-headers.patch \ > ? ? ? ?patches/openjdk/bidi-tests.patch \ > ? ? ? ?patches/openjdk/annotation-tests.patch \ > + ? ? ? patches/openjdk/rename-execvpe.patch \ > ? ? ? ?patches/security/icedtea-6588003.patch \ > ? ? ? ?patches/security/icedtea-6656586.patch \ > ? ? ? ?patches/security/icedtea-6656610.patch \ > @@ -623,7 +624,9 @@ > ? ? ? ?patches/security/icedtea-6822057.patch \ > ? ? ? ?patches/security/icedtea-6824265.patch \ > ? ? ? ?patches/security/icedtea-6861062.patch \ > - ? ? ? patches/security/icedtea-6872358.patch > + ? ? ? patches/security/icedtea-6872358.patch \ > + ? ? ? patches/icedtea-6897844-xshm.patch \ > + ? ? ? patches/icedtea-linux-separate-debuginfo.patch > > ?if WITH_ALT_HSBUILD > ?ICEDTEA_PATCHES += \ > > So I take it your answer to http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-December/007799.html was yes? I would have preferred the individual changesets themselves to be backported in order to keep things consistent between branches. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From aph at redhat.com Sun Dec 20 09:34:37 2009 From: aph at redhat.com (Andrew Haley) Date: Sun, 20 Dec 2009 17:34:37 +0000 Subject: Backport 3 patches to icedtea6-1.5 In-Reply-To: <17c6771e0912200912w62e48fd5xba9a2d5a760951e8@mail.gmail.com> References: <4B2A5AE5.8070803@redhat.com> <17c6771e0912200912w62e48fd5xba9a2d5a760951e8@mail.gmail.com> Message-ID: <4B2E602D.9030004@redhat.com> Andrew John Hughes wrote: > 2009/12/17 Andrew Haley : >> One of these patches allows tools like jmap to work, the other two allow >> building on new GNU/Linux systems. >> >> Applied to icedtea6-1.5. >> >> Andrew. >> >> >> >> 2009-12-17 Andrew Haley >> >> * Makefile.am (ICEDTEA_PATCHES): Add rename-execvpe.patch, >> icedtea-6897844-xshm.patch, >> icedtea-linux-separate-debuginfo.patch. >> >> diff -r 98d260aaa04b Makefile.am >> --- a/Makefile.am Thu Dec 10 16:51:16 2009 +0000 >> +++ b/Makefile.am Thu Dec 17 16:19:24 2009 +0000 >> @@ -588,6 +588,7 @@ >> patches/icedtea-doc-headers.patch \ >> patches/openjdk/bidi-tests.patch \ >> patches/openjdk/annotation-tests.patch \ >> + patches/openjdk/rename-execvpe.patch \ >> patches/security/icedtea-6588003.patch \ >> patches/security/icedtea-6656586.patch \ >> patches/security/icedtea-6656610.patch \ >> @@ -623,7 +624,9 @@ >> patches/security/icedtea-6822057.patch \ >> patches/security/icedtea-6824265.patch \ >> patches/security/icedtea-6861062.patch \ >> - patches/security/icedtea-6872358.patch >> + patches/security/icedtea-6872358.patch \ >> + patches/icedtea-6897844-xshm.patch \ >> + patches/icedtea-linux-separate-debuginfo.patch >> >> if WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> >> > > So I take it your answer to > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-December/007799.html > was yes? Yes. I thought I'd replied to that effect, but I can't find it. I must have forgotten. I think this kind of thing (fails to build, patch is trivial) should be automatically applied to IcedTea. > I would have preferred the individual changesets themselves to be > backported in order to keep things consistent between branches. I don't think that was possible everywhere, since the branches need different subsets. Andrew. From andrew at icedtea.classpath.org Mon Dec 21 05:35:05 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 21 Dec 2009 13:35:05 +0000 Subject: /hg/icedtea: Add -Xprefer:source so disable bootstrap works. Di... Message-ID: changeset 03d84febc75e in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=03d84febc75e author: Andrew John Hughes date: Mon Dec 21 13:40:28 2009 +0000 Add -Xprefer:source so disable bootstrap works. Disable building bootstrap classes when sun.awt.SunToolkit is present. 2009-12-21 Andrew John Hughes * Makefile.am: Only set ICEDTEA_BOOTSTRAP_DIRS and build rt-class-files when sun.awt.SunToolkit is missing. Support -Xprefer:source. Move MEMORY_LIMIT to IT_JAVACFLAGS. (liveconnect.stamp): Remove MEMORY_LIMIT. (netx.stamp): Remove MEMORY_LIMIT. (extra-class- files.stamp): Remove MEMORY_LIMIT, add system rt.jar to classpath. (rt-class-files.stamp): Remove MEMORY_LIMIT. Make conditional on LACKS_SUN_AWT_TOOLKIT. * configure.ac: Check for sun.awt.SunToolkit and set LACKS_SUN_AWT_TOOLKIT if missing. diffstat: 3 files changed, 30 insertions(+), 6 deletions(-) ChangeLog | 17 +++++++++++++++++ Makefile.am | 18 ++++++++++++------ configure.ac | 1 + diffs (115 lines): diff -r c865cb07202d -r 03d84febc75e ChangeLog --- a/ChangeLog Tue Dec 15 14:06:44 2009 +0000 +++ b/ChangeLog Mon Dec 21 13:40:28 2009 +0000 @@ -1,3 +1,20 @@ 2009-12-15 Andrew John Hughes + + * Makefile.am: + Only set ICEDTEA_BOOTSTRAP_DIRS and build + rt-class-files when sun.awt.SunToolkit is + missing. Support -Xprefer:source. Move + MEMORY_LIMIT to IT_JAVACFLAGS. + (liveconnect.stamp): Remove MEMORY_LIMIT. + (netx.stamp): Remove MEMORY_LIMIT. + (extra-class-files.stamp): Remove MEMORY_LIMIT, + add system rt.jar to classpath. + (rt-class-files.stamp): Remove MEMORY_LIMIT. + Make conditional on LACKS_SUN_AWT_TOOLKIT. + * configure.ac: + Check for sun.awt.SunToolkit and set + LACKS_SUN_AWT_TOOLKIT if missing. + 2009-12-15 Andrew John Hughes * Makefile.am: diff -r c865cb07202d -r 03d84febc75e Makefile.am --- a/Makefile.am Tue Dec 15 14:06:44 2009 +0000 +++ b/Makefile.am Mon Dec 21 13:40:28 2009 +0000 @@ -107,6 +107,7 @@ SOURCEPATH_DIRS = $(abs_top_builddir)/ge SOURCEPATH_DIRS = $(abs_top_builddir)/generated:$(OPENJDK_SOURCEPATH_DIRS):$(NETX_SRCDIR) # Sources used from OpenJDK. +if LACKS_SUN_AWT_TOOLKIT ICEDTEA_BOOTSTRAP_DIRS = \ $(JDK_SHARE)/com/sun/jdi \ $(JDK_SHARE)/com/sun/tools/jdi \ @@ -126,12 +127,13 @@ ICEDTEA_BOOTSTRAP_DIRS = \ $(JDK_SHARE)/sun/tools/java \ $(LANGTOOLS)/com/sun/mirror \ $(LANGTOOLS)/com/sun/tools/apt +endif # Settings for javac IT_LANGUAGE_SOURCE_VERSION=5 IT_CLASS_TARGET_VERSION=5 -IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) +IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) $(PREFER_SOURCE) IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) # Conditional defintions @@ -209,8 +211,10 @@ endif # as an argument to javac if BOOTSTRAPPING MEMORY_LIMIT = + PREFER_SOURCE = else MEMORY_LIMIT = -J-Xmx1024m + PREFER_SOURCE = -Xprefer:source endif if WITH_CACAO @@ -2032,7 +2036,7 @@ stamps/liveconnect.stamp: liveconnect-so stamps/liveconnect.stamp: liveconnect-source-files.txt stamps/netx.stamp if test "x${LIVECONNECT_DIR}" != x; then \ mkdir -p $(abs_top_builddir)/liveconnect ; \ - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) \ + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/liveconnect \ -classpath $(abs_top_builddir)/lib/rt:$(abs_top_builddir)/netx.build:$(SYSTEM_JDK_DIR)/jre/lib/rt.jar \ -sourcepath $(SOURCEPATH_DIRS) \ @@ -2072,7 +2076,7 @@ netx-source-files.txt: stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp mkdir -p $(abs_top_builddir)/netx.build - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) \ + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ -classpath $(abs_top_builddir)/lib/rt:$(SYSTEM_JDK_DIR)/jre/lib/rt.jar \ -sourcepath $(SOURCEPATH_DIRS) \ @@ -2105,8 +2109,8 @@ extra-source-files.txt: stamps/extra-class-files.stamp: extra-source-files.txt stamps/netx.stamp mkdir -p extra-lib - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) -d extra-lib \ - -classpath $(abs_top_builddir)/lib/rt \ + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ + -classpath $(abs_top_builddir)/lib/rt:$(SYSTEM_JDK_DIR)/jre/lib/rt.jar \ -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ -bootclasspath \'\' \ @extra-source-files.txt ; \ @@ -2546,10 +2550,12 @@ rt-source-files.txt: stamps/overlay.stam stamps/rt-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) rt-source-files.txt mkdir -p lib/rt - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) -d lib/rt \ +if LACKS_SUN_AWT_TOOLKIT + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d lib/rt \ -classpath $(SYSTEM_JDK_DIR)/jre/lib/rt.jar \ -sourcepath '$(SOURCEPATH_DIRS)' \ -bootclasspath \'\' @rt-source-files.txt ; +endif mkdir -p stamps touch $@ diff -r c865cb07202d -r 03d84febc75e configure.ac --- a/configure.ac Tue Dec 15 14:06:44 2009 +0000 +++ b/configure.ac Mon Dec 21 13:40:28 2009 +0000 @@ -199,6 +199,7 @@ IT_PR40630_CHECK IT_PR40630_CHECK IT_CHECK_FOR_CLASS([JAVAX_ANNOTATION_RESOURCE], [javax.annotation.Resource]) IT_GETDTDTYPE_CHECK +IT_CHECK_FOR_CLASS([SUN_AWT_TOOLKIT], [sun.awt.SunToolkit]) IT_CHECK_ENABLE_WARNINGS FIND_RHINO_JAR From doko at icedtea.classpath.org Mon Dec 21 07:38:29 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 21 Dec 2009 15:38:29 +0000 Subject: /hg/icedtea: Fix zero build as additional VM. Message-ID: changeset e7ebeda31ef7 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e7ebeda31ef7 author: doko at ubuntu.com date: Mon Dec 21 16:42:29 2009 +0100 Fix zero build as additional VM. 2009-12-21 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Fix path for --with-jdk-home= option. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 2 +- diffs (24 lines): diff -r 03d84febc75e -r e7ebeda31ef7 ChangeLog --- a/ChangeLog Mon Dec 21 13:40:28 2009 +0000 +++ b/ChangeLog Mon Dec 21 16:42:29 2009 +0100 @@ -1,3 +1,8 @@ 2009-12-21 Andrew John Hughes + + * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Fix path for + --with-jdk-home= option. + 2009-12-21 Andrew John Hughes * Makefile.am: diff -r 03d84febc75e -r e7ebeda31ef7 Makefile.am --- a/Makefile.am Mon Dec 21 13:40:28 2009 +0000 +++ b/Makefile.am Mon Dec 21 16:42:29 2009 +0100 @@ -2344,7 +2344,7 @@ clean-add-cacao-debug: # configure script arguments, quoted in single quotes CONFIGURE_ARGS = @CONFIGURE_ARGS@ ADD_ZERO_CONFIGURE_ARGS = \ - --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ + --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \ --disable-bootstrap --enable-zero if ADD_SHARK_BUILD ADD_ZERO_CONFIGURE_ARGS += \ From gbenson at icedtea.classpath.org Tue Dec 22 02:36:56 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 22 Dec 2009 10:36:56 +0000 Subject: /hg/icedtea6: 2009-12-22 Gary Benson Message-ID: changeset d48415f1ab6f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d48415f1ab6f author: Gary Benson date: Tue Dec 22 11:42:03 2009 +0100 2009-12-22 Gary Benson * contrib/checkopts/checkopts: New file. * contrib/checkopts/Test.java: Likewise. diffstat: 3 files changed, 156 insertions(+) ChangeLog | 5 + contrib/checkopts/Test.java | 5 + contrib/checkopts/checkopts | 146 +++++++++++++++++++++++++++++++++++++++++++ diffs (171 lines): diff -r 40a336c2526b -r d48415f1ab6f ChangeLog --- a/ChangeLog Sat Dec 19 13:55:02 2009 +0100 +++ b/ChangeLog Tue Dec 22 11:42:03 2009 +0100 @@ -1,3 +1,8 @@ 2009-12-19 Matthias Klose + + * contrib/checkopts/checkopts: New file. + * contrib/checkopts/Test.java: Likewise. + 2009-12-19 Matthias Klose * patches/icedtea-parisc.patch: Fix sanity check for parisc. diff -r 40a336c2526b -r d48415f1ab6f contrib/checkopts/Test.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/checkopts/Test.java Tue Dec 22 11:42:03 2009 +0100 @@ -0,0 +1,5 @@ +class Test { + public static void main(String[] args) { + System.out.println("Hello world"); + } +} diff -r 40a336c2526b -r d48415f1ab6f contrib/checkopts/checkopts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/checkopts/checkopts Tue Dec 22 11:42:03 2009 +0100 @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +import os +import subprocess +import sys + +class Flag: + def __init__(self, line): + line = line.split() + self.type = line.pop(0) + self.name = line.pop(0) + assert line[0] in ("=", ":=") + line = " ".join(line[1:]) + self.is_diagnostic = False + if line.endswith("}"): + index = line.rfind("{") + if index != -1: + self.is_diagnostic = "diagnostic" in line[index + 1:-1].split() + line = line[:index] + self.value = line.strip() + + @property + def test_values(self): + if self.type == "bool": + if self.name in ( + "ExtendedDTraceProbes", # Solaris only + "RequireSharedSpaces", # Not set up + "PauseAtStartup"): # Just don't... + return (False,) + return (False, True) + return () + + def option(self, value): + if self.type == "bool": + return "-XX:%s%s" % (value and "+" or "-", self.name) + elif self.type.endswith("intx"): + return "-XX:%s=%d" % (self.name, value) + raise ValueError, self.type + +class TestFailure(Exception): + pass + +class Main: + def __init__(self, java): + self.java = os.path.realpath(java) + self.base = os.path.dirname(os.path.realpath(sys.argv[0])) + if not os.path.exists(os.path.join(self.base, "Test.class")): + out, err = subprocess.Popen( + [self.java + "c", "Test.java"], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + cwd = self.base).communicate() + if out or err: + sys.stdout.write(out) + sys.stderr.write(err) + sys.exit(1) + self.passes = self.fails = 0 + for flag in self.read_flags(): + for value in flag.test_values: + self.test(flag, value) + print "%d passes, %d fails" % (self.passes, self.fails) + + def read_flags(self): + out, err = subprocess.Popen( + [self.java, "-XX:+UnlockDiagnosticVMOptions", "-Xprintflags"], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE).communicate() + if err: + sys.stderr.write(err) + sys.exit(1) + lines = out.rstrip().split("\n") + line = lines.pop(0) + if line != "[Global flags]": + print >>sys.stderr, "error: unexpected output %s" % repr(line) + sys.exit(1) + flags = {} + for line in lines: + flag = Flag(line) + assert not flags.has_key(flag.name) + flags[flag.name] = flag + flags = flags.items() + flags.sort() + return [flag for name, flag in flags] + + def test(self, flag, value): + for dir in xrange(1000): + dir = os.path.join(self.base, "results", flag.name, "%03d" % dir) + if not os.path.isdir(dir): + break + os.makedirs(dir) + cmd = [self.java] + if flag.is_diagnostic: + cmd.append("-XX:+UnlockDiagnosticVMOptions") + if flag.name.startswith("CMS"): + cmd.append("-XX:+UseConcMarkSweepGC") + flag = flag.option(value) + cmd.append(flag) + cmd.extend(("-cp", self.base, "Test")) + print "%-56s %s" % (flag, dir[len(self.base + os.sep):]) + print >>open(os.path.join(dir, "cmd"), "w"), " ".join(cmd) + out, err = subprocess.Popen( + cmd, + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + cwd = dir).communicate() + open(os.path.join(dir, "out"), "w").write(out) + open(os.path.join(dir, "err"), "w").write(err) + try: + self.check(dir, out, err) + self.passes += 1 + except TestFailure, failure: + print "\x1B[1;31m FAIL: %s\x1B[0m" % failure + self.fails += 1 + + def fail(self, msg): + raise TestFailure(msg) + + def check(self, dir, out, err): + name = os.path.basename(os.path.dirname(dir)) + expect = ["cmd", "err", "out"] + actual = os.listdir(dir) + if name in ("LogCompilation", "LogVMOutput"): + if "hotspot.log" in actual: + expect.append("hotspot.log") + if name == "PerfDataSaveToFile": + for item in actual: + if item.startswith("hsperfdata_"): + expect.append(item) + break + expect.sort() + actual.sort() + while expect != actual: + for item in actual: + if item not in expect: + self.fail("found %s" % item) + self.fail("directory contents not as expected") + if err: + self.fail("err not as expected") + if not "Hello world" in out.split("\n"): + self.fail("out not as expected") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print >>sys.stderr, "usage: %s /path/to/jdk/bin/java" % sys.argv[0] + sys.exit(1) + Main(sys.argv[1]) From gbenson at redhat.com Tue Dec 22 02:49:46 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 22 Dec 2009 10:49:46 +0000 Subject: Command line options tester Message-ID: <20091222104946.GB3312@redhat.com> Hi all, This commit adds a command line options tester I've been working on. It won't run on IcedTea or OpenJDK as is; it requires a patch which I mailed to hotspot-dev that doesn't look like anyone's going to look at before next year. But I'm committing this now so I don't lose it :) Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 40a336c2526b -r d48415f1ab6f ChangeLog --- a/ChangeLog Sat Dec 19 13:55:02 2009 +0100 +++ b/ChangeLog Tue Dec 22 11:42:03 2009 +0100 @@ -1,3 +1,8 @@ +2009-12-22 Gary Benson + + * contrib/checkopts/checkopts: New file. + * contrib/checkopts/Test.java: Likewise. + 2009-12-19 Matthias Klose * patches/icedtea-parisc.patch: Fix sanity check for parisc. diff -r 40a336c2526b -r d48415f1ab6f contrib/checkopts/Test.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/checkopts/Test.java Tue Dec 22 11:42:03 2009 +0100 @@ -0,0 +1,5 @@ +class Test { + public static void main(String[] args) { + System.out.println("Hello world"); + } +} diff -r 40a336c2526b -r d48415f1ab6f contrib/checkopts/checkopts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/checkopts/checkopts Tue Dec 22 11:42:03 2009 +0100 @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +import os +import subprocess +import sys + +class Flag: + def __init__(self, line): + line = line.split() + self.type = line.pop(0) + self.name = line.pop(0) + assert line[0] in ("=", ":=") + line = " ".join(line[1:]) + self.is_diagnostic = False + if line.endswith("}"): + index = line.rfind("{") + if index != -1: + self.is_diagnostic = "diagnostic" in line[index + 1:-1].split() + line = line[:index] + self.value = line.strip() + + @property + def test_values(self): + if self.type == "bool": + if self.name in ( + "ExtendedDTraceProbes", # Solaris only + "RequireSharedSpaces", # Not set up + "PauseAtStartup"): # Just don't... + return (False,) + return (False, True) + return () + + def option(self, value): + if self.type == "bool": + return "-XX:%s%s" % (value and "+" or "-", self.name) + elif self.type.endswith("intx"): + return "-XX:%s=%d" % (self.name, value) + raise ValueError, self.type + +class TestFailure(Exception): + pass + +class Main: + def __init__(self, java): + self.java = os.path.realpath(java) + self.base = os.path.dirname(os.path.realpath(sys.argv[0])) + if not os.path.exists(os.path.join(self.base, "Test.class")): + out, err = subprocess.Popen( + [self.java + "c", "Test.java"], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + cwd = self.base).communicate() + if out or err: + sys.stdout.write(out) + sys.stderr.write(err) + sys.exit(1) + self.passes = self.fails = 0 + for flag in self.read_flags(): + for value in flag.test_values: + self.test(flag, value) + print "%d passes, %d fails" % (self.passes, self.fails) + + def read_flags(self): + out, err = subprocess.Popen( + [self.java, "-XX:+UnlockDiagnosticVMOptions", "-Xprintflags"], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE).communicate() + if err: + sys.stderr.write(err) + sys.exit(1) + lines = out.rstrip().split("\n") + line = lines.pop(0) + if line != "[Global flags]": + print >>sys.stderr, "error: unexpected output %s" % repr(line) + sys.exit(1) + flags = {} + for line in lines: + flag = Flag(line) + assert not flags.has_key(flag.name) + flags[flag.name] = flag + flags = flags.items() + flags.sort() + return [flag for name, flag in flags] + + def test(self, flag, value): + for dir in xrange(1000): + dir = os.path.join(self.base, "results", flag.name, "%03d" % dir) + if not os.path.isdir(dir): + break + os.makedirs(dir) + cmd = [self.java] + if flag.is_diagnostic: + cmd.append("-XX:+UnlockDiagnosticVMOptions") + if flag.name.startswith("CMS"): + cmd.append("-XX:+UseConcMarkSweepGC") + flag = flag.option(value) + cmd.append(flag) + cmd.extend(("-cp", self.base, "Test")) + print "%-56s %s" % (flag, dir[len(self.base + os.sep):]) + print >>open(os.path.join(dir, "cmd"), "w"), " ".join(cmd) + out, err = subprocess.Popen( + cmd, + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + cwd = dir).communicate() + open(os.path.join(dir, "out"), "w").write(out) + open(os.path.join(dir, "err"), "w").write(err) + try: + self.check(dir, out, err) + self.passes += 1 + except TestFailure, failure: + print "\x1B[1;31m FAIL: %s\x1B[0m" % failure + self.fails += 1 + + def fail(self, msg): + raise TestFailure(msg) + + def check(self, dir, out, err): + name = os.path.basename(os.path.dirname(dir)) + expect = ["cmd", "err", "out"] + actual = os.listdir(dir) + if name in ("LogCompilation", "LogVMOutput"): + if "hotspot.log" in actual: + expect.append("hotspot.log") + if name == "PerfDataSaveToFile": + for item in actual: + if item.startswith("hsperfdata_"): + expect.append(item) + break + expect.sort() + actual.sort() + while expect != actual: + for item in actual: + if item not in expect: + self.fail("found %s" % item) + self.fail("directory contents not as expected") + if err: + self.fail("err not as expected") + if not "Hello world" in out.split("\n"): + self.fail("out not as expected") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print >>sys.stderr, "usage: %s /path/to/jdk/bin/java" % sys.argv[0] + sys.exit(1) + Main(sys.argv[1]) From gnu_andrew at member.fsf.org Tue Dec 22 03:30:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 22 Dec 2009 11:30:35 +0000 Subject: /hg/icedtea: Fix zero build as additional VM. In-Reply-To: References: Message-ID: <17c6771e0912220330k5bd8617fucf543ad85566834d@mail.gmail.com> 2009/12/21 : > changeset e7ebeda31ef7 in /hg/icedtea > details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e7ebeda31ef7 > author: doko at ubuntu.com > date: Mon Dec 21 16:42:29 2009 +0100 > > ? ? ? ?Fix zero build as additional VM. > > ? ? ? ?2009-12-21 Matthias Klose > > ? ? ? ? * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Fix path for > ? ? ? ? ? ? ? ?--with-jdk-home= option. > > > diffstat: > > 2 files changed, 6 insertions(+), 1 deletion(-) > ChangeLog ? | ? ?5 +++++ > Makefile.am | ? ?2 +- > > diffs (24 lines): > > diff -r 03d84febc75e -r e7ebeda31ef7 ChangeLog > --- a/ChangeLog Mon Dec 21 13:40:28 2009 +0000 > +++ b/ChangeLog Mon Dec 21 16:42:29 2009 +0100 > @@ -1,3 +1,8 @@ 2009-12-21 ?Andrew John Hughes ? +2009-12-21 ?Matthias Klose ? > + > + ? ? ? * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Fix path for > + ? ? ? --with-jdk-home= option. > + > ?2009-12-21 ?Andrew John Hughes ? > > ? ? ? ?* Makefile.am: > diff -r 03d84febc75e -r e7ebeda31ef7 Makefile.am > --- a/Makefile.am ? ? ? Mon Dec 21 13:40:28 2009 +0000 > +++ b/Makefile.am ? ? ? Mon Dec 21 16:42:29 2009 +0100 > @@ -2344,7 +2344,7 @@ clean-add-cacao-debug: > ?# configure script arguments, quoted in single quotes > ?CONFIGURE_ARGS = @CONFIGURE_ARGS@ > ?ADD_ZERO_CONFIGURE_ARGS = \ > - ? ? ? --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ > + ? ? ? --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \ > ? ? ? ?--disable-bootstrap --enable-zero > ?if ADD_SHARK_BUILD > ?ADD_ZERO_CONFIGURE_ARGS += \ > Why does this fail? I can't see a problem with the above setting. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Tue Dec 22 03:47:19 2009 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 22 Dec 2009 12:47:19 +0100 Subject: /hg/icedtea: Fix zero build as additional VM. In-Reply-To: <17c6771e0912220330k5bd8617fucf543ad85566834d@mail.gmail.com> References: <17c6771e0912220330k5bd8617fucf543ad85566834d@mail.gmail.com> Message-ID: <4B30B1C7.3070906@ubuntu.com> >> diff -r 03d84febc75e -r e7ebeda31ef7 Makefile.am >> --- a/Makefile.am Mon Dec 21 13:40:28 2009 +0000 >> +++ b/Makefile.am Mon Dec 21 16:42:29 2009 +0100 >> @@ -2344,7 +2344,7 @@ clean-add-cacao-debug: >> # configure script arguments, quoted in single quotes >> CONFIGURE_ARGS = @CONFIGURE_ARGS@ >> ADD_ZERO_CONFIGURE_ARGS = \ >> - --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ >> + --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \ >> --disable-bootstrap --enable-zero >> if ADD_SHARK_BUILD >> ADD_ZERO_CONFIGURE_ARGS += \ >> > > Why does this fail? I can't see a problem with the above setting. BUILD_OUTPUT_DIR itself is prefixed with abs_top_builddir, not sure why, but this is different from icedtea6. From gnu_andrew at member.fsf.org Tue Dec 22 03:49:53 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 22 Dec 2009 11:49:53 +0000 Subject: /hg/icedtea: Fix zero build as additional VM. In-Reply-To: <4B30B1C7.3070906@ubuntu.com> References: <17c6771e0912220330k5bd8617fucf543ad85566834d@mail.gmail.com> <4B30B1C7.3070906@ubuntu.com> Message-ID: <17c6771e0912220349n4488ae27lda2bf4542ea7f3ef@mail.gmail.com> 2009/12/22 Matthias Klose : >>> diff -r 03d84febc75e -r e7ebeda31ef7 Makefile.am >>> --- a/Makefile.am ? ? ? Mon Dec 21 13:40:28 2009 +0000 >>> +++ b/Makefile.am ? ? ? Mon Dec 21 16:42:29 2009 +0100 >>> @@ -2344,7 +2344,7 @@ clean-add-cacao-debug: >>> ?# configure script arguments, quoted in single quotes >>> ?CONFIGURE_ARGS = @CONFIGURE_ARGS@ >>> ?ADD_ZERO_CONFIGURE_ARGS = \ >>> - >>> --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ >>> + ? ? ? --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \ >>> ? ? ? ?--disable-bootstrap --enable-zero >>> ?if ADD_SHARK_BUILD >>> ?ADD_ZERO_CONFIGURE_ARGS += \ >>> >> >> Why does this fail? ?I can't see a problem with the above setting. > > BUILD_OUTPUT_DIR itself is prefixed with abs_top_builddir, not sure why, but > this is different from icedtea6. > Ah ok; I probably added it generally for the same reason it was added locally and didn't see your usage. Sorry, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Dec 22 11:36:44 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 22 Dec 2009 14:36:44 -0500 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop Message-ID: <20091222193643.GB29532@redhat.com> As discussed earlier, based on Mark's suggestion, here is a patch to set the JDK update version based on the drop version. I tested it with icedtea6 head and it seems to work correctly. ChangeLog: 2009-12-22 Deepak Bhole * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version Cheers, Deepak From dbhole at redhat.com Tue Dec 22 12:08:55 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 22 Dec 2009 15:08:55 -0500 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <20091222193643.GB29532@redhat.com> References: <20091222193643.GB29532@redhat.com> Message-ID: <20091222200855.GC29532@redhat.com> * Deepak Bhole [2009-12-22 14:37]: > As discussed earlier, based on Mark's suggestion, here is a patch to set > the JDK update version based on the drop version. I tested it with > icedtea6 head and it seems to work correctly. > > ChangeLog: > 2009-12-22 Deepak Bhole > > * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version > > Cheers, > Deepak I think this will go better if I actually attach the patch.. Deepak -------------- next part -------------- A non-text attachment was scrubbed... Name: jdk-update-version.patch Type: text/x-patch Size: 394 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091222/e5abbd0e/jdk-update-version.patch From gnu_andrew at member.fsf.org Tue Dec 22 12:12:24 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 22 Dec 2009 20:12:24 +0000 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <20091222200855.GC29532@redhat.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> Message-ID: <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> 2009/12/22 Deepak Bhole : > * Deepak Bhole [2009-12-22 14:37]: >> As discussed earlier, based on Mark's suggestion, here is a patch to set >> the JDK update version based on the drop version. I tested it with >> icedtea6 head and it seems to work correctly. >> >> ChangeLog: >> 2009-12-22 ?Deepak Bhole >> >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version >> >> Cheers, >> Deepak > > I think this will go better if I actually attach the patch.. > > Deepak > This patch uses the version of IcedTea rather than the drop number which would be OPENJDK_VERSION. Maybe the latter would be better as it's a whole number rather than 1.6, 1.7, etc.? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Dec 22 13:01:11 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 22 Dec 2009 16:01:11 -0500 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> Message-ID: <20091222210110.GD29532@redhat.com> * Andrew John Hughes [2009-12-22 15:12]: > 2009/12/22 Deepak Bhole : > > * Deepak Bhole [2009-12-22 14:37]: > >> As discussed earlier, based on Mark's suggestion, here is a patch to set > >> the JDK update version based on the drop version. I tested it with > >> icedtea6 head and it seems to work correctly. > >> > >> ChangeLog: > >> 2009-12-22 ?Deepak Bhole > >> > >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version > >> > >> Cheers, > >> Deepak > > > > I think this will go better if I actually attach the patch.. > > > > Deepak > > > > This patch uses the version of IcedTea rather than the drop number > which would be OPENJDK_VERSION. Maybe the latter would be better as > it's a whole number rather than 1.6, 1.7, etc.? The OpenJDK version is bXX, which is not the convention that the Sun JRE follows. The patch uses PACKAGE_VERSION and then uses sed to remove the ".", providing a # that is comparable to Sun's JRE. Cheers, Deepak > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Tue Dec 22 13:08:25 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 22 Dec 2009 21:08:25 +0000 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <20091222210110.GD29532@redhat.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> <20091222210110.GD29532@redhat.com> Message-ID: <17c6771e0912221308j11cbeb6by40e17e6a7dadf53a@mail.gmail.com> 2009/12/22 Deepak Bhole : > * Andrew John Hughes [2009-12-22 15:12]: >> 2009/12/22 Deepak Bhole : >> > * Deepak Bhole [2009-12-22 14:37]: >> >> As discussed earlier, based on Mark's suggestion, here is a patch to set >> >> the JDK update version based on the drop version. I tested it with >> >> icedtea6 head and it seems to work correctly. >> >> >> >> ChangeLog: >> >> 2009-12-22 ?Deepak Bhole >> >> >> >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version >> >> >> >> Cheers, >> >> Deepak >> > >> > I think this will go better if I actually attach the patch.. >> > >> > Deepak >> > >> >> This patch uses the version of IcedTea rather than the drop number >> which would be OPENJDK_VERSION. ?Maybe the latter would be better as >> it's a whole number rather than 1.6, 1.7, etc.? > > The OpenJDK version is bXX, which is not the convention that the Sun JRE > follows. The patch uses PACKAGE_VERSION and then uses sed to remove the > ".", providing a # that is comparable to Sun's JRE. > > Cheers, > Deepak > >> -- >> Andrew :-) >> >> Free Java Software Engineer >> Red Hat, Inc. (http://www.redhat.com) >> >> Support Free Java! >> Contribute to GNU Classpath and the OpenJDK >> http://www.gnu.org/software/classpath >> http://openjdk.java.net >> >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > If you drop the b, it's actually the same at present (17) and more sensible a seriesthan 17, 18, 19, 110... -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Dec 22 13:43:11 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 22 Dec 2009 16:43:11 -0500 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> Message-ID: <20091222214311.GE29532@redhat.com> * Andrew John Hughes [2009-12-22 15:12]: > 2009/12/22 Deepak Bhole : > > * Deepak Bhole [2009-12-22 14:37]: > >> As discussed earlier, based on Mark's suggestion, here is a patch to set > >> the JDK update version based on the drop version. I tested it with > >> icedtea6 head and it seems to work correctly. > >> > >> ChangeLog: > >> 2009-12-22 ?Deepak Bhole > >> > >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version > >> > >> Cheers, > >> Deepak > > > > I think this will go better if I actually attach the patch.. > > > > Deepak > > > > This patch uses the version of IcedTea rather than the drop number > which would be OPENJDK_VERSION. Maybe the latter would be better as > it's a whole number rather than 1.6, 1.7, etc.? Ah, I see the issue now. Okay, updated patch attached. Cheers, Deepak > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- A non-text attachment was scrubbed... Name: jdk-update-version.patch Type: text/x-patch Size: 389 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091222/917f78d6/jdk-update-version.patch From gnu_andrew at member.fsf.org Tue Dec 22 16:36:51 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 23 Dec 2009 00:36:51 +0000 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <20091222214311.GE29532@redhat.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> <20091222214311.GE29532@redhat.com> Message-ID: <17c6771e0912221636l7dacfbf7ub3216600e17b3ba5@mail.gmail.com> 2009/12/22 Deepak Bhole : > * Andrew John Hughes [2009-12-22 15:12]: >> 2009/12/22 Deepak Bhole : >> > * Deepak Bhole [2009-12-22 14:37]: >> >> As discussed earlier, based on Mark's suggestion, here is a patch to set >> >> the JDK update version based on the drop version. I tested it with >> >> icedtea6 head and it seems to work correctly. >> >> >> >> ChangeLog: >> >> 2009-12-22 ?Deepak Bhole >> >> >> >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version >> >> >> >> Cheers, >> >> Deepak >> > >> > I think this will go better if I actually attach the patch.. >> > >> > Deepak >> > >> >> This patch uses the version of IcedTea rather than the drop number >> which would be OPENJDK_VERSION. ?Maybe the latter would be better as >> it's a whole number rather than 1.6, 1.7, etc.? > > Ah, I see the issue now. Okay, updated patch attached. > > Cheers, > Deepak > >> -- >> Andrew :-) >> >> Free Java Software Engineer >> Red Hat, Inc. (http://www.redhat.com) >> >> Support Free Java! >> Contribute to GNU Classpath and the OpenJDK >> http://www.gnu.org/software/classpath >> http://openjdk.java.net >> >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > Looks good to me. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Dec 23 01:44:01 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 23 Dec 2009 09:44:01 +0000 Subject: [Bug 421] New: Support for building without X11 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=421 Summary: Support for building without X11 Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: devurandom at gmx.net It would be nice if IcedTea could be built without having X11 installed. It would be completely acceptable to not have all standard classes available in this case. http://bugs.gentoo.org/show_bug.cgi?id=297510 is the Gentoo/Linux downstream bugreport. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at icedtea.classpath.org Wed Dec 23 11:07:05 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 23 Dec 2009 19:07:05 +0000 Subject: /hg/icedtea6: Set JDK_UPDATE_VERSION based on upstream drop version Message-ID: changeset 8826d5735e2c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8826d5735e2c author: Deepak Bhole date: Tue Dec 22 16:44:24 2009 -0500 Set JDK_UPDATE_VERSION based on upstream drop version diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ Makefile.am | 2 +- diffs (23 lines): diff -r d48415f1ab6f -r 8826d5735e2c ChangeLog --- a/ChangeLog Tue Dec 22 11:42:03 2009 +0100 +++ b/ChangeLog Tue Dec 22 16:44:24 2009 -0500 @@ -1,3 +1,7 @@ 2009-12-22 Gary Benson + + * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version + 2009-12-22 Gary Benson * contrib/checkopts/checkopts: New file. diff -r d48415f1ab6f -r 8826d5735e2c Makefile.am --- a/Makefile.am Tue Dec 22 11:42:03 2009 +0100 +++ b/Makefile.am Tue Dec 22 16:44:24 2009 -0500 @@ -373,7 +373,7 @@ else ICEDTEA_SHARK_BUILD = endif -JDK_UPDATE_VERSION = 0 +JDK_UPDATE_VERSION = $(shell echo $(OPENJDK_VERSION) | sed -e "s/^b//") COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) ICEDTEA_ENV = \ IMPORT_BINARY_PLUGS=true \ From dbhole at redhat.com Wed Dec 23 11:14:20 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 23 Dec 2009 14:14:20 -0500 Subject: RFC: Minor patch to set JDK_UPDATE_VERSION based on drop In-Reply-To: <17c6771e0912221636l7dacfbf7ub3216600e17b3ba5@mail.gmail.com> References: <20091222193643.GB29532@redhat.com> <20091222200855.GC29532@redhat.com> <17c6771e0912221212n6de12b84k21d72dac497fa874@mail.gmail.com> <20091222214311.GE29532@redhat.com> <17c6771e0912221636l7dacfbf7ub3216600e17b3ba5@mail.gmail.com> Message-ID: <20091223191420.GA11956@redhat.com> * Andrew John Hughes [2009-12-22 19:37]: > 2009/12/22 Deepak Bhole : > > * Andrew John Hughes [2009-12-22 15:12]: > >> 2009/12/22 Deepak Bhole : > >> > * Deepak Bhole [2009-12-22 14:37]: > >> >> As discussed earlier, based on Mark's suggestion, here is a patch to set > >> >> the JDK update version based on the drop version. I tested it with > >> >> icedtea6 head and it seems to work correctly. > >> >> > >> >> ChangeLog: > >> >> 2009-12-22 ?Deepak Bhole > >> >> > >> >> ? ? * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version > >> >> > >> >> Cheers, > >> >> Deepak > >> > > >> > I think this will go better if I actually attach the patch.. > >> > > >> > Deepak > >> > > >> > >> This patch uses the version of IcedTea rather than the drop number > >> which would be OPENJDK_VERSION. ?Maybe the latter would be better as > >> it's a whole number rather than 1.6, 1.7, etc.? > > > > Ah, I see the issue now. Okay, updated patch attached. > > > > Cheers, > > Deepak > > > >> -- > >> Andrew :-) > >> > >> Free Java Software Engineer > >> Red Hat, Inc. (http://www.redhat.com) > >> > >> Support Free Java! > >> Contribute to GNU Classpath and the OpenJDK > >> http://www.gnu.org/software/classpath > >> http://openjdk.java.net > >> > >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > >> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > > > > Looks good to me. Thanks! Pushed to 6 and 7. Cheers, Deepak > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Dec 23 14:18:40 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 23 Dec 2009 22:18:40 +0000 Subject: [Bug 422] New: JRE crash Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=422 Summary: JRE crash Product: IcedTea Version: unspecified Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: mothlight at fastmail.fm # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00dc9623, pid=12611, tid=9821040 # # JRE version: 6.0-b16 # Java VM: OpenJDK Server VM (14.0-b16 mixed mode linux-x86 ) # Distribution: Custom build (Thu Nov 12 09:49:25 EST 2009) # Problematic frame: # V [libjvm.so+0x1d6623] # # An error report file with more information is saved as: # /home/nice/vuze/hs_err_pid12611.log # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # /home/nice/vuze/vuze: line 188: 12611 Aborted (core dumped) ${JAVA_PROGRAM_DIR}java "${JAVA_ARGS}" -cp "${CLASSPATH}" -Djava.library.path="${PROGRAM_DIR}" -Dazureus.install.path="${PROGRAM_DIR}" -Dazureus.script="$0" $JAVA_PROPS $START_CLASS "$@" Exit from Azureus complete No shutdown tasks to do Azureus TERMINATED. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Dec 23 14:19:25 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 23 Dec 2009 22:19:25 +0000 Subject: [Bug 422] JRE crash Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=422 ------- Comment #1 from mothlight at fastmail.fm 2009-12-23 22:19 ------- Created an attachment (id=278) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=278&action=view) Crash log -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Wed Dec 23 18:07:31 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 24 Dec 2009 02:07:31 +0000 Subject: /hg/icedtea: 2 new changesets Message-ID: changeset 10f206eaddc7 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=10f206eaddc7 author: Andrew John Hughes date: Thu Dec 24 02:08:42 2009 +0000 Make updating rt.jar dependent on LACKS_SUN_AWT_TOOLKIT. 2009-12-23 Andrew John Hughes * Makefile.am: (rt.stamp): Also make zip updating dependent on LACKS_SUN_AWT_TOOLKIT. changeset a58d87327776 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=a58d87327776 author: Andrew John Hughes date: Thu Dec 24 02:12:53 2009 +0000 Merge diffstat: 2 files changed, 14 insertions(+), 1 deletion(-) ChangeLog | 11 +++++++++++ Makefile.am | 4 +++- diffs (42 lines): diff -r 03d84febc75e -r a58d87327776 ChangeLog --- a/ChangeLog Mon Dec 21 13:40:28 2009 +0000 +++ b/ChangeLog Thu Dec 24 02:12:53 2009 +0000 @@ -1,3 +1,14 @@ 2009-12-21 Andrew John Hughes + + * Makefile.am: + (rt.stamp): Also make zip updating dependent + on LACKS_SUN_AWT_TOOLKIT. + +2009-12-21 Matthias Klose + + * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Fix path for + --with-jdk-home= option. + 2009-12-21 Andrew John Hughes * Makefile.am: diff -r 03d84febc75e -r a58d87327776 Makefile.am --- a/Makefile.am Mon Dec 21 13:40:28 2009 +0000 +++ b/Makefile.am Thu Dec 24 02:12:53 2009 +0000 @@ -2344,7 +2344,7 @@ clean-add-cacao-debug: # configure script arguments, quoted in single quotes CONFIGURE_ARGS = @CONFIGURE_ARGS@ ADD_ZERO_CONFIGURE_ARGS = \ - --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ + --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \ --disable-bootstrap --enable-zero if ADD_SHARK_BUILD ADD_ZERO_CONFIGURE_ARGS += \ @@ -2560,9 +2560,11 @@ endif touch $@ stamps/rt.stamp: stamps/rt-class-files.stamp +if LACKS_SUN_AWT_TOOLKIT (cd lib/rt ; \ $(ZIP) -qur $(abs_top_builddir)/bootstrap/boot/jre/lib/rt.jar \ com java javax sun ); +endif mkdir -p stamps touch $@ From andrew at icedtea.classpath.org Thu Dec 24 05:30:20 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 24 Dec 2009 13:30:20 +0000 Subject: /hg/icedtea6: Added tag icedtea-1.7-branchpoint for changeset 88... Message-ID: changeset 5dec35b43920 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5dec35b43920 author: Andrew John Hughes date: Thu Dec 24 13:34:55 2009 +0000 Added tag icedtea-1.7-branchpoint for changeset 8826d5735e2c diffstat: 1 file changed, 1 insertion(+) .hgtags | 1 + diffs (8 lines): diff -r 8826d5735e2c -r 5dec35b43920 .hgtags --- a/.hgtags Tue Dec 22 16:44:24 2009 -0500 +++ b/.hgtags Thu Dec 24 13:34:55 2009 +0000 @@ -16,3 +16,4 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 926c38e2b2830971f6ca0dff2ce25f78a694b178 icedtea6-1.5rc3 9420faca6468e1c75e9bfa73b31246ba0b73a77d icedtea-1.6-branchpoint +8826d5735e2ca97ecdb35e7c977785d3e5b99556 icedtea-1.7-branchpoint From andrew at icedtea.classpath.org Thu Dec 24 05:51:24 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 24 Dec 2009 13:51:24 +0000 Subject: /hg/release/icedtea6-1.7: 2 new changesets Message-ID: changeset 445310fc5c90 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=445310fc5c90 author: andrew date: Thu Dec 24 13:53:45 2009 +0000 Added tag icedtea6-1.7-branch for changeset 8826d5735e2c changeset 56fe14241120 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=56fe14241120 author: andrew date: Thu Dec 24 13:56:30 2009 +0000 Bump version to 1.7. 2009-12-24 Andrew John Hughes * configure.ac: Bump version to 1.7. * NEWS: Mention X11 fix. diffstat: 4 files changed, 8 insertions(+), 2 deletions(-) .hgtags | 1 + ChangeLog | 5 +++++ NEWS | 2 +- configure.ac | 2 +- diffs (41 lines): diff -r 8826d5735e2c -r 56fe14241120 .hgtags --- a/.hgtags Tue Dec 22 16:44:24 2009 -0500 +++ b/.hgtags Thu Dec 24 13:56:30 2009 +0000 @@ -16,3 +16,4 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 926c38e2b2830971f6ca0dff2ce25f78a694b178 icedtea6-1.5rc3 9420faca6468e1c75e9bfa73b31246ba0b73a77d icedtea-1.6-branchpoint +8826d5735e2ca97ecdb35e7c977785d3e5b99556 icedtea6-1.7-branch diff -r 8826d5735e2c -r 56fe14241120 ChangeLog --- a/ChangeLog Tue Dec 22 16:44:24 2009 -0500 +++ b/ChangeLog Thu Dec 24 13:56:30 2009 +0000 @@ -1,3 +1,8 @@ 2009-12-22 Deepak Bhole + + * configure.ac: Bump version to 1.7. + * NEWS: Mention X11 fix. + 2009-12-22 Deepak Bhole * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version diff -r 8826d5735e2c -r 56fe14241120 NEWS --- a/NEWS Tue Dec 22 16:44:24 2009 -0500 +++ b/NEWS Thu Dec 24 13:56:30 2009 +0000 @@ -5,7 +5,7 @@ New in release 1.7 (XXXX-XX-XX): --with-hotspot-build=hs16. - Zero port updated to match the version submitted to OpenJDK as closely as possible. -- libjpeg7 supported. +- libjpeg7 and libXext >= 1.1.0 supported. - Added JNI call tracing using systemtap version 1.0+ when configuring with --enable-systemtap. See tapset/hotspot_jni.stp. - Latest security updates: diff -r 8826d5735e2c -r 56fe14241120 configure.ac --- a/configure.ac Tue Dec 22 16:44:24 2009 -0500 +++ b/configure.ac Thu Dec 24 13:56:30 2009 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.7pre], [distro-pk -AC_INIT([icedtea6], [1.7pre], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.7], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From andrew at icedtea.classpath.org Thu Dec 24 05:51:51 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 24 Dec 2009 13:51:51 +0000 Subject: /hg/icedtea6: Bump to 1.8pre. Message-ID: changeset 40fc03b5d595 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=40fc03b5d595 author: Andrew John Hughes date: Thu Dec 24 13:44:27 2009 +0000 Bump to 1.8pre. 2009-12-24 Andrew John Hughes * configure.ac: Bump version to 1.8pre. * NEWS: Mention X11 fix. diffstat: 3 files changed, 7 insertions(+), 2 deletions(-) ChangeLog | 5 +++++ NEWS | 2 +- configure.ac | 2 +- diffs (33 lines): diff -r 5dec35b43920 -r 40fc03b5d595 ChangeLog --- a/ChangeLog Thu Dec 24 13:34:55 2009 +0000 +++ b/ChangeLog Thu Dec 24 13:44:27 2009 +0000 @@ -1,3 +1,8 @@ 2009-12-22 Deepak Bhole + + * configure.ac: Bump version to 1.8pre. + * NEWS: Mention X11 fix. + 2009-12-22 Deepak Bhole * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version diff -r 5dec35b43920 -r 40fc03b5d595 NEWS --- a/NEWS Thu Dec 24 13:34:55 2009 +0000 +++ b/NEWS Thu Dec 24 13:44:27 2009 +0000 @@ -5,7 +5,7 @@ New in release 1.7 (XXXX-XX-XX): --with-hotspot-build=hs16. - Zero port updated to match the version submitted to OpenJDK as closely as possible. -- libjpeg7 supported. +- libjpeg7 and libXext >= 1.1.0 supported. - Added JNI call tracing using systemtap version 1.0+ when configuring with --enable-systemtap. See tapset/hotspot_jni.stp. - Latest security updates: diff -r 5dec35b43920 -r 40fc03b5d595 configure.ac --- a/configure.ac Thu Dec 24 13:34:55 2009 +0000 +++ b/configure.ac Thu Dec 24 13:44:27 2009 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.7pre], [distro-pk -AC_INIT([icedtea6], [1.7pre], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.8pre], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From gnu_andrew at member.fsf.org Thu Dec 24 06:48:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 24 Dec 2009 14:48:56 +0000 Subject: New Branches Available for Testing Message-ID: <17c6771e0912240648g7c05535aja4052ce19bd1e0b3@mail.gmail.com> Two new branches are now available for testing: 1. IcedTea6 1.7 has been forked from trunk: http://icedtea.classpath.org/hg/release/icedtea6-1.7 2. IcedTea6-hg now builds against the JDK6 Mercurial forest (imminent b18): http://icedtea.classpath.org/people/andrew/icedtea6-hg For testing the hg branch, the recommended method is to checkout OpenJDK6 (hg fclone http://hg.openjdk.java.net/jdk6/jdk6) and then point the build to the checkout (./configure --with-openjdk-src-dir=). You can use --enable-hg instead but this is slow and not recommended for multiple successive builds. I think we should aim for a release of 1.7 in early January. *Please post ALL patches for the 1.7 tree to the list for approval prior to committing.* -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at icedtea.classpath.org Thu Dec 24 11:01:20 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 24 Dec 2009 19:01:20 +0000 Subject: /hg/icedtea6: - Stability imrovements Message-ID: changeset 5e600a55ee80 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5e600a55ee80 author: Deepak Bhole date: Thu Dec 24 14:00:06 2009 -0500 - Stability imrovements - Fix regression introduced with fix for bug# 406 - Fix to build with Gecko 1.9.1.5 - Add proper proxy support - Update to work with latest chromium builds diffstat: 13 files changed, 274 insertions(+), 138 deletions(-) ChangeLog | 23 + plugin/icedteanp/IcedTeaNPPlugin.cc | 122 +++---- plugin/icedteanp/IcedTeaNPPlugin.h | 11 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 153 +++++++--- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 8 plugin/icedteanp/IcedTeaPluginUtils.cc | 38 ++ plugin/icedteanp/IcedTeaPluginUtils.h | 14 plugin/icedteanp/IcedTeaRunnable.h | 2 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 8 plugin/icedteanp/IcedTeaScriptablePluginObject.h | 2 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 22 - plugin/icedteanp/java/sun/applet/PluginCallRequestFactory.java | 3 rt/net/sourceforge/jnlp/Launcher.java | 6 diffs (truncated from 1030 to 500 lines): diff -r 40fc03b5d595 -r 5e600a55ee80 ChangeLog --- a/ChangeLog Thu Dec 24 13:44:27 2009 +0000 +++ b/ChangeLog Thu Dec 24 14:00:06 2009 -0500 @@ -1,3 +1,26 @@ 2009-12-24 Andrew John Hughes + + * Makefile.am: Define XP_UNIX, without which critical plugin API + functions don't get exported from Mozilla API anymore. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Update to build with gecko + 1.9.1.5. + (consume_message): Use calloc instead of malloc. + (decode_url): Remove function. Rewritten from scratch (this time without + using any Mozilla code) in IcedTeaPluginUtils. + (get_scriptable_object): Initialize handle to 0 if not already set. + (GCJ_SetWindow): Set proper instance id when manipulating height. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Add temporary + workaround for chromium which seems to free on calls to + NPN_PluginThreadAsyncCall. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (decodeURL): New function. Decodes an encoded URL. + * plugin/icedteanp/IcedTeaPluginUtils.h: Added helper macros for + decodeURL. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: Make panel + visible only if handle is non-zero. + (parse): Fix regression introduced when fix for Bug# 406 was ported over. + Normalized default width and height. + 2009-12-24 Andrew John Hughes * configure.ac: Bump version to 1.8pre. diff -r 40fc03b5d595 -r 5e600a55ee80 plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Dec 24 13:44:27 2009 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Dec 24 14:00:06 2009 -0500 @@ -47,15 +47,17 @@ exception statement from your version. * #include #include -#if MOZILLA_VERSION_COLLAPSED < 1090200 +// Liveconnect extension +#include "IcedTeaScriptablePluginObject.h" +#include "IcedTeaNPPlugin.h" + +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval includes. #include #include #include -#endif // API's into Mozilla -#if MOZILLA_VERSION_COLLAPSED < 1090200 #include #include #include @@ -70,10 +72,6 @@ exception statement from your version. * #include #include #endif - -// Liveconnect extension -#include "IcedTeaScriptablePluginObject.h" -#include "IcedTeaNPPlugin.h" // Error reporting macros. #define PLUGIN_ERROR(message) \ @@ -136,7 +134,7 @@ exception statement from your version. * #define FAILURE_MESSAGE "gcjwebplugin error: Failed to run %s." \ " For more detail rerun \"firefox -g\" in a terminal window." -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval required definition. static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID); #endif @@ -186,7 +184,7 @@ PluginRequestProcessor* plugin_req_proc; // Sends messages to Java over the bus JavaMessageSender* java_req_proc; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval type-punning union. typedef union { @@ -211,7 +209,7 @@ static gboolean plugin_out_pipe_callback GIOCondition condition, gpointer plugin_data); static NPError plugin_start_appletviewer (GCJPluginData* data); -static gchar* plugin_create_applet_tag (int16 argc, char* argn[], +static gchar* plugin_create_applet_tag (int16_t argc, char* argn[], char* argv[]); static void plugin_stop_appletviewer (); // Uninitialize GCJPluginData structure @@ -219,7 +217,6 @@ static void plugin_data_destroy (NPP ins NPError get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len); NPError get_proxy_info(const char* siteAddr, char** proxy, uint32_t* len); -void decode_url(const gchar* url, gchar** decoded_url); void consume_message(gchar* message); void start_jvm_if_needed(); static void appletviewer_monitor(GPid pid, gint status, gpointer data); @@ -261,8 +258,8 @@ pthread_cond_t cond_message_available = // function will free anything that's been allocated so far, set // instance->pdata to NULL and return an error code. NPError -GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode, - int16 argc, char* argn[], char* argv[], +GCJ_New (NPMIMEType pluginType, NPP instance, uint16_t mode, + int16_t argc, char* argn[], char* argv[], NPSavedData* saved) { PLUGIN_DEBUG_0ARG("GCJ_New\n"); @@ -613,8 +610,8 @@ GCJ_GetValue (NPP instance, NPPVariable case NPPVpluginNeedsXEmbed: { PLUGIN_DEBUG_0ARG ("GCJ_GetValue: returning TRUE for NeedsXEmbed.\n"); - PRBool* bool_value = (PRBool*) value; - *bool_value = PR_TRUE; + bool* bool_value = (bool*) value; + *bool_value = true; } break; case NPPVpluginScriptableNPObject: @@ -702,7 +699,6 @@ GCJ_SetWindow (NPP instance, NPWindow* w if (jvm_up) { - gboolean dim_changed = FALSE; // The window is the same as it was for the last @@ -729,8 +725,8 @@ GCJ_SetWindow (NPP instance, NPWindow* w } if (dim_changed) { - gchar* message = g_strdup_printf ("instance 1 width %d height %d", - window->width, window->height); + gchar* message = g_strdup_printf ("instance %d width %d height %d", + id, window->width, window->height); plugin_send_message_to_appletviewer (message); g_free (message); message = NULL; @@ -786,7 +782,7 @@ GCJ_SetWindow (NPP instance, NPWindow* w NPError GCJ_NewStream (NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16* stype) + NPBool seekable, uint16_t* stype) { PLUGIN_DEBUG_0ARG ("GCJ_NewStream\n"); @@ -813,7 +809,7 @@ GCJ_DestroyStream (NPP instance, NPStrea return NPERR_NO_ERROR; } -int32 +int32_t GCJ_WriteReady (NPP instance, NPStream* stream) { PLUGIN_DEBUG_0ARG ("GCJ_WriteReady\n"); @@ -823,8 +819,8 @@ GCJ_WriteReady (NPP instance, NPStream* return 0; } -int32 -GCJ_Write (NPP instance, NPStream* stream, int32 offset, int32 len, +int32_t +GCJ_Write (NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer) { PLUGIN_DEBUG_0ARG ("GCJ_Write\n"); @@ -842,7 +838,7 @@ GCJ_Print (NPP instance, NPPrint* platfo PLUGIN_DEBUG_0ARG ("GCJ_Print return\n"); } -int16 +int16_t GCJ_HandleEvent (NPP instance, void* event) { PLUGIN_DEBUG_0ARG ("GCJ_HandleEvent\n"); @@ -864,7 +860,7 @@ NPError NPError get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len) { -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 nsresult rv; nsCOMPtr sec_man = do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); @@ -949,7 +945,7 @@ plugin_data_new (GCJPluginData** data) // browser. We could not find a way to retrieve the documentbase // using the original Netscape plugin API so we use the XPCOM API // instead. -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 static gchar* plugin_get_documentbase (NPP instance) { @@ -1033,12 +1029,21 @@ plugin_get_documentbase (NPP instance) browser_functions.getvalue(instance, NPNVWindowNPObject, &window); script_str += "window.location.href"; +#if MOZILLA_VERSION_COLLAPSED < 1090200 + script.utf8characters = script_str.c_str(); + script.utf8length = script_str.size(); +#else script.UTF8Characters = script_str.c_str(); script.UTF8Length = script_str.size(); +#endif browser_functions.evaluate(instance, window, &script, location); // Strip everything after the last "/" +#if MOZILLA_VERSION_COLLAPSED < 1090200 + gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).utf8characters, "/", -1); +#else gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).UTF8Characters, "/", -1); +#endif guint parts_sz = g_strv_length (parts); for (int i=0; i < parts_sz - 1; i++) @@ -1163,8 +1168,8 @@ void consume_message(gchar* message) { if (g_str_has_prefix (parts[2], "url")) { // Open the URL in a new browser window. - gchar* decoded_url = (gchar*) malloc(strlen(parts[3])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[3], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[3]) + 1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[3], &decoded_url); PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: opening URL %s\n", decoded_url); PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: URL target %s\n", parts[4]); @@ -1223,12 +1228,13 @@ void consume_message(gchar* message) { gchar* proxy; uint32_t len; - gchar* decoded_url = (gchar*) malloc(strlen(parts[2])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[2], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[2]) + 1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[2], &decoded_url); + PLUGIN_DEBUG_4ARG("parts[0]=%s, parts[1]=%s, parts[2]=%s -- decoded_url=%s\n", parts[0], parts[1], parts[2], decoded_url); gchar* proxy_info; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 proxy = (char*) malloc(sizeof(char)*2048); #endif @@ -1246,15 +1252,15 @@ void consume_message(gchar* message) { g_free(proxy_info); proxy_info = NULL; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 g_free(proxy); proxy = NULL; #endif } else if (g_str_has_prefix(parts[1], "PluginCookieInfo")) { - gchar* decoded_url = (gchar*) malloc(strlen(parts[2])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[2], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[2])+1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[2], &decoded_url); gchar* cookie_info = g_strconcat ("plugin PluginCookieInfo ", parts[2], " ", NULL); gchar* cookie_string; @@ -1293,33 +1299,10 @@ int get_id_from_instance(NPP instance) return id; } -void decode_url(const gchar* url, gchar** decoded_url) -{ -#if MOZILLA_VERSION_COLLAPSED < 1090200 - // There is no GLib function to decode urls, so we fallback to Mozilla's - // methods - - nsresult rv; - nsCOMPtr net_util = do_GetService(NS_NETUTIL_CONTRACTID, &rv); - - if (!net_util) - printf("Error instantiating NetUtil service.\n"); - - nsDependentCSubstring unescaped_url; - net_util->UnescapeString(nsCString(url), 0, unescaped_url); - - // no need for strn. decoded_url is malloced to sizeof unescaped_url, which - // will always be <= decoded size - strcpy(*decoded_url, nsCString(unescaped_url).get()); -#else - -#endif -} - NPError get_proxy_info(const char* siteAddr, char** proxy, uint32_t* len) { -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 nsresult rv; // Initialize service variables @@ -1353,7 +1336,7 @@ get_proxy_info(const char* siteAddr, cha // if proxy info is available, extract it nsCString phost; - PRInt32 pport; + PRint32_t pport; nsCString ptype; info->GetHost(phost); @@ -1535,14 +1518,14 @@ plugin_start_appletviewer (GCJPluginData // Build up the applet tag string that we'll send to the applet // viewer. static gchar* -plugin_create_applet_tag (int16 argc, char* argn[], char* argv[]) +plugin_create_applet_tag (int16_t argc, char* argn[], char* argv[]) { PLUGIN_DEBUG_0ARG ("plugin_create_applet_tag\n"); gchar* applet_tag = g_strdup ("releasevariantvalue; browser_functions.setexception = browserTable->setexception; browser_functions.pluginthreadasynccall = browserTable->pluginthreadasynccall; -#if MOZILLA_VERSION_COLLAPSED >= 1090200 +#if MOZILLA_VERSION_COLLAPSED >= 1090100 browser_functions.getvalueforurl = browserTable->getvalueforurl; browser_functions.setvalueforurl = browserTable->setvalueforurl; #endif @@ -1918,7 +1901,7 @@ NP_Initialize (NPNetscapeFuncs* browserT pluginTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; pluginTable->size = sizeof (NPPluginFuncs); -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 pluginTable->newp = NewNPP_NewProc (GCJ_New); pluginTable->destroy = NewNPP_DestroyProc (GCJ_Destroy); pluginTable->setwindow = NewNPP_SetWindowProc (GCJ_SetWindow); @@ -2066,13 +2049,14 @@ NP_Initialize (NPNetscapeFuncs* browserT data_directory = NULL; } + return np_error; } // Returns a string describing the MIME type that this plugin // handles. char* -NP_GetMIMEDescription (void) +NP_GetMIMEDescription () { PLUGIN_DEBUG_0ARG ("NP_GetMIMEDescription\n"); @@ -2224,6 +2208,18 @@ get_scriptable_object(NPP instance) int id = get_id_from_instance(instance); gchar* id_str = g_strdup_printf ("%d", id); + // Some browsers.. (e.g. chromium) don't call NPP_SetWindow + // for 0x0 plugins and therefore require initialization with + // a 0 handle + if (!data->window_handle) + { + data->window_handle = 0; + gchar *window_message = g_strdup_printf ("instance %s handle %d", + id_str, 0); + plugin_send_message_to_appletviewer (window_message); + g_free (window_message); + } + java_result = java_request.getAppletObjectInstance(id_str); g_free(id_str); diff -r 40fc03b5d595 -r 5e600a55ee80 plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 13:44:27 2009 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 14:00:06 2009 -0500 @@ -39,12 +39,10 @@ exception statement from your version. * #ifndef __ICEDTEANPPLUGIN_H__ #define __ICEDTEANPPLUGIN_H__ -// Netscape plugin API includes. -#include +#define MOZILLA_VERSION_COLLAPSED 1090105 + +#if MOZILLA_VERSION_COLLAPSED < 1090100 #include - -#if MOZILLA_VERSION_COLLAPSED < 1090200 -#include #else #include #include @@ -60,6 +58,9 @@ exception statement from your version. * #include "IcedTeaPluginUtils.h" #include "IcedTeaPluginRequestProcessor.h" + +// Work around across some chromium issues +#define CHROMIUM_WORKAROUND // GCJPluginData stores all the data associated with a single plugin // instance. A separate plugin instance is created for each diff -r 40fc03b5d595 -r 5e600a55ee80 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Thu Dec 24 13:44:27 2009 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Thu Dec 24 14:00:06 2009 -0500 @@ -210,7 +210,7 @@ PluginRequestProcessor::eval(std::vector CHECK_JAVA_RESULT(java_result); script.append(*(java_result->return_string)); - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -219,9 +219,20 @@ PluginRequestProcessor::eval(std::vector thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*window_ptr)); thread_data.parameters.push_back(&script); - browser_functions.pluginthreadasynccall(instance, &_eval, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // Wait till result is ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _eval(&thread_data); + + if (!thread_data.call_successful) + { +#endif + thread_data.result_ready = false; + browser_functions.pluginthreadasynccall(instance, &_eval, &thread_data); + + while (!thread_data.result_ready) usleep(2000); // Wait till result is ready +#ifdef CHROMIUM_WORKAROUND + } +#endif NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); @@ -292,7 +303,7 @@ PluginRequestProcessor::call(std::vector for (int i=0; i < args.size(); i++) args_array[i] = args[i]; - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -303,10 +314,20 @@ PluginRequestProcessor::call(std::vector thread_data.parameters.push_back(&arg_count); thread_data.parameters.push_back(args_array); - printf("Packing %p [%p] %p %s@%p %p %p\n", instance, thread_data.parameters.at(0), window_ptr, window_function_name.c_str(), &window_function_name, &arg_count, args_array); - browser_functions.pluginthreadasynccall(instance, &_call, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _call(&thread_data); + + if (!thread_data.call_successful) + { +#endif + thread_data.result_ready = false; + browser_functions.pluginthreadasynccall(instance, &_call, &thread_data); + + while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + } +#endif NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); @@ -339,7 +360,7 @@ PluginRequestProcessor::sendString(std:: variant_ptr = message_parts->at(3); variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(variant_ptr); - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -348,9 +369,19 @@ PluginRequestProcessor::sendString(std:: thread_data.parameters.push_back(instance); thread_data.parameters.push_back(variant); - browser_functions.pluginthreadasynccall(instance, &_getString, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _getString(&thread_data); + + if (!thread_data.call_successful) From dbhole at icedtea.classpath.org Thu Dec 24 11:01:31 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 24 Dec 2009 19:01:31 +0000 Subject: /hg/release/icedtea6-1.7: Import from 1.6 tip: Message-ID: changeset a0f8cf8cf432 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=a0f8cf8cf432 author: Deepak Bhole date: Thu Dec 24 14:06:38 2009 -0500 Import from 1.6 tip: - Stability imrovements - Fix regression introduced with fix for bug# 406 - Fix to build with Gecko 1.9.1.5 - Add proper proxy support - Update to work with latest chromium builds diffstat: 13 files changed, 274 insertions(+), 138 deletions(-) ChangeLog | 23 + plugin/icedteanp/IcedTeaNPPlugin.cc | 122 +++---- plugin/icedteanp/IcedTeaNPPlugin.h | 11 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 153 +++++++--- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 8 plugin/icedteanp/IcedTeaPluginUtils.cc | 38 ++ plugin/icedteanp/IcedTeaPluginUtils.h | 14 plugin/icedteanp/IcedTeaRunnable.h | 2 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 8 plugin/icedteanp/IcedTeaScriptablePluginObject.h | 2 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 22 - plugin/icedteanp/java/sun/applet/PluginCallRequestFactory.java | 3 rt/net/sourceforge/jnlp/Launcher.java | 6 diffs (truncated from 1030 to 500 lines): diff -r 56fe14241120 -r a0f8cf8cf432 ChangeLog --- a/ChangeLog Thu Dec 24 13:56:30 2009 +0000 +++ b/ChangeLog Thu Dec 24 14:06:38 2009 -0500 @@ -1,3 +1,26 @@ 2009-12-24 Andrew John Hughes + + * Makefile.am: Define XP_UNIX, without which critical plugin API + functions don't get exported from Mozilla API anymore. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Update to build with gecko + 1.9.1.5. + (consume_message): Use calloc instead of malloc. + (decode_url): Remove function. Rewritten from scratch (this time without + using any Mozilla code) in IcedTeaPluginUtils. + (get_scriptable_object): Initialize handle to 0 if not already set. + (GCJ_SetWindow): Set proper instance id when manipulating height. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Add temporary + workaround for chromium which seems to free on calls to + NPN_PluginThreadAsyncCall. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (decodeURL): New function. Decodes an encoded URL. + * plugin/icedteanp/IcedTeaPluginUtils.h: Added helper macros for + decodeURL. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: Make panel + visible only if handle is non-zero. + (parse): Fix regression introduced when fix for Bug# 406 was ported over. + Normalized default width and height. + 2009-12-24 Andrew John Hughes * configure.ac: Bump version to 1.7. diff -r 56fe14241120 -r a0f8cf8cf432 plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Dec 24 13:56:30 2009 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Dec 24 14:06:38 2009 -0500 @@ -47,15 +47,17 @@ exception statement from your version. * #include #include -#if MOZILLA_VERSION_COLLAPSED < 1090200 +// Liveconnect extension +#include "IcedTeaScriptablePluginObject.h" +#include "IcedTeaNPPlugin.h" + +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval includes. #include #include #include -#endif // API's into Mozilla -#if MOZILLA_VERSION_COLLAPSED < 1090200 #include #include #include @@ -70,10 +72,6 @@ exception statement from your version. * #include #include #endif - -// Liveconnect extension -#include "IcedTeaScriptablePluginObject.h" -#include "IcedTeaNPPlugin.h" // Error reporting macros. #define PLUGIN_ERROR(message) \ @@ -136,7 +134,7 @@ exception statement from your version. * #define FAILURE_MESSAGE "gcjwebplugin error: Failed to run %s." \ " For more detail rerun \"firefox -g\" in a terminal window." -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval required definition. static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID); #endif @@ -186,7 +184,7 @@ PluginRequestProcessor* plugin_req_proc; // Sends messages to Java over the bus JavaMessageSender* java_req_proc; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 // Documentbase retrieval type-punning union. typedef union { @@ -211,7 +209,7 @@ static gboolean plugin_out_pipe_callback GIOCondition condition, gpointer plugin_data); static NPError plugin_start_appletviewer (GCJPluginData* data); -static gchar* plugin_create_applet_tag (int16 argc, char* argn[], +static gchar* plugin_create_applet_tag (int16_t argc, char* argn[], char* argv[]); static void plugin_stop_appletviewer (); // Uninitialize GCJPluginData structure @@ -219,7 +217,6 @@ static void plugin_data_destroy (NPP ins NPError get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len); NPError get_proxy_info(const char* siteAddr, char** proxy, uint32_t* len); -void decode_url(const gchar* url, gchar** decoded_url); void consume_message(gchar* message); void start_jvm_if_needed(); static void appletviewer_monitor(GPid pid, gint status, gpointer data); @@ -261,8 +258,8 @@ pthread_cond_t cond_message_available = // function will free anything that's been allocated so far, set // instance->pdata to NULL and return an error code. NPError -GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode, - int16 argc, char* argn[], char* argv[], +GCJ_New (NPMIMEType pluginType, NPP instance, uint16_t mode, + int16_t argc, char* argn[], char* argv[], NPSavedData* saved) { PLUGIN_DEBUG_0ARG("GCJ_New\n"); @@ -613,8 +610,8 @@ GCJ_GetValue (NPP instance, NPPVariable case NPPVpluginNeedsXEmbed: { PLUGIN_DEBUG_0ARG ("GCJ_GetValue: returning TRUE for NeedsXEmbed.\n"); - PRBool* bool_value = (PRBool*) value; - *bool_value = PR_TRUE; + bool* bool_value = (bool*) value; + *bool_value = true; } break; case NPPVpluginScriptableNPObject: @@ -702,7 +699,6 @@ GCJ_SetWindow (NPP instance, NPWindow* w if (jvm_up) { - gboolean dim_changed = FALSE; // The window is the same as it was for the last @@ -729,8 +725,8 @@ GCJ_SetWindow (NPP instance, NPWindow* w } if (dim_changed) { - gchar* message = g_strdup_printf ("instance 1 width %d height %d", - window->width, window->height); + gchar* message = g_strdup_printf ("instance %d width %d height %d", + id, window->width, window->height); plugin_send_message_to_appletviewer (message); g_free (message); message = NULL; @@ -786,7 +782,7 @@ GCJ_SetWindow (NPP instance, NPWindow* w NPError GCJ_NewStream (NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16* stype) + NPBool seekable, uint16_t* stype) { PLUGIN_DEBUG_0ARG ("GCJ_NewStream\n"); @@ -813,7 +809,7 @@ GCJ_DestroyStream (NPP instance, NPStrea return NPERR_NO_ERROR; } -int32 +int32_t GCJ_WriteReady (NPP instance, NPStream* stream) { PLUGIN_DEBUG_0ARG ("GCJ_WriteReady\n"); @@ -823,8 +819,8 @@ GCJ_WriteReady (NPP instance, NPStream* return 0; } -int32 -GCJ_Write (NPP instance, NPStream* stream, int32 offset, int32 len, +int32_t +GCJ_Write (NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer) { PLUGIN_DEBUG_0ARG ("GCJ_Write\n"); @@ -842,7 +838,7 @@ GCJ_Print (NPP instance, NPPrint* platfo PLUGIN_DEBUG_0ARG ("GCJ_Print return\n"); } -int16 +int16_t GCJ_HandleEvent (NPP instance, void* event) { PLUGIN_DEBUG_0ARG ("GCJ_HandleEvent\n"); @@ -864,7 +860,7 @@ NPError NPError get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len) { -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 nsresult rv; nsCOMPtr sec_man = do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); @@ -949,7 +945,7 @@ plugin_data_new (GCJPluginData** data) // browser. We could not find a way to retrieve the documentbase // using the original Netscape plugin API so we use the XPCOM API // instead. -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 static gchar* plugin_get_documentbase (NPP instance) { @@ -1033,12 +1029,21 @@ plugin_get_documentbase (NPP instance) browser_functions.getvalue(instance, NPNVWindowNPObject, &window); script_str += "window.location.href"; +#if MOZILLA_VERSION_COLLAPSED < 1090200 + script.utf8characters = script_str.c_str(); + script.utf8length = script_str.size(); +#else script.UTF8Characters = script_str.c_str(); script.UTF8Length = script_str.size(); +#endif browser_functions.evaluate(instance, window, &script, location); // Strip everything after the last "/" +#if MOZILLA_VERSION_COLLAPSED < 1090200 + gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).utf8characters, "/", -1); +#else gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).UTF8Characters, "/", -1); +#endif guint parts_sz = g_strv_length (parts); for (int i=0; i < parts_sz - 1; i++) @@ -1163,8 +1168,8 @@ void consume_message(gchar* message) { if (g_str_has_prefix (parts[2], "url")) { // Open the URL in a new browser window. - gchar* decoded_url = (gchar*) malloc(strlen(parts[3])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[3], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[3]) + 1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[3], &decoded_url); PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: opening URL %s\n", decoded_url); PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: URL target %s\n", parts[4]); @@ -1223,12 +1228,13 @@ void consume_message(gchar* message) { gchar* proxy; uint32_t len; - gchar* decoded_url = (gchar*) malloc(strlen(parts[2])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[2], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[2]) + 1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[2], &decoded_url); + PLUGIN_DEBUG_4ARG("parts[0]=%s, parts[1]=%s, parts[2]=%s -- decoded_url=%s\n", parts[0], parts[1], parts[2], decoded_url); gchar* proxy_info; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 proxy = (char*) malloc(sizeof(char)*2048); #endif @@ -1246,15 +1252,15 @@ void consume_message(gchar* message) { g_free(proxy_info); proxy_info = NULL; -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 g_free(proxy); proxy = NULL; #endif } else if (g_str_has_prefix(parts[1], "PluginCookieInfo")) { - gchar* decoded_url = (gchar*) malloc(strlen(parts[2])*sizeof(gchar) + sizeof(gchar)); - decode_url(parts[2], &decoded_url); + gchar* decoded_url = (gchar*) calloc(strlen(parts[2])+1, sizeof(gchar)); + IcedTeaPluginUtilities::decodeURL(parts[2], &decoded_url); gchar* cookie_info = g_strconcat ("plugin PluginCookieInfo ", parts[2], " ", NULL); gchar* cookie_string; @@ -1293,33 +1299,10 @@ int get_id_from_instance(NPP instance) return id; } -void decode_url(const gchar* url, gchar** decoded_url) -{ -#if MOZILLA_VERSION_COLLAPSED < 1090200 - // There is no GLib function to decode urls, so we fallback to Mozilla's - // methods - - nsresult rv; - nsCOMPtr net_util = do_GetService(NS_NETUTIL_CONTRACTID, &rv); - - if (!net_util) - printf("Error instantiating NetUtil service.\n"); - - nsDependentCSubstring unescaped_url; - net_util->UnescapeString(nsCString(url), 0, unescaped_url); - - // no need for strn. decoded_url is malloced to sizeof unescaped_url, which - // will always be <= decoded size - strcpy(*decoded_url, nsCString(unescaped_url).get()); -#else - -#endif -} - NPError get_proxy_info(const char* siteAddr, char** proxy, uint32_t* len) { -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 nsresult rv; // Initialize service variables @@ -1353,7 +1336,7 @@ get_proxy_info(const char* siteAddr, cha // if proxy info is available, extract it nsCString phost; - PRInt32 pport; + PRint32_t pport; nsCString ptype; info->GetHost(phost); @@ -1535,14 +1518,14 @@ plugin_start_appletviewer (GCJPluginData // Build up the applet tag string that we'll send to the applet // viewer. static gchar* -plugin_create_applet_tag (int16 argc, char* argn[], char* argv[]) +plugin_create_applet_tag (int16_t argc, char* argn[], char* argv[]) { PLUGIN_DEBUG_0ARG ("plugin_create_applet_tag\n"); gchar* applet_tag = g_strdup ("releasevariantvalue; browser_functions.setexception = browserTable->setexception; browser_functions.pluginthreadasynccall = browserTable->pluginthreadasynccall; -#if MOZILLA_VERSION_COLLAPSED >= 1090200 +#if MOZILLA_VERSION_COLLAPSED >= 1090100 browser_functions.getvalueforurl = browserTable->getvalueforurl; browser_functions.setvalueforurl = browserTable->setvalueforurl; #endif @@ -1918,7 +1901,7 @@ NP_Initialize (NPNetscapeFuncs* browserT pluginTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; pluginTable->size = sizeof (NPPluginFuncs); -#if MOZILLA_VERSION_COLLAPSED < 1090200 +#if MOZILLA_VERSION_COLLAPSED < 1090100 pluginTable->newp = NewNPP_NewProc (GCJ_New); pluginTable->destroy = NewNPP_DestroyProc (GCJ_Destroy); pluginTable->setwindow = NewNPP_SetWindowProc (GCJ_SetWindow); @@ -2066,13 +2049,14 @@ NP_Initialize (NPNetscapeFuncs* browserT data_directory = NULL; } + return np_error; } // Returns a string describing the MIME type that this plugin // handles. char* -NP_GetMIMEDescription (void) +NP_GetMIMEDescription () { PLUGIN_DEBUG_0ARG ("NP_GetMIMEDescription\n"); @@ -2224,6 +2208,18 @@ get_scriptable_object(NPP instance) int id = get_id_from_instance(instance); gchar* id_str = g_strdup_printf ("%d", id); + // Some browsers.. (e.g. chromium) don't call NPP_SetWindow + // for 0x0 plugins and therefore require initialization with + // a 0 handle + if (!data->window_handle) + { + data->window_handle = 0; + gchar *window_message = g_strdup_printf ("instance %s handle %d", + id_str, 0); + plugin_send_message_to_appletviewer (window_message); + g_free (window_message); + } + java_result = java_request.getAppletObjectInstance(id_str); g_free(id_str); diff -r 56fe14241120 -r a0f8cf8cf432 plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 13:56:30 2009 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 14:06:38 2009 -0500 @@ -39,12 +39,10 @@ exception statement from your version. * #ifndef __ICEDTEANPPLUGIN_H__ #define __ICEDTEANPPLUGIN_H__ -// Netscape plugin API includes. -#include +#define MOZILLA_VERSION_COLLAPSED 1090105 + +#if MOZILLA_VERSION_COLLAPSED < 1090100 #include - -#if MOZILLA_VERSION_COLLAPSED < 1090200 -#include #else #include #include @@ -60,6 +58,9 @@ exception statement from your version. * #include "IcedTeaPluginUtils.h" #include "IcedTeaPluginRequestProcessor.h" + +// Work around across some chromium issues +#define CHROMIUM_WORKAROUND // GCJPluginData stores all the data associated with a single plugin // instance. A separate plugin instance is created for each diff -r 56fe14241120 -r a0f8cf8cf432 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Thu Dec 24 13:56:30 2009 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Thu Dec 24 14:06:38 2009 -0500 @@ -210,7 +210,7 @@ PluginRequestProcessor::eval(std::vector CHECK_JAVA_RESULT(java_result); script.append(*(java_result->return_string)); - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -219,9 +219,20 @@ PluginRequestProcessor::eval(std::vector thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*window_ptr)); thread_data.parameters.push_back(&script); - browser_functions.pluginthreadasynccall(instance, &_eval, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // Wait till result is ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _eval(&thread_data); + + if (!thread_data.call_successful) + { +#endif + thread_data.result_ready = false; + browser_functions.pluginthreadasynccall(instance, &_eval, &thread_data); + + while (!thread_data.result_ready) usleep(2000); // Wait till result is ready +#ifdef CHROMIUM_WORKAROUND + } +#endif NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); @@ -292,7 +303,7 @@ PluginRequestProcessor::call(std::vector for (int i=0; i < args.size(); i++) args_array[i] = args[i]; - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -303,10 +314,20 @@ PluginRequestProcessor::call(std::vector thread_data.parameters.push_back(&arg_count); thread_data.parameters.push_back(args_array); - printf("Packing %p [%p] %p %s@%p %p %p\n", instance, thread_data.parameters.at(0), window_ptr, window_function_name.c_str(), &window_function_name, &arg_count, args_array); - browser_functions.pluginthreadasynccall(instance, &_call, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _call(&thread_data); + + if (!thread_data.call_successful) + { +#endif + thread_data.result_ready = false; + browser_functions.pluginthreadasynccall(instance, &_call, &thread_data); + + while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + } +#endif NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); @@ -339,7 +360,7 @@ PluginRequestProcessor::sendString(std:: variant_ptr = message_parts->at(3); variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(variant_ptr); - AyncCallThreadData thread_data = AyncCallThreadData(); + AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; thread_data.parameters = std::vector(); thread_data.result = std::string(); @@ -348,9 +369,19 @@ PluginRequestProcessor::sendString(std:: thread_data.parameters.push_back(instance); thread_data.parameters.push_back(variant); - browser_functions.pluginthreadasynccall(instance, &_getString, &thread_data); - - while (!thread_data.result_ready) usleep(2000); // wait till ready +#ifdef CHROMIUM_WORKAROUND + // Workaround for chromium + _getString(&thread_data); + + if (!thread_data.call_successful) From dbhole at icedtea.classpath.org Thu Dec 24 11:01:44 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 24 Dec 2009 19:01:44 +0000 Subject: /hg/icedtea: 2 new changesets Message-ID: changeset f10cc2673959 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=f10cc2673959 author: Deepak Bhole date: Thu Dec 24 14:01:07 2009 -0500 Set JDK_UPDATE_VERSION based on upstream drop version changeset 316dbf49f070 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=316dbf49f070 author: Deepak Bhole date: Thu Dec 24 14:05:23 2009 -0500 - Blanket merge for np plugin code from icedtea6 branch. diffstat: 19 files changed, 1408 insertions(+), 885 deletions(-) ChangeLog | 10 Makefile.am | 2 netx/net/sourceforge/jnlp/Launcher.java | 6 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 365 ++++- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 53 plugin/icedteanp/IcedTeaNPPlugin.cc | 126 - plugin/icedteanp/IcedTeaNPPlugin.h | 11 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 687 +++------- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 9 plugin/icedteanp/IcedTeaPluginUtils.cc | 306 ++++ plugin/icedteanp/IcedTeaPluginUtils.h | 70 - plugin/icedteanp/IcedTeaRunnable.h | 2 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 260 +-- plugin/icedteanp/IcedTeaScriptablePluginObject.h | 14 plugin/icedteanp/java/netscape/javascript/JSObject.java | 7 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 139 +- plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 103 + plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 120 + plugin/icedteanp/java/sun/applet/PluginCallRequestFactory.java | 3 diffs (truncated from 3807 to 500 lines): diff -r a58d87327776 -r 316dbf49f070 ChangeLog --- a/ChangeLog Thu Dec 24 02:12:53 2009 +0000 +++ b/ChangeLog Thu Dec 24 14:05:23 2009 -0500 @@ -1,3 +1,13 @@ 2009-12-23 Andrew John Hughes + + * plugin/icedeanp/*: Blanket merge with icedtea6 branch. + * netx/net/sourceforge/jnlp/Launcher.java: Switch to only import necessary + classes rather than *. + +2009-12-22 Deepak Bhole + + * Makefile.am: Set JDK_UPDATE_VERSION based on upstream drop version + 2009-12-23 Andrew John Hughes * Makefile.am: diff -r a58d87327776 -r 316dbf49f070 Makefile.am --- a/Makefile.am Thu Dec 24 02:12:53 2009 +0000 +++ b/Makefile.am Thu Dec 24 14:05:23 2009 -0500 @@ -432,7 +432,7 @@ else ICEDTEA_SHARK_BUILD = endif -JDK_UPDATE_VERSION = 0 +JDK_UPDATE_VERSION = $(shell echo $(OPENJDK_VERSION) | sed -e "s/^b//") COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) ICEDTEA_ENV = \ diff -r a58d87327776 -r 316dbf49f070 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Dec 24 02:12:53 2009 +0000 +++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Dec 24 14:05:23 2009 -0500 @@ -19,11 +19,13 @@ package net.sourceforge.jnlp; import java.applet.Applet; import java.awt.Container; -import java.io.*; +import java.io.File; import java.lang.management.ManagementFactory; import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; -import java.net.*; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; import java.util.jar.JarFile; diff -r a58d87327776 -r 316dbf49f070 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Thu Dec 24 02:12:53 2009 +0000 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Thu Dec 24 14:05:23 2009 -0500 @@ -36,6 +36,8 @@ obligated to do so. If you do not wish obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ +#include + #include "IcedTeaJavaRequestProcessor.h" #include "IcedTeaScriptablePluginObject.h" @@ -68,7 +70,7 @@ JavaRequestProcessor::newMessageOnBus(co // Gather the results // Let's get errors out of the way first - if (message_parts->at(4) == "Error") + if (message_parts->at(4).find("Error") == 0) { for (int i=5; i < message_parts->size(); i++) { @@ -111,7 +113,8 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "GetStaticFieldID") || (message_parts->at(4) == "GetFieldID") || (message_parts->at(4) == "GetJavaObject") || - (message_parts->at(4) == "IsInstanceOf")) + (message_parts->at(4) == "IsInstanceOf") || + (message_parts->at(4) == "NewArray")) { result->return_identifier = atoi(message_parts->at(5).c_str()); result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access @@ -124,6 +127,7 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "CallStaticMethod") || (message_parts->at(4) == "GetField") || (message_parts->at(4) == "GetStaticField") || + (message_parts->at(4) == "GetValue") || (message_parts->at(4) == "GetObjectArrayElement")) { @@ -131,6 +135,8 @@ JavaRequestProcessor::newMessageOnBus(co { // literal returns don't have a corresponding jni id result->return_identifier = 0; + result->return_string->append(message_parts->at(5)); + result->return_string->append(" "); result->return_string->append(message_parts->at(6)); } else @@ -300,6 +306,33 @@ JavaRequestProcessor::getToStringValue(s } /** + * Given an object id, fetches the value of that ID from Java + * + * @param object_id The ID of the object + * @return A JavaResultData struct containing the result of the request + */ + +JavaResultData* +JavaRequestProcessor::getValue(std::string object_id) +{ + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetValue "); // get it in UTF8 + message.append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +/** * Given a string id, fetches the actual string from Java side * * @param string_id The ID of the string @@ -475,12 +508,9 @@ JavaResultData* JavaResultData* JavaRequestProcessor::setSlot(std::string objectID, std::string index, - NPVariant value) -{ - std::string id = std::string(); - std::string message = std::string(); - - createJavaObjectFromVariant(value, &id); + std::string value_id) +{ + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); @@ -492,7 +522,30 @@ JavaRequestProcessor::setSlot(std::strin message.append(" "); message.append(index); message.append(" "); - message.append(id); + message.append(value_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +JavaResultData* +JavaRequestProcessor::newArray(std::string array_class, + std::string length) +{ + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" NewArray "); + message.append(array_class); + message.append(" "); + message.append(length); postAndWaitForResponse(message); @@ -620,14 +673,11 @@ JavaRequestProcessor::set(std::string so std::string classID, std::string objectID, std::string fieldName, - NPVariant value) + std::string value_id) { JavaResultData* java_result; JavaRequestProcessor java_request = JavaRequestProcessor(); - std::string id = std::string(); - std::string message = std::string(); - - createJavaObjectFromVariant(value, &id); + std::string message = std::string(); java_result = java_request.getFieldID(classID, fieldName); @@ -649,7 +699,7 @@ JavaRequestProcessor::set(std::string so message.append(" "); message.append(java_result->return_string->c_str()); message.append(" "); - message.append(id); + message.append(value_id); postAndWaitForResponse(message); @@ -662,9 +712,9 @@ JavaRequestProcessor::setStaticField(std JavaRequestProcessor::setStaticField(std::string source, std::string classID, std::string fieldName, - NPVariant value) -{ - return set(source, true, classID, "", fieldName, value); + std::string value_id) +{ + return set(source, true, classID, "", fieldName, value_id); } JavaResultData* @@ -672,9 +722,9 @@ JavaRequestProcessor::setField(std::stri std::string classID, std::string objectID, std::string fieldName, - NPVariant value) -{ - return set(source, false, classID, objectID, fieldName, value); + std::string value_id) +{ + return set(source, false, classID, objectID, fieldName, value_id); } JavaResultData* @@ -754,7 +804,35 @@ JavaRequestProcessor::getStaticMethodID( } void -JavaRequestProcessor::createJavaObjectFromVariant(NPVariant variant, std::string* id) +getArrayTypeForJava(NPP instance, NPVariant element, std::string* type) +{ + + if (NPVARIANT_IS_BOOLEAN(element)) { + type->append("string"); + } else if (NPVARIANT_IS_INT32(element)) { + type->append("string"); + } else if (NPVARIANT_IS_DOUBLE(element)) { + type->append("string"); + } else if (NPVARIANT_IS_STRING(element)) { + type->append("string"); + } else if (NPVARIANT_IS_OBJECT(element)) { + + NPObject* first_element_obj = NPVARIANT_TO_OBJECT(element); + if (IcedTeaScriptableJavaPackageObject::is_valid_java_object(first_element_obj)) + { + std::string class_id = std::string(((IcedTeaScriptableJavaObject*) first_element_obj)->getClassID()); + type->append(class_id); + } else + { + type->append("jsobject"); + } + } else { + type->append("jsobject"); // Else it is a string + } +} + +void +createJavaObjectFromVariant(NPP instance, NPVariant variant, std::string* id) { JavaResultData* java_result; @@ -773,14 +851,12 @@ JavaRequestProcessor::createJavaObjectFr PLUGIN_DEBUG_1ARG("VOID %d\n", variant); id->append("0"); return; // no need to go further - } - else if (NPVARIANT_IS_NULL(variant)) + } else if (NPVARIANT_IS_NULL(variant)) { PLUGIN_DEBUG_1ARG("NULL\n", variant); id->append("0"); return; // no need to go further - } - else if (NPVARIANT_IS_BOOLEAN(variant)) + } else if (NPVARIANT_IS_BOOLEAN(variant)) { className = "java.lang.Boolean"; @@ -789,8 +865,7 @@ JavaRequestProcessor::createJavaObjectFr else stringArg = "false"; - } - else if (NPVARIANT_IS_INT32(variant)) + } else if (NPVARIANT_IS_INT32(variant)) { className = "java.lang.Integer"; @@ -798,8 +873,7 @@ JavaRequestProcessor::createJavaObjectFr sprintf(valueStr, "%d", NPVARIANT_TO_INT32(variant)); stringArg += valueStr; free(valueStr); - } - else if (NPVARIANT_IS_DOUBLE(variant)) + } else if (NPVARIANT_IS_DOUBLE(variant)) { className = "java.lang.Double"; @@ -807,8 +881,7 @@ JavaRequestProcessor::createJavaObjectFr sprintf(valueStr, "%f", NPVARIANT_TO_DOUBLE(variant)); stringArg += valueStr; free(valueStr); - } - else if (NPVARIANT_IS_STRING(variant)) + } else if (NPVARIANT_IS_STRING(variant)) { className = "java.lang.String"; #if MOZILLA_VERSION_COLLAPSED < 1090200 @@ -816,28 +889,174 @@ JavaRequestProcessor::createJavaObjectFr #else stringArg += NPVARIANT_TO_STRING(variant).UTF8Characters; #endif + } else if (NPVARIANT_IS_OBJECT(variant)) + { + + NPObject* obj = NPVARIANT_TO_OBJECT(variant); + if (IcedTeaScriptableJavaPackageObject::is_valid_java_object(obj)) + { + PLUGIN_DEBUG_0ARG("NPObject is a Java object\n"); + alreadyCreated = true; + } else + { + PLUGIN_DEBUG_0ARG("NPObject is not a Java object"); + NPIdentifier length_id = browser_functions.getstringidentifier("length"); + + // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though? + + // Is it an array? + if (IcedTeaPluginUtilities::isObjectJSArray(instance, obj)) { + PLUGIN_DEBUG_0ARG("NPObject is an array\n"); + + std::string array_id = std::string(); + std::string java_array_type = std::string(); + NPVariant length = NPVariant(); + browser_functions.getproperty(instance, obj, length_id, &length); + + std::string length_str = std::string(); + IcedTeaPluginUtilities::itoa(NPVARIANT_TO_INT32(length), &length_str); + + if (NPVARIANT_TO_INT32(length) > 0) + { + NPIdentifier id_0 = browser_functions.getintidentifier(0); + NPVariant first_element = NPVariant(); + browser_functions.getproperty(instance, obj, id_0, &first_element); + + // Check for multi-dim array + if (NPVARIANT_IS_OBJECT(first_element) && + IcedTeaPluginUtilities::isObjectJSArray(instance, NPVARIANT_TO_OBJECT(first_element))) { + + NPVariant first_nested_element = NPVariant(); + browser_functions.getproperty(instance, NPVARIANT_TO_OBJECT(first_element), id_0, &first_nested_element); + + getArrayTypeForJava(instance, first_nested_element, &java_array_type); + + length_str.append(" 0"); // secondary array is created on the fly + } else + { + getArrayTypeForJava(instance, first_element, &java_array_type); + } + } else + java_array_type.append("jsobject"); + + java_result = java_request.newArray(java_array_type, length_str); + + if (java_result->error_occurred) { + printf("Unable to create array\n"); + id->append("-1"); + return; + } + + id->append(*(java_result->return_string)); + + NPIdentifier index_id = NPIdentifier(); + for (int i=0; i < NPVARIANT_TO_INT32(length); i++) + { + NPVariant value = NPVariant(); + + index_id = browser_functions.getintidentifier(i); + browser_functions.getproperty(instance, obj, index_id, &value); + + std::string value_id = std::string(); + createJavaObjectFromVariant(instance, value, &value_id); + + if (value_id == "-1") { + printf("Unable to populate array\n"); + id->clear(); + id->append("-1"); + return; + } + + std::string value_str = std::string(); + IcedTeaPluginUtilities::itoa(i, &value_str); + java_result = java_request.setSlot(*id, value_str, value_id); + + } + + // Got here => no errors above. We're good to return! + return; + } else // Else it is not an array + { + + NPVariant* variant_copy = new NPVariant(); + OBJECT_TO_NPVARIANT(NPVARIANT_TO_OBJECT(variant), *variant_copy); + + className = "netscape.javascript.JSObject"; + IcedTeaPluginUtilities::JSIDToString(variant_copy, &stringArg); + browser_functions.retainobject(NPVARIANT_TO_OBJECT(variant)); + + std::string jsObjectClassID = std::string(); + std::string jsObjectConstructorID = std::string(); + std::vector args = std::vector(); + + java_result = java_request.findClass(0, "netscape.javascript.JSObject"); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get JSObject class id\n"); + id->clear(); + id->append("-1"); + return; + } + + jsObjectClassID.append(*(java_result->return_string)); + args.push_back("J"); + + java_result = java_request.getMethodID(jsObjectClassID, + browser_functions.getstringidentifier(""), + args); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get JSObject constructor id\n"); + id->clear(); + id->append("-1"); + return; + } + + jsObjectConstructorID.append(*(java_result->return_string)); + + // We have the method id. Now create a new object. + + args.clear(); + args.push_back(stringArg); + java_result = java_request.newObjectWithConstructor("", + jsObjectClassID, + jsObjectConstructorID, + args); + + // Store the instance ID for future reference + IcedTeaPluginUtilities::storeInstanceID(variant_copy, instance); + + // the result we want is in result_string (assuming there was no error) + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to create JSObject\n"); + id->clear(); + id->append("-1"); + return; + } + + id->append(*(java_result->return_string)); + return; + } + } } - else if (browser_functions.getproperty()) - { - - } - else - { - alreadyCreated = true; - } if (!alreadyCreated) { - java_result = java_request.findClass(0, className.c_str()); + java_result = java_request.findClass(0, className); // the result we want is in result_string (assuming there was no error) if (java_result->error_occurred) { printf("Unable to find classid for %s\n", className.c_str()); - id->append("0"); + id->append("-1"); return; } jsObjectClassID.append(*(java_result->return_string)); - java_request.resetResult(); std::string stringClassName = "Ljava/lang/String;"; args.push_back(stringClassName); From bugzilla-daemon at icedtea.classpath.org Thu Dec 24 14:03:07 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 24 Dec 2009 22:03:07 +0000 Subject: [Bug 388] Compile of gcc hangs at fortran/intrinsic.o Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=388 ------- Comment #11 from jlpoole at pon.net 2009-12-24 22:03 ------- This update more concerns gcc, but an update here is appropriate since progress on the gcc route necessarily affects success here. My progress is impeded with the gcj. I finally got gcj to compile, but have run into what appear run-time and/or configuration errors -- the test suite results had over 2600 PASS and 6 FAIL, so I'm guessing the gcj basically works. However, I cannot seem to invoke it against a simple test class. I've logged a bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42409 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From icedtea at hermangriffin.com Sat Dec 26 12:43:03 2009 From: icedtea at hermangriffin.com (Herman Griffin) Date: Sat, 26 Dec 2009 12:43:03 -0800 Subject: Changing Java code and re "make" iced tea Message-ID: <4d6f26b0912261243u9f90a30y86521294bbf3e49a@mail.gmail.com> I just make some changes to the openjdk src tree and I'd like to re make iced tea. However, this is what happens: [root at localhost icedtea6-1.6]# make make: Nothing to be done for `all'. I'm worried that if I I run make clean, then I'll lose all of the changes that I just made. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20091226/730dc39e/attachment.html From aph at redhat.com Sat Dec 26 13:30:14 2009 From: aph at redhat.com (Andrew Haley) Date: Sat, 26 Dec 2009 21:30:14 +0000 Subject: Changing Java code and re "make" iced tea In-Reply-To: <4d6f26b0912261243u9f90a30y86521294bbf3e49a@mail.gmail.com> References: <4d6f26b0912261243u9f90a30y86521294bbf3e49a@mail.gmail.com> Message-ID: <4B368066.2040406@redhat.com> On 12/26/2009 08:43 PM, Herman Griffin wrote: > I just make some changes to the openjdk src tree and I'd like to re make > iced tea. However, this is what happens: > > [root at localhost icedtea6-1.6]# make > make: Nothing to be done for `all'. > > > I'm worried that if I I run make clean, then I'll lose all of the changes > that I just made. rm patches/icedtea.stamp From dj at linuxfromscratch.org Tue Dec 29 23:21:13 2009 From: dj at linuxfromscratch.org (DJ Lucas) Date: Wed, 30 Dec 2009 01:21:13 -0600 Subject: IcedTea bin release question Message-ID: <4B3AFF69.4060100@linuxfromscratch.org> Hello all. It's been a while since I've messed with IcedTea/OpenJDK builds. I was wondering what exactly is required to build a binary release of IcedTea for a "distro" and call it "JDK6 compatible?" From when I first looked at adding IcedTea/OpenJDK to the BLFS book, it seems that I read something of a TCK requirement of 100% and nothing less (nor would I want anything less), and I had to jump through some hoops to get at it (NDA or something to that effect and maybe some cost). I can't seem to find where I had read that now. What steps (if any) do I have to go through to get access to the TCK, and is it even required now or are the built-in tests sufficient (or are there even built-in, released tests)? For those unfamiliar, LFS is an educational book, not really a distro...a system is built entirely from source code following provided instructions. Some might refer to it as something akin to Gentoo or SourceMage, but completely without automation (and far lesser package coverage). The purpose of my request is simply to rid users of the gcj requirement, both to provide faster build times, and to provide the option of using the pre-built one (as it has always been provided for the closed JDK in the past). I suppose another option is to create a tarball from the Fedora or Ubuntu packages, but I'd still like to verify that the resultant OpenJDK passes the TCK. If this question is OT for this list, please accept my apologies. A PM with a pointer to the proper documentation would be greatly appreciated, however. TIA -- DJ Lucas -- This message has been scanned for viruses and dangerous content, and is believed to be clean. From dj at linuxfromscratch.org Tue Dec 29 23:24:50 2009 From: dj at linuxfromscratch.org (DJ Lucas) Date: Wed, 30 Dec 2009 01:24:50 -0600 Subject: IcedTea bin release question In-Reply-To: <4B3AFF69.4060100@linuxfromscratch.org> References: <4B3AFF69.4060100@linuxfromscratch.org> Message-ID: <4B3B0042.3050407@linuxfromscratch.org> On 12/30/2009 01:21 AM, DJ Lucas wrote: > I can't seem to find where I had read that now. Ugh...never mind. I just didn't look hard enough. http://www.sun.com/software/opensource/java/faq.jsp#k Sorry for the noise. -- DJ Lucas -- This message has been scanned for viruses and dangerous content, and is believed to be clean. From aph at redhat.com Wed Dec 30 01:05:25 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 30 Dec 2009 09:05:25 +0000 Subject: IcedTea bin release question In-Reply-To: <4B3AFF69.4060100@linuxfromscratch.org> References: <4B3AFF69.4060100@linuxfromscratch.org> Message-ID: <4B3B17D5.1040104@redhat.com> On 12/30/2009 07:21 AM, DJ Lucas wrote: > Hello all. It's been a while since I've messed with IcedTea/OpenJDK > builds. I was wondering what exactly is required to build a binary > release of IcedTea for a "distro" and call it "JDK6 compatible?" > From when I first looked at adding IcedTea/OpenJDK to the BLFS book, > it seems that I read something of a TCK requirement of 100% and > nothing less (nor would I want anything less), and I had to jump > through some hoops to get at it (NDA or something to that effect and > maybe some cost). There's no cost, but you have to apply to Sun to get it. See http://openjdk.java.net/legal/openjdk-tck-license.pdf > I can't seem to find where I had read that now. What steps (if any) > do I have to go through to get access to the TCK, and is it even > required now or are the built-in tests sufficient (or are there even > built-in, released tests)? There are, but you still need the TCK to be officially compatible. > For those unfamiliar, LFS is an educational book, not really a > distro...a system is built entirely from source code following > provided instructions. Some might refer to it as something akin to > Gentoo or SourceMage, but completely without automation (and far > lesser package coverage). The purpose of my request is simply to > rid users of the gcj requirement, both to provide faster build > times, and to provide the option of using the pre-built one (as it > has always been provided for the closed JDK in the past). I suppose > another option is to create a tarball from the Fedora or Ubuntu > packages, but I'd still like to verify that the resultant OpenJDK > passes the TCK. Well, to be fully compatible with all the rules, you'll have to run the TCK against every build. I'm not sure how much sense that makes in your environment, but I suppose it's nice to run it once, just to be sure. Andrew. From linuxhippy at gmail.com Wed Dec 30 05:52:55 2009 From: linuxhippy at gmail.com (Clemens Eisserer) Date: Wed, 30 Dec 2009 08:52:55 -0500 Subject: Howto switch local repo from icedtea to openjdk? Message-ID: <194f62550912300552p749614a5u88245237dd4ed543@mail.gmail.com> Hi, Some time ago I rebased the xrender pipeline on icedtea, because the OpenJDK repo didn't have some patches to make it build at that time. (arround jdk7m5) I tried to go back to the offcial OpenJDK repos, in order to make it easier getting the code upstream. Simply changing the repo-url didn't work as expected from: http://hg.openjdk.java.net/icedtea/jdk7/jdk/ to: http://hg.openjdk.java.net/jdk7/jdk7/jdk/ however executing: hg pull hg update hg merge Results in tons of files, which require manual merge. Is there an easy way to go back to openjdk repos, or do I have to manually merge all my stuff into a fresh local repo again (guess this is the 5-7x I am doing this)? Thank you in advance, Clemens