<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-27713</id>
	<title>Nabble - OpenJDK Serviceability Development</title>
	<updated>2009-12-10T16:30:24Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/OpenJDK-Serviceability-Development-f27713.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OpenJDK-Serviceability-Development-f27713.html" />
	<subtitle type="html">Java SE contains several technologies that allow Java programs to be debugged, profiled, monitored and managed. These technologies allow a tool written in the Java programming language to obtain information from the Java Virtual Machine(JVM) in a different process. These technologies typically:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; * Contain Java code in the J2SE repository
&lt;br&gt;&amp;nbsp; &amp;nbsp; * Contain native code in the J2SE repository
&lt;br&gt;&amp;nbsp; &amp;nbsp; * Contain native code in the HotSpot repository. This code implements interfaces that are used by the code in the J2SE repository. This typically involves some form of inter-process communication.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26736901</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T16:30:24Z</published>
	<updated>2009-12-10T16:30:24Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Brad had to physically demonstrate this to me, I thought maybe I
&lt;br&gt;had some kind of brain injury or something for not understanding it. :^(
&lt;br&gt;&lt;br&gt;Anyway, go to the &amp;quot;New&amp;quot; bug and you can see the components, click
&lt;br&gt;on a component and it will show you who the component is assigned to,
&lt;br&gt;e.g. watch-serviceability-other &amp;quot;at&amp;quot; bugs.openjdk.java.net
&lt;br&gt;&lt;br&gt;Go to your &amp;quot;Preferences-&amp;gt;Email Preferences&amp;quot; and copy that email address
&lt;br&gt;in as a &amp;quot;user&amp;quot; into the:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;quot;Add users to my watch list (comma separated list):&amp;quot;
&lt;br&gt;field, then Submit.
&lt;br&gt;&lt;br&gt;So completely obvious &amp;nbsp; &amp;nbsp; &amp;lt;--- sarcasm
&lt;br&gt;don't know what was wrong with me. ;^)
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;&lt;br&gt;David Holmes - Sun Microsystems wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I can't get it to work. Where are the &amp;quot;components&amp;quot; listed? Even 
&lt;br&gt;&amp;gt; watch-serviceability-other reported &amp;quot;did not match anything&amp;quot; :(
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Otherwise great info, but I sure wish it was a lot easier to manage.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; David
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Kelly O'Hair said the following on 12/11/09 09:28:
&lt;br&gt;&amp;gt;&amp;gt; Thanks Tim. Brad just explained this to me.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm setup to watch serviceability and build bugs now.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -kto
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Tim Bell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; How could I at least see some email on these bugs?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Aren't they connected to the various openjdk email aliases?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Sorry I'm not bugzilla-savy. :^(
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Visit &lt;a href=&quot;http://bugs.openjdk.java.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/&lt;/a&gt;&amp;nbsp;and log into your bugzilla account
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (Sun employee logins are probably &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26736901&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;firstname.lastname@...&lt;/a&gt;, unless
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; you set yours up differently)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Visit your Preferences page and click the [Email Preferences] tab:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Scroll down to &amp;quot;User Watching&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Quoting from the OpenJDK Bugzilla announcement page:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; There are Bugzilla &amp;quot;watcher&amp;quot; email accounts set up for each 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; component. (e.g. watch-product-component at bugs dot openjdk dot 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; java dot net) If you would like to watch for updates to specific 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; components, set your email watch preferences accordingly.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Here are two that I watch (obfuscated by changing '@' to ' at '):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; watch-build-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; watch-serviceability-other at bugs.openjdk.net
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Open a second browser window, go to the basic search page:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/query.cgi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/query.cgi&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Look at the &amp;quot;Product&amp;quot;s listed.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; For example, if you wanted to watch the first product shown (2d)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; switch back to your Email Preferences and put in:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; watch-2d-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (Remember to undo the @ obfuscation)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hope this helps-
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Tim
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26736901.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26736598</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T15:54:47Z</published>
	<updated>2009-12-10T15:54:47Z</updated>
	<author>
		<name>David Holmes - Sun Microsystems</name>
	</author>
	<content type="html">I can't get it to work. Where are the &amp;quot;components&amp;quot; listed? Even 
&lt;br&gt;watch-serviceability-other reported &amp;quot;did not match anything&amp;quot; :(
&lt;br&gt;&lt;br&gt;Otherwise great info, but I sure wish it was a lot easier to manage.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;David
&lt;br&gt;&lt;br&gt;Kelly O'Hair said the following on 12/11/09 09:28:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks Tim. Brad just explained this to me.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm setup to watch serviceability and build bugs now.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -kto
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Tim Bell wrote:
&lt;br&gt;&amp;gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; How could I at least see some email on these bugs?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Aren't they connected to the various openjdk email aliases?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sorry I'm not bugzilla-savy. :^(
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Visit &lt;a href=&quot;http://bugs.openjdk.java.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/&lt;/a&gt;&amp;nbsp;and log into your bugzilla account
&lt;br&gt;&amp;gt;&amp;gt; (Sun employee logins are probably &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26736598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;firstname.lastname@...&lt;/a&gt;, unless
&lt;br&gt;&amp;gt;&amp;gt; you set yours up differently)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Visit your Preferences page and click the [Email Preferences] tab:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Scroll down to &amp;quot;User Watching&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Quoting from the OpenJDK Bugzilla announcement page:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; There are Bugzilla &amp;quot;watcher&amp;quot; email accounts set up for each 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; component. (e.g. watch-product-component at bugs dot openjdk dot java 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dot net) If you would like to watch for updates to specific 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; components, set your email watch preferences accordingly.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here are two that I watch (obfuscated by changing '@' to ' at '):
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; watch-build-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt;&amp;gt; watch-serviceability-other at bugs.openjdk.net
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Open a second browser window, go to the basic search page:
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/query.cgi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/query.cgi&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Look at the &amp;quot;Product&amp;quot;s listed.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; For example, if you wanted to watch the first product shown (2d)
&lt;br&gt;&amp;gt;&amp;gt; switch back to your Email Preferences and put in:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; watch-2d-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; (Remember to undo the @ obfuscation)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hope this helps-
&lt;br&gt;&amp;gt;&amp;gt; Tim
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26736598.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26736329</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T15:28:01Z</published>
	<updated>2009-12-10T15:28:01Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Thanks Tim. Brad just explained this to me.
&lt;br&gt;&lt;br&gt;I'm setup to watch serviceability and build bugs now.
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;Tim Bell wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; How could I at least see some email on these bugs?
&lt;br&gt;&amp;gt;&amp;gt; Aren't they connected to the various openjdk email aliases?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Sorry I'm not bugzilla-savy. :^(
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Visit &lt;a href=&quot;http://bugs.openjdk.java.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/&lt;/a&gt;&amp;nbsp;and log into your bugzilla account
&lt;br&gt;&amp;gt; (Sun employee logins are probably &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26736329&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;firstname.lastname@...&lt;/a&gt;, unless
&lt;br&gt;&amp;gt; you set yours up differently)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Visit your Preferences page and click the [Email Preferences] tab:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Scroll down to &amp;quot;User Watching&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Quoting from the OpenJDK Bugzilla announcement page:
&lt;br&gt;&amp;gt;&amp;gt; There are Bugzilla &amp;quot;watcher&amp;quot; email accounts set up for each component. (e.g. watch-product-component at bugs dot openjdk dot java dot net) If you would like to watch for updates to specific components, set your email watch preferences accordingly.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Here are two that I watch (obfuscated by changing '@' to ' at '):
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; watch-build-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt; watch-serviceability-other at bugs.openjdk.net
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Open a second browser window, go to the basic search page:
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.openjdk.java.net/query.cgi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/query.cgi&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Look at the &amp;quot;Product&amp;quot;s listed.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; For example, if you wanted to watch the first product shown (2d)
&lt;br&gt;&amp;gt; switch back to your Email Preferences and put in:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; watch-2d-other at bugs.openjdk.java.net
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; (Remember to undo the @ obfuscation)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hope this helps-
&lt;br&gt;&amp;gt; Tim
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26736329.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26736212</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T15:15:41Z</published>
	<updated>2009-12-10T15:15:41Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; How could I at least see some email on these bugs?
&lt;br&gt;&amp;gt; Aren't they connected to the various openjdk email aliases?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Sorry I'm not bugzilla-savy. :^(
&lt;br&gt;&lt;br&gt;Visit &lt;a href=&quot;http://bugs.openjdk.java.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/&lt;/a&gt;&amp;nbsp;and log into your bugzilla account
&lt;br&gt;(Sun employee logins are probably &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26736212&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;firstname.lastname@...&lt;/a&gt;, unless
&lt;br&gt;you set yours up differently)
&lt;br&gt;&lt;br&gt;Visit your Preferences page and click the [Email Preferences] tab:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/userprefs.cgi?tab=email&lt;/a&gt;&lt;br&gt;&lt;br&gt;Scroll down to &amp;quot;User Watching&amp;quot;
&lt;br&gt;&lt;br&gt;Quoting from the OpenJDK Bugzilla announcement page:
&lt;br&gt;&amp;gt; There are Bugzilla &amp;quot;watcher&amp;quot; email accounts set up for each component. (e.g. watch-product-component at bugs dot openjdk dot java dot net) If you would like to watch for updates to specific components, set your email watch preferences accordingly.
&lt;br&gt;&lt;br&gt;Here are two that I watch (obfuscated by changing '@' to ' at '):
&lt;br&gt;&lt;br&gt;watch-build-other at bugs.openjdk.java.net
&lt;br&gt;watch-serviceability-other at bugs.openjdk.net
&lt;br&gt;&lt;br&gt;&lt;br&gt;Open a second browser window, go to the basic search page:
&lt;br&gt;&lt;a href=&quot;https://bugs.openjdk.java.net/query.cgi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.openjdk.java.net/query.cgi&lt;/a&gt;&lt;br&gt;&lt;br&gt;Look at the &amp;quot;Product&amp;quot;s listed.
&lt;br&gt;&lt;br&gt;For example, if you wanted to watch the first product shown (2d)
&lt;br&gt;switch back to your Email Preferences and put in:
&lt;br&gt;&lt;br&gt;watch-2d-other at bugs.openjdk.java.net
&lt;br&gt;&lt;br&gt;(Remember to undo the @ obfuscation)
&lt;br&gt;&lt;br&gt;Hope this helps-
&lt;br&gt;Tim
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26736212.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26735985</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T14:57:23Z</published>
	<updated>2009-12-10T14:57:23Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Andrew John Hughes wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/11/18 Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26735985&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Need a reviewer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The jhat change is from &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26735985&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;keith.randall@...&lt;/a&gt;. I wasn't able to
&lt;br&gt;&amp;gt;&amp;gt; come up with a testcase for that change.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The other two just fix a couple of broken tests and remove them from
&lt;br&gt;&amp;gt;&amp;gt; the ProblemList.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 6892742: Improve root set used by jhat
&lt;br&gt;&amp;gt;&amp;gt; 6902323: Fix testcase sun/tools/native2ascii/NativeErrors.java
&lt;br&gt;&amp;gt;&amp;gt; 6902325: Fix testcase sun/tools/jhat/HatHeapDump1Test.java
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jhat-6892742/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jhat-6892742/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -kto
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Pretty much the same fix for the JHat issue was filed by one of our
&lt;br&gt;&amp;gt; Red Hat interns in March:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://bugs.openjdk.java.net/show_bug.cgi?id=100026&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/show_bug.cgi?id=100026&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; but sadly completely ignored by anyone at Sun (at least it seems so
&lt;br&gt;&amp;gt; from the bug report). &amp;nbsp;This is one reason why I've tended to not
&lt;br&gt;&amp;gt; bother with the OpenJDK bug system...
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;Sorry. I already have to deal with Sun's internal bug tracking system,
&lt;br&gt;and also JIRA for JavaFX. Learning my way around bugzilla has not been
&lt;br&gt;high my list. I get lost and tired of waiting every time I get into
&lt;br&gt;the bugzilla pages. :^( &amp;nbsp;I suspect most Sun people may be in the same boat.
&lt;br&gt;&lt;br&gt;How could I at least see some email on these bugs?
&lt;br&gt;Aren't they connected to the various openjdk email aliases?
&lt;br&gt;&lt;br&gt;Sorry I'm not bugzilla-savy. :^(
&lt;br&gt;&lt;br&gt;&amp;gt; Anyway, coming to merge that with the version now in OpenJDK6 version
&lt;br&gt;&amp;gt; I found that the upstream doesn't update the comment. &amp;nbsp;So perhaps we
&lt;br&gt;&amp;gt; could push:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~andrew/jhat/webrev.01/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~andrew/jhat/webrev.01/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; given a bug ID for this small change.
&lt;br&gt;&lt;br&gt;6909442: Fix comments in test/sun/tools/jhat/HatRun.java
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26735985.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26734972</id>
	<title>Re: Need reviewers - 3 bugs</title>
	<published>2009-12-10T13:36:15Z</published>
	<updated>2009-12-10T13:36:15Z</updated>
	<author>
		<name>gnu_andrew</name>
	</author>
	<content type="html">2009/11/18 Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26734972&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Need a reviewer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The jhat change is from &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26734972&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;keith.randall@...&lt;/a&gt;. I wasn't able to
&lt;br&gt;&amp;gt; come up with a testcase for that change.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The other two just fix a couple of broken tests and remove them from
&lt;br&gt;&amp;gt; the ProblemList.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 6892742: Improve root set used by jhat
&lt;br&gt;&amp;gt; 6902323: Fix testcase sun/tools/native2ascii/NativeErrors.java
&lt;br&gt;&amp;gt; 6902325: Fix testcase sun/tools/jhat/HatHeapDump1Test.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jhat-6892742/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jhat-6892742/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -kto
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;Pretty much the same fix for the JHat issue was filed by one of our
&lt;br&gt;Red Hat interns in March:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://bugs.openjdk.java.net/show_bug.cgi?id=100026&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.openjdk.java.net/show_bug.cgi?id=100026&lt;/a&gt;&lt;br&gt;&lt;br&gt;but sadly completely ignored by anyone at Sun (at least it seems so
&lt;br&gt;from the bug report). &amp;nbsp;This is one reason why I've tended to not
&lt;br&gt;bother with the OpenJDK bug system...
&lt;br&gt;&lt;br&gt;Anyway, coming to merge that with the version now in OpenJDK6 version
&lt;br&gt;I found that the upstream doesn't update the comment. &amp;nbsp;So perhaps we
&lt;br&gt;could push:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://cr.openjdk.java.net/~andrew/jhat/webrev.01/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~andrew/jhat/webrev.01/&lt;/a&gt;&lt;br&gt;&lt;br&gt;given a bug ID for this small change.
&lt;br&gt;-- 
&lt;br&gt;Andrew :-)
&lt;br&gt;&lt;br&gt;Free Java Software Engineer
&lt;br&gt;Red Hat, Inc. (&lt;a href=&quot;http://www.redhat.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.redhat.com&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;Support Free Java!
&lt;br&gt;Contribute to GNU Classpath and the OpenJDK
&lt;br&gt;&lt;a href=&quot;http://www.gnu.org/software/classpath&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/classpath&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://openjdk.java.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://openjdk.java.net&lt;/a&gt;&lt;br&gt;&lt;br&gt;PGP Key: 94EFD9D8 (&lt;a href=&quot;http://subkeys.pgp.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://subkeys.pgp.net&lt;/a&gt;)
&lt;br&gt;Fingerprint: F8EF F1EA 401E 2E60 15FA &amp;nbsp;7927 142C 2591 94EF D9D8
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers---3-bugs-tp26400319p26734972.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26734845</id>
	<title>hg: jdk7/tl/jdk: 4891262: API spec, javax/accessibility: few invalid javadoc tags</title>
	<published>2009-12-10T13:28:47Z</published>
	<updated>2009-12-10T13:28:47Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Changeset: aa0d374b40a5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;darcy
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 13:28 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/aa0d374b40a5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/aa0d374b40a5&lt;/a&gt;&lt;br&gt;&lt;br&gt;4891262: API spec, javax/accessibility: few invalid javadoc tags
&lt;br&gt;Reviewed-by: jjg
&lt;br&gt;&lt;br&gt;! src/share/classes/javax/accessibility/AccessibleContext.java
&lt;br&gt;! src/share/classes/javax/accessibility/AccessibleExtendedText.java
&lt;br&gt;! src/share/classes/javax/accessibility/AccessibleKeyBinding.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-4891262%3A-API-spec%2C-javax-accessibility%3A-few-invalid-javadoc-tags-tp26734845p26734845.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26734521</id>
	<title>hg: jdk7/tl/jdk: 6909070: Missing package statements in java.text.Bidi @see links</title>
	<published>2009-12-10T13:05:37Z</published>
	<updated>2009-12-10T13:05:37Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Changeset: f9c9c2b726a0
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;darcy
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 13:04 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f9c9c2b726a0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f9c9c2b726a0&lt;/a&gt;&lt;br&gt;&lt;br&gt;6909070: Missing package statements in java.text.Bidi @see links
&lt;br&gt;Reviewed-by: anthony
&lt;br&gt;&lt;br&gt;! src/share/classes/java/text/Bidi.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6909070%3A-Missing-package-statements-in-java.text.Bidi-%40see-links-tp26734521p26734521.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26732830</id>
	<title>hg: jdk7/tl/jdk: 2 new changesets</title>
	<published>2009-12-10T11:08:32Z</published>
	<updated>2009-12-10T11:08:32Z</updated>
	<author>
		<name>Christopher Hegarty -Sun Microsystems Ireland</name>
	</author>
	<content type="html">Changeset: ae944611249f
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;chegar
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 15:52 +0000
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ae944611249f&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ae944611249f&lt;/a&gt;&lt;br&gt;&lt;br&gt;6909089: Memory leak occurs by lack of free for read buffer in SocketInputStream#read()
&lt;br&gt;Reviewed-by: alanb, jccollet
&lt;br&gt;&lt;br&gt;! src/windows/native/java/net/SocketInputStream.c
&lt;br&gt;&lt;br&gt;Changeset: 59221d9e0c1c
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;chegar
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 09:08 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/59221d9e0c1c&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/59221d9e0c1c&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-2-new-changesets-tp26732830p26732830.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26730575</id>
	<title>hg: jdk7/tl/jdk: 2 new changesets</title>
	<published>2009-12-10T08:44:46Z</published>
	<updated>2009-12-10T08:44:46Z</updated>
	<author>
		<name>sean.mullan</name>
	</author>
	<content type="html">Changeset: 7c9be6c9385a
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mullan
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 11:31 -0500
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7c9be6c9385a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7c9be6c9385a&lt;/a&gt;&lt;br&gt;&lt;br&gt;6867348: Digest Value of References inside Manifest - calculation order problem
&lt;br&gt;Reviewed-by: xuelei
&lt;br&gt;&lt;br&gt;! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
&lt;br&gt;! test/javax/xml/crypto/dsig/GenerationTests.java
&lt;br&gt;&lt;br&gt;Changeset: 421e652f00c7
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mullan
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-10 11:34 -0500
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/421e652f00c7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/421e652f00c7&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-2-new-changesets-tp26730575p26730575.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26725623</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-10T03:16:30Z</published>
	<updated>2009-12-10T03:16:30Z</updated>
	<author>
		<name>Andrew Haley</name>
	</author>
	<content type="html">&amp;nbsp;Andrew Haley wrote:
&lt;br&gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt; Is there some other way than baking in 256 hex constants into our sources?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm sure it's perfectly possible to generate the CRC-32 tables at runtime.
&lt;br&gt;&amp;gt; However, the CRC function is defined in terms of this exact source code,
&lt;br&gt;&lt;br&gt;Ah, I was about to add &amp;quot;but it's only 1 kbyte!&amp;quot; when I noticed that
&lt;br&gt;the data are unsigned longs, and therefore maybe 2 kbytes. &amp;nbsp;I presume
&lt;br&gt;that this is because gdb might be used on hosts with 16-bit ints, but
&lt;br&gt;that hardly affects us. &amp;nbsp;I'll fix it before submitting a webrev.
&lt;br&gt;&lt;br&gt;Andrew.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26725623.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26722933</id>
	<title>hg: jdk7/tl/jdk: 6909082: Docs warning from java.util.logging.PlatformLoggingMXBean</title>
	<published>2009-12-09T23:07:12Z</published>
	<updated>2009-12-09T23:07:12Z</updated>
	<author>
		<name>mandy.chung</name>
	</author>
	<content type="html">Changeset: 0f8f624ddcb4
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mchung
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-09 21:09 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0f8f624ddcb4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0f8f624ddcb4&lt;/a&gt;&lt;br&gt;&lt;br&gt;6909082: Docs warning from java.util.logging.PlatformLoggingMXBean
&lt;br&gt;Summary: Fix incorrect tag @See with @see.
&lt;br&gt;Reviewed-by: darcy
&lt;br&gt;&lt;br&gt;! src/share/classes/java/util/logging/PlatformLoggingMXBean.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6909082%3A-Docs-warning-from-java.util.logging.PlatformLoggingMXBean-tp26722933p26722933.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26720965</id>
	<title>hg: jdk7/tl/jdk: 6909057: @see Arrays#hashCode missing particular method specification in j.u.Objects.hash</title>
	<published>2009-12-09T17:49:30Z</published>
	<updated>2009-12-09T17:49:30Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Changeset: c2f83e13bbe5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;darcy
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-09 17:55 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c2f83e13bbe5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c2f83e13bbe5&lt;/a&gt;&lt;br&gt;&lt;br&gt;6909057: @see Arrays#hashCode missing particular method specification in j.u.Objects.hash
&lt;br&gt;Reviewed-by: ksrini
&lt;br&gt;&lt;br&gt;! src/share/classes/java/util/Objects.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6909057%3A-%40see-Arrays-hashCode-missing-particular-method-specification-in-j.u.Objects.hash-tp26720965p26720965.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26719967</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-09T16:04:40Z</published>
	<updated>2009-12-09T16:04:40Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Martin Buchholz wrote:
&lt;br&gt;&amp;gt;&amp;gt; On Tue, Dec 8, 2009 at 16:42, Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26719967&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; In theory, the process is supposed to prevent
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; regression test failures from ever creeping in - that's the whole 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; point.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; When they do (inevitably) creep in,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; they are supposed to be aggressively targeted.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; A gatekeeper demonstrates the failure to a developer,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and the developer is given X time units to fix the test breakage,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; or face reversion of the breakage-inducing change.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; But it's not that simple. In some cases the cause of the failure is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; a change made to a different repository, by a different team,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Changes that get in this way are signs of process failure.
&lt;br&gt;&amp;gt;&amp;gt; E.g. failing tests in java.util caused by hotspot commits
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Deja Vu... we have had this discussion before. ;^)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; How can any team possibly run ALL the tests?
&lt;br&gt;&amp;gt; We would all grind to a halt.
&lt;br&gt;&amp;gt; And what is this &amp;quot;signs of process failure&amp;quot;, are you some kind
&lt;br&gt;&amp;gt; of manager now? ;^) &amp;quot;Hurumph... Every failure is a result of poor 
&lt;br&gt;&amp;gt; planning...&amp;quot;
&lt;br&gt;&amp;gt; (just yanking your chain. ;^)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Testing has become a balancing act for everyone, we do what
&lt;br&gt;&amp;gt; we can given the constraints we have. When things fall through
&lt;br&gt;&amp;gt; the cracks, we try and patch the cracks so it doesn't happen
&lt;br&gt;&amp;gt; again. We use what we can to automate, but there are limits.
&lt;/div&gt;&lt;br&gt;There is a weeks-long process separating when a change gets pushed into 
&lt;br&gt;a JDK 7 integration workspace, like TL, and when the promoted bits are 
&lt;br&gt;available for download. &amp;nbsp;The closer a changeset gets to the master, the 
&lt;br&gt;most tests should be run against it.
&lt;br&gt;&lt;br&gt;An individual developer should not be expected to run all the tests, but 
&lt;br&gt;if at least the regression tests in the code base are not all run on 
&lt;br&gt;multiple platform by the time the change hits the master, I'd argue 
&lt;br&gt;there is a process problem. &amp;nbsp;Of course, it is also a problem if the 
&lt;br&gt;tests are run and the results aren't examined adequately.
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26719967.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26718085</id>
	<title>What to do about jvmti.h</title>
	<published>2009-12-09T13:31:23Z</published>
	<updated>2009-12-09T13:31:23Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;Concerning:
&lt;br&gt;&lt;br&gt;6784084: jvmti.h created during the build differs from file in jdk repo and should not
&lt;br&gt;&lt;br&gt;Several issues here, all need to be solved.
&lt;br&gt;&lt;br&gt;1. The jdk repository manages a copy of the hotspot generated file jvmti.h
&lt;br&gt;&lt;br&gt;2. The jdk Makefile sanity checks are trying to verify that the copy of jvmti.h
&lt;br&gt;&amp;nbsp; &amp;nbsp; matches the one created by the hotspot build. This logic is complicated and
&lt;br&gt;&amp;nbsp; &amp;nbsp; currently broken for jdk7.
&lt;br&gt;&lt;br&gt;3. In general, Hotspot express could be used in any jdk release, and we need to
&lt;br&gt;&amp;nbsp; &amp;nbsp; make sure the right jvmti.h is placed in the jdk install image include/
&lt;br&gt;&amp;nbsp; &amp;nbsp; directory. Even if a hotspot can support multiple jvmti.h versions,
&lt;br&gt;&amp;nbsp; &amp;nbsp; we need to make sure the right release of jvmti.h is delivered, to
&lt;br&gt;&amp;nbsp; &amp;nbsp; preserve the interface versioning.
&lt;br&gt;&amp;nbsp; &amp;nbsp; (Or we need some kind of super jvmti.h??? Exercise left to the reader.)
&lt;br&gt;&lt;br&gt;For jdk7, 1 &amp; 2 are easily solved, but that isn't a complete answer, so
&lt;br&gt;consider this webrev just a start:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jvmti-6784084/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jvmti-6784084/webrev/&lt;/a&gt;&lt;br&gt;&lt;br&gt;My opinion is that jvmti.h is a hotspot interface, and belongs to hotspot.
&lt;br&gt;But who should control which version of jvmti.h goes into what jdk release?
&lt;br&gt;&lt;br&gt;My above webrev will have the jdk build use and deliver in include/ the
&lt;br&gt;jvmti.h provided by the hotspot build.
&lt;br&gt;We could have the hotspot build be sensitive to the java version being
&lt;br&gt;built and deliver a single correct jvmti.h file, or we could have hotspot
&lt;br&gt;provide a set of jvmti.h files and the jdk makefiles would pick the one
&lt;br&gt;it wants based on the java version.
&lt;br&gt;&lt;br&gt;Other ideas?
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/What-to-do-about-jvmti.h-tp26718085p26718085.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26715172</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-09T10:30:48Z</published>
	<updated>2009-12-09T10:30:48Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;Martin Buchholz wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tue, Dec 8, 2009 at 16:42, Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26715172&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; In theory, the process is supposed to prevent
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; regression test failures from ever creeping in - that's the whole point.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; When they do (inevitably) creep in,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; they are supposed to be aggressively targeted.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; A gatekeeper demonstrates the failure to a developer,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and the developer is given X time units to fix the test breakage,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; or face reversion of the breakage-inducing change.
&lt;br&gt;&amp;gt;&amp;gt; But it's not that simple. In some cases the cause of the failure is
&lt;br&gt;&amp;gt;&amp;gt; a change made to a different repository, by a different team,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Changes that get in this way are signs of process failure.
&lt;br&gt;&amp;gt; E.g. failing tests in java.util caused by hotspot commits
&lt;/div&gt;&lt;br&gt;Deja Vu... we have had this discussion before. ;^)
&lt;br&gt;&lt;br&gt;How can any team possibly run ALL the tests?
&lt;br&gt;We would all grind to a halt.
&lt;br&gt;And what is this &amp;quot;signs of process failure&amp;quot;, are you some kind
&lt;br&gt;of manager now? ;^) &amp;quot;Hurumph... Every failure is a result of poor planning...&amp;quot;
&lt;br&gt;(just yanking your chain. ;^)
&lt;br&gt;&lt;br&gt;Testing has become a balancing act for everyone, we do what
&lt;br&gt;we can given the constraints we have. When things fall through
&lt;br&gt;the cracks, we try and patch the cracks so it doesn't happen
&lt;br&gt;again. We use what we can to automate, but there are limits.
&lt;br&gt;&lt;br&gt;&amp;gt; are signs the hotspot commit was inadequately tested.
&lt;br&gt;&lt;br&gt;I'll let you arm wrestle the hotspot guys over that comment. ;^)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; or even to the base system software via an update.
&lt;br&gt;&amp;gt;&amp;gt; The ProblemList.txt file was meant to deal with that situation,
&lt;br&gt;&amp;gt;&amp;gt; and also tests that are spuriously failing for unknown reasons.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I agree that flaky and platform-dependent failures are a big problem.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; When the gatekeeper can do what you say, that is great, and ideal.
&lt;br&gt;&amp;gt;&amp;gt; But I just don't see it happening that way in all situations.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I would like to see more effort devoted to fixing the tests
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (or the code!) rather than adding infrastructure that might
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; have the effect of hiding the test failures.
&lt;br&gt;&amp;gt;&amp;gt; Sigh... I'm not trying to hide the failures, and if you haven't
&lt;br&gt;&amp;gt;&amp;gt; noticed, I have fixed quite a few tests myself.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I have noticed, and I do appreciate it.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I do some flaky test fixing myself.
&lt;/div&gt;&lt;br&gt;Well to your credit, tests you have worked on in the past are
&lt;br&gt;typically not on my flaky list.
&lt;br&gt;Unfortunately, some of your tests are damn good tests, and cut
&lt;br&gt;a larger swath through the jdk logic than what I suspect your
&lt;br&gt;original test focus was. So your tests may come under more
&lt;br&gt;scrutiny as bugs in various areas get filed, pointing at your
&lt;br&gt;tests and the nasty little test that found their bug. ;^)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; If anything, I'm making the fact that we have test failures more
&lt;br&gt;&amp;gt;&amp;gt; public, and the ultimate goal is to fix the tests.
&lt;br&gt;&amp;gt;&amp;gt; But I needed a baseline, a line in the sand, an expectation
&lt;br&gt;&amp;gt;&amp;gt; of what tests should always pass. And an ability to run all
&lt;br&gt;&amp;gt;&amp;gt; the tests in a timely manner.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I prefer the approach taken by my diff-javatest tool
&lt;br&gt;&amp;gt; of not caring about how many tests failed with the
&lt;br&gt;&amp;gt; reference jdk. &amp;nbsp;Just run them twice, and look for
&lt;br&gt;&amp;gt; *new* failures.
&lt;/div&gt;&lt;br&gt;What a pain... and what a loss, so many of these tests can become
&lt;br&gt;healthy functioning members of society, given a little support and
&lt;br&gt;a helping hand. And if they are just bad tests, I agree with
&lt;br&gt;Mr. Scrooge let's 'decrease the surplus population'. ;^)
&lt;br&gt;&lt;br&gt;On diff-javatest, what if the moon is full, and the reference jdk
&lt;br&gt;passed a test but your jdk didn't? For no good reason. I hate that.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Now it's time to go through the ProblemList.txt and do a little
&lt;br&gt;&amp;gt;&amp;gt; triage, file a few bugs, fix what tests can be fixed, and/or
&lt;br&gt;&amp;gt;&amp;gt; correct my ProblemList.txt file if I got it wrong.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; BTW, I run regtests on java.util collections regularly,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but only on Linux.
&lt;br&gt;&amp;gt;&amp;gt; I think it is an expected situation that many developers can only
&lt;br&gt;&amp;gt;&amp;gt; run the tests on one platform.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; But do you expect the gatekeeper to run all the tests on all the
&lt;br&gt;&amp;gt;&amp;gt; platforms?
&lt;br&gt;&amp;gt;&amp;gt; And if for example, your tests fail on Windows you would be
&lt;br&gt;&amp;gt;&amp;gt; given X time units to fix it? Could you?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Of course, you want the perfect combination of nasty and nice.
&lt;br&gt;&amp;gt; For some test failures, it's unreasonable to expect the guilty party
&lt;br&gt;&amp;gt; to fix them. &amp;nbsp;But they should be prepared to be helpful.
&lt;/div&gt;&lt;br&gt;Agreed, but both helpful and pro-active in preventing it from happening
&lt;br&gt;again. We want &amp;quot;good citizen&amp;quot; developers. Which in general I think we have,
&lt;br&gt;I'm just trying to make sure there are lots of tools and mechanisms to
&lt;br&gt;allow everyone to be &amp;quot;good citizens&amp;quot;. ;^)
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26715172.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26714969</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-09T10:10:12Z</published>
	<updated>2009-12-09T10:10:12Z</updated>
	<author>
		<name>Andrew Haley</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Andrew John Hughes wrote:
&lt;br&gt;&amp;gt;&amp;gt; 2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26714969&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; This is &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=541548&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=541548&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The symptom is that jmap doesn't work because target libraries are stripped.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The fix is to allow the symtab reader to use the separate debuginfo files
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; that are available for all (AFAIK) GNU/Linux distributions.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'll commit this to the IcedTea repo, with a view to pushing it upstream
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; to OpenJDK if it works on all distros.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Andrew.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; It would be good to see this upstream. &amp;nbsp;The obvious compatibility
&lt;br&gt;&amp;gt;&amp;gt; issue I can see is hardcoding /usr/lib/debug. &amp;nbsp;Passing that in from
&lt;br&gt;&amp;gt;&amp;gt; the Makefile, thus allowing to be overridden if necessary, might be
&lt;br&gt;&amp;gt;&amp;gt; better.
&lt;br&gt;&amp;gt;&amp;gt; i.e.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; becomes
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; #ifndef DEBUG_FILE_DIRECTORY
&lt;br&gt;&amp;gt;&amp;gt; #define DEBUG_FILE_DIRECTORY &amp;quot;/usr/lib/debug&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; #endif
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; with apppropriate logic in the OpenJDK makefile(s).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Only other comment is that your ChangeLog should refer to openjdk, not
&lt;br&gt;&amp;gt;&amp;gt; openjdk-ecj as we want this for all builds. The patch itself is
&lt;br&gt;&amp;gt;&amp;gt; correct, it's just the ChangeLog.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Redirecting this mail to the HotSpot and serviceability lists rather
&lt;br&gt;&amp;gt;&amp;gt; than tl as it concerns the serviceability tools in HotSpot.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is there some other way than baking in 256 hex constants into our sources?
&lt;/div&gt;&lt;br&gt;I'm sure it's perfectly possible to generate the CRC-32 tables at runtime.
&lt;br&gt;However, the CRC function is defined in terms of this exact source code,
&lt;br&gt;see &lt;a href=&quot;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Why can't this logic be in a system include file somwehere?
&lt;br&gt;&lt;br&gt;Apart from &amp;quot;because it isn't&amp;quot;, I can think of no good reason. &amp;nbsp;Clearly
&lt;br&gt;there should be a common API for this stuff, but it is spread around
&lt;br&gt;various tools and libraries with licences we can't use, such as GPLv3+.
&lt;br&gt;&lt;br&gt;Andrew.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26714969.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26714188</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-09T09:30:19Z</published>
	<updated>2009-12-09T09:30:19Z</updated>
	<author>
		<name>gnu_andrew</name>
	</author>
	<content type="html">2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26714188&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Andrew John Hughes wrote:
&lt;br&gt;&amp;gt;&amp;gt; 2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26714188&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; This is &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=541548&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=541548&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The symptom is that jmap doesn't work because target libraries are stripped.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The fix is to allow the symtab reader to use the separate debuginfo files
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; that are available for all (AFAIK) GNU/Linux distributions.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'll commit this to the IcedTea repo, with a view to pushing it upstream
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; to OpenJDK if it works on all distros.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; It would be good to see this upstream.  The obvious compatibility
&lt;br&gt;&amp;gt;&amp;gt; issue I can see is hardcoding /usr/lib/debug.  Passing that in from
&lt;br&gt;&amp;gt;&amp;gt; the Makefile, thus allowing to be overridden if necessary, might be
&lt;br&gt;&amp;gt;&amp;gt; better.
&lt;br&gt;&amp;gt;&amp;gt; i.e.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; becomes
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; #ifndef DEBUG_FILE_DIRECTORY
&lt;br&gt;&amp;gt;&amp;gt; #define DEBUG_FILE_DIRECTORY &amp;quot;/usr/lib/debug&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; #endif
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; with apppropriate logic in the OpenJDK makefile(s).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think this directory is generally assumed to be hard-coded everywhere.  I
&lt;br&gt;&amp;gt; will make such a change if this patch won't be committed otherwise, but I do
&lt;br&gt;&amp;gt; not believe that it will ever be used.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;Ah, ok. &amp;nbsp;This was the only possibly distro-specific issue I could see
&lt;br&gt;in the patch.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Only other comment is that your ChangeLog should refer to openjdk, not
&lt;br&gt;&amp;gt;&amp;gt; openjdk-ecj as we want this for all builds. The patch itself is
&lt;br&gt;&amp;gt;&amp;gt; correct, it's just the ChangeLog.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yeah, I noticed this already.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Andrew.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Andrew :-)
&lt;br&gt;&lt;br&gt;Free Java Software Engineer
&lt;br&gt;Red Hat, Inc. (&lt;a href=&quot;http://www.redhat.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.redhat.com&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;Support Free Java!
&lt;br&gt;Contribute to GNU Classpath and the OpenJDK
&lt;br&gt;&lt;a href=&quot;http://www.gnu.org/software/classpath&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/classpath&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://openjdk.java.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://openjdk.java.net&lt;/a&gt;&lt;br&gt;&lt;br&gt;PGP Key: 94EFD9D8 (&lt;a href=&quot;http://subkeys.pgp.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://subkeys.pgp.net&lt;/a&gt;)
&lt;br&gt;Fingerprint: F8EF F1EA 401E 2E60 15FA &amp;nbsp;7927 142C 2591 94EF D9D8
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26714188.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26714110</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-09T09:25:45Z</published>
	<updated>2009-12-09T09:25:45Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;Andrew John Hughes wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26714110&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; This is &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=541548&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=541548&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; The symptom is that jmap doesn't work because target libraries are stripped.
&lt;br&gt;&amp;gt;&amp;gt; The fix is to allow the symtab reader to use the separate debuginfo files
&lt;br&gt;&amp;gt;&amp;gt; that are available for all (AFAIK) GNU/Linux distributions.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'll commit this to the IcedTea repo, with a view to pushing it upstream
&lt;br&gt;&amp;gt;&amp;gt; to OpenJDK if it works on all distros.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andrew.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It would be good to see this upstream. &amp;nbsp;The obvious compatibility
&lt;br&gt;&amp;gt; issue I can see is hardcoding /usr/lib/debug. &amp;nbsp;Passing that in from
&lt;br&gt;&amp;gt; the Makefile, thus allowing to be overridden if necessary, might be
&lt;br&gt;&amp;gt; better.
&lt;br&gt;&amp;gt; i.e.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; becomes
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #ifndef DEBUG_FILE_DIRECTORY
&lt;br&gt;&amp;gt; #define DEBUG_FILE_DIRECTORY &amp;quot;/usr/lib/debug&amp;quot;
&lt;br&gt;&amp;gt; #endif
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; with apppropriate logic in the OpenJDK makefile(s).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Only other comment is that your ChangeLog should refer to openjdk, not
&lt;br&gt;&amp;gt; openjdk-ecj as we want this for all builds. The patch itself is
&lt;br&gt;&amp;gt; correct, it's just the ChangeLog.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Redirecting this mail to the HotSpot and serviceability lists rather
&lt;br&gt;&amp;gt; than tl as it concerns the serviceability tools in HotSpot.
&lt;/div&gt;&lt;br&gt;Is there some other way than baking in 256 hex constants into our sources?
&lt;br&gt;&lt;br&gt;Why can't this logic be in a system include file somwehere?
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009-12-09 &amp;nbsp;Andrew Haley &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26714110&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* openjdk-ecj/hotspot/agent/src/os/linux/symtab.c (debug_file_directory):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;New variable.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(gnu_debuglink_crc32): New.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(build_symtab_internal): Rename from build_symtab, make static.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Add logic to look inside debuginfo files.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(open_debug_file, find_section_by_name, open_file_from_debug_link,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;build_id_to_debug_filename, build_symtab_from_build_id,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;build_symtab): New.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* openjdk-ecj/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Pass FILENAME to build_symtab().
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* openjdk-ecj/hotspot/agent/src/os/linux/symtab.h (build_symtab):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Add FILENAME arg.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c
&lt;br&gt;&amp;gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c &amp;nbsp; &amp;nbsp; &amp;nbsp; 2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c &amp;nbsp; 2009-12-04 16:29:27.552837905 +0000
&lt;br&gt;&amp;gt;&amp;gt; @@ -174,7 +174,7 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; return NULL;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; newlib-&amp;gt;symtab = build_symtab(newlib-&amp;gt;fd);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; newlib-&amp;gt;symtab = build_symtab(newlib-&amp;gt;fd, libname);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;if (newlib-&amp;gt;symtab == NULL) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; print_debug(&amp;quot;symbol table build failed for %s\n&amp;quot;, newlib-&amp;gt;name);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c
&lt;br&gt;&amp;gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c &amp;nbsp; &amp;nbsp; 2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000
&lt;br&gt;&amp;gt;&amp;gt; @@ -53,8 +53,272 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; struct hsearch_data *hash_table;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;} symtab_t;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -// read symbol table from given fd.
&lt;br&gt;&amp;gt;&amp;gt; -struct symtab* build_symtab(int fd) {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +// Directory that contains global debuginfo files. &amp;nbsp;In theory it
&lt;br&gt;&amp;gt;&amp;gt; +// should be possible to change this, but in a Java environment there
&lt;br&gt;&amp;gt;&amp;gt; +// is no obvious place to put a user interface to do it. &amp;nbsp;Maybe this
&lt;br&gt;&amp;gt;&amp;gt; +// could be set with an environment variable.
&lt;br&gt;&amp;gt;&amp;gt; +static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +/* The CRC used in gnu_debuglink, retrieved from
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &lt;a href=&quot;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&lt;/a&gt;. */
&lt;br&gt;&amp;gt;&amp;gt; +unsigned long gnu_debuglink_crc32 (unsigned long crc,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned char *buf, size_t len)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;static const unsigned long crc32_table[256] =
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;0x2d02ef8d
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;};
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;unsigned char *end;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;crc = ~crc &amp; 0xffffffff;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;for (end = buf + len; buf &amp;lt; end; ++buf)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;crc = crc32_table[(crc ^ *buf) &amp; 0xff] ^ (crc &amp;gt;&amp;gt; 8);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return ~crc &amp; 0xffffffff;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +/* Open a debuginfo file and check its CRC. &amp;nbsp;If it exists and the CRC
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; matches return its fd. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; +static int
&lt;br&gt;&amp;gt;&amp;gt; +open_debug_file (const char *pathname, unsigned int crc)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;unsigned int file_crc = 0;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;unsigned char buffer[8 * 1024];
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;int fd = pathmap_open(pathname);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (fd &amp;lt; 0)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;lseek(fd, 0, SEEK_SET);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;for (;;) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;int len = read(fd, buffer, sizeof buffer);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if (len &amp;lt;= 0)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;file_crc = gnu_debuglink_crc32(file_crc, buffer, len);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (crc == file_crc)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;else {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;close(fd);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +/* Find an ELF section. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; +static struct elf_section *find_section_by_name(char *name,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int fd,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct elf_section *scn_cache)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;ELF_SHDR* cursct = NULL;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;char *strtab;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;int cnt;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (scn_cache[ehdr-&amp;gt;e_shstrndx].c_data == NULL) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if ((scn_cache[ehdr-&amp;gt;e_shstrndx].c_data
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= read_section_data(fd, ehdr, cursct)) == NULL) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;return NULL;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strtab = scn_cache[ehdr-&amp;gt;e_shstrndx].c_data;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;for (cursct = shbuf, cnt = 0;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; cnt &amp;lt; ehdr-&amp;gt;e_shnum;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; cnt++, cursct++) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if (strcmp(cursct-&amp;gt;sh_name + strtab, name) == 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;scn_cache[cnt];
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return NULL;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +/* Look for a &amp;quot;.gnu_debuglink&amp;quot; section. &amp;nbsp;If one exists, try to open a
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; suitable debuginfo file. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; +static int open_file_from_debug_link(const char *name,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int fd,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;struct elf_section *scn_cache)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;struct elf_section *debug_link = find_section_by_name(&amp;quot;.gnu_debuglink&amp;quot;, fd, ehdr,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shbuf, scn_cache);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;int debug_fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;char *debug_filename = debug_link-&amp;gt;c_data;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;int offset = strlen(debug_filename) + 3 &amp;gt;&amp;gt; 2;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;static unsigned int crc;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;crc = ((unsigned int*)debug_link-&amp;gt;c_data)[offset];
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;char *debug_pathname = malloc(strlen(debug_filename)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + strlen(name)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + strlen(&amp;quot;.debug/&amp;quot;)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + strlen(debug_file_directory)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + 2);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy(debug_pathname, name);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;char *last_slash = strrchr(debug_pathname, '/');
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (last_slash == NULL)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;/* Look in the same directory as the object. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy(last_slash+1, debug_filename);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;free(debug_pathname);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return debug_fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;/* Look in a subdirectory named &amp;quot;.debug&amp;quot;. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy(last_slash+1, &amp;quot;.debug/&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcat(last_slash, debug_filename);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;free(debug_pathname);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return debug_fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;/* Look in /usr/lib/debug + the full pathname. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy(debug_pathname, debug_file_directory);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcat(debug_pathname, name);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;last_slash = strrchr(debug_pathname, '/');
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy(last_slash+1, debug_filename);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;free(debug_pathname);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return debug_fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;free(debug_pathname);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return -1;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +/* Look for a &amp;quot;.gnu_debuglink&amp;quot; section. &amp;nbsp;If one exists, try to open a
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; suitable debuginfo file and read a symbol table from it. &amp;nbsp;*/
&lt;br&gt;&amp;gt;&amp;gt; +static struct symtab *build_symtab_from_debug_link(const char *name,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int fd,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;struct elf_section *scn_cache)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;close(fd);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;return symtab;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return NULL;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +// Given a build_id, find the associated debuginfo file
&lt;br&gt;&amp;gt;&amp;gt; +static char *
&lt;br&gt;&amp;gt;&amp;gt; +build_id_to_debug_filename (size_t size, unsigned char *data)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;char *filename, *s;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;filename = malloc(strlen (debug_file_directory) + (sizeof &amp;quot;/.build-id/&amp;quot; - 1) + 1
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + 2 * size + (sizeof &amp;quot;.debug&amp;quot; - 1) + 1);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;s = filename + sprintf (filename, &amp;quot;%s/.build-id/&amp;quot;, debug_file_directory);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (size &amp;gt; 0)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;size--;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;s += sprintf (s, &amp;quot;%02x&amp;quot;, *data++);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (size &amp;gt; 0)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;*s++ = '/';
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;while (size-- &amp;gt; 0)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;s += sprintf (s, &amp;quot;%02x&amp;quot;, *data++);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;strcpy (s, &amp;quot;.debug&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return filename;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +// Read a build ID note. &amp;nbsp;Try to open any associated debuginfo file
&lt;br&gt;&amp;gt;&amp;gt; +// and return its symtab
&lt;br&gt;&amp;gt;&amp;gt; +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note)
&lt;br&gt;&amp;gt;&amp;gt; +{
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;int fd;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;struct symtab *symtab = NULL;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;unsigned char *bytes
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;= (unsigned char*)(note+1) + note-&amp;gt;n_namesz;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;unsigned char *filename
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;= (build_id_to_debug_filename (note-&amp;gt;n_descsz, bytes));
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;fd = pathmap_open(filename);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;close(fd);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;free(filename);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return symtab;
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +// read symbol table from given fd. &amp;nbsp;If try_debuginfo) is true, also
&lt;br&gt;&amp;gt;&amp;gt; +// try to open an associated debuginfo file
&lt;br&gt;&amp;gt;&amp;gt; +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; ELF_EHDR ehdr;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; char *names = NULL;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; struct symtab* symtab = NULL;
&lt;br&gt;&amp;gt;&amp;gt; @@ -90,7 +354,8 @@
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; for (cursct = shbuf, cnt = 0; cnt &amp;lt; ehdr.e_shnum; cnt++) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; scn_cache[cnt].c_shdr = cursct;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp;if (cursct-&amp;gt;sh_type == SHT_SYMTAB || cursct-&amp;gt;sh_type == SHT_STRTAB) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if (cursct-&amp;gt;sh_type == SHT_SYMTAB || cursct-&amp;gt;sh_type == SHT_STRTAB
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; || cursct-&amp;gt;sh_type == SHT_NOTE) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( (scn_cache[cnt].c_data = read_section_data(fd, &amp;ehdr, cursct)) == NULL) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;goto quit;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; @@ -163,6 +428,28 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;// If we have no symtab in this file, look for a separate debuginfo file
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;if (try_debuginfo) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;// First we look for a Build ID
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;for (cursct = shbuf, cnt = 0;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;symtab == NULL &amp;&amp; cnt &amp;lt; ehdr.e_shnum;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cnt++) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cursct-&amp;gt;sh_type == SHT_NOTE) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; if (note-&amp;gt;n_type == NT_GNU_BUILD_ID) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; symtab = build_symtab_from_build_id(note);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;cursct++;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;// Then, if that doesn't work, the debug link
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if (symtab == NULL) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;symtab = build_symtab_from_debug_link(filename, fd, &amp;ehdr, shbuf,
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; scn_cache);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;quit:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; if (shbuf) free(shbuf);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; if (phbuf) free(phbuf);
&lt;br&gt;&amp;gt;&amp;gt; @@ -177,6 +464,11 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; return symtab;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; +struct symtab* build_symtab(int fd, const char *filename) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;return build_symtab_internal(fd, filename, /* try_debuginfo */ true);
&lt;br&gt;&amp;gt;&amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;void destroy_symtab(struct symtab* symtab) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; if (!symtab) return;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; if (symtab-&amp;gt;strs) free(symtab-&amp;gt;strs);
&lt;br&gt;&amp;gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h
&lt;br&gt;&amp;gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h &amp;nbsp; &amp;nbsp; 2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000
&lt;br&gt;&amp;gt;&amp;gt; @@ -32,7 +32,7 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;struct symtab;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;// build symbol table for a given ELF file descriptor
&lt;br&gt;&amp;gt;&amp;gt; -struct symtab* build_symtab(int fd);
&lt;br&gt;&amp;gt;&amp;gt; +struct symtab* build_symtab(int fd, const char *filename);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;// destroy the symbol table
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;void destroy_symtab(struct symtab* symtab);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26714110.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26713751</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-09T08:51:00Z</published>
	<updated>2009-12-09T08:51:00Z</updated>
	<author>
		<name>Andrew Haley</name>
	</author>
	<content type="html">Andrew John Hughes wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26713751&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; This is &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=541548&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=541548&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; The symptom is that jmap doesn't work because target libraries are stripped.
&lt;br&gt;&amp;gt;&amp;gt; The fix is to allow the symtab reader to use the separate debuginfo files
&lt;br&gt;&amp;gt;&amp;gt; that are available for all (AFAIK) GNU/Linux distributions.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'll commit this to the IcedTea repo, with a view to pushing it upstream
&lt;br&gt;&amp;gt;&amp;gt; to OpenJDK if it works on all distros.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It would be good to see this upstream. &amp;nbsp;The obvious compatibility
&lt;br&gt;&amp;gt; issue I can see is hardcoding /usr/lib/debug. &amp;nbsp;Passing that in from
&lt;br&gt;&amp;gt; the Makefile, thus allowing to be overridden if necessary, might be
&lt;br&gt;&amp;gt; better.
&lt;br&gt;&amp;gt; i.e.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; becomes
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #ifndef DEBUG_FILE_DIRECTORY
&lt;br&gt;&amp;gt; #define DEBUG_FILE_DIRECTORY &amp;quot;/usr/lib/debug&amp;quot;
&lt;br&gt;&amp;gt; #endif
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; with apppropriate logic in the OpenJDK makefile(s).
&lt;/div&gt;&lt;br&gt;I think this directory is generally assumed to be hard-coded everywhere. &amp;nbsp;I
&lt;br&gt;will make such a change if this patch won't be committed otherwise, but I do
&lt;br&gt;not believe that it will ever be used.
&lt;br&gt;&lt;br&gt;&amp;gt; Only other comment is that your ChangeLog should refer to openjdk, not
&lt;br&gt;&amp;gt; openjdk-ecj as we want this for all builds. The patch itself is
&lt;br&gt;&amp;gt; correct, it's just the ChangeLog.
&lt;br&gt;&lt;br&gt;Yeah, I noticed this already.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Andrew.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26713751.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26713129</id>
	<title>Re: Allow Java's ELF symtab reader to use separate debuginfo files</title>
	<published>2009-12-09T08:26:42Z</published>
	<updated>2009-12-09T08:26:42Z</updated>
	<author>
		<name>gnu_andrew</name>
	</author>
	<content type="html">2009/12/9 Andrew Haley &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26713129&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; This is &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=541548&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=541548&lt;/a&gt;&lt;br&gt;&amp;gt; The symptom is that jmap doesn't work because target libraries are stripped.
&lt;br&gt;&amp;gt; The fix is to allow the symtab reader to use the separate debuginfo files
&lt;br&gt;&amp;gt; that are available for all (AFAIK) GNU/Linux distributions.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'll commit this to the IcedTea repo, with a view to pushing it upstream
&lt;br&gt;&amp;gt; to OpenJDK if it works on all distros.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andrew.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;It would be good to see this upstream. &amp;nbsp;The obvious compatibility
&lt;br&gt;issue I can see is hardcoding /usr/lib/debug. &amp;nbsp;Passing that in from
&lt;br&gt;the Makefile, thus allowing to be overridden if necessary, might be
&lt;br&gt;better.
&lt;br&gt;i.e.
&lt;br&gt;&lt;br&gt;static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&lt;br&gt;becomes
&lt;br&gt;&lt;br&gt;#ifndef DEBUG_FILE_DIRECTORY
&lt;br&gt;#define DEBUG_FILE_DIRECTORY &amp;quot;/usr/lib/debug&amp;quot;
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;with apppropriate logic in the OpenJDK makefile(s).
&lt;br&gt;&lt;br&gt;Only other comment is that your ChangeLog should refer to openjdk, not
&lt;br&gt;openjdk-ecj as we want this for all builds. The patch itself is
&lt;br&gt;correct, it's just the ChangeLog.
&lt;br&gt;&lt;br&gt;Redirecting this mail to the HotSpot and serviceability lists rather
&lt;br&gt;than tl as it concerns the serviceability tools in HotSpot.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009-12-09  Andrew Haley  &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26713129&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aph@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        * openjdk-ecj/hotspot/agent/src/os/linux/symtab.c (debug_file_directory):
&lt;br&gt;&amp;gt;        New variable.
&lt;br&gt;&amp;gt;        (gnu_debuglink_crc32): New.
&lt;br&gt;&amp;gt;        (build_symtab_internal): Rename from build_symtab, make static.
&lt;br&gt;&amp;gt;        Add logic to look inside debuginfo files.
&lt;br&gt;&amp;gt;        (open_debug_file, find_section_by_name, open_file_from_debug_link,
&lt;br&gt;&amp;gt;        build_id_to_debug_filename, build_symtab_from_build_id,
&lt;br&gt;&amp;gt;        build_symtab): New.
&lt;br&gt;&amp;gt;        * openjdk-ecj/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd):
&lt;br&gt;&amp;gt;        Pass FILENAME to build_symtab().
&lt;br&gt;&amp;gt;        * openjdk-ecj/hotspot/agent/src/os/linux/symtab.h (build_symtab):
&lt;br&gt;&amp;gt;        Add FILENAME arg.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c
&lt;br&gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c       2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c   2009-12-04 16:29:27.552837905 +0000
&lt;br&gt;&amp;gt; @@ -174,7 +174,7 @@
&lt;br&gt;&amp;gt;       return NULL;
&lt;br&gt;&amp;gt;    }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -   newlib-&amp;gt;symtab = build_symtab(newlib-&amp;gt;fd);
&lt;br&gt;&amp;gt; +   newlib-&amp;gt;symtab = build_symtab(newlib-&amp;gt;fd, libname);
&lt;br&gt;&amp;gt;    if (newlib-&amp;gt;symtab == NULL) {
&lt;br&gt;&amp;gt;       print_debug(&amp;quot;symbol table build failed for %s\n&amp;quot;, newlib-&amp;gt;name);
&lt;br&gt;&amp;gt;    }
&lt;br&gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c openjdk/hotspot/agent/src/os/linux/symtab.c
&lt;br&gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.c     2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/symtab.c 2009-12-07 13:53:13.107734342 +0000
&lt;br&gt;&amp;gt; @@ -53,8 +53,272 @@
&lt;br&gt;&amp;gt;   struct hsearch_data *hash_table;
&lt;br&gt;&amp;gt;  } symtab_t;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -// read symbol table from given fd.
&lt;br&gt;&amp;gt; -struct symtab* build_symtab(int fd) {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +// Directory that contains global debuginfo files.  In theory it
&lt;br&gt;&amp;gt; +// should be possible to change this, but in a Java environment there
&lt;br&gt;&amp;gt; +// is no obvious place to put a user interface to do it.  Maybe this
&lt;br&gt;&amp;gt; +// could be set with an environment variable.
&lt;br&gt;&amp;gt; +static const char debug_file_directory[] = &amp;quot;/usr/lib/debug&amp;quot;;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +/* The CRC used in gnu_debuglink, retrieved from
&lt;br&gt;&amp;gt; +   &lt;a href=&quot;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files&lt;/a&gt;. */
&lt;br&gt;&amp;gt; +unsigned long gnu_debuglink_crc32 (unsigned long crc,
&lt;br&gt;&amp;gt; +                                  unsigned char *buf, size_t len)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  static const unsigned long crc32_table[256] =
&lt;br&gt;&amp;gt; +    {
&lt;br&gt;&amp;gt; +      0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
&lt;br&gt;&amp;gt; +      0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
&lt;br&gt;&amp;gt; +      0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
&lt;br&gt;&amp;gt; +      0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
&lt;br&gt;&amp;gt; +      0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
&lt;br&gt;&amp;gt; +      0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
&lt;br&gt;&amp;gt; +      0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
&lt;br&gt;&amp;gt; +      0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
&lt;br&gt;&amp;gt; +      0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
&lt;br&gt;&amp;gt; +      0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
&lt;br&gt;&amp;gt; +      0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
&lt;br&gt;&amp;gt; +      0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
&lt;br&gt;&amp;gt; +      0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
&lt;br&gt;&amp;gt; +      0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
&lt;br&gt;&amp;gt; +      0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
&lt;br&gt;&amp;gt; +      0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
&lt;br&gt;&amp;gt; +      0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
&lt;br&gt;&amp;gt; +      0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
&lt;br&gt;&amp;gt; +      0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
&lt;br&gt;&amp;gt; +      0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
&lt;br&gt;&amp;gt; +      0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
&lt;br&gt;&amp;gt; +      0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
&lt;br&gt;&amp;gt; +      0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
&lt;br&gt;&amp;gt; +      0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
&lt;br&gt;&amp;gt; +      0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
&lt;br&gt;&amp;gt; +      0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
&lt;br&gt;&amp;gt; +      0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
&lt;br&gt;&amp;gt; +      0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
&lt;br&gt;&amp;gt; +      0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
&lt;br&gt;&amp;gt; +      0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
&lt;br&gt;&amp;gt; +      0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
&lt;br&gt;&amp;gt; +      0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
&lt;br&gt;&amp;gt; +      0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
&lt;br&gt;&amp;gt; +      0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
&lt;br&gt;&amp;gt; +      0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
&lt;br&gt;&amp;gt; +      0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
&lt;br&gt;&amp;gt; +      0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
&lt;br&gt;&amp;gt; +      0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
&lt;br&gt;&amp;gt; +      0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
&lt;br&gt;&amp;gt; +      0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
&lt;br&gt;&amp;gt; +      0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
&lt;br&gt;&amp;gt; +      0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
&lt;br&gt;&amp;gt; +      0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
&lt;br&gt;&amp;gt; +      0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
&lt;br&gt;&amp;gt; +      0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
&lt;br&gt;&amp;gt; +      0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
&lt;br&gt;&amp;gt; +      0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
&lt;br&gt;&amp;gt; +      0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
&lt;br&gt;&amp;gt; +      0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
&lt;br&gt;&amp;gt; +      0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
&lt;br&gt;&amp;gt; +      0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
&lt;br&gt;&amp;gt; +      0x2d02ef8d
&lt;br&gt;&amp;gt; +    };
&lt;br&gt;&amp;gt; +  unsigned char *end;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  crc = ~crc &amp; 0xffffffff;
&lt;br&gt;&amp;gt; +  for (end = buf + len; buf &amp;lt; end; ++buf)
&lt;br&gt;&amp;gt; +    crc = crc32_table[(crc ^ *buf) &amp; 0xff] ^ (crc &amp;gt;&amp;gt; 8);
&lt;br&gt;&amp;gt; +  return ~crc &amp; 0xffffffff;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +/* Open a debuginfo file and check its CRC.  If it exists and the CRC
&lt;br&gt;&amp;gt; +   matches return its fd.  */
&lt;br&gt;&amp;gt; +static int
&lt;br&gt;&amp;gt; +open_debug_file (const char *pathname, unsigned int crc)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  unsigned int file_crc = 0;
&lt;br&gt;&amp;gt; +  unsigned char buffer[8 * 1024];
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  int fd = pathmap_open(pathname);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  if (fd &amp;lt; 0)
&lt;br&gt;&amp;gt; +    return -1;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  lseek(fd, 0, SEEK_SET);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  for (;;) {
&lt;br&gt;&amp;gt; +    int len = read(fd, buffer, sizeof buffer);
&lt;br&gt;&amp;gt; +    if (len &amp;lt;= 0)
&lt;br&gt;&amp;gt; +      break;
&lt;br&gt;&amp;gt; +    file_crc = gnu_debuglink_crc32(file_crc, buffer, len);
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  if (crc == file_crc)
&lt;br&gt;&amp;gt; +    return fd;
&lt;br&gt;&amp;gt; +  else {
&lt;br&gt;&amp;gt; +    close(fd);
&lt;br&gt;&amp;gt; +    return -1;
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +/* Find an ELF section.  */
&lt;br&gt;&amp;gt; +static struct elf_section *find_section_by_name(char *name,
&lt;br&gt;&amp;gt; +                                               int fd,
&lt;br&gt;&amp;gt; +                                               ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt; +                                               ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt; +                                               struct elf_section *scn_cache)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  ELF_SHDR* cursct = NULL;
&lt;br&gt;&amp;gt; +  char *strtab;
&lt;br&gt;&amp;gt; +  int cnt;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  if (scn_cache[ehdr-&amp;gt;e_shstrndx].c_data == NULL) {
&lt;br&gt;&amp;gt; +    if ((scn_cache[ehdr-&amp;gt;e_shstrndx].c_data
&lt;br&gt;&amp;gt; +        = read_section_data(fd, ehdr, cursct)) == NULL) {
&lt;br&gt;&amp;gt; +      return NULL;
&lt;br&gt;&amp;gt; +    }
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  strtab = scn_cache[ehdr-&amp;gt;e_shstrndx].c_data;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  for (cursct = shbuf, cnt = 0;
&lt;br&gt;&amp;gt; +       cnt &amp;lt; ehdr-&amp;gt;e_shnum;
&lt;br&gt;&amp;gt; +       cnt++, cursct++) {
&lt;br&gt;&amp;gt; +    if (strcmp(cursct-&amp;gt;sh_name + strtab, name) == 0) {
&lt;br&gt;&amp;gt; +      scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct);
&lt;br&gt;&amp;gt; +      return &amp;scn_cache[cnt];
&lt;br&gt;&amp;gt; +    }
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  return NULL;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +/* Look for a &amp;quot;.gnu_debuglink&amp;quot; section.  If one exists, try to open a
&lt;br&gt;&amp;gt; +   suitable debuginfo file.  */
&lt;br&gt;&amp;gt; +static int open_file_from_debug_link(const char *name,
&lt;br&gt;&amp;gt; +                                    int fd,
&lt;br&gt;&amp;gt; +                                    ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt; +                                    ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt; +                                    struct elf_section *scn_cache)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  struct elf_section *debug_link = find_section_by_name(&amp;quot;.gnu_debuglink&amp;quot;, fd, ehdr,
&lt;br&gt;&amp;gt; +                                                       shbuf, scn_cache);
&lt;br&gt;&amp;gt; +  int debug_fd;
&lt;br&gt;&amp;gt; +  char *debug_filename = debug_link-&amp;gt;c_data;
&lt;br&gt;&amp;gt; +  int offset = strlen(debug_filename) + 3 &amp;gt;&amp;gt; 2;
&lt;br&gt;&amp;gt; +  static unsigned int crc;
&lt;br&gt;&amp;gt; +  crc = ((unsigned int*)debug_link-&amp;gt;c_data)[offset];
&lt;br&gt;&amp;gt; +  char *debug_pathname = malloc(strlen(debug_filename)
&lt;br&gt;&amp;gt; +                               + strlen(name)
&lt;br&gt;&amp;gt; +                               + strlen(&amp;quot;.debug/&amp;quot;)
&lt;br&gt;&amp;gt; +                               + strlen(debug_file_directory)
&lt;br&gt;&amp;gt; +                               + 2);
&lt;br&gt;&amp;gt; +  strcpy(debug_pathname, name);
&lt;br&gt;&amp;gt; +  char *last_slash = strrchr(debug_pathname, '/');
&lt;br&gt;&amp;gt; +  if (last_slash == NULL)
&lt;br&gt;&amp;gt; +    return -1;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  /* Look in the same directory as the object.  */
&lt;br&gt;&amp;gt; +  strcpy(last_slash+1, debug_filename);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt; +  if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt; +    free(debug_pathname);
&lt;br&gt;&amp;gt; +    return debug_fd;
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  /* Look in a subdirectory named &amp;quot;.debug&amp;quot;.  */
&lt;br&gt;&amp;gt; +  strcpy(last_slash+1, &amp;quot;.debug/&amp;quot;);
&lt;br&gt;&amp;gt; +  strcat(last_slash, debug_filename);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt; +  if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt; +    free(debug_pathname);
&lt;br&gt;&amp;gt; +    return debug_fd;
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  /* Look in /usr/lib/debug + the full pathname.  */
&lt;br&gt;&amp;gt; +  strcpy(debug_pathname, debug_file_directory);
&lt;br&gt;&amp;gt; +  strcat(debug_pathname, name);
&lt;br&gt;&amp;gt; +  last_slash = strrchr(debug_pathname, '/');
&lt;br&gt;&amp;gt; +  strcpy(last_slash+1, debug_filename);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  debug_fd = open_debug_file(debug_pathname, crc);
&lt;br&gt;&amp;gt; +  if (debug_fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt; +    free(debug_pathname);
&lt;br&gt;&amp;gt; +    return debug_fd;
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  free(debug_pathname);
&lt;br&gt;&amp;gt; +  return -1;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +/* Look for a &amp;quot;.gnu_debuglink&amp;quot; section.  If one exists, try to open a
&lt;br&gt;&amp;gt; +   suitable debuginfo file and read a symbol table from it.  */
&lt;br&gt;&amp;gt; +static struct symtab *build_symtab_from_debug_link(const char *name,
&lt;br&gt;&amp;gt; +                                    int fd,
&lt;br&gt;&amp;gt; +                                    ELF_EHDR *ehdr,
&lt;br&gt;&amp;gt; +                                    ELF_SHDR *shbuf,
&lt;br&gt;&amp;gt; +                                    struct elf_section *scn_cache)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  if (fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt; +    struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
&lt;br&gt;&amp;gt; +    close(fd);
&lt;br&gt;&amp;gt; +    return symtab;
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  return NULL;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +// Given a build_id, find the associated debuginfo file
&lt;br&gt;&amp;gt; +static char *
&lt;br&gt;&amp;gt; +build_id_to_debug_filename (size_t size, unsigned char *data)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  char *filename, *s;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  filename = malloc(strlen (debug_file_directory) + (sizeof &amp;quot;/.build-id/&amp;quot; - 1) + 1
&lt;br&gt;&amp;gt; +                   + 2 * size + (sizeof &amp;quot;.debug&amp;quot; - 1) + 1);
&lt;br&gt;&amp;gt; +  s = filename + sprintf (filename, &amp;quot;%s/.build-id/&amp;quot;, debug_file_directory);
&lt;br&gt;&amp;gt; +  if (size &amp;gt; 0)
&lt;br&gt;&amp;gt; +    {
&lt;br&gt;&amp;gt; +      size--;
&lt;br&gt;&amp;gt; +      s += sprintf (s, &amp;quot;%02x&amp;quot;, *data++);
&lt;br&gt;&amp;gt; +    }
&lt;br&gt;&amp;gt; +  if (size &amp;gt; 0)
&lt;br&gt;&amp;gt; +    *s++ = '/';
&lt;br&gt;&amp;gt; +  while (size-- &amp;gt; 0)
&lt;br&gt;&amp;gt; +    s += sprintf (s, &amp;quot;%02x&amp;quot;, *data++);
&lt;br&gt;&amp;gt; +  strcpy (s, &amp;quot;.debug&amp;quot;);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  return filename;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +// Read a build ID note.  Try to open any associated debuginfo file
&lt;br&gt;&amp;gt; +// and return its symtab
&lt;br&gt;&amp;gt; +static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +  int fd;
&lt;br&gt;&amp;gt; +  struct symtab *symtab = NULL;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  unsigned char *bytes
&lt;br&gt;&amp;gt; +    = (unsigned char*)(note+1) + note-&amp;gt;n_namesz;
&lt;br&gt;&amp;gt; +  unsigned char *filename
&lt;br&gt;&amp;gt; +    = (build_id_to_debug_filename (note-&amp;gt;n_descsz, bytes));
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  fd = pathmap_open(filename);
&lt;br&gt;&amp;gt; +  if (fd &amp;gt;= 0) {
&lt;br&gt;&amp;gt; +    symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
&lt;br&gt;&amp;gt; +    close(fd);
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +  free(filename);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +  return symtab;
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +// read symbol table from given fd.  If try_debuginfo) is true, also
&lt;br&gt;&amp;gt; +// try to open an associated debuginfo file
&lt;br&gt;&amp;gt; +static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) {
&lt;br&gt;&amp;gt;   ELF_EHDR ehdr;
&lt;br&gt;&amp;gt;   char *names = NULL;
&lt;br&gt;&amp;gt;   struct symtab* symtab = NULL;
&lt;br&gt;&amp;gt; @@ -90,7 +354,8 @@
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;   for (cursct = shbuf, cnt = 0; cnt &amp;lt; ehdr.e_shnum; cnt++) {
&lt;br&gt;&amp;gt;     scn_cache[cnt].c_shdr = cursct;
&lt;br&gt;&amp;gt; -    if (cursct-&amp;gt;sh_type == SHT_SYMTAB || cursct-&amp;gt;sh_type == SHT_STRTAB) {
&lt;br&gt;&amp;gt; +    if (cursct-&amp;gt;sh_type == SHT_SYMTAB || cursct-&amp;gt;sh_type == SHT_STRTAB
&lt;br&gt;&amp;gt; +       || cursct-&amp;gt;sh_type == SHT_NOTE) {
&lt;br&gt;&amp;gt;       if ( (scn_cache[cnt].c_data = read_section_data(fd, &amp;ehdr, cursct)) == NULL) {
&lt;br&gt;&amp;gt;          goto quit;
&lt;br&gt;&amp;gt;       }
&lt;br&gt;&amp;gt; @@ -163,6 +428,28 @@
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt;   }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +  // If we have no symtab in this file, look for a separate debuginfo file
&lt;br&gt;&amp;gt; +  if (try_debuginfo) {
&lt;br&gt;&amp;gt; +    // First we look for a Build ID
&lt;br&gt;&amp;gt; +    for (cursct = shbuf, cnt = 0;
&lt;br&gt;&amp;gt; +        symtab == NULL &amp;&amp; cnt &amp;lt; ehdr.e_shnum;
&lt;br&gt;&amp;gt; +        cnt++) {
&lt;br&gt;&amp;gt; +      if (cursct-&amp;gt;sh_type == SHT_NOTE) {
&lt;br&gt;&amp;gt; +       Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data;
&lt;br&gt;&amp;gt; +       if (note-&amp;gt;n_type == NT_GNU_BUILD_ID) {
&lt;br&gt;&amp;gt; +         symtab = build_symtab_from_build_id(note);
&lt;br&gt;&amp;gt; +       }
&lt;br&gt;&amp;gt; +      }
&lt;br&gt;&amp;gt; +      cursct++;
&lt;br&gt;&amp;gt; +    }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +    // Then, if that doesn't work, the debug link
&lt;br&gt;&amp;gt; +    if (symtab == NULL) {
&lt;br&gt;&amp;gt; +      symtab = build_symtab_from_debug_link(filename, fd, &amp;ehdr, shbuf,
&lt;br&gt;&amp;gt; +                                           scn_cache);
&lt;br&gt;&amp;gt; +    }
&lt;br&gt;&amp;gt; +  }
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;  quit:
&lt;br&gt;&amp;gt;   if (shbuf) free(shbuf);
&lt;br&gt;&amp;gt;   if (phbuf) free(phbuf);
&lt;br&gt;&amp;gt; @@ -177,6 +464,11 @@
&lt;br&gt;&amp;gt;   return symtab;
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +struct symtab* build_symtab(int fd, const char *filename) {
&lt;br&gt;&amp;gt; +  return build_symtab_internal(fd, filename, /* try_debuginfo */ true);
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;  void destroy_symtab(struct symtab* symtab) {
&lt;br&gt;&amp;gt;   if (!symtab) return;
&lt;br&gt;&amp;gt;   if (symtab-&amp;gt;strs) free(symtab-&amp;gt;strs);
&lt;br&gt;&amp;gt; diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h
&lt;br&gt;&amp;gt; --- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h     2009-05-15 00:36:38.000000000 +0100
&lt;br&gt;&amp;gt; +++ openjdk/hotspot/agent/src/os/linux/symtab.h 2009-12-04 16:30:38.797838015 +0000
&lt;br&gt;&amp;gt; @@ -32,7 +32,7 @@
&lt;br&gt;&amp;gt;  struct symtab;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  // build symbol table for a given ELF file descriptor
&lt;br&gt;&amp;gt; -struct symtab* build_symtab(int fd);
&lt;br&gt;&amp;gt; +struct symtab* build_symtab(int fd, const char *filename);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  // destroy the symbol table
&lt;br&gt;&amp;gt;  void destroy_symtab(struct symtab* symtab);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Andrew :-)
&lt;br&gt;&lt;br&gt;Free Java Software Engineer
&lt;br&gt;Red Hat, Inc. (&lt;a href=&quot;http://www.redhat.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.redhat.com&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;Support Free Java!
&lt;br&gt;Contribute to GNU Classpath and the OpenJDK
&lt;br&gt;&lt;a href=&quot;http://www.gnu.org/software/classpath&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/classpath&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://openjdk.java.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://openjdk.java.net&lt;/a&gt;&lt;br&gt;&lt;br&gt;PGP Key: 94EFD9D8 (&lt;a href=&quot;http://subkeys.pgp.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://subkeys.pgp.net&lt;/a&gt;)
&lt;br&gt;Fingerprint: F8EF F1EA 401E 2E60 15FA &amp;nbsp;7927 142C 2591 94EF D9D8
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Allow-Java%27s-ELF-symtab-reader-to-use-separate-debuginfo-files-tp26713129p26713129.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26704554</id>
	<title>hg: jdk7/tl/jdk: 6908628: ObjectIdentifier s11n test fails</title>
	<published>2009-12-08T19:16:09Z</published>
	<updated>2009-12-08T19:16:09Z</updated>
	<author>
		<name>weijun.wang</name>
	</author>
	<content type="html">Changeset: db5c77621c6b
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;weijun
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-09 11:15 +0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/db5c77621c6b&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/db5c77621c6b&lt;/a&gt;&lt;br&gt;&lt;br&gt;6908628: ObjectIdentifier s11n test fails
&lt;br&gt;Reviewed-by: xuelei
&lt;br&gt;&lt;br&gt;! test/sun/security/util/Oid/S11N.sh
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6908628%3A-ObjectIdentifier-s11n-test-fails-tp26704554p26704554.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26703847</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T17:38:43Z</published>
	<updated>2009-12-08T17:38:43Z</updated>
	<author>
		<name>martinrb</name>
	</author>
	<content type="html">On Tue, Dec 8, 2009 at 16:42, Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26703847&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; In theory, the process is supposed to prevent
&lt;br&gt;&amp;gt;&amp;gt; regression test failures from ever creeping in - that's the whole point.
&lt;br&gt;&amp;gt;&amp;gt; When they do (inevitably) creep in,
&lt;br&gt;&amp;gt;&amp;gt; they are supposed to be aggressively targeted.
&lt;br&gt;&amp;gt;&amp;gt; A gatekeeper demonstrates the failure to a developer,
&lt;br&gt;&amp;gt;&amp;gt; and the developer is given X time units to fix the test breakage,
&lt;br&gt;&amp;gt;&amp;gt; or face reversion of the breakage-inducing change.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But it's not that simple. In some cases the cause of the failure is
&lt;br&gt;&amp;gt; a change made to a different repository, by a different team,
&lt;/div&gt;&lt;br&gt;Changes that get in this way are signs of process failure.
&lt;br&gt;E.g. failing tests in java.util caused by hotspot commits
&lt;br&gt;are signs the hotspot commit was inadequately tested.
&lt;br&gt;&lt;br&gt;&amp;gt; or even to the base system software via an update.
&lt;br&gt;&amp;gt; The ProblemList.txt file was meant to deal with that situation,
&lt;br&gt;&amp;gt; and also tests that are spuriously failing for unknown reasons.
&lt;br&gt;&lt;br&gt;I agree that flaky and platform-dependent failures are a big problem.
&lt;br&gt;&lt;br&gt;&amp;gt; When the gatekeeper can do what you say, that is great, and ideal.
&lt;br&gt;&amp;gt; But I just don't see it happening that way in all situations.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I would like to see more effort devoted to fixing the tests
&lt;br&gt;&amp;gt;&amp;gt; (or the code!) rather than adding infrastructure that might
&lt;br&gt;&amp;gt;&amp;gt; have the effect of hiding the test failures.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sigh... I'm not trying to hide the failures, and if you haven't
&lt;br&gt;&amp;gt; noticed, I have fixed quite a few tests myself.
&lt;br&gt;&lt;br&gt;I have noticed, and I do appreciate it.
&lt;br&gt;&lt;br&gt;I do some flaky test fixing myself.
&lt;br&gt;&lt;br&gt;&amp;gt; If anything, I'm making the fact that we have test failures more
&lt;br&gt;&amp;gt; public, and the ultimate goal is to fix the tests.
&lt;br&gt;&amp;gt; But I needed a baseline, a line in the sand, an expectation
&lt;br&gt;&amp;gt; of what tests should always pass. And an ability to run all
&lt;br&gt;&amp;gt; the tests in a timely manner.
&lt;br&gt;&lt;br&gt;I prefer the approach taken by my diff-javatest tool
&lt;br&gt;of not caring about how many tests failed with the
&lt;br&gt;reference jdk. &amp;nbsp;Just run them twice, and look for
&lt;br&gt;*new* failures.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Now it's time to go through the ProblemList.txt and do a little
&lt;br&gt;&amp;gt; triage, file a few bugs, fix what tests can be fixed, and/or
&lt;br&gt;&amp;gt; correct my ProblemList.txt file if I got it wrong.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; BTW, I run regtests on java.util collections regularly,
&lt;br&gt;&amp;gt;&amp;gt; but only on Linux.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think it is an expected situation that many developers can only
&lt;br&gt;&amp;gt; run the tests on one platform.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But do you expect the gatekeeper to run all the tests on all the
&lt;br&gt;&amp;gt; platforms?
&lt;br&gt;&amp;gt; And if for example, your tests fail on Windows you would be
&lt;br&gt;&amp;gt; given X time units to fix it? Could you?
&lt;/div&gt;&lt;br&gt;Of course, you want the perfect combination of nasty and nice.
&lt;br&gt;For some test failures, it's unreasonable to expect the guilty party
&lt;br&gt;to fix them. &amp;nbsp;But they should be prepared to be helpful.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26703847.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26703421</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T16:42:32Z</published>
	<updated>2009-12-08T16:42:32Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Martin Buchholz wrote:
&lt;br&gt;&amp;gt; On Mon, Dec 7, 2009 at 23:30, Martin Buchholz &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26703421&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;martinrb@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; You cannot exclude the Mother Of All Tests.
&lt;br&gt;&amp;gt;&amp;gt; This is non-negotiable.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; More seriously...
&lt;br&gt;&amp;gt; It's very difficult to manage creeping failures in regression tests.
&lt;br&gt;&lt;br&gt;Tell me about it. :^(
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In theory, the process is supposed to prevent
&lt;br&gt;&amp;gt; regression test failures from ever creeping in - that's the whole point.
&lt;br&gt;&amp;gt; When they do (inevitably) creep in,
&lt;br&gt;&amp;gt; they are supposed to be aggressively targeted.
&lt;br&gt;&amp;gt; A gatekeeper demonstrates the failure to a developer,
&lt;br&gt;&amp;gt; and the developer is given X time units to fix the test breakage,
&lt;br&gt;&amp;gt; or face reversion of the breakage-inducing change.
&lt;br&gt;&lt;br&gt;But it's not that simple. In some cases the cause of the failure is
&lt;br&gt;a change made to a different repository, by a different team,
&lt;br&gt;or even to the base system software via an update.
&lt;br&gt;The ProblemList.txt file was meant to deal with that situation,
&lt;br&gt;and also tests that are spuriously failing for unknown reasons.
&lt;br&gt;&lt;br&gt;When the gatekeeper can do what you say, that is great, and ideal.
&lt;br&gt;But I just don't see it happening that way in all situations.
&lt;br&gt;&lt;br&gt;&amp;gt; I would like to see more effort devoted to fixing the tests
&lt;br&gt;&amp;gt; (or the code!) rather than adding infrastructure that might
&lt;br&gt;&amp;gt; have the effect of hiding the test failures.
&lt;br&gt;&lt;br&gt;Sigh... I'm not trying to hide the failures, and if you haven't
&lt;br&gt;noticed, I have fixed quite a few tests myself.
&lt;br&gt;If anything, I'm making the fact that we have test failures more
&lt;br&gt;public, and the ultimate goal is to fix the tests.
&lt;br&gt;But I needed a baseline, a line in the sand, an expectation
&lt;br&gt;of what tests should always pass. And an ability to run all
&lt;br&gt;the tests in a timely manner.
&lt;br&gt;&lt;br&gt;Now it's time to go through the ProblemList.txt and do a little
&lt;br&gt;triage, file a few bugs, fix what tests can be fixed, and/or
&lt;br&gt;correct my ProblemList.txt file if I got it wrong.
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; BTW, I run regtests on java.util collections regularly,
&lt;br&gt;&amp;gt; but only on Linux.
&lt;br&gt;&lt;br&gt;I think it is an expected situation that many developers can only
&lt;br&gt;run the tests on one platform.
&lt;br&gt;&lt;br&gt;But do you expect the gatekeeper to run all the tests on all the
&lt;br&gt;platforms?
&lt;br&gt;And if for example, your tests fail on Windows you would be
&lt;br&gt;given X time units to fix it? Could you?
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26703421.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26702817</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T15:35:29Z</published>
	<updated>2009-12-08T15:35:29Z</updated>
	<author>
		<name>martinrb</name>
	</author>
	<content type="html">On Mon, Dec 7, 2009 at 23:30, Martin Buchholz &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26702817&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;martinrb@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; You cannot exclude the Mother Of All Tests.
&lt;br&gt;&amp;gt; This is non-negotiable.
&lt;br&gt;&lt;br&gt;More seriously...
&lt;br&gt;It's very difficult to manage creeping failures in regression tests.
&lt;br&gt;&lt;br&gt;In theory, the process is supposed to prevent
&lt;br&gt;regression test failures from ever creeping in - that's the whole point.
&lt;br&gt;When they do (inevitably) creep in,
&lt;br&gt;they are supposed to be aggressively targeted.
&lt;br&gt;A gatekeeper demonstrates the failure to a developer,
&lt;br&gt;and the developer is given X time units to fix the test breakage,
&lt;br&gt;or face reversion of the breakage-inducing change.
&lt;br&gt;I would like to see more effort devoted to fixing the tests
&lt;br&gt;(or the code!) rather than adding infrastructure that might
&lt;br&gt;have the effect of hiding the test failures.
&lt;br&gt;&lt;br&gt;BTW, I run regtests on java.util collections regularly,
&lt;br&gt;but only on Linux.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26702817.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26701301</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T13:41:17Z</published>
	<updated>2009-12-08T13:41:17Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Need reviewer for JDK7 testing changes, e.g. testing via:
&lt;br&gt;&amp;gt; &amp;nbsp; cd jdk/make &amp;&amp; gmake all images &amp;&amp; cd ../test &amp;&amp; gmake jdk_all
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 6906210: Fix another minor typo in test/Makefile
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-test-changes4/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-test-changes4/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dan had pointed out my typo in the jdk/test/Makefile ($-&amp;gt;$$)
&lt;br&gt;&amp;gt; but when I started running and re-running the tests I ran into
&lt;br&gt;&amp;gt; more unstable tests. This webrev includes fixes to 3 tests
&lt;br&gt;&amp;gt; and unfortuntately more additions to the ProblemList file.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Tests added to the ProblemList:
&lt;/div&gt;&lt;br&gt;A few comments on problem list membership:
&lt;br&gt;&lt;br&gt;&amp;nbsp;366 # Need to be marked othervm, or changed to be samevm safe
&lt;br&gt;&amp;nbsp;367 java/lang/annotation/ParameterAnnotations.java &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;generic-all
&lt;br&gt;&lt;br&gt;This test uses a security manager.
&lt;br&gt;&lt;br&gt;499 # Problems with rounding add failures on solaris-sparcv9 and -server
&lt;br&gt;500 java/math/BigDecimal/AddTests.java solaris-sparcv9
&lt;br&gt;&lt;br&gt;If this test is failing on a particular platform, that is indicative of 
&lt;br&gt;a HotSpot bug on that platform.
&lt;br&gt;&lt;br&gt;502 # Problems on windows with samevm, missing inputstream close()?
&lt;br&gt;503 # Also times out on solaris-sparcv9 -server
&lt;br&gt;504 java/math/BigInteger/BigIntegerTest.java generic-all
&lt;br&gt;&lt;br&gt;Some uses of input/output are not guarded by the try-finally {close 
&lt;br&gt;resource} structure. I've filed 6908541 &amp;quot;Bad resource management in 
&lt;br&gt;java/math/BigInteger/BigIntegerTest.java&amp;quot; for this.
&lt;br&gt;&lt;br&gt;505
&lt;br&gt;506 # Should be samevm? But seems problematic with samevm on windows
&lt;br&gt;507 java/math/BigInteger/ModPow65537.java
&lt;br&gt;&lt;br&gt;&amp;nbsp;From a quick look, the test uses some security infrastructure, but 
&lt;br&gt;there is nothing that would seem problematic for samevm operation.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26701301.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26700667</id>
	<title>hg: jdk7/tl/jdk: 6903754: (bf) Improve floating-point buffer comparison</title>
	<published>2009-12-08T12:59:11Z</published>
	<updated>2009-12-08T12:59:11Z</updated>
	<author>
		<name>martinrb</name>
	</author>
	<content type="html">Changeset: a0f6963b1618
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;martin
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-08 12:41 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a0f6963b1618&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a0f6963b1618&lt;/a&gt;&lt;br&gt;&lt;br&gt;6903754: (bf) Improve floating-point buffer comparison
&lt;br&gt;Summary: Describe the exact behavior of {Double,Float}Buffer.{equals,compareTo}; fix non-anti-symmetric behavior of compareTo
&lt;br&gt;Reviewed-by: alanb
&lt;br&gt;Contributed-by: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26700667&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jessewilson@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;! make/java/nio/genBuffer.sh
&lt;br&gt;! src/share/classes/java/nio/X-Buffer.java.template
&lt;br&gt;! test/java/nio/Buffer/Basic-X.java.template
&lt;br&gt;! test/java/nio/Buffer/BasicByte.java
&lt;br&gt;! test/java/nio/Buffer/BasicChar.java
&lt;br&gt;! test/java/nio/Buffer/BasicDouble.java
&lt;br&gt;! test/java/nio/Buffer/BasicFloat.java
&lt;br&gt;! test/java/nio/Buffer/BasicInt.java
&lt;br&gt;! test/java/nio/Buffer/BasicLong.java
&lt;br&gt;! test/java/nio/Buffer/BasicShort.java
&lt;br&gt;! test/java/nio/Buffer/genBasic.sh
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6903754%3A-%28bf%29-Improve-floating-point-buffer-comparison-tp26700667p26700667.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26699214</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T11:19:48Z</published>
	<updated>2009-12-08T11:19:48Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;Martin Buchholz wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Dec 7, 2009 at 13:43, Tim Bell &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26699214&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Tim.Bell@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;java/util/Collection/MOAT.java
&lt;br&gt;&amp;gt;&amp;gt; It is a shame we have to exclude Martin's MOAT.java (Mother Of All Tests)
&lt;br&gt;&amp;gt;&amp;gt; The comment shows the test failing on Solaris 10 x86, but you exclude
&lt;br&gt;&amp;gt;&amp;gt; it on generic-all
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You cannot exclude the Mother Of All Tests.
&lt;br&gt;&amp;gt; This is non-negotiable.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Martin
&lt;/div&gt;&lt;br&gt;This is a problem list, and although I'm using it to exclude tests
&lt;br&gt;from the jdk/test/Makefile jdk_* targets, there are multiple reasons
&lt;br&gt;why a test is listed. If I'm wrong, I'll fix it.
&lt;br&gt;&lt;br&gt;I don't want to pick on your Mother test, and I will try and see why
&lt;br&gt;it failed and de-list it if at all possible. Alan had similar issues
&lt;br&gt;and so far we can't reproduce some of the nio test failures either.
&lt;br&gt;I have to admit that it could have been &amp;quot;system fuzz&amp;quot; that caused
&lt;br&gt;the failures in some cases. :^(
&lt;br&gt;&lt;br&gt;My initial attitude had been pretty strict, if a test failed when all
&lt;br&gt;the other tests in it's batch passed, I had little mercy on it.
&lt;br&gt;But from now on, I will see if I can reproduce the failure.
&lt;br&gt;If I can reproduce the failure, and it appears to be a testcase issue,
&lt;br&gt;I will be filing a bug.
&lt;br&gt;&lt;br&gt;I'll also be going back over the tests in the ProblemList and either
&lt;br&gt;filing testcase bugs or jdk bugs, perhaps for batches of tests, not one bug
&lt;br&gt;per testcase, my fellow developers might do me great bodily harm
&lt;br&gt;if I filed hundreds of testcase bugs. :^(
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26699214.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26698025</id>
	<title>Re: Need approval, JDI updates to openjdk6</title>
	<published>2009-12-08T10:04:02Z</published>
	<updated>2009-12-08T10:04:02Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;Joseph D. Darcy wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Joe Darcy wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; OpenJDK6 changes for JDI. I'm ready to push.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I would like approvals from Joe, Jim, Alan, Dan, and Tim.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Approved with comments.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; test/com/sun/jdi/StringConvertTest.sh
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;26 # &amp;nbsp;@test @(#)StringConvertTest.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.6 03/04/09
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; An expanded sccs keywork crept back in!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Otherwise, it looks fine.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Do you think a diff of the files compared to JDK 7 would be informative?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I actually did that on quite a few of the directories.
&lt;br&gt;&amp;gt;&amp;gt; Well, diff -r -w that is. Ignored whitespace differences.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I thought you might say what the diffs were, &amp;quot;only non-whitespace diffs 
&lt;br&gt;&amp;gt; in ...&amp;quot; :-)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;I went back and did another detailed diff between the latest in jdk7/tl and
&lt;br&gt;what I have. I did miss a few items, namely the removal of -source 1.5
&lt;br&gt;on the JDI tests, Copyright year updates, and I missed a jhat source file
&lt;br&gt;change for the 2GB limit bug 6614052.
&lt;br&gt;&lt;br&gt;Now when I compare these directories:
&lt;br&gt;&amp;nbsp; &amp;nbsp;src/*/classes/com/sun/tools/hat
&lt;br&gt;&amp;nbsp; &amp;nbsp;src/*/classes/com/sun/tools/jdi
&lt;br&gt;&amp;nbsp; &amp;nbsp;src/*/back
&lt;br&gt;&amp;nbsp; &amp;nbsp;src/*/transport
&lt;br&gt;&amp;nbsp; &amp;nbsp;src/*/demo/jvmti
&lt;br&gt;&amp;nbsp; &amp;nbsp;test/com/sun/jdi
&lt;br&gt;&amp;nbsp; &amp;nbsp;test/demo/jvmti
&lt;br&gt;&amp;nbsp; &amp;nbsp;test/sun/tools/jhat
&lt;br&gt;&lt;br&gt;There are only 2 differences between the jdk7 and jdk6 files for JDI:
&lt;br&gt;&lt;br&gt;1. Solaris 8 stdint.h file missing change:
&lt;br&gt;&lt;br&gt;diff -w jdk7-tl/jdk/src/solaris/back/util_md.h src/solaris/back/util_md.h
&lt;br&gt;30d29
&lt;br&gt;&amp;lt; #include &amp;lt;stdint.h&amp;gt; &amp;nbsp;/* To get uintptr_t */
&lt;br&gt;31a31,40
&lt;br&gt;&amp;nbsp;&amp;gt; /* To get uintptr_t */
&lt;br&gt;&amp;nbsp;&amp;gt; #ifdef LINUX
&lt;br&gt;&amp;nbsp;&amp;gt; #include &amp;lt;stdint.h&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; #else
&lt;br&gt;&amp;nbsp;&amp;gt; /* The file stdint.h is not on Solaris 8 machines. */
&lt;br&gt;&amp;nbsp;&amp;gt; #include &amp;lt;sys/int_types.h&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; #include &amp;lt;sys/int_limits.h&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; #include &amp;lt;sys/int_const.h&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; #endif
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;2. Explicit difference for testing StackMap attributes:
&lt;br&gt;&lt;br&gt;diff -w jdk7-tl/jdk/test/demo/jvmti/hprof/StackMapTableTest.java test/demo/jvmti/hprof/StackMapTableTest.java
&lt;br&gt;30c30
&lt;br&gt;&amp;lt; &amp;nbsp;* @compile -source 7 -g:lines HelloWorld.java
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;* @compile -source 1.6 -g:lines HelloWorld.java
&lt;br&gt;&lt;br&gt;I updated the webrev at:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk6/jdk6-serviceability-update/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk6/jdk6-serviceability-update/webrev/&lt;/a&gt;&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-approval%2C-JDI-updates-to-openjdk6-tp26682299p26698025.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26697144</id>
	<title>Re: Need approval, JDI updates to openjdk6</title>
	<published>2009-12-08T09:05:35Z</published>
	<updated>2009-12-08T09:05:35Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Joe Darcy wrote:
&lt;br&gt;&amp;gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; OpenJDK6 changes for JDI. I'm ready to push.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I would like approvals from Joe, Jim, Alan, Dan, and Tim.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Approved with comments.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; test/com/sun/jdi/StringConvertTest.sh
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;26 # &amp;nbsp;@test @(#)StringConvertTest.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.6 03/04/09
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; An expanded sccs keywork crept back in!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Otherwise, it looks fine.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Do you think a diff of the files compared to JDK 7 would be informative?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I actually did that on quite a few of the directories.
&lt;br&gt;&amp;gt; Well, diff -r -w that is. Ignored whitespace differences.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;I thought you might say what the diffs were, &amp;quot;only non-whitespace diffs 
&lt;br&gt;in ...&amp;quot; :-)
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-approval%2C-JDI-updates-to-openjdk6-tp26682299p26697144.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26696979</id>
	<title>Re: Need approval, JDI updates to openjdk6</title>
	<published>2009-12-08T08:56:30Z</published>
	<updated>2009-12-08T08:56:30Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Joe Darcy wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; OpenJDK6 changes for JDI. I'm ready to push.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I would like approvals from Joe, Jim, Alan, Dan, and Tim.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Approved with comments.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; test/com/sun/jdi/StringConvertTest.sh
&lt;br&gt;&amp;gt; &amp;nbsp;26 # &amp;nbsp;@test @(#)StringConvertTest.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.6 03/04/09
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; An expanded sccs keywork crept back in!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Otherwise, it looks fine.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Do you think a diff of the files compared to JDK 7 would be informative?
&lt;/div&gt;&lt;br&gt;I actually did that on quite a few of the directories.
&lt;br&gt;Well, diff -r -w that is. Ignored whitespace differences.
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt; 
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-approval%2C-JDI-updates-to-openjdk6-tp26682299p26696979.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26693460</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-08T04:50:11Z</published>
	<updated>2009-12-08T04:50:11Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dan had pointed out my typo in the jdk/test/Makefile ($-&amp;gt;$$)
&lt;br&gt;&amp;gt; but when I started running and re-running the tests I ran into
&lt;br&gt;&amp;gt; more unstable tests. This webrev includes fixes to 3 tests
&lt;br&gt;&amp;gt; and unfortuntately more additions to the ProblemList file.
&lt;br&gt;It would be good to create a bug (or ensure there is an existing bug) 
&lt;br&gt;for any tests that you add to the list.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; :
&lt;br&gt;&amp;gt; &amp;nbsp; java/io/File/SetLastModified.java
&lt;br&gt;I tried to duplicate this without success. Is the test directory on a 
&lt;br&gt;SAMBA drive when it fails?
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/DatagramChannel/SRTest.java
&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/DatagramChannel/Sender.java
&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/Selector/SelectWrite.java
&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/DatagramChannel/EmptyBuffer.java
&lt;br&gt;The older NIO test uses a fixed port which is problematic when tests run 
&lt;br&gt;in parallel. One of these days/weeks I will fix all these issues (they 
&lt;br&gt;manifest in various forms including hangs during initialization, or 
&lt;br&gt;address already in use errors).
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java
&lt;br&gt;This is an important test and I'd like to track down the reason it 
&lt;br&gt;failed for you rather than excluding it.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/util/Collection/MOAT.java
&lt;br&gt;Over Martin's dead body :-)
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/AsynchronousSocketChannel/Basic.java
&lt;br&gt;Excluding this test will eliminate almost all test coverage of 
&lt;br&gt;AsynchronousSocketChannel so I don't think we should exclude it. I see 
&lt;br&gt;that the issue is a connection to a non-existent host is failing 
&lt;br&gt;immediately whereas the test expects it to timeout. I'll fix the test to 
&lt;br&gt;handle this case in b79.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/AsynchronousChannelGroup/Unbounded.java
&lt;br&gt;As Windows 2000 Pro was EOL'ed eons ago we didn't put any effort into 
&lt;br&gt;the asynchronous I/O implementation to support that edition (it needs 
&lt;br&gt;Windows XP or newer). Can you just exclude this with windows-5.0 rather 
&lt;br&gt;than generic-all so that it continues to run on other platforms?
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; java/nio/channels/FileChannel/Transfer.java
&lt;br&gt;This test does take a long time on Windows. I'd be interested to see the 
&lt;br&gt;log as the right solution might be to increase the timeout or else just 
&lt;br&gt;exclude it on windows-5.0 (not generic-all as the test provides 
&lt;br&gt;important coverage).
&lt;br&gt;&lt;br&gt;-Alan.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26693460.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26693369</id>
	<title>hg: jdk7/tl/jdk: 6905046: More Dual-pivot quicksort improvements</title>
	<published>2009-12-08T04:43:31Z</published>
	<updated>2009-12-08T04:43:31Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Changeset: 146c8921267f
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;jjb
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-12-08 12:40 +0000
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/146c8921267f&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/146c8921267f&lt;/a&gt;&lt;br&gt;&lt;br&gt;6905046: More Dual-pivot quicksort improvements
&lt;br&gt;Summary: More improvements from the DPQ team
&lt;br&gt;Reviewed-by: alanb
&lt;br&gt;&lt;br&gt;! src/share/classes/java/util/DualPivotQuicksort.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6905046%3A-More-Dual-pivot-quicksort-improvements-tp26693369p26693369.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26689764</id>
	<title>Re: Need reviewers, jdk7 testing changes</title>
	<published>2009-12-07T23:30:43Z</published>
	<updated>2009-12-07T23:30:43Z</updated>
	<author>
		<name>martinrb</name>
	</author>
	<content type="html">On Mon, Dec 7, 2009 at 13:43, Tim Bell &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26689764&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Tim.Bell@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;    java/util/Collection/MOAT.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It is a shame we have to exclude Martin's MOAT.java (Mother Of All Tests)
&lt;br&gt;&amp;gt; The comment shows the test failing on Solaris 10 x86, but you exclude
&lt;br&gt;&amp;gt; it on generic-all
&lt;br&gt;&lt;br&gt;You cannot exclude the Mother Of All Tests.
&lt;br&gt;This is non-negotiable.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewers%2C-jdk7-testing-changes-tp26683400p26689764.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26687836</id>
	<title>Re: Need approval, JDI updates to openjdk6</title>
	<published>2009-12-07T18:39:53Z</published>
	<updated>2009-12-07T18:39:53Z</updated>
	<author>
		<name>Joseph D. Darcy</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; OpenJDK6 changes for JDI. I'm ready to push.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I would like approvals from Joe, Jim, Alan, Dan, and Tim.
&lt;br&gt;&lt;br&gt;Approved with comments.
&lt;br&gt;&lt;br&gt;test/com/sun/jdi/StringConvertTest.sh
&lt;br&gt;&amp;nbsp; 26 # &amp;nbsp;@test @(#)StringConvertTest.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.6 03/04/09
&lt;br&gt;&lt;br&gt;An expanded sccs keywork crept back in!
&lt;br&gt;&lt;br&gt;Otherwise, it looks fine.
&lt;br&gt;&lt;br&gt;Do you think a diff of the files compared to JDK 7 would be informative?
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-approval%2C-JDI-updates-to-openjdk6-tp26682299p26687836.html" />
</entry>

</feed>
