diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | main.cxx | 33 | ||||
-rwxr-xr-x | testsuite/buildok/cmdline01.stp | 28 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline01.stp | 5 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline02.stp | 8 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline03.stp | 8 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline04.stp | 5 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline05.stp | 5 | ||||
-rwxr-xr-x | testsuite/parseko/cmdline06.stp | 5 | ||||
-rwxr-xr-x | testsuite/parseok/cmdline01.stp | 10 | ||||
-rwxr-xr-x | testsuite/parseok/cmdline02.stp | 5 |
11 files changed, 117 insertions, 11 deletions
@@ -1,3 +1,19 @@ +2006-06-02 David Smith <dsmith@redhat.com> + + * main.cxx (usage): Added exitcode parameter. + (main): Improved a few error messages. Also, when an error is + given, stap now always exits with a status of 1. + + * testsuite/buildok/cmdline01.stp: New test. + * testsuite/parseko/cmdline01.stp: Ditto. + * testsuite/parseko/cmdline02.stp: Ditto. + * testsuite/parseko/cmdline03.stp: Ditto. + * testsuite/parseko/cmdline04.stp: Ditto. + * testsuite/parseko/cmdline05.stp: Ditto. + * testsuite/parseko/cmdline06.stp: Ditto. + * testsuite/parseok/cmdline01.stp: Ditto. + * testsuite/parseok/cmdline02.stp: Ditto. + 2006-06-01 Josh Stone <joshua.i.stone@intel.com> * tapsets.cxx (hrtimer_derived_probe::emit_interval): update @@ -46,7 +46,7 @@ version () } void -usage (systemtap_session& s) +usage (systemtap_session& s, int exitcode) { version (); clog @@ -96,7 +96,7 @@ usage (systemtap_session& s) ; // -d: dump safety-related external references - exit (0); + exit (exitcode); } @@ -178,8 +178,8 @@ main (int argc, char * const argv []) s.last_pass = atoi (optarg); if (s.last_pass < 1 || s.last_pass > 5) { - cerr << "Invalid pass number." << endl; - usage (s); + cerr << "Invalid pass number (should be 1-5)." << endl; + usage (s, 1); } break; @@ -189,7 +189,11 @@ main (int argc, char * const argv []) case 'e': if (have_script) - usage (s); + { + cerr << "Only one script can be given on the command line." + << endl; + usage (s, 1); + } cmdline_script = string (optarg); have_script = true; break; @@ -230,8 +234,8 @@ main (int argc, char * const argv []) s.buffer_size = atoi (optarg); if (s.buffer_size < 1 || s.buffer_size > 64) { - cerr << "Invalid buffer size." << endl; - usage (s); + cerr << "Invalid buffer size (should be 1-64)." << endl; + usage (s, 1); } break; @@ -248,21 +252,25 @@ main (int argc, char * const argv []) break; case 'h': + usage (s, 0); + break; + default: - usage (s); + usage (s, 1); + break; } } if(!s.bulk_mode && !s.merge) { cerr << "-M option is valid only for bulk (relayfs) mode." <<endl; - exit(1); + usage (s, 1); } if(!s.output_file.empty() && s.bulk_mode && !s.merge) { cerr << "You can't specify -M, -b and -o options together." <<endl; - exit(1); + usage (s, 1); } for (int i = optind; i < argc; i++) @@ -278,7 +286,10 @@ main (int argc, char * const argv []) // need a user file if (! have_script) - usage(s); + { + cerr << "A script must be specified." << endl; + usage(s, 1); + } int rc = 0; diff --git a/testsuite/buildok/cmdline01.stp b/testsuite/buildok/cmdline01.stp new file mode 100755 index 00000000..9d087e44 --- /dev/null +++ b/testsuite/buildok/cmdline01.stp @@ -0,0 +1,28 @@ +#!/bin/sh + +# -g Guru mode. Enable parsing of unsafe expert-level constructs +# like embedded C. +# +# -D NAME=VALUE +# Add the given C preprocessor directive to the module Makefile. + +# Test '-g' and '-D'. The code below will give an error at +# compilation stage unless 'FOO' is defined. + +./stap -g -p4 -DFOO=1 - <<EOF + +function footest:string() +%{ +#ifdef FOO + strncpy(THIS->__retvalue, "footest called", MAXSTRINGLEN); +#else +#error undefined FOO +#endif +%} + +probe begin { + printf("%s\n", footest()) + exit() +} + +EOF diff --git a/testsuite/parseko/cmdline01.stp b/testsuite/parseko/cmdline01.stp new file mode 100755 index 00000000..0f1a21d7 --- /dev/null +++ b/testsuite/parseko/cmdline01.stp @@ -0,0 +1,5 @@ +#!/bin/sh + +# -M (merge) option is only valid for bulk mode + +./stap -p1 -M -e 'probe begin { exit() }' diff --git a/testsuite/parseko/cmdline02.stp b/testsuite/parseko/cmdline02.stp new file mode 100755 index 00000000..57289c2d --- /dev/null +++ b/testsuite/parseko/cmdline02.stp @@ -0,0 +1,8 @@ +#!/bin/sh + +# -sNUM Use NUM megabyte buffers for kernel-to-user data transfer. On a +# multiprocessor in bulk mode, this is a per-processor amount. +# +# NUM must be between 1 and 64 + +./stap -p1 -s 0 -e 'probe begin { exit() }' diff --git a/testsuite/parseko/cmdline03.stp b/testsuite/parseko/cmdline03.stp new file mode 100755 index 00000000..7bd4a5c0 --- /dev/null +++ b/testsuite/parseko/cmdline03.stp @@ -0,0 +1,8 @@ +#!/bin/sh + +# -p NUM Stop after pass NUM. The passes are numbered 1-5: parse, elabo- +# rate, translate, compile, run. +# +# NUM must be between 1 and 5 + +./stap -p0 -e 'probe begin { exit() }' diff --git a/testsuite/parseko/cmdline04.stp b/testsuite/parseko/cmdline04.stp new file mode 100755 index 00000000..b6450954 --- /dev/null +++ b/testsuite/parseko/cmdline04.stp @@ -0,0 +1,5 @@ +#!/bin/sh + +# multiple '-e' (script) options cannot be specified + +./stap -p1 -e 'probe begin { exit() }' -e 'probe end { exit() }' diff --git a/testsuite/parseko/cmdline05.stp b/testsuite/parseko/cmdline05.stp new file mode 100755 index 00000000..f6075c5f --- /dev/null +++ b/testsuite/parseko/cmdline05.stp @@ -0,0 +1,5 @@ +#!/bin/sh + +# You can't specify '-M', '-b', and '-o' simultaneously. + +./stap -p1 -b -M -o stdout -e 'probe begin { exit() }' diff --git a/testsuite/parseko/cmdline06.stp b/testsuite/parseko/cmdline06.stp new file mode 100755 index 00000000..4c23757b --- /dev/null +++ b/testsuite/parseko/cmdline06.stp @@ -0,0 +1,5 @@ +#!/bin/sh + +# Bad TMPDIR environment variable should cause exit + +TMPDIR=/dev/null/BADTMPDIR ./stap -p1 -e 'probe begin { exit() }' diff --git a/testsuite/parseok/cmdline01.stp b/testsuite/parseok/cmdline01.stp new file mode 100755 index 00000000..da4e6eb3 --- /dev/null +++ b/testsuite/parseok/cmdline01.stp @@ -0,0 +1,10 @@ +#! /bin/sh + +echo "output version" +./stap -V +if [ $? != 0 ]; then + exit $? +fi + +echo "output version and help" +./stap -h diff --git a/testsuite/parseok/cmdline02.stp b/testsuite/parseok/cmdline02.stp new file mode 100755 index 00000000..4ddb711d --- /dev/null +++ b/testsuite/parseok/cmdline02.stp @@ -0,0 +1,5 @@ +#! /bin/sh + +# Make sure verbose ('-v') option is accepted. + +./stap -v -p1 -e 'probe begin { exit() }' |