From 3a20432bc0a0aa6d8651561d508cc730e6dabc97 Mon Sep 17 00:00:00 2001 From: fche Date: Fri, 12 Aug 2005 19:43:55 +0000 Subject: 2005-08-12 Frank Ch. Eigler PR systemtap/1122 et alii * parse.cxx (parse_literal): Parse and range-limit 64-bit numbers. (parse_unary): Correct precedence glitch. * staptree.h (literal_number): Store an int64_t. * staptree.cxx: Corresponding changes. * translate.cxx (check_dbz): Remove - insufficient. (emit_function): Define CONTEXT macro sibling for THIS. (c_typename): pe_long -> int64_t. (visit_literal_number): Format literal rigorously and uglily. (c_assignop, visit_binary_expression): Handle div/mod via new helper functions in runtime. * tapset/builtin_logging.stp: Add error, exit builtins. * testsuite/buildok/ten,eleven.stp: New tests. * testsuite/parse{ko,ok}/six.stp: Modify for larger numbers. * testsuite/transok/one.stp: Add more ";"s, maybe unnecessarily. 2005-08-12 Frank Ch. Eigler * arith.c: New file to contain arithmetic helper functions. * builtin_functions.h: Remove, unused. * runtime.h: Include it. --- testsuite/buildok/eleven.stp | 17 +++++++++++++++++ testsuite/buildok/ten.stp | 14 ++++++++++++++ testsuite/parseko/six.stp | 1 + testsuite/parseok/six.stp | 12 +++++++++--- testsuite/transok/one.stp | 20 +++++++++----------- 5 files changed, 50 insertions(+), 14 deletions(-) create mode 100755 testsuite/buildok/eleven.stp create mode 100755 testsuite/buildok/ten.stp (limited to 'testsuite') diff --git a/testsuite/buildok/eleven.stp b/testsuite/buildok/eleven.stp new file mode 100755 index 00000000..66d4a318 --- /dev/null +++ b/testsuite/buildok/eleven.stp @@ -0,0 +1,17 @@ +#! stap -p4 + +probe begin +{ + a = -1 / -1; + b = 2147483647; + c = 4294967295 / a; + d = (-2147483647-1) % c; + e = 9223372036854775807 * b; + d /= b % e; + b %= 0 / f; + x = 1 / 0; +} +probe end +{ + y %= 0; +} diff --git a/testsuite/buildok/ten.stp b/testsuite/buildok/ten.stp new file mode 100755 index 00000000..6015fbb9 --- /dev/null +++ b/testsuite/buildok/ten.stp @@ -0,0 +1,14 @@ +#! stap -p4 + +probe begin +{ + a = 1+01+0x1-1-01-0x1; + + long_max = 2147483647; + ulong_max = 4294967295; + long_min = -2147483647-1; + + llong_max = 9223372036854775807; + ullong_max = 18446744073709551615; + llong_min = -9223372036854775807-1; +} diff --git a/testsuite/parseko/six.stp b/testsuite/parseko/six.stp index f37cd034..803d864c 100755 --- a/testsuite/parseko/six.stp +++ b/testsuite/parseko/six.stp @@ -5,4 +5,5 @@ probe foo { b = 0xzoopoo; c = 00011122233344455566677788; d = 07777777777777777777777777; + e = 18446744073709551616; # ULLONG_MAX+1 } diff --git a/testsuite/parseok/six.stp b/testsuite/parseok/six.stp index bc16a336..5c3d7866 100755 --- a/testsuite/parseok/six.stp +++ b/testsuite/parseok/six.stp @@ -1,8 +1,14 @@ #! stap -p1 -probe one +probe nothing { a = 1+01+0x1-1-01-0x1; - b = 2147483647; - c = -2147483647-1; + + long_max = 2147483647; + ulong_max = 4294967295; + long_min = -2147483647-1; + + llong_max = 9223372036854775807; + ullong_max = 18446744073709551615; + llong_min = -9223372036854775807-1; } diff --git a/testsuite/transok/one.stp b/testsuite/transok/one.stp index 6c624f14..7da27549 100755 --- a/testsuite/transok/one.stp +++ b/testsuite/transok/one.stp @@ -42,15 +42,13 @@ probe begin a / b a % b - # all unary operators - a ++ - a -- - -- a - -- b - ~ a - ! a - ; # grammar glitch - + a - ; # grammar glitch - - a + # all unary operators; use explicit ";" to avoid grammar ambiguities + a ++ ; + a -- ; + ++ a ; + -- b ; + ~ a ; + ! a ; + + a ; + - a ; } -- cgit