summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base/vars.exp
blob: 195abee08a43f72f9d0736c0d2f56514c35d4301 (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
33
# 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)\}"} | 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 $vars "$parms $locals"]} {
    fail "$test parms/locals"
    verbose -log "vars=$vars="
    verbose -log "rest=$parms $locals="
} else {
    pass "$test parms/locals"
}