diff options
author | Stan Cox <scox@redhat.com> | 2008-11-17 11:34:50 -0500 |
---|---|---|
committer | Stan Cox <scox@redhat.com> | 2008-11-17 11:34:50 -0500 |
commit | f28a8c28ce2ceed97bc4f4a19ffe8880bceb0682 (patch) | |
tree | e3c2b9bd0a8e10d6145f1e31f09242cb3735ca8c /testsuite/systemtap.base | |
parent | a6ce170764b0ec75d3ddbca20823b2a951a225d2 (diff) | |
download | systemtap-steved-f28a8c28ce2ceed97bc4f4a19ffe8880bceb0682.tar.gz systemtap-steved-f28a8c28ce2ceed97bc4f4a19ffe8880bceb0682.tar.xz systemtap-steved-f28a8c28ce2ceed97bc4f4a19ffe8880bceb0682.zip |
Add static uprobe support (static library variant)
Diffstat (limited to 'testsuite/systemtap.base')
-rw-r--r-- | testsuite/systemtap.base/static_uprobes.exp | 70 | ||||
-rw-r--r-- | testsuite/systemtap.base/static_uprobes.stp | 17 |
2 files changed, 87 insertions, 0 deletions
diff --git a/testsuite/systemtap.base/static_uprobes.exp b/testsuite/systemtap.base/static_uprobes.exp new file mode 100644 index 00000000..75e8fd21 --- /dev/null +++ b/testsuite/systemtap.base/static_uprobes.exp @@ -0,0 +1,70 @@ +set test "sduprobes" +if {![installtest_p]} {untested $test; return} + +# Compile a C program to use as the user-space probing target +set sup_srcpath "[pwd]/static_uprobes.c" +set sup_exepath "[pwd]/static_uprobes.x" +set sup_flags "additional_flags=-iquote$env(SYSTEMTAP_RUNTIME) additional_flags=-L$env(CRASH_LIBDIR) additional_flags=-lsduprobes" +set fp [open $sup_srcpath "w"] +puts $fp " +#include <stdlib.h> +#include \"sduprobes.h\" + +foo () +{ + STAP_PROBE(tstlabel,label1); +} + +bar (int i) +{ + if (i == 0) + i = 1000; + STAP_PROBE1(tstlabel,label2,i); +} + +baz (int i, char* s) +{ + if (i == 0) + i = 1000; + STAP_PROBE2(tstlabel,label3,i,s); +} + +buz () +{ +} + +main () +{ + sleep(5); + STAP_PROBE_START(); + _stap_probe_start (); // in lieu of setting SYSTEM_SDT + foo(); + bar(2); + baz(3,\"abc\"); +} +" +close $fp + +set res [target_compile $sup_srcpath $sup_exepath executable $sup_flags] +if { $res != "" } { + verbose "target_compile failed: $res" 2 + fail "unable to compile $sup_srcpath" + return +} else { + pass "compiling $sup_srcpath" +} + +set ok 0 +set env(SYSTEMTAP_SDT) 1 +spawn stap -c $sup_exepath $srcdir/$subdir/static_uprobes.stp +expect { + -timeout 180 + -re {In label1 probe} { incr ok; exp_continue } + -re {In label2 probe 0x2} { incr ok; exp_continue } + -re {In label3 probe 0x3 0x[0-9a-f][0-9a-f]} { incr ok; exp_continue } + timeout { fail "$test (timeout)" } + eof { } +} +wait + +if {$ok == 3} { pass "$test" } { fail "$test (Got $ok Expected 3)" } diff --git a/testsuite/systemtap.base/static_uprobes.stp b/testsuite/systemtap.base/static_uprobes.stp new file mode 100644 index 00000000..25e64a37 --- /dev/null +++ b/testsuite/systemtap.base/static_uprobes.stp @@ -0,0 +1,17 @@ +probe process("tstlabel.x").mark("label1") +{ + probe_str=user_string($probe) + printf("In %s probe\n", probe_str) +} + +probe process("tstlabel.x").mark("label2") +{ + probe_str=user_string($probe) + printf("In %s probe %#x\n", probe_str, $arg1) +} + +probe process("tstlabel.x").mark("label3") +{ + probe_str=user_string($probe) + printf("In %s probe %#x %#x\n", probe_str, $arg1, $arg2) +} |