summaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorjistone <jistone>2006-12-09 02:03:58 +0000
committerjistone <jistone>2006-12-09 02:03:58 +0000
commit9ba8c134d15dcf75e42dfaef7f72a6bc492fdbbb (patch)
tree5def76740609ffd298ee2d558905d535a2072350 /testsuite
parent6a256b03673beeea1c2d6731d5b680b50778b124 (diff)
downloadsystemtap-steved-9ba8c134d15dcf75e42dfaef7f72a6bc492fdbbb.tar.gz
systemtap-steved-9ba8c134d15dcf75e42dfaef7f72a6bc492fdbbb.tar.xz
systemtap-steved-9ba8c134d15dcf75e42dfaef7f72a6bc492fdbbb.zip
2006-12-08 Josh Stone <joshua.i.stone@intel.com>
PR 3681. * staptree.h (struct vardecl): Add a literal 'init' member for the initialization value of globals. * staptree.cxx (vardecl::vardecl): Initialize 'init' to NULL. (vardecl::print): Print global init value during pass-1 output. * main.cxx (printscript): Print global init values during verbose pass-2 output. * parse.cxx (parser::parse_global): Set the initialization literal of global vardecls. * translate.cxx (var::init): Don't unconditionally override the value of numeric globals when the module_param isn't used. (c_unparser::emit_global_param): Write numeric module_params directly into the global variable, as an int64_t instead of long. (c_unparser::emit_global): Add initialization to global declarations. Don't create a temp module_param long for numeric globals anymore. runtime/ * runtime.h (param_set_int64_t, param_get_int64_t, param_check_int64_t): New functions to allow taking module parameters directly as int64_t values. testsuite/ * systemtap.base/global_init.exp, systemtap.base/global_init.stp: New test for checking the timeliness of global initialization.
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/ChangeLog6
-rw-r--r--testsuite/systemtap.base/be_order.stp2
-rw-r--r--testsuite/systemtap.base/global_init.exp7
-rw-r--r--testsuite/systemtap.base/global_init.stp31
4 files changed, 45 insertions, 1 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog
index 83a48057..da7929f6 100644
--- a/testsuite/ChangeLog
+++ b/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-08 Josh Stone <joshua.i.stone@intel.com>
+
+ PR 3681.
+ * systemtap.base/global_init.exp, systemtap.base/global_init.stp: New
+ test for checking the timeliness of global initialization.
+
2006-12-07 Josh Stone <joshua.i.stone@intel.com>
PR 3624.
diff --git a/testsuite/systemtap.base/be_order.stp b/testsuite/systemtap.base/be_order.stp
index eb8ef0c8..166d0dca 100644
--- a/testsuite/systemtap.base/be_order.stp
+++ b/testsuite/systemtap.base/be_order.stp
@@ -1,5 +1,5 @@
/*
- * add.stp
+ * be_order.stp
*
* Check that ordering of begin/end probes works
*/
diff --git a/testsuite/systemtap.base/global_init.exp b/testsuite/systemtap.base/global_init.exp
new file mode 100644
index 00000000..2076f20f
--- /dev/null
+++ b/testsuite/systemtap.base/global_init.exp
@@ -0,0 +1,7 @@
+# Check that global variables are initialized before all begin probes
+
+load_lib "stap_run.exp"
+
+set test "global_init"
+
+stap_run $srcdir/$subdir/$test.stp no_load $all_pass_string
diff --git a/testsuite/systemtap.base/global_init.stp b/testsuite/systemtap.base/global_init.stp
new file mode 100644
index 00000000..a5d7e58e
--- /dev/null
+++ b/testsuite/systemtap.base/global_init.stp
@@ -0,0 +1,31 @@
+/*
+ * global_init.stp
+ *
+ * Check that global variables are initialized before all begin probes
+ */
+
+probe begin { log("systemtap starting probe") }
+probe end { log("systemtap ending probe") }
+
+global gnum = 42
+global gstr = "foobar"
+
+global gnum_saved
+global gstr_saved
+probe begin(-9223372036854775808) {
+ gnum_saved = gnum
+ gstr_saved = gstr
+}
+
+probe end {
+ if (gnum_saved == 42)
+ log("systemtap test success")
+ else
+ printf("systemtap test failure - gnum_saved:%d != 42\n", gnum_saved)
+
+ if (gstr_saved == "foobar")
+ log("systemtap test success")
+ else
+ printf("systemtap test failure - gstr_saved:%s != foobar\n", gstr_saved)
+}
+