From 3cb170588c9b180fb4d28af04e44ac87481560a7 Mon Sep 17 00:00:00 2001 From: jistone Date: Fri, 17 Aug 2007 01:54:28 +0000 Subject: 2007-08-16 Josh Stone PR 4591 * parse.cxx (parser::parse_symbol): Tweak 'print' matching to allow all the new variants with printd and println. * staptree.h (struct print_format): Add fields for the new print variants, and parse_print() to help matching. * staptree.cxx (print_format::parse_print): New static method to match the print variants and determine their properties. (print_format::print): Handle the new print types. (deep_copy_visitor::visit_print_format): Copy the new fields. * translate.cxx (c_unparser::visit_print_format): Insert delims and newlines where appropriate for new print functions. * stap1.in: Document the new print functions. testsuite/ * lib/stap_run.exp: Make sure to match the entire output, in case there are multiple pass/fail messages. * buildok/printf.stp: Add lines for new print variants. * parseko/printd01.stp: Make sure that bad printd calls are handled. * parseko/printd02.stp: Ditto. * parseko/printd03.stp: Ditto. * parseko/printd04.stp: Ditto. * systemtap.base/print.stp: Try a bunch of different print calls. * systemtap.base/print.exp: Driver for above. --- testsuite/systemtap.base/print.stp | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 testsuite/systemtap.base/print.stp (limited to 'testsuite/systemtap.base/print.stp') diff --git a/testsuite/systemtap.base/print.stp b/testsuite/systemtap.base/print.stp new file mode 100644 index 00000000..e1b64c35 --- /dev/null +++ b/testsuite/systemtap.base/print.stp @@ -0,0 +1,39 @@ +/* + * print.stp + * + * Test that all the print statements work + */ + +global s1, s2, s3 + +probe begin +{ + log("systemtap starting probe") + s1 = "systemtap" + s2 = "test" + s3 = "success" +} + +probe end +{ + log("systemtap ending probe") + + print(s1, " ", s2, " ", s3, "\n") + print(sprint(s1, " ", s2, " ", s3, "\n")) + + println(s1, " ", s2, " ", s3) + print(sprintln(s1, " ", s2, " ", s3)) + + printd(" ", s1, s2, s3 . "\n") + print(sprintd(" ", s1, s2, s3 . "\n")) + + printdln(" ", s1, s2, s3) + print(sprintdln(" ", s1, s2, s3)) + + // check that formatting characters get escaped correctly in the delimiter + s = sprintd("%% % \\ \"", 1, 2, 3) + if (s == "1%% % \\ \"2%% % \\ \"3") + log("systemtap test success") + else + log("systemtap test failure") +} -- cgit