summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base/marker.exp
diff options
context:
space:
mode:
authordsmith <dsmith>2008-01-16 17:08:51 +0000
committerdsmith <dsmith>2008-01-16 17:08:51 +0000
commit350bff3f8c5ee61cc8e88956e6dbfa269d4ee3ee (patch)
tree144fffbd7ba82aa870ff50e41b2c9c17a67dc0f4 /testsuite/systemtap.base/marker.exp
parent6f93ef37f7d97e3cf8f91b94df25adae7a510bfb (diff)
downloadsystemtap-steved-350bff3f8c5ee61cc8e88956e6dbfa269d4ee3ee.tar.gz
systemtap-steved-350bff3f8c5ee61cc8e88956e6dbfa269d4ee3ee.tar.xz
systemtap-steved-350bff3f8c5ee61cc8e88956e6dbfa269d4ee3ee.zip
2008-01-16 David Smith <dsmith@redhat.com>
PR 5608. * systemtap.base/marker.exp: Added 2 tests for treating marker arguments incorrectly.
Diffstat (limited to 'testsuite/systemtap.base/marker.exp')
-rw-r--r--testsuite/systemtap.base/marker.exp40
1 files changed, 38 insertions, 2 deletions
diff --git a/testsuite/systemtap.base/marker.exp b/testsuite/systemtap.base/marker.exp
index 01d1ed54..bfa3b02d 100644
--- a/testsuite/systemtap.base/marker.exp
+++ b/testsuite/systemtap.base/marker.exp
@@ -11,7 +11,7 @@
proc stap_compile { TEST_NAME compile script args } {
set cmd [concat {stap -v -p4 -e} $script $args]
- #puts "running $cmd"
+ puts "running $cmd"
eval spawn $cmd
set compile_errors 0
expect {
@@ -47,9 +47,13 @@ proc stap_compile { TEST_NAME compile script args } {
set kernel_markers_found 0
set kernel_marker_names {}
+set num_marker_found 0
+set num_marker_name ""
+
set kernel_script {"probe kernel.mark(\"%s\") { }"}
set kernel_script_arg {"probe kernel.mark(\"%s\") { print(%s) }"}
set kernel_script_arg2 {"probe kernel.mark(\"%s\") { %s = 0 }"}
+set kernel_script_arg3 {"probe kernel.mark(\"%s\") { print(\$arg1%s) }"}
# Try to read in the marker list from the Module.markers file.
set uname [exec /bin/uname -r]
@@ -59,9 +63,17 @@ if {! [catch {open $path RDONLY} fl]} {
while {[gets $fl s] >= 0} {
# This regexp only picks up markers that contain arguments.
# This helps ensure that K_MARKER04 passes correctly.
- if [regexp {^([^ \t]+)\t[^ \t]+.*%.+$} $s match name] {
+ if [regexp {^([^ \t]+)\t[^ \t]+.*(%.+)$} $s match name fmt] {
set kernel_markers_found 1
lappend kernel_marker_names $name
+
+ # Look for a marker whose first argument is numeric
+ # (either '%d', '%u', or '%p'). If we find such a marker,
+ # we can run K_MARKER09 and K_MARKER10.
+ if {$num_marker_found == 0 && [regexp {^%[dup]} $fmt]} {
+ set num_marker_found 1
+ set num_marker_name $name
+ }
}
}
catch {close $fl}
@@ -156,3 +168,27 @@ if {$kernel_markers_found == 0} {
[lindex $kernel_marker_names 0] {\$arg1}]
stap_compile $TEST_NAME 0 $script
}
+
+set TEST_NAME "K_MARKER09"
+if {$kernel_markers_found == 0} {
+ untested "$TEST_NAME : no kernel markers present"
+} elseif {$num_marker_found == 0} {
+ untested "$TEST_NAME : no kernel marker found with a numeric first argument"
+} else {
+ # Try compiling a script that treats its first marker argument
+ # as a structure (which isn't allowed).
+ set script [format $kernel_script_arg3 $num_marker_name "->foo"]
+ stap_compile $TEST_NAME 0 $script
+}
+
+set TEST_NAME "K_MARKER10"
+if {$kernel_markers_found == 0} {
+ untested "$TEST_NAME : no kernel markers present"
+} elseif {$num_marker_found == 0} {
+ untested "$TEST_NAME : no kernel marker found with a numeric first argument"
+} else {
+ # Try compiling a script that treats its first marker argument
+ # like an array (which isn't allowed).
+ set script [format $kernel_script_arg3 $num_marker_name {\[0\]}]
+ stap_compile $TEST_NAME 0 $script
+}