summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2009-12-21 20:17:26 -0500
committerDave Brolley <brolley@redhat.com>2009-12-21 20:17:26 -0500
commite9fb9b955c80d8181e997bdd3477a52c4f34f0ce (patch)
tree8e0c379ec8a1f7441191e731405b60ee8135f3e5
parentd6df3d15c244688928d8ca46d779d658fa27583b (diff)
parent4e275917e8ef91778cd1ba0d469c8f00c776f2eb (diff)
downloadsystemtap-steved-e9fb9b955c80d8181e997bdd3477a52c4f34f0ce.tar.gz
systemtap-steved-e9fb9b955c80d8181e997bdd3477a52c4f34f0ce.tar.xz
systemtap-steved-e9fb9b955c80d8181e997bdd3477a52c4f34f0ce.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
-rw-r--r--parse.cxx35
-rw-r--r--testsuite/buildok/semicolon.stp18
-rw-r--r--testsuite/systemtap.apps/mysql.exp39
-rw-r--r--testsuite/systemtap.apps/stap-tcl.sh2
-rw-r--r--testsuite/systemtap.apps/xulrunner.exp18
5 files changed, 80 insertions, 32 deletions
diff --git a/parse.cxx b/parse.cxx
index 74d7c634..55ec53fb 100644
--- a/parse.cxx
+++ b/parse.cxx
@@ -1207,6 +1207,7 @@ parser::parse_stmt_block ()
statement*
parser::parse_statement ()
{
+ statement *ret;
const token* t = peek ();
if (t && t->type == tok_operator && t->content == ";")
{
@@ -1215,34 +1216,42 @@ parser::parse_statement ()
return n;
}
else if (t && t->type == tok_operator && t->content == "{")
- return parse_stmt_block ();
+ return parse_stmt_block (); // Don't squash semicolons.
else if (t && t->type == tok_keyword && t->content == "if")
- return parse_if_statement ();
+ return parse_if_statement (); // Don't squash semicolons.
else if (t && t->type == tok_keyword && t->content == "for")
- return parse_for_loop ();
+ return parse_for_loop (); // Don't squash semicolons.
else if (t && t->type == tok_keyword && t->content == "foreach")
- return parse_foreach_loop ();
+ return parse_foreach_loop (); // Don't squash semicolons.
+ else if (t && t->type == tok_keyword && t->content == "while")
+ return parse_while_loop (); // Don't squash semicolons.
else if (t && t->type == tok_keyword && t->content == "return")
- return parse_return_statement ();
+ ret = parse_return_statement ();
else if (t && t->type == tok_keyword && t->content == "delete")
- return parse_delete_statement ();
- else if (t && t->type == tok_keyword && t->content == "while")
- return parse_while_loop ();
+ ret = parse_delete_statement ();
else if (t && t->type == tok_keyword && t->content == "break")
- return parse_break_statement ();
+ ret = parse_break_statement ();
else if (t && t->type == tok_keyword && t->content == "continue")
- return parse_continue_statement ();
+ ret = parse_continue_statement ();
else if (t && t->type == tok_keyword && t->content == "next")
- return parse_next_statement ();
- // XXX: "do/while" statement?
+ ret = parse_next_statement ();
else if (t && (t->type == tok_operator || // expressions are flexible
t->type == tok_identifier ||
t->type == tok_number ||
t->type == tok_string))
- return parse_expr_statement ();
+ ret = parse_expr_statement ();
// XXX: consider generally accepting tok_embedded here too
else
throw parse_error ("expected statement");
+
+ // Squash "empty" trailing colons after any "non-block-like" statement.
+ t = peek ();
+ if (t && t->type == tok_operator && t->content == ";")
+ {
+ next (); // Silently eat trailing ; after statement
+ }
+
+ return ret;
}
diff --git a/testsuite/buildok/semicolon.stp b/testsuite/buildok/semicolon.stp
new file mode 100644
index 00000000..0ec41956
--- /dev/null
+++ b/testsuite/buildok/semicolon.stp
@@ -0,0 +1,18 @@
+#! stap -p4
+
+# Test that semicolons are really optional (in non-block-like context).
+# PR11038.
+
+global x = 0;
+probe begin
+{
+ if (x) log("true") else log("false")
+ if (x) { log("true") } else { log("false") }
+ if (x) log("true"); else log("false")
+ if (x) log("true") else log("false");
+}
+
+probe end
+{
+ x = 1;
+}
diff --git a/testsuite/systemtap.apps/mysql.exp b/testsuite/systemtap.apps/mysql.exp
index 497949c0..d057b6ae 100644
--- a/testsuite/systemtap.apps/mysql.exp
+++ b/testsuite/systemtap.apps/mysql.exp
@@ -269,11 +269,11 @@ RELEASE=\$(grep 'handler__unlock__done' $testsuite/stap-mysql-markers.log | wc -
COMMAND=\$(grep 'command__start' $testsuite/stap-mysql-markers.log | wc -l)
QUERY=\$(grep 'query__start' $testsuite/stap-mysql-markers.log | wc -l)
RDLOCK=\$(grep 'handler__rdlock__start' $testsuite/stap-mysql-markers.log | wc -l)
-SELECT=\$(grep 'select_start' $testsuite/stap-mysql-markers.log | wc -l)
+SELECT=\$(grep 'select__start' $testsuite/stap-mysql-markers.log | wc -l)
OKAY=\$(grep 'All.*tests were successful' $testsuite/stap-mysql.log | wc -l)
echo ACQUIRE=\$ACQUIRE RELEASE=\$RELEASE COMMAND=\$COMMAND QUERY=\$QUERY RDLOCK=\$RDLOCK SELECT=\$SELECT OKAY=\$OKAY
-if \[ \$ACQUIRE -gt 10000 -a \$RELEASE -gt 1000 -a \$COMMAND -gt 12000 -a \$QUERY -gt 13000 -a \$RDLOCK -gt 3000 \] ; then
+if \[ \$ACQUIRE -gt 10000 -a \$RELEASE -gt 1000 -a \$COMMAND -gt 12000 -a \$QUERY -gt 13000 -a \$RDLOCK -gt 3000 -a \$SELECT -gt 2000 \] ; then
echo PASS: mysql markers \$1
else
echo FAIL: mysql markers \$1
@@ -285,8 +285,13 @@ else
echo FAIL: mysql tests \$1
fi
-$mysqldir/bin/mysqladmin shutdown -u root --socket=stap-mysql/mysql.sock
-kill \$STAPPID
+mv $testsuite/stap-mysql.log $testsuite/stap-mysql-\$1.log
+cat $testsuite/stap-mysql-markers.log >> $testsuite/stap-mysql-\$1.log
+rm $testsuite/stap-mysql-markers.log
+
+$mysqldir/bin/mysqladmin shutdown -u root --socket=$testsuite/stap-mysql/mysql.sock
+kill -9 \$STAPPID
+kill -9 $testsuite/stap-mysql/mysql.pid
\}
##### end run_tests #####
@@ -305,24 +310,34 @@ mkdir mysql
mv $mysqlrelease mysql/src
fi
-if \[ ! -f mysql/install/bin/mysql \] ; then
-cd mysql
-mkdir bld
-cd bld
+if \[ ! -d mysql/bld \] ; then
+mkdir -p mysql/bld
+cd mysql/bld
# Force the use of dtrace
sed -i -e 's/HAVE_DTRACE_DASH_G=\"no\"/HAVE_DTRACE_DASH_G=\"yes\"/' ../src/configure
../src/configure --enable-dtrace --prefix=$mysqldir
for i in \$(find . -name Makefile) ; do
sed -i -e 's/^CXXFLAGS =/& -g/' \$i
done
+fi
+
+cd mysql/bld
-make -j2
+J=\$(getconf _NPROCESSORS_CONF)
+make -j\$J
cp ./abi_check.out ../../src/include/mysql.h.pp
-make -j2
+make -j\$J
make install
-fi
-
run_tests uprobe
+
+# for i in \$(find . -name Makefile) ; do
+# sed -i -e 's/^CFLAGS = .*$/& -DEXPERIMENTAL_UTRACE_SDT /' \$i
+# sed -i -e 's/^CXXFLAGS = .*$/& -DEXPERIMENTAL_UTRACE_SDT /' \$i
+# done
+# for i in sql storage mysys ; do (cd \$i ; make clean) ; done
+# make -i -j2
+# make install
+# run_tests utrace
"
########## End /tmp/stap-mysql.sh ##########
close $fp
diff --git a/testsuite/systemtap.apps/stap-tcl.sh b/testsuite/systemtap.apps/stap-tcl.sh
index 919f632d..c3a7f6b7 100644
--- a/testsuite/systemtap.apps/stap-tcl.sh
+++ b/testsuite/systemtap.apps/stap-tcl.sh
@@ -15,6 +15,8 @@ fi
if [ ! -d tcl/src ] ; then
tar -x -z -f tcl$tclrelease-src.tar.gz
mv tcl$tclrelease tcl/src
+ sed -i '/runAllTests/i\
+singleProcess true' tcl/src/tests/all.tcl
fi
cd tcl/src/unix
diff --git a/testsuite/systemtap.apps/xulrunner.exp b/testsuite/systemtap.apps/xulrunner.exp
index be2db0c7..7a6b934a 100644
--- a/testsuite/systemtap.apps/xulrunner.exp
+++ b/testsuite/systemtap.apps/xulrunner.exp
@@ -4,13 +4,15 @@ set test "xulrunner"
global env
-if {! [info exists env(SYSTEMTAP_TEST_SDT)]} {
- unsupported "xulrunner (\"SYSTEMTAP_TEST_SDT\" not in env)"
+if {! [info exists env(SYSTEMTAP_TESTAPPS)] || (
+ ! [string match "tcl" $env(SYSTEMTAP_TESTAPPS)] &&
+ ! [string match "all" $env(SYSTEMTAP_TESTAPPS)])} {
+ untested "$test sdt app"
return
}
########## Create /tmp/stap-xul.stp ##########
-set xulrelease "1.9.1.3"
+set xulrelease "1.9.1.4"
set xuldir "[pwd]/xul/"
set testsuite "[pwd]"
@@ -76,13 +78,13 @@ fi
\}
##### end run_tests #####
-if \[ ! -r xulrunner-$xulrelease-source.tar \] ; then
-wget ftp://ftp.mozilla.org/pub/mozilla.org/xul/releases/$xulrelease/source/xulrunner-$xulrelease-source.tar.bz2
-bunzip2 xulrunner-$xulrelease-source.tar.bz2
+if \[ ! -r xulrunner-$xulrelease.source.tar.bz2 \] ; then
+wget ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/$xulrelease/source/xulrunner-$xulrelease.source.tar.bz2
fi
if \[ ! -d xul/src \] ; then
-tar -x -f xulrunner-$xulrelease-source.tar
+bunzip2 xulrunner-$xulrelease.source.tar.bz2
+tar -x -f xulrunner-$xulrelease.source.tar
mkdir xul
xulrelease=$xulrelease
mv mozilla-\${xulrelease%.\[0-9\]} xul/src
@@ -101,6 +103,8 @@ CXXFLAGS='-g -I$env(SYSTEMTAP_INCLUDES)' \
CFLAGS='-g -I$env(SYSTEMTAP_INCLUDES)' \
PATH=$env(SYSTEMTAP_PATH)/:\$PATH \
../src/configure --prefix=$xuldir --enable-dtrace --enable-application=xulrunner
+sed -i '/include.*rules.mk/a\
+PROGOBJS+=./mozjs-dtrace.o' xul/bld/js/src/Makefile
J=\$(getconf _NPROCESSORS_CONF)
make -j \$J
fi