summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base
diff options
context:
space:
mode:
authorStan Cox <scox@redhat.com>2008-11-17 11:34:50 -0500
committerStan Cox <scox@redhat.com>2008-11-17 11:34:50 -0500
commitf28a8c28ce2ceed97bc4f4a19ffe8880bceb0682 (patch)
treee3c2b9bd0a8e10d6145f1e31f09242cb3735ca8c /testsuite/systemtap.base
parenta6ce170764b0ec75d3ddbca20823b2a951a225d2 (diff)
downloadsystemtap-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.exp70
-rw-r--r--testsuite/systemtap.base/static_uprobes.stp17
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)
+}