/hg/icedtea7: 3 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Tue Aug 14 01:51:32 PDT 2012


changeset 5954829aa7ed in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=5954829aa7ed
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Fri Aug 03 01:54:31 2012 +0100

	Actually test for missing classes rather than assuming if not on a Sun JDK.

	2012-08-02  Andrew John Hughes  <gnu_andrew at member.fsf.org>

		* Makefile.am:
		(ICEDTEA_BOOTSTRAP_CLASSES): Only add
		javax.management.remote.JMXServiceURL
		and javax.management.modelmbean.ModelMBeanInfo
		if missing.
		* configure.ac: Check for
		javax.management.remote.JMXServiceURL and
		javax.management.modelmbean.ModelMBeanInfo


changeset ba9886ae5d7f in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=ba9886ae5d7f
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Tue Aug 14 09:49:22 2012 +0100

	Explicitly check for Matcher.quoteReplacement rather than assuming it doesn't exist if sun.awt.Toolkit doesn't.
	Specify source and target Java versions explicitly.

	2012-08-13  Andrew John Hughes  <gnu_andrew at member.fsf.org>

		* Makefile.am:
		(ICEDTEA_BOOTSTRAP_CLASSES): Only add Matcher if
		the quoteReplacement method is absent.  Fix use of
		= instead of += with ModelMBeanInfo.
		* acinclude.m4:
		(IT_JAVAH): Explicitly set source & target.
		(IT_LIBRARY_CHECK): Likewise.
		(IT_PR40630_CHECK): Likewise.
		(IT_CHECK_JAVA_AND_JAVAC_WORK): Likewise.
		(IT_CHECK_FOR_CLASS): Likewise.
		(IT_DIAMOND_CHECK): Specify target as 7 as well.
		(IT_CHECK_FOR_METHOD): New macro to check for the
		existence of a Java method both at build and runtime.
		* configure.ac:
		Check for java.util.regex.Matcher.quoteReplacement.


changeset cc751b4320d0 in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=cc751b4320d0
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Tue Aug 14 09:51:07 2012 +0100

	Merge


diffstat:

 ChangeLog                |  51 ++++++++++++++++++++++++++++++++++
 Makefile.am              |  38 ++++++++++++++++++++-----
 acinclude.m4             |  70 +++++++++++++++++++++++++++++++++++++++++++----
 configure.ac             |   3 ++
 tapset/jstack.stp.in     |  34 +++++++++++++++++++---
 test/tapset/jstaptest.pl |  60 ++++++++++++++++++++++++++++++++--------
 6 files changed, 225 insertions(+), 31 deletions(-)

diffs (465 lines):

diff -r f61cb5d6d39b -r cc751b4320d0 ChangeLog
--- a/ChangeLog	Fri Jul 27 09:26:20 2012 +0100
+++ b/ChangeLog	Tue Aug 14 09:51:07 2012 +0100
@@ -1,3 +1,54 @@
+2012-08-13  Andrew John Hughes  <gnu_andrew at member.fsf.org>
+
+	* Makefile.am:
+	(ICEDTEA_BOOTSTRAP_CLASSES): Only add Matcher if
+	the quoteReplacement method is absent.  Fix use of
+	= instead of += with ModelMBeanInfo.
+	* acinclude.m4:
+	(IT_JAVAH): Explicitly set source & target.
+	(IT_LIBRARY_CHECK): Likewise.
+	(IT_PR40630_CHECK): Likewise.
+	(IT_CHECK_JAVA_AND_JAVAC_WORK): Likewise.
+	(IT_CHECK_FOR_CLASS): Likewise.
+	(IT_DIAMOND_CHECK): Specify target as 7 as well.
+	(IT_CHECK_FOR_METHOD): New macro to check for the
+	existence of a Java method both at build and runtime.
+	* configure.ac:
+	Check for java.util.regex.Matcher.quoteReplacement.
+
+2012-08-06  Mark Wielaard  <mjw at redhat.com>
+
+	* test/tapset/jstaptest.pl (probestrings): Expect non-zero value
+	for hotspot.jni.NewObjectA.return.
+
+2012-08-03  Mark Wielaard  <mjw at redhat.com>
+
+	* Makefile.am (check-tapset-probes): New target.
+	(check-tapset-jstack): Likewise.
+	(check-tapset): Depend on check-tapset-probes check-tapset-jstack.
+	* test/tapset/jstaptest.pl (process_args): Add -p [$run_test_probes]
+	and -j [$run_test_jstack].
+	(test_jstack): Takes argument to pass to java process.
+	Pass -XX:+UseCompressedOops and/or -Xmx5G.
+
+2012-08-03  Yasumasa Suenaga  <suenaga.yasumasa at lab.ntt.co.jp>
+
+	* tapset/jstack.stp.in (NarrowOopStruct): New global.
+	(hotspot.vm_init_end): Initialize NarrowOopStruct.
+	(hotspot.vm_shutdown): Delete NarrowOopStruct for pid.
+	(jstack_call): Use NarrowOopStruct to calculate methodOopKlass.
+
+2012-08-02  Andrew John Hughes  <gnu_andrew at member.fsf.org>
+
+	* Makefile.am:
+	(ICEDTEA_BOOTSTRAP_CLASSES): Only add
+	javax.management.remote.JMXServiceURL
+	and javax.management.modelmbean.ModelMBeanInfo
+	if missing.
+	* configure.ac: Check for
+	javax.management.remote.JMXServiceURL and
+	javax.management.modelmbean.ModelMBeanInfo
+
 2012-07-27  Andrew John Hughes  <gnu_andrew at member.fsf.org>
 
 	* Makefile.am:
diff -r f61cb5d6d39b -r cc751b4320d0 Makefile.am
--- a/Makefile.am	Fri Jul 27 09:26:20 2012 +0100
+++ b/Makefile.am	Tue Aug 14 09:51:07 2012 +0100
@@ -99,16 +99,30 @@
 SOURCEPATH_DIRS = $(abs_top_srcdir)/generated:$(OPENJDK_SOURCEPATH_DIRS)
 
 # Sources used from OpenJDK.
+ICEDTEA_BOOTSTRAP_CLASSES =
+
 if LACKS_SUN_AWT_TOOLKIT
+#PR42003 - Missing javax.swing.plaf.basic.BasicDirectoryModel methods cause OpenJDK build failure 
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/swing/plaf/basic/BasicDirectoryModel.java
+endif
+
 #PR43148 - javac fails due to missing java.util.regex.Matcher.quoteReplacement
+if LACKS_JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/java/util/regex/Matcher.java
+endif
+
 #PR48033 - Missing javax.management.remote.JMXServiceURL
+if LACKS_JAVAX_MANAGEMENT_REMOTE_JMXSERVICEURL
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/management/remote/JMXServiceURL.java
+endif
+
 #PR48034 - javax.management.modelmbean.ModelMBeanInfo
-#PR42003 - Missing javax.swing.plaf.basic.BasicDirectoryModel methods cause OpenJDK build failure 
-ICEDTEA_BOOTSTRAP_CLASSES = \
-	$(SHARE)/java/util/regex/Matcher.java \
-	$(SHARE)/javax/management/remote/JMXServiceURL.java \
-	$(SHARE)/javax/management/modelmbean/ModelMBeanInfo.java \
-	$(SHARE)/javax/swing/plaf/basic/BasicDirectoryModel.java
+if LACKS_JAVAX_MANAGEMENT_MODELMBEAN_MODELMBEANINFO
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/management/modelmbean/ModelMBeanInfo.java
 endif
 
 # Settings for javac
@@ -2329,13 +2343,21 @@
 	  $(jtreg_processes); \
 	fi
 
-check-tapset: 
+check-tapset-probes: 
 if ENABLE_SYSTEMTAP
 	$(abs_top_srcdir)/test/tapset/jstaptest.pl \
 	  -B $(BUILD_OUTPUT_DIR) -A $(BUILD_ARCH_DIR) \
 	  -S $(abs_top_srcdir)/test/tapset \
-	  -o test/check-stap.log
+	  -a test/check-stap.log -p
 endif
+check-tapset-jstack: 
+if ENABLE_SYSTEMTAP
+	$(abs_top_srcdir)/test/tapset/jstaptest.pl \
+	  -B $(BUILD_OUTPUT_DIR) -A $(BUILD_ARCH_DIR) \
+	  -S $(abs_top_srcdir)/test/tapset \
+	  -a test/check-stap.log -j
+endif
+check-tapset: check-tapset-probes check-tapset-jstack
 
 clean-tapset-report:
 if ENABLE_SYSTEMTAP
diff -r f61cb5d6d39b -r cc751b4320d0 acinclude.m4
--- a/acinclude.m4	Fri Jul 27 09:26:20 2012 +0100
+++ b/acinclude.m4	Tue Aug 14 09:51:07 2012 +0100
@@ -1180,7 +1180,7 @@
   public native void doStuff();
 }
 EOF
-if $JAVAC -cp . $JAVACFLAGS $SUBCLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $SUBCLASS >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVAH -classpath . $SUB >&AS_MESSAGE_LOG_FD 2>&1; then
     if cat $SUBHEADER | grep POTATO >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_cp39408_javah=no;
@@ -1231,7 +1231,7 @@
     }
 }
 EOF
-if $JAVAC -cp . $JAVACFLAGS $SRC >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $SRC >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVAH -classpath . $CLASSFILE >&AS_MESSAGE_LOG_FD 2>&1; then
     if test -e Test_Inner.h ; then
       it_cv_cp45526_javah=no;
@@ -1332,7 +1332,7 @@
   }
 }]
 EOF
-if $JAVAC -cp . $JAVACFLAGS $CLASS >&AS_MESSAGE_LOG_FD 2>&1 ; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1 ; then
   if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1 ; then
     it_cv_cp40616=no;
   else
@@ -1372,7 +1372,7 @@
   }
 }]
 EOF
-  if $JAVAC -cp . $JAVACFLAGS $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
     if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_cp40630=no;
     else
@@ -1513,7 +1513,7 @@
 }
 ]
 EOF
-if $JAVAC -cp . $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_$1=no;
   else
@@ -1766,7 +1766,7 @@
     }
 }]
 EOF
-  if $JAVAC -cp . $JAVACFLAGS -source 7 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAC -cp . $JAVACFLAGS -source 7 -target 7 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
     it_cv_diamond=no;
   else
     it_cv_diamond=yes;
@@ -2298,3 +2298,61 @@
   AM_CONDITIONAL(USING_CACAO, test "x${USING_CACAO}" = "xyes")
   AC_PROVIDE([$0])dnl
 ])
+
+dnl Generic macro to check for a Java method
+dnl Takes four arguments: the name of the macro,
+dnl the name of the class, the method signature
+dnl and an example call to the method.  The macro name
+dnl is usually the name of the class with '.'
+dnl replaced by '_' and all letters capitalised.
+dnl e.g. IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],[java.util.regex.Matcher.quoteReplacement],[java.util.regex.Matcher],["quoteReplacement",String.class],java.util.regex.Matcher.quoteReplacement("Blah"))
+AC_DEFUN([IT_CHECK_FOR_METHOD],[
+AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK])
+AC_CACHE_CHECK([if $2 is missing], it_cv_$1, [
+CLASS=Test.java
+BYTECODE=$(echo $CLASS|sed 's#\.java##')
+mkdir tmp.$$
+cd tmp.$$
+cat << \EOF > $CLASS
+[/* [#]line __oline__ "configure" */
+import java.lang.reflect.Method;
+
+public class Test
+{
+  public static void main(String[] args)
+  {
+    Class<?> cl = $3.class;
+    try
+      {
+        Method m = cl.getDeclaredMethod($4);
+      }
+    catch (NoSuchMethodException e)
+      {
+        System.exit(-1);
+      }
+  }
+
+  public void dontRun()
+  {
+    $5;
+  }
+
+}
+]
+EOF
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_$1=no;
+  else
+      it_cv_$1=yes;
+  fi
+else
+  it_cv_$1=yes;
+fi
+])
+rm -f $CLASS *.class
+cd ..
+rmdir tmp.$$
+AM_CONDITIONAL([LACKS_$1], test x"${it_cv_$1}" = "xyes")
+AC_PROVIDE([$0])dnl
+])
diff -r f61cb5d6d39b -r cc751b4320d0 configure.ac
--- a/configure.ac	Fri Jul 27 09:26:20 2012 +0100
+++ b/configure.ac	Tue Aug 14 09:51:07 2012 +0100
@@ -118,6 +118,9 @@
 IT_CHECK_FOR_CLASS([JAVAX_ANNOTATION_RESOURCE], [javax.annotation.Resource])
 IT_GETDTDTYPE_CHECK
 IT_CHECK_FOR_CLASS([SUN_AWT_TOOLKIT], [sun.awt.SunToolkit])
+IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_REMOTE_JMXSERVICEURL], [javax.management.remote.JMXServiceURL])
+IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_MODELMBEAN_MODELMBEANINFO], [javax.management.modelmbean.ModelMBeanInfo])
+IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],[java.util.regex.Matcher.quoteReplacement],[java.util.regex.Matcher],["quoteReplacement",String.class],java.util.regex.Matcher.quoteReplacement("Blah"))
 IT_CHECK_ENABLE_WARNINGS
 IT_DIAMOND_CHECK
 IT_BYTECODE7_CHECK
diff -r f61cb5d6d39b -r cc751b4320d0 tapset/jstack.stp.in
--- a/tapset/jstack.stp.in	Fri Jul 27 09:26:20 2012 +0100
+++ b/tapset/jstack.stp.in	Tue Aug 14 09:51:07 2012 +0100
@@ -49,6 +49,7 @@
 global Universe_collectedHeap;
 global HeapWordSize;
 global CodeCache_heap;
+global NarrowOopStruct;
 
 global sp_register;
 global fp_register;
@@ -71,9 +72,6 @@
                                      %? @var("_methodKlassObj at universe.cpp")
                                      %: $_methodKlassObj %);
 
-  // For compressed oops.
-  // Universe_heap_base = $_heap_base;
-
   /**
    * The Universe class holds some of the interesting statics for
    * introspection into HotSpot. The CollectedHeap
@@ -109,6 +107,17 @@
                             %? @var("_heap at codeCache.cpp")
                             %: $_heap %);
 
+  /**
+   * Does target process use CompressedOops ?
+   */
+  NarrowOopStruct[pid()] = 0;
+  %( systemtap_v >= "1.8"
+    %? if (@var("UseCompressedOops at globals.cpp"))
+         NarrowOopStruct[pid()] = &@var("_narrow_oop at universe.cpp");
+    %: if($UseCompressedOops)
+         NarrowOopStruct[pid()] = $_narrow_oop;
+  %)
+
   // Should really check arch of user space (for 32bit jvm on 64bit kernel).
   %( arch == "i386" %?
      sp_register = "esp";
@@ -142,6 +151,7 @@
   delete(Universe_collectedHeap[pid()]);
   delete(HeapWordSize[pid()]);
   delete(CodeCache_heap[pid()]);
+  delete(NarrowOopStruct[pid()]);
   delete(vm_inited[pid()]);
 }
 
@@ -353,8 +363,22 @@
                 isMethodOop = 0
               else
                 {
-                  methodOopKlass = @cast(methodOopPtr, "methodOopDesc",
-                                         "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass;
+                  if (NarrowOopStruct[pid()])
+                    {
+                      methodOopKlass = @cast(methodOopPtr, "methodOopDesc",
+                                             "@ABS_SERVER_LIBJVM_SO@")->_metadata->_compressed_klass;
+                      methodOopKlass = (@cast(NarrowOopStruct[pid()],
+                                              "NarrowOopStruct",
+                                              "@ABS_SERVER_LIBJVM_SO@")->_base
+                                        + (methodOopKlass
+                                           << @cast(NarrowOopStruct[pid()],
+                                                    "NarrowOopStruct",
+                                                    "@ABS_SERVER_LIBJVM_SO@")->_shift));
+                    }
+                  else
+                    methodOopKlass = @cast(methodOopPtr, "methodOopDesc",
+                                           "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass;
+
                   isMethodOop = (methodOopKlass == Universe_methodKlassObj[pid()]);
                 }
 
diff -r f61cb5d6d39b -r cc751b4320d0 test/tapset/jstaptest.pl
--- a/test/tapset/jstaptest.pl	Fri Jul 27 09:26:20 2012 +0100
+++ b/test/tapset/jstaptest.pl	Tue Aug 14 09:51:07 2012 +0100
@@ -14,7 +14,7 @@
 use Getopt::Std;
 $Getopt::Std::OUTPUT_HELP_VERSION = 1;
 # sub main::HELP_MESSAGE defined below.
-our($opt_B, $opt_A, $opt_o, $opt_a, $opt_S, $opt_J);
+our($opt_B, $opt_A, $opt_o, $opt_a, $opt_S, $opt_J, $opt_p, $opt_j);
 
 # Gigantic nested array.
 # Each element in outer array should be of the form:
@@ -414,7 +414,7 @@
     ["hotspot.jni.NewLongArray", "\"%slen=%d\\n\",name,length", "NewLongArraylen=5"],
     ["hotspot.jni.NewLongArray.return", "\"%sret=%d\\n\",name,ret", "NewLongArrayret=[^0]"],
     ["hotspot.jni.NewObjectA", "\"%s\\n\",name", "NewObjectA"],
-    ["hotspot.jni.NewObjectA.return", "\"%sret=%d\\n\",name,ret", "NewObjectAret=0"],
+    ["hotspot.jni.NewObjectA.return", "\"%sret=%d\\n\",name,ret", "NewObjectAret=[^0]"],
     ["hotspot.jni.NewObjectArray", "\"%slen=%dinit=%d\\n\",name,length,initial", "NewObjectArraylen=5init=0"],
     ["hotspot.jni.NewObjectArray.return", "\"%sret=%d\\n\",name,ret", "NewObjectArrayret=[^0]"],
     ["hotspot.jni.NewObject", "\"%s\\n\",name", "NewObject"],
@@ -546,6 +546,8 @@
 my $jvm_so = "";
 my $test_sourcedir = ".";
 my @include_dirs = ();
+my $run_test_probes = 1;
+my $run_test_jstack = 1;
 
 
 ### MAIN BODY
@@ -553,11 +555,30 @@
 process_args();
 log_preamble();
 build_tests();
-my @detected_probes = detect_probes(@probestrings);
-if (can_run_probes()) {
-  test_probes(@detected_probes);
-  test_jstack();
+
+my $can_probe = can_run_probes();
+my @detected_probes;
+
+if ($run_test_probes) {
+  @detected_probes = detect_probes(@probestrings);
+  if ($can_probe) {
+    test_probes(@detected_probes);
+  }
 }
+
+if ($run_test_jstack && $can_probe) {
+  # Default, no arguments.
+  test_jstack("");
+  # Explicitly turn on compressed oops.
+  test_jstack("-XX:+UseCompressedOops");
+  # Explicitly turn off compressed oops.
+  test_jstack("-XX:-UseCompressedOops");
+  # Force some shift value for compressed oops by having a 4GB+ heap.
+  test_jstack("-XX:+UseCompressedOops -Xmx5G");
+  # Explicitly disable compressed oops, but use large heap anyway.
+  test_jstack("-XX:-UseCompressedOops -Xmx5G");
+}
+
 summarize();
 log_postamble();
 clean_up();
@@ -571,8 +592,9 @@
 #     based on args. 
 sub process_args {
     die "Try \"jstaptest.pl --help\" for usage information.\n"
-            if (!getopts('B:A:J:o:a:S:') || ($opt_o && $opt_a));
-                                            # -o and -a are mutually exclusive.
+            if (!getopts('B:A:J:o:a:S:pj')
+                || ($opt_o && $opt_a)   # -o and -a are mutually exclusive.
+                || ($opt_p && $opt_j)); # -p and -j are mutually exclusive.
     if ($opt_B && $opt_A) {
         die "Directory $opt_B not found." unless (-d $opt_B);
         die "Directory $opt_B/j2sdk-image/tapset not found.\nTry rebuilding Icedtea with systemtap support.\n"
@@ -610,6 +632,14 @@
         open($log_file, '>>', $opt_a) or
                 die "Couldn't open log file: $opt_a\n$!";
     }
+    if ($opt_p) {
+      $run_test_probes = 1;
+      $run_test_jstack = 0;
+    }
+    if ($opt_j) {
+      $run_test_probes = 0;
+      $run_test_jstack = 1;
+    }
 }
 
 # Any text that should precede a test run in the log file goes here.
@@ -790,13 +820,14 @@
 }
 
 sub test_jstack {
-    log_and_print("Testing if jstack works as expected...");
     my ($stap_pre, $stap_script, $stap_post, $stap_command, $stap_result);
+    my ($jargs) = @_;
+    log_and_print("Testing if jstack works as expected with '$jargs'...");
 
     # Run staptest.SystemtapTester compiled_method_unload which does a lot
     # and can generate a somewhat "deep" stack.
     $stap_pre = "stap " . join(' ', @tapset_dirs) . " -e '";
-    $stap_post = "' -c '$java_exec staptest.SystemtapTester compiled_method_unload'";
+    $stap_post = "' -c '$java_exec $jargs staptest.SystemtapTester compiled_method_unload'";
 
     # Simple test jstack() should at least show our main method.
     # The test program runs the unloaded probe tester twice, pick the second
@@ -857,7 +888,7 @@
 
 # Any text that should follow a test run in the log file goes here.
 sub log_postamble {
-    if ($broken_count | $undetected_count) {
+    if ($broken_count | $undetected_count | $broken_jstack) {
         log_and_print("Some tests did not work as expected.  See file " . 
             $logfile_name . " for details.");
     }
@@ -964,7 +995,7 @@
     print("\n");
     print("To run test suite:\n");
     print("\n");
-    print("   $ ./jstaptest.sh [[--help] | [<[-B <DIR> -A <ARCH>] | [-J <DIR>]> [-S <DIR>] [-<o|a> <LOGFILE>]]]\n");
+    print("   $ ./jstaptest.sh [[--help] | [<[-B <DIR> -A <ARCH>] | [-J <DIR>]> [-S <DIR>] [-<o|a> <LOGFILE>]]] -<p|j>\n");
     print("\n");
     print("--help will display this help message.\n");
     print("\n");
@@ -1003,6 +1034,11 @@
     print("    the arguments passed to the script and the command executed\n");
     print("    for each test\n");
     print("\n");
+    print("-p specifies that only the tapset probes should be tested.\n");
+    print("-j specifies that only the jstack tapset should be tested.\n");
+    print("Only one of -p or -j may be given. Both are tested by default.\n");
+    print("\n");
+    print("\n");
 }
 
 #######################################################################



More information about the distro-pkg-dev mailing list