summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base/vars.exp
blob: 7541c01b1151879e76bb736c82b4f71931610dad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Script for testing $$vars, $$parms, $$locals
    
set test "vars"

# grab C statement that $$vars yields
set cmd [concat stap -p3 -e {"probe kernel.statement(\"bio_copy_user@fs/bio.c+1\") \{print (\$\$vars)\}"} 2>&1 | grep {"printf.*="} | sed -e {"s/^.*MAXSTRINGLEN, \"//"} -e {s/..\".*$//}]
catch {eval exec $cmd} vars

# grab C statement that $$parms yields
set cmd [regsub "vars" $cmd "parms"]
catch {eval exec $cmd} parms

# grab C statement that $$locals yields
set cmd [regsub "parms" $cmd "locals"]
catch {eval exec $cmd} locals

# syntax check of $$vars C statement
set vars_ok [regexp "(\[a-z_\]+=%#llx *)+" $vars]
if {!$vars_ok} {
    fail "$test"
} else {
    pass "$test"
}

# $$vars should be equivalent to $$parms + $$locals
if {![string equal [string trim $vars] \
      		   [string trim [concat $parms " " $locals]]]} {
    fail "$test parms/locals"
} else {
    pass "$test parms/locals"
}