diff options
author | dsmith <dsmith> | 2008-01-16 17:08:51 +0000 |
---|---|---|
committer | dsmith <dsmith> | 2008-01-16 17:08:51 +0000 |
commit | 350bff3f8c5ee61cc8e88956e6dbfa269d4ee3ee (patch) | |
tree | 144fffbd7ba82aa870ff50e41b2c9c17a67dc0f4 /testsuite/systemtap.base/marker.exp | |
parent | 6f93ef37f7d97e3cf8f91b94df25adae7a510bfb (diff) | |
download | systemtap-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.exp | 40 |
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 +} |