diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-05-21 13:37:07 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-05-21 13:37:07 -0400 |
commit | e3339150b3c04f50b0abdc4a6d132a6b75b22cb6 (patch) | |
tree | c80892afd79625f95ff0a2543728804464c2961a /testsuite/systemtap.base | |
parent | 332ddc9f7354fe51c32c504087575b3ea2b70990 (diff) | |
parent | aa8a3b1797da54a14d04cd57758a65064056376e (diff) | |
download | systemtap-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.exp | 18 | ||||
-rw-r--r-- | testsuite/systemtap.base/ctime.stp | 55 | ||||
-rw-r--r-- | testsuite/systemtap.base/optim_arridx.exp | 77 | ||||
-rw-r--r-- | testsuite/systemtap.base/optim_arridx.stp | 45 | ||||
-rw-r--r-- | testsuite/systemtap.base/warnings.exp | 2 | ||||
-rw-r--r-- | testsuite/systemtap.base/warnings.stp | 7 |
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 () } |