summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-05-21 13:37:07 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-05-21 13:37:07 -0400
commite3339150b3c04f50b0abdc4a6d132a6b75b22cb6 (patch)
treec80892afd79625f95ff0a2543728804464c2961a /testsuite/systemtap.base
parent332ddc9f7354fe51c32c504087575b3ea2b70990 (diff)
parentaa8a3b1797da54a14d04cd57758a65064056376e (diff)
downloadsystemtap-steved-e3339150b3c04f50b0abdc4a6d132a6b75b22cb6.tar.gz
systemtap-steved-e3339150b3c04f50b0abdc4a6d132a6b75b22cb6.tar.xz
systemtap-steved-e3339150b3c04f50b0abdc4a6d132a6b75b22cb6.zip
Merge commit 'origin/master' into pr6429-comp-unwindsyms
* commit 'origin/master': Fix assignment optimization expected results. PR6538: more testsuite tweaks for read-only warnings PR6538: more tapset fixes PR6538: explain why absentstats.stp logs will contain warnings PR6538: fix treatment of initialized globals Use pointer_arg to fetch arguments for syscall.utime and compat_utime. Optimize compound and binary expression assignments. Check new (sub) functions of _struct_utimbuf_* and _struct_compat_utimbuf_*. PR6538: tapset changes PR6538: testsuite changes PR5001: fix test suite collateral damage PR6538: warn about read-only variables Add some scripts and descriptions to the systemtap.examples. PR5001: Remove _stp_ctime and always use ctime. Use tr1/unordered_map instead of the deprecated ext/hash_map. PR6524: ctime() on bad values hangs system. Optimize away assignments in other contexts. Optimize away assignments in other contexts. dummy commit for testing systemtap-cvs notification Remove sa_restorer initialization.
Diffstat (limited to 'testsuite/systemtap.base')
-rw-r--r--testsuite/systemtap.base/ctime.exp18
-rw-r--r--testsuite/systemtap.base/ctime.stp55
-rw-r--r--testsuite/systemtap.base/optim_arridx.exp77
-rw-r--r--testsuite/systemtap.base/optim_arridx.stp45
-rw-r--r--testsuite/systemtap.base/warnings.exp2
-rw-r--r--testsuite/systemtap.base/warnings.stp7
6 files changed, 199 insertions, 5 deletions
diff --git a/testsuite/systemtap.base/ctime.exp b/testsuite/systemtap.base/ctime.exp
new file mode 100644
index 00000000..f6db096a
--- /dev/null
+++ b/testsuite/systemtap.base/ctime.exp
@@ -0,0 +1,18 @@
+set test "ctime"
+set ::result_string {Thu Jan 1 00:00:00 1970
+Wed Dec 31 23:59:59 1969
+Thu Jan 1 00:00:01 1970
+Sat Mar 3 09:46:40 1973
+Fri Feb 13 23:31:30 2009
+Sat Jan 10 13:37:04 2004
+Fri Jul 13 11:01:20 2012
+a long, long time ago...
+far far in the future...
+Fri Dec 13 20:45:52 1901
+a long, long time ago...
+Tue Jan 19 03:14:07 2038
+far far in the future...
+a long, long time ago...
+far far in the future...
+}
+stap_run2 $srcdir/$subdir/$test.stp
diff --git a/testsuite/systemtap.base/ctime.stp b/testsuite/systemtap.base/ctime.stp
new file mode 100644
index 00000000..680baff7
--- /dev/null
+++ b/testsuite/systemtap.base/ctime.stp
@@ -0,0 +1,55 @@
+probe begin
+{
+ // epoch
+ println(ctime(0))
+
+ // epoch - 1
+ println(ctime(-1))
+
+ // epoch + 1
+ println(ctime(1))
+
+ // Some funny numbers
+ println(ctime(100000000))
+ println(ctime(1234567890))
+ println(ctime(1073741824))
+ println(ctime(0x50000000))
+
+ // some time really long ago
+ secspermin = 60
+ minsperhour = 60
+ hoursperday = 24
+ secsperhour = secspermin * minsperhour
+ secsperday = secsperhour * hoursperday
+ epoch_year = 1970
+ time = -1 * (epoch_year - 1000) * 365 * secsperday
+ println(ctime(time))
+
+ // some time in the far future
+ time = (9999 - epoch_year) * 365 * secsperday
+ println(ctime(time))
+
+ // min 32 bit
+ time = -2147483648
+ println(ctime(time))
+
+ // over the edge, a long, long time ago...
+ time--
+ println(ctime(time))
+
+ // max 32 bit
+ time = 2147483647
+ println(ctime(time))
+
+ // over the edge, far far in the future...
+ time++
+ println(ctime(time))
+
+ // min 64 bit
+ println(ctime(-9223372036854775808))
+
+ // max 64 bit
+ println(ctime(9223372036854775807))
+
+ exit()
+}
diff --git a/testsuite/systemtap.base/optim_arridx.exp b/testsuite/systemtap.base/optim_arridx.exp
new file mode 100644
index 00000000..0987dec6
--- /dev/null
+++ b/testsuite/systemtap.base/optim_arridx.exp
@@ -0,0 +1,77 @@
+# test integer limits. Set and print variables and print constants.
+
+set test "optim_arridx"
+set ::result_string {# globals
+arr1:long [long, long]
+arr2:long [long]
+arr3:long [long]
+# functions
+fna:long (a:long)
+return a
+fnb:long (a:long, b:long)
+return (a) + (b)
+exit:unknown ()
+%{
+ atomic_set (&session_state, STAP_SESSION_STOPPING);
+ _stp_exit ();
+%}
+# probes
+begin /* <- begin */
+ # locals
+ idx2:long
+ j:long
+ k:long
+ b:long
+ m:long
+ arr1:long [long]
+ arr2:long [long, long]
+ aa:long
+ bb:long
+ cc:long
+ dd:long
+ ee:long
+{
+(arr2[(idx2) = (2)]) = (20)
+(arr2[(j) = (4)]) = (40)
+(arr1[fna((k) = (0)), k]) = (1)
+(arr1[(b) = (1), b]) = (2)
+fnb((arr3[0]) = (4), arr3[0])
+(m) = (1)
+for (2; (m) <= (10); (m)++) ;
+printf("%d %d %d %d\\n", arr1[0], arr2[0, 0], idx2, j)
+(aa) = (fna(1))
+(bb) = (fnb((cc) = (1), 2))
+for (1; (bb) < (10); (bb)++) (cc) += (bb)
+for ((dd) = (1); (dd) < (10); 1) (dd) += (1)
+if (1) (ee) = (1)
+
+(cc) = ((dd) = (5))
+(cc) = ((4) + ((cc) = (1)))
+printf("%d %d %d %d %d", aa, bb, cc, dd, ee)
+exit()
+}
+}
+
+proc optim_arridx_run { TEST_NAME args } {
+ # zap the srcdir prefix
+ set test_file_name $TEST_NAME
+ set TEST_NAME [regsub {.*/testsuite/} $TEST_NAME ""]
+
+ set cmd [concat stap $args $test_file_name]
+ catch {eval exec $cmd} res
+
+ set n 0
+ set expected [split $::result_string "\n"]
+ foreach line [split $res "\n"] {
+ if {![string equal $line [lindex $expected $n]]} {
+ fail "$TEST_NAME"
+ send_log "line [expr $n + 1]: expected \"[lindex $expected $n]\"\n"
+ send_log "Got \"$line\"\n"
+ return
+ }
+ incr n
+ }
+ pass "$TEST_NAME"
+}
+
+optim_arridx_run $srcdir/$subdir/$test.stp -p2 -v 2>/dev/null
diff --git a/testsuite/systemtap.base/optim_arridx.stp b/testsuite/systemtap.base/optim_arridx.stp
new file mode 100644
index 00000000..20710c7f
--- /dev/null
+++ b/testsuite/systemtap.base/optim_arridx.stp
@@ -0,0 +1,45 @@
+global arr1, arr2, arr3, elide_idx1, elide_global_a, elide_global_b
+
+function fna(a:long) {return a}
+function fnb(a:long, b:long) {return a+b}
+
+probe begin {
+ // array indices
+ arr2[elide_idx1 = 1] = 10
+ arr2[idx2 = 2] = 20
+ arr2[elide_i=3] = 30
+ arr2[j=4] = 40
+ arr1[fna(k = 0), k] = 1
+ arr1[b = 1, b] = 2
+ arr1[elide_c = 2,2] = 3
+ fnb(arr3[0] = 4, arr3[0])
+ m = 1
+ for (elide_n=2; m <= 10; m++)
+ arr2[m] = m * 10
+ printf ("%d %d %d %d\n", arr1[0], arr2[0,0], idx2, j)
+
+ // function args
+ aa = fna(elide_aa = 1)
+ bb = fnb(cc = 1, elide_global_a = 2)
+
+ // loop
+ for (elide_bb = 1; bb < 10; bb++)
+ cc += bb
+ for (dd = 1; dd < 10; elide_ee = 1)
+ dd += 1
+
+ // conditional
+ if (elide_ff = 0)
+ elide_ff = 1
+ if (elide_global_b = 1)
+ ee = 1
+
+ // compound assignment
+ cc = elide_gg=dd=5
+
+ // binary expression
+ cc = ((elide_hh = 4) + (cc = 1))
+
+ printf("%d %d %d %d %d", aa, bb, cc, dd, ee)
+ exit ()
+}
diff --git a/testsuite/systemtap.base/warnings.exp b/testsuite/systemtap.base/warnings.exp
index 025bde89..6cff723d 100644
--- a/testsuite/systemtap.base/warnings.exp
+++ b/testsuite/systemtap.base/warnings.exp
@@ -9,7 +9,7 @@ expect {
eof { }
}
wait
-if {$ok == 9} {
+if {$ok == 22} {
pass $test
} else {
fail "$test ($ok)"
diff --git a/testsuite/systemtap.base/warnings.stp b/testsuite/systemtap.base/warnings.stp
index a0ce8d8d..a2ac5afc 100644
--- a/testsuite/systemtap.base/warnings.stp
+++ b/testsuite/systemtap.base/warnings.stp
@@ -1,9 +1,8 @@
-# PR 1119
+# PR 1119, 6538
global elide_me1
-
function elide_me2 () {}
-
function foo:long () { elide_me3 = 1 }
-
+function bar() { print(elide+me1) ; ; ; }
probe never { elide_me4 = 1; (elide_me5+5); print (foo()) }
+probe never { print(elide+me1) bar () }