aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-07-03 11:16:36 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-07-03 11:16:36 +0300
commit30a60fc794e84da90fed6871ff27d668fe4a391e (patch)
treea6294c9607f4964212c10daa3b1dde3501bf4d86
parentc997a0e5d3857eb48e4292f0b42da9b3bbb985fb (diff)
parentf60ced696bc752cdc1a1f45ce2cc9d6149be7087 (diff)
downloadegawk-30a60fc794e84da90fed6871ff27d668fe4a391e.tar.gz
egawk-30a60fc794e84da90fed6871ff27d668fe4a391e.tar.bz2
egawk-30a60fc794e84da90fed6871ff27d668fe4a391e.zip
Merge branch 'gawk-5.1-stable'
-rw-r--r--ChangeLog28
-rw-r--r--NEWS3
-rw-r--r--TODO5
-rw-r--r--awk.h4
-rw-r--r--debug.c22
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/awkcard.in5
-rw-r--r--doc/gawk.113
-rw-r--r--doc/gawk.info1239
-rw-r--r--doc/gawk.texi12
-rw-r--r--doc/gawktexi.in12
-rw-r--r--eval.c114
-rw-r--r--field.c8
-rw-r--r--interpret.h8
-rw-r--r--main.c8
-rw-r--r--pc/Makefile.tst15
-rw-r--r--test/ChangeLog14
-rw-r--r--test/Makefile.am15
-rw-r--r--test/Makefile.in21
-rw-r--r--test/Maketests6
-rw-r--r--test/badargs.ok1
-rw-r--r--test/dbugeval2.ok2
-rw-r--r--test/dbugtypedre1.ok2
-rw-r--r--test/dbugtypedre2.ok2
-rw-r--r--test/posix_compare.awk47
-rw-r--r--test/posix_compare.ok12
-rw-r--r--test/symtab10.ok2
-rw-r--r--test/watchpoint1.ok2
28 files changed, 915 insertions, 712 deletions
diff --git a/ChangeLog b/ChangeLog
index 05db8c49..efe4abea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2020-07-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix a double free error with -M. Thanks to
+ "NIDE, Naoyuki" <nide@ics.nara-wu.ac.jp> for the report.
+
+ * field.c (clear_mpfr): New macro, clears MPFR and NUMCUR bits.
+ (reset_record): Use it on the newly copied field values.
+ (purge_record): Add introductory comment since we're in the file.
+
+2020-07-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (posix_compare): Rewrite contributed by
+ Michael Builov <mbuilov@gmail.com>.
+
+ Unrelated:
+
+ * awk.h: New option: do_itrace.
+ * interpret.h (r_interpret): Print instruction trace if enabled.
+ * main.c (optab): New option: -I/--trace.
+ (parse_args): Update optlist and the code to handle it.
+ * NEWS: Updated.
+
+2020-06-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * debug.c: Cleanup messages. Error messages start with lower
+ case letter.
+ * TODO: Updated.
+
2020-06-14 Arnold D. Robbins <arnold@skeeve.com>
Disallow SYMTAB and FUNCTAB as destination arguments to builtin
diff --git a/NEWS b/NEWS
index 1974e7b4..1c5ddece 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,9 @@ Changes from 5.0.1 to 5.0.2
second destination array is supplied. Similarly, using either array as
the second argument is now a fatal error.
+3. The new -I/--trace option prints a trace of the byte codes as they
+ are executed.
+
Changes from 5.0.1 to 5.1.0
---------------------------
diff --git a/TODO b/TODO
index 51bb4965..f2b3e1be 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Sun Jun 28 08:49:16 IDT 2020
+Mon Jun 29 11:16:12 IDT 2020
============================
There were too many files tracking different thoughts and ideas for
@@ -31,9 +31,6 @@ Minor Cleanups and Code Improvements
about genuine errors.
Message cleanup:
- * Messages in debug.c start with capital letters, but not in
- other files.
-
* Messages are inconsistent about final punctuation (periods etc.)
Minor New Features
diff --git a/awk.h b/awk.h
index cccb8ce5..eec41147 100644
--- a/awk.h
+++ b/awk.h
@@ -1159,7 +1159,8 @@ enum do_flag_values {
DO_SANDBOX = 0x01000, /* sandbox mode - disable 'system' function & redirections */
DO_PROFILE = 0x02000, /* profile the program */
DO_DEBUG = 0x04000, /* debug the program */
- DO_MPFR = 0x08000 /* arbitrary-precision floating-point math */
+ DO_MPFR = 0x08000, /* arbitrary-precision floating-point math */
+ DO_ITRACE = 0x10000 /* trace byte-code instructions */
};
#define do_traditional (do_flags & DO_TRADITIONAL)
@@ -1174,6 +1175,7 @@ enum do_flag_values {
#define do_sandbox (do_flags & DO_SANDBOX)
#define do_debug (do_flags & DO_DEBUG)
#define do_mpfr (do_flags & DO_MPFR)
+#define do_itrace (do_flags & DO_ITRACE)
extern bool do_optimize;
extern int use_lc_numeric;
diff --git a/debug.c b/debug.c
index 26a67554..61e21a58 100644
--- a/debug.c
+++ b/debug.c
@@ -539,7 +539,7 @@ print_lines(char *src, int start_line, int nlines)
}
if (fstat(s->fd, &sbuf) == 0 && s->mtime < sbuf.st_mtime) {
- fprintf(out_fp, _("WARNING: source file `%s' modified since program compilation.\n"),
+ fprintf(out_fp, _("warning: source file `%s' modified since program compilation.\n"),
src);
efree(s->line_offset);
s->line_offset = NULL;
@@ -775,7 +775,7 @@ do_info(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
b->number, disp, (b->flags & BP_ENABLE) != 0 ? "yes" : "no",
b->src, b->bpi->source_line);
if (b->hit_count > 0)
- gprintf(out_fp, _("\tno of hits = %ld\n"), b->hit_count);
+ gprintf(out_fp, _("\tnumber of hits = %ld\n"), b->hit_count);
if ((b->flags & BP_IGNORE) != 0)
gprintf(out_fp, _("\tignore next %ld hit(s)\n"), b->ignore_count);
if (b->cndn.code != NULL)
@@ -1129,7 +1129,7 @@ print_subscript(NODE *arr, char *arr_name, CMDARG *a, int count)
subs = a->a_node;
r = in_array(arr, subs);
if (r == NULL)
- fprintf(out_fp, _("[\"%.*s\"] not in array `%s'\n"), (int) subs->stlen, subs->stptr, arr_name);
+ fprintf(out_fp, _("subscript \"%.*s\" is not in array `%s'\n"), (int) subs->stlen, subs->stptr, arr_name);
else if (r->type == Node_var_array) {
if (count > 1)
print_subscript(r, r->vname, a->next, count - 1);
@@ -1181,7 +1181,7 @@ do_print_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
subs = a->a_node;
value = in_array(r, subs);
if (value == NULL) {
- fprintf(out_fp, _("[\"%.*s\"] not in array `%s'\n"),
+ fprintf(out_fp, _("subscript \"%.*s\" is not in array `%s'\n"),
(int) subs->stlen, subs->stptr, name);
break;
} else if (value->type != Node_var_array) {
@@ -1511,10 +1511,10 @@ do_delete_item(struct list_item *list, CMDARG *arg)
if ((d = find_item(list, arg->a_int)) == NULL) {
/* split into two for easier message translation */
if (list == &display_list)
- d_error(_("No display item numbered %ld"),
+ d_error(_("no display item numbered %ld"),
arg->a_int);
else
- d_error(_("No watch item numbered %ld"),
+ d_error(_("no watch item numbered %ld"),
arg->a_int);
} else
delete_item(d);
@@ -1540,7 +1540,7 @@ display(struct list_item *d)
sub = d->subs[i];
r = in_array(symbol, sub);
if (r == NULL) {
- fprintf(out_fp, _("%d: [\"%.*s\"] not in array `%s'\n"),
+ fprintf(out_fp, _("%d: subscript \"%.*s\" is not in array `%s'\n"),
d->number, (int) sub->stlen, sub->stptr, d->sname);
break;
}
@@ -2383,7 +2383,7 @@ set_breakpoint(CMDARG *arg, bool temporary)
case D_int: /* break lineno */
lineno = (int) arg->a_int;
if (lineno <= 0 || lineno > s->srclines)
- d_error(_("line number %d in file `%s' out of range"), lineno, src);
+ d_error(_("line number %d in file `%s' is out of range"), lineno, src);
else {
rp = find_rule(src, lineno);
if (rp == NULL)
@@ -2966,7 +2966,7 @@ do_run(CMDARG *arg ATTRIBUTE_UNUSED, int cmd ATTRIBUTE_UNUSED)
restart(true); /* does not return */
}
- fprintf(out_fp, _("Starting program: \n"));
+ fprintf(out_fp, _("Starting program:\n"));
prog_running = true;
fatal_tag_valid = 1;
@@ -3228,7 +3228,7 @@ do_finish(CMDARG *arg ATTRIBUTE_UNUSED, int cmd)
}
stop.fcall_count = fcall_count - cur_frame - 1;
assert(stop.fcall_count >= 0);
- fprintf(out_fp, _("Run till return from "));
+ fprintf(out_fp, _("Run until return from "));
print_numbered_frame(cur_frame);
stop.check_func = check_finish;
stop.command = cmd;
@@ -5752,7 +5752,7 @@ static void
check_symbol(NODE *r)
{
invalid_symbol++;
- d_error(_("No symbol `%s' in current context"), r->vname);
+ d_error(_("no symbol `%s' in current context"), r->vname);
/* install anyway, but keep track of it */
append_symbol(r);
}
diff --git a/doc/ChangeLog b/doc/ChangeLog
index c1df31fc..0a4c3799 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-07-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.1, gawktexi.in: Document -I/--trace option.
+ * awkcard.in: Document -I/--trace option.
+
2020-06-25 Arnold D. Robbins <arnold@skeeve.com>
* gawk.1: Applied some more troff "lint" fixes.
diff --git a/doc/awkcard.in b/doc/awkcard.in
index b0322763..f19665d0 100644
--- a/doc/awkcard.in
+++ b/doc/awkcard.in
@@ -273,6 +273,8 @@ options on \*(FCstdout\*(FR, then exit zero.
.TI "\*(FC\-i \*(FIfile\*(FR, \*(FC\-\^\-include \*(FIfile\*(FR
Include library AWK code in \*(FIfile\*(FR.
See \fHAwk Program Execution\*(FR.
+.TI "\*(FC\-I\*(FR, \*(FC\-\^\-trace\*(FR
+Print the internal byte code names as they are executed.
.TI "\*(FC\-l \*(FIlib\*(FR, \*(FC\-\^\-load \*(FIlib\*(FR
Load dynamic extension \*(FIlib\fP.
See \fHDynamic Extensions\*(FR.
@@ -298,8 +300,7 @@ Enable internal optimizations (default is on).
.TI "\*(FC\-p\*(FR[\*(FC\*(FIfile\*(FR], \*(FC\-\^\-profile\*(FR[\*(FC=\*(FIfile\*(FR]
Send profiling data to \*(FIfile\*(FR
(default: \*(FCawkprof.out\*(FR).
-The profile contains execution counts in the left margin
-of each statement in the program.
+The profile contains execution counts in the left margin.
.TI "\*(FC\-P\*(FR, \*(FC\-\^\-posix\*(FR
Disable common and GNU extensions.
.TI "\*(FC\-r\*(FR, \*(FC\-\^\-re\-interval\*(FR
diff --git a/doc/gawk.1 b/doc/gawk.1
index 8005c26c..a4d8912c 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "Mar 23 2020" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Jul 2 2020" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -321,6 +321,17 @@ Files read with
are treated as if they begin with an implicit \fB@namespace "awk"\fR statement.
.TP
.PD 0
+.BI \-I
+.TP
+.PD
+.B \-\^\-trace
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a
+.B +
+sign in the output.
+.TP
+.PD 0
.BI "\-l " lib
.TP
.PD
diff --git a/doc/gawk.info b/doc/gawk.info
index 23729311..62bea4bf 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -2666,6 +2666,12 @@ The following list describes options mandated by the POSIX standard:
at their beginning. *Note Changing The Namespace::, for more
information.
+'-I'
+'--trace'
+ Print the internal byte code names as they are executed when
+ running the program. The trace is printed to standard error. Each
+ "op code" is preceded by a '+' sign in the output.
+
'-l' EXT
'--load' EXT
Load a dynamic extension named EXT. Extensions are stored as
@@ -33935,7 +33941,7 @@ Index
* + (plus sign), += operator <1>: Precedence. (line 94)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), file names beginning with: Options. (line 64)
-* - (hyphen), -- end of options marker: Options. (line 343)
+* - (hyphen), -- end of options marker: Options. (line 349)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 25)
* - (hyphen), -= operator: Assignment Ops. (line 129)
* - (hyphen), -- operator: Increment Ops. (line 48)
@@ -33944,7 +33950,7 @@ Index
* - (hyphen), - operator <1>: Precedence. (line 57)
* - (hyphen), -= operator <1>: Precedence. (line 94)
* --assign option: Options. (line 36)
-* --bignum option: Options. (line 237)
+* --bignum option: Options. (line 243)
* --characters-as-bytes option: Options. (line 73)
* --copyright option: Options. (line 93)
* --debug option: Options. (line 112)
@@ -33970,32 +33976,33 @@ Index
* --help option: Options. (line 176)
* --include option: Options. (line 181)
* --lint option: Command Line. (line 20)
-* --lint option <1>: Options. (line 210)
-* --lint-old option: Options. (line 333)
-* --load option: Options. (line 198)
-* --no-optimize option: Options. (line 318)
-* --non-decimal-data option: Options. (line 243)
+* --lint option <1>: Options. (line 216)
+* --lint-old option: Options. (line 339)
+* --load option: Options. (line 204)
+* --no-optimize option: Options. (line 324)
+* --non-decimal-data option: Options. (line 249)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 35)
-* --optimize option: Options. (line 268)
-* --posix option: Options. (line 290)
-* --posix option, --traditional option and: Options. (line 305)
-* --pretty-print option: Options. (line 257)
-* --profile option: Options. (line 278)
+* --optimize option: Options. (line 274)
+* --posix option: Options. (line 296)
+* --posix option, --traditional option and: Options. (line 311)
+* --pretty-print option: Options. (line 263)
+* --profile option: Options. (line 284)
* --profile option <1>: Profiling. (line 12)
-* --re-interval option: Options. (line 311)
-* --sandbox option: Options. (line 323)
+* --re-interval option: Options. (line 317)
+* --sandbox option: Options. (line 329)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
* --sandbox option, disabling system() function: I/O Functions.
(line 128)
* --source option: Options. (line 121)
+* --trace option: Options. (line 198)
* --traditional option: Options. (line 86)
-* --traditional option, --posix option and: Options. (line 305)
-* --use-lc-numeric option: Options. (line 252)
-* --version option: Options. (line 338)
+* --traditional option, --posix option and: Options. (line 311)
+* --use-lc-numeric option: Options. (line 258)
+* --version option: Options. (line 344)
* -b option: Options. (line 73)
* -c option: Options. (line 86)
* -C option: Options. (line 93)
@@ -34003,32 +34010,33 @@ Index
* -D option: Options. (line 112)
* -e option: Options. (line 121)
* -E option: Options. (line 147)
-* -e option <1>: Options. (line 378)
+* -e option <1>: Options. (line 384)
* -f option: Long. (line 12)
* -F option: Options. (line 21)
* -f option <1>: Options. (line 25)
-* -F option, -Ft sets FS to TAB: Options. (line 350)
-* -f option, multiple uses: Options. (line 355)
+* -F option, -Ft sets FS to TAB: Options. (line 356)
+* -f option, multiple uses: Options. (line 361)
* -F option, command-line: Command Line Field Separator.
(line 6)
* -g option: Options. (line 169)
* -h option: Options. (line 176)
* -i option: Options. (line 181)
-* -l option: Options. (line 198)
-* -l option <1>: Options. (line 210)
-* -L option: Options. (line 333)
-* -M option: Options. (line 237)
-* -n option: Options. (line 243)
-* -N option: Options. (line 252)
-* -o option: Options. (line 257)
-* -O option: Options. (line 268)
-* -p option: Options. (line 278)
-* -P option: Options. (line 290)
-* -r option: Options. (line 311)
-* -s option: Options. (line 318)
-* -S option: Options. (line 323)
+* -I option: Options. (line 198)
+* -l option: Options. (line 204)
+* -l option <1>: Options. (line 216)
+* -L option: Options. (line 339)
+* -M option: Options. (line 243)
+* -n option: Options. (line 249)
+* -N option: Options. (line 258)
+* -o option: Options. (line 263)
+* -O option: Options. (line 274)
+* -p option: Options. (line 284)
+* -P option: Options. (line 296)
+* -r option: Options. (line 317)
+* -s option: Options. (line 324)
+* -S option: Options. (line 329)
* -v option: Options. (line 36)
-* -V option: Options. (line 338)
+* -V option: Options. (line 344)
* -v option <1>: Assignment Options. (line 12)
* -W option: Options. (line 51)
* . (period), regexp operator: Regexp Operator Details.
@@ -34262,7 +34270,7 @@ Index
* arguments, command-line <1>: Auto-set. (line 15)
* arguments, command-line <2>: ARGC and ARGV. (line 6)
* arguments, processing: Getopt Function. (line 6)
-* ARGV array: Options. (line 323)
+* ARGV array: Options. (line 329)
* ARGV array, indexing into: Other Arguments. (line 21)
* arithmetic operators: Arithmetic Ops. (line 6)
* array manipulation in extensions: Array Manipulation. (line 6)
@@ -34386,7 +34394,7 @@ Index
* awk, uses for <1>: Getting Started. (line 12)
* awk, uses for <2>: When. (line 6)
* awk, invoking: Command Line. (line 6)
-* awk, profiling, enabling: Options. (line 278)
+* awk, profiling, enabling: Options. (line 284)
* awk, implementations, limits: Getline Notes. (line 14)
* awk, implementation issues, pipes: Redirection. (line 129)
* awk, new vs. old, OFMT variable: Strings And Numbers. (line 56)
@@ -34825,7 +34833,7 @@ Index
* cosine: Numeric Functions. (line 16)
* counting words, lines, and characters: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 45)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 399)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 405)
* csh utility, |& operator, comparison with: Two-way I/O. (line 27)
* ctime() user-defined function: Function Example. (line 74)
* Curreli, Marco: Contributors. (line 147)
@@ -35050,7 +35058,7 @@ Index
* debugging, example session: Sample Debugging Session.
(line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 302)
+* decimal point character, locale specific: Options. (line 308)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott: Acknowledgments. (line 60)
@@ -35237,7 +35245,7 @@ Index
* endpwent() user-defined function: Passwd Functions. (line 211)
* English, Steve: Advanced Features. (line 6)
* ENVIRON array: Auto-set. (line 59)
-* environment variables, POSIXLY_CORRECT: Options. (line 384)
+* environment variables, POSIXLY_CORRECT: Options. (line 390)
* environment variables, used by gawk: Environment Variables.
(line 6)
* environment variables, AWKPATH: AWKPATH Variable. (line 6)
@@ -35530,7 +35538,7 @@ Index
* Free Software Foundation (FSF) <3>: Glossary. (line 403)
* FreeBSD: Glossary. (line 747)
* FS variable, --field-separator option and: Options. (line 21)
-* FS variable, TAB character as: Options. (line 299)
+* FS variable, TAB character as: Options. (line 305)
* FS variable: Field Separators. (line 15)
* FS variable, changing value of: Field Separators. (line 34)
* FS variable, containing ^: Regexp Field Splitting.
@@ -35605,8 +35613,8 @@ Index
* gawk, uses for: Preface. (line 34)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, newlines in: Statements/Lines. (line 12)
-* gawk, extensions, disabling: Options. (line 290)
-* gawk, version of, printing information about: Options. (line 338)
+* gawk, extensions, disabling: Options. (line 296)
+* gawk, version of, printing information about: Options. (line 344)
* gawk, ARGIND variable in: Other Arguments. (line 21)
* gawk, PROCINFO array in: Other Arguments. (line 21)
* gawk, escape sequences: Escape Sequences. (line 121)
@@ -35810,13 +35818,13 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 67)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 243)
+* hexadecimal values, enabling interpretation of: Options. (line 249)
* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal, for dynamic profiling: Profiling. (line 211)
* hyphen (-), file names beginning with: Options. (line 64)
-* hyphen (-), -- end of options marker: Options. (line 343)
+* hyphen (-), -- end of options marker: Options. (line 349)
* hyphen (-), in bracket expressions: Bracket Expressions. (line 25)
* hyphen (-), -= operator: Assignment Ops. (line 129)
* hyphen (-), -- operator: Increment Ops. (line 48)
@@ -35900,6 +35908,7 @@ Index
* installing gawk, Cygwin: Cygwin. (line 21)
* installing gawk, VMS: VMS Installation. (line 6)
* instruction tracing, in debugger: Debugger Info. (line 90)
+* instructions, trace of internal: Options. (line 198)
* int: Numeric Functions. (line 24)
* INT signal (MS-Windows): Profiling. (line 214)
* integer array indices: Numeric Array Subscripts.
@@ -36035,9 +36044,9 @@ Index
* lines, counting: Wc Program. (line 6)
* lines, duplicate, removing: History Sorting. (line 6)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 210)
+* lint checking, issuing warnings: Options. (line 216)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 384)
+ (line 390)
* lint checking: User-modified. (line 90)
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
@@ -36050,13 +36059,13 @@ Index
* list function definitions, in debugger: Debugger Info. (line 30)
* @load directive: Loading Shared Libraries.
(line 8)
-* loading extensions: Options. (line 198)
+* loading extensions: Options. (line 204)
* loading extensions, @load directive: Loading Shared Libraries.
(line 8)
* local variables, in a function: Variable Scope. (line 6)
* local variables, show in debugger: Debugger Info. (line 34)
* locale categories: Explaining gettext. (line 81)
-* locale decimal point character: Options. (line 302)
+* locale decimal point character: Options. (line 308)
* locale, definition of: Locales. (line 6)
* log: Numeric Functions. (line 29)
* log files, timestamps in: Time Functions. (line 6)
@@ -36168,7 +36177,7 @@ Index
* networks, support for: Special Network. (line 6)
* networks, programming: TCP/IP Networking. (line 6)
* newlines: Statements/Lines. (line 6)
-* newlines <1>: Options. (line 296)
+* newlines <1>: Options. (line 302)
* newlines, in dynamic regexps: Computed Regexps. (line 60)
* newlines, in regexp constants: Computed Regexps. (line 70)
* newlines, as record separators: awk split records. (line 12)
@@ -36243,7 +36252,7 @@ Index
* o debugger command (alias for option): Debugger Info. (line 57)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 243)
+* octal values, enabling interpretation of: Options. (line 249)
* OFMT variable: OFMT. (line 15)
* OFMT variable, POSIX awk and: OFMT. (line 27)
* OFMT variable <1>: Strings And Numbers. (line 56)
@@ -36251,6 +36260,7 @@ Index
* OFS variable: Changing Fields. (line 64)
* OFS variable <1>: Output Separators. (line 6)
* OFS variable <2>: User-modified. (line 116)
+* op-codes, trace of internal: Options. (line 198)
* OpenBSD: Glossary. (line 747)
* OpenSolaris: Other Versions. (line 96)
* operating systems, BSD-based: Manual History. (line 28)
@@ -36374,7 +36384,7 @@ Index
* portability, #! (executable scripts): Executable Scripts. (line 29)
* portability, ARGV variable: Executable Scripts. (line 55)
* portability, backslash continuation and: Statements/Lines. (line 30)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 404)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 410)
* portability: Escape Sequences. (line 103)
* portability, backslash in escape sequences: Escape Sequences.
(line 108)
@@ -36450,8 +36460,8 @@ Index
* POSIX awk, date utility and: Time Functions. (line 255)
* POSIX awk, function keyword in: Definition Syntax. (line 99)
* POSIX awk, changes in awk versions: POSIX. (line 6)
-* POSIX mode: Options. (line 290)
-* POSIX mode <1>: Options. (line 384)
+* POSIX mode: Options. (line 296)
+* POSIX mode <1>: Options. (line 390)
* POSIX mode <2>: Regexp Operator Details.
(line 47)
* POSIX mode <3>: Input Summary. (line 69)
@@ -36471,7 +36481,7 @@ Index
* POSIX mode <12>: POSIX Floating Point Problems.
(line 83)
* POSIX mode <13>: Feature History. (line 313)
-* POSIXLY_CORRECT environment variable: Options. (line 384)
+* POSIXLY_CORRECT environment variable: Options. (line 390)
* PREC variable: User-modified. (line 127)
* precedence, regexp operators: Regexp Operator Details.
(line 137)
@@ -36483,7 +36493,7 @@ Index
* predefined variables, conveying information: Auto-set. (line 6)
* pretty printer, interaction with namespaces: Namespace And Features.
(line 9)
-* pretty printing: Options. (line 255)
+* pretty printing: Options. (line 261)
* pretty printing <1>: Profiling. (line 222)
* pretty printing, profiling, difference with: Profiling. (line 229)
* print debugger command: Viewing And Changing Data.
@@ -36647,7 +36657,7 @@ Index
* regexp constants, as patterns: Expression Patterns. (line 34)
* register loadable extension: Registration Functions.
(line 6)
-* regular expressions, interval expressions and: Options. (line 311)
+* regular expressions, interval expressions and: Options. (line 317)
* regular expressions: Regexp. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
* regular expressions, operators: Regexp Usage. (line 19)
@@ -36747,7 +36757,7 @@ Index
(line 68)
* sample debugging session: Sample Debugging Session.
(line 6)
-* sandbox mode: Options. (line 323)
+* sandbox mode: Options. (line 329)
* save debugger options: Debugger Info. (line 85)
* scalar or array: Type Functions. (line 11)
* scalar values: Basic Data Typing. (line 13)
@@ -37091,13 +37101,14 @@ Index
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
+* trace, internal instructions: Options. (line 198)
* traceback, display in debugger: Execution Stack. (line 13)
* translate string: I18N Functions. (line 21)
* translate.awk program: Translate Program. (line 55)
* treating files, as single records: gawk split records. (line 96)
* troubleshooting, typographical errors, global variables: Options.
(line 103)
-* troubleshooting, --non-decimal-data option: Options. (line 243)
+* troubleshooting, --non-decimal-data option: Options. (line 249)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
(line 108)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
@@ -37271,7 +37282,7 @@ Index
* Wall, Larry: Array Intro. (line 6)
* Wall, Larry <1>: Future Extensions. (line 6)
* Wallin, Anders: Contributors. (line 106)
-* warnings, issuing: Options. (line 210)
+* warnings, issuing: Options. (line 216)
* watch debugger command: Viewing And Changing Data.
(line 70)
* watchpoint (debugger): Debugging Terms. (line 42)
@@ -37284,7 +37295,7 @@ Index
(line 13)
* while statement, use of regexps in: Regexp Usage. (line 19)
* while statement: While Statement. (line 6)
-* whitespace, newlines as: Options. (line 296)
+* whitespace, newlines as: Options. (line 302)
* whitespace, definition of: Fields. (line 6)
* whitespace, as field separators: Default Field Splitting.
(line 6)
@@ -37358,560 +37369,560 @@ Node: Intro Summary116359
Node: Invoking Gawk117243
Node: Command Line118757
Node: Options119555
-Ref: Options-Footnote-1137224
-Ref: Options-Footnote-2137455
-Node: Other Arguments137480
-Node: Naming Standard Input140787
-Node: Environment Variables141997
-Node: AWKPATH Variable142555
-Ref: AWKPATH Variable-Footnote-1145967
-Ref: AWKPATH Variable-Footnote-2146001
-Node: AWKLIBPATH Variable146372
-Ref: AWKLIBPATH Variable-Footnote-1148069
-Node: Other Environment Variables148444
-Node: Exit Status152265
-Node: Include Files152942
-Node: Loading Shared Libraries156632
-Node: Obsolete158060
-Node: Undocumented158752
-Node: Invoking Summary159049
-Node: Regexp161890
-Node: Regexp Usage163344
-Node: Escape Sequences165381
-Node: Regexp Operators171622
-Node: Regexp Operator Details172107
-Ref: Regexp Operator Details-Footnote-1178539
-Node: Interval Expressions178686
-Ref: Interval Expressions-Footnote-1180107
-Node: Bracket Expressions180205
-Ref: table-char-classes182681
-Node: Leftmost Longest186007
-Node: Computed Regexps187310
-Node: GNU Regexp Operators190737
-Node: Case-sensitivity194474
-Ref: Case-sensitivity-Footnote-1197340
-Ref: Case-sensitivity-Footnote-2197575
-Node: Regexp Summary197683
-Node: Reading Files199149
-Node: Records201418
-Node: awk split records202493
-Node: gawk split records207768
-Ref: gawk split records-Footnote-1212501
-Node: Fields212538
-Node: Nonconstant Fields215279
-Ref: Nonconstant Fields-Footnote-1217515
-Node: Changing Fields217719
-Node: Field Separators223750
-Node: Default Field Splitting226448
-Node: Regexp Field Splitting227566
-Node: Single Character Fields230919
-Node: Command Line Field Separator231979
-Node: Full Line Fields235197
-Ref: Full Line Fields-Footnote-1236719
-Ref: Full Line Fields-Footnote-2236765
-Node: Field Splitting Summary236866
-Node: Constant Size238940
-Node: Fixed width data239672
-Node: Skipping intervening243139
-Node: Allowing trailing data243937
-Node: Fields with fixed data244974
-Node: Splitting By Content246492
-Ref: Splitting By Content-Footnote-1250275
-Node: More CSV250438
-Node: Testing field creation251748
-Node: Multiple Line253373
-Node: Getline259650
-Node: Plain Getline262119
-Node: Getline/Variable264692
-Node: Getline/File265843
-Node: Getline/Variable/File267231
-Ref: Getline/Variable/File-Footnote-1268836
-Node: Getline/Pipe268924
-Node: Getline/Variable/Pipe271628
-Node: Getline/Coprocess272763
-Node: Getline/Variable/Coprocess274030
-Node: Getline Notes274772
-Node: Getline Summary277569
-Ref: table-getline-variants277993
-Node: Read Timeout278741
-Ref: Read Timeout-Footnote-1282647
-Node: Retrying Input282705
-Node: Command-line directories283904
-Node: Input Summary284810
-Node: Input Exercises287982
-Node: Printing288416
-Node: Print290250
-Node: Print Examples291707
-Node: Output Separators294487
-Node: OFMT296504
-Node: Printf297860
-Node: Basic Printf298645
-Node: Control Letters300219
-Node: Format Modifiers305383
-Node: Printf Examples311398
-Node: Redirection313884
-Node: Special FD320725
-Ref: Special FD-Footnote-1323893
-Node: Special Files323967
-Node: Other Inherited Files324584
-Node: Special Network325585
-Node: Special Caveats326445
-Node: Close Files And Pipes327394
-Ref: table-close-pipe-return-values334301
-Ref: Close Files And Pipes-Footnote-1335114
-Ref: Close Files And Pipes-Footnote-2335262
-Node: Nonfatal335414
-Node: Output Summary337752
-Node: Output Exercises338974
-Node: Expressions339653
-Node: Values340841
-Node: Constants341519
-Node: Scalar Constants342210
-Ref: Scalar Constants-Footnote-1344734
-Node: Nondecimal-numbers344984
-Node: Regexp Constants347985
-Node: Using Constant Regexps348511
-Node: Standard Regexp Constants349133
-Node: Strong Regexp Constants352321
-Node: Variables355333
-Node: Using Variables355990
-Node: Assignment Options357900
-Node: Conversion360371
-Node: Strings And Numbers360895
-Ref: Strings And Numbers-Footnote-1363958
-Node: Locale influences conversions364067
-Ref: table-locale-affects366825
-Node: All Operators367443
-Node: Arithmetic Ops368072
-Node: Concatenation370578
-Ref: Concatenation-Footnote-1373425
-Node: Assignment Ops373532
-Ref: table-assign-ops378523
-Node: Increment Ops379836
-Node: Truth Values and Conditions383296
-Node: Truth Values384370
-Node: Typing and Comparison385418
-Node: Variable Typing386238
-Ref: Variable Typing-Footnote-1392701
-Ref: Variable Typing-Footnote-2392773
-Node: Comparison Operators392850
-Ref: table-relational-ops393269
-Node: POSIX String Comparison396764
-Ref: POSIX String Comparison-Footnote-1398459
-Ref: POSIX String Comparison-Footnote-2398598
-Node: Boolean Ops398682
-Ref: Boolean Ops-Footnote-1403164
-Node: Conditional Exp403256
-Node: Function Calls404992
-Node: Precedence408869
-Node: Locales412528
-Node: Expressions Summary414160
-Node: Patterns and Actions416733
-Node: Pattern Overview417853
-Node: Regexp Patterns419530
-Node: Expression Patterns420072
-Node: Ranges423853
-Node: BEGIN/END426961
-Node: Using BEGIN/END427722
-Ref: Using BEGIN/END-Footnote-1430458
-Node: I/O And BEGIN/END430564
-Node: BEGINFILE/ENDFILE432878
-Node: Empty435791
-Node: Using Shell Variables436108
-Node: Action Overview438382
-Node: Statements440707
-Node: If Statement442555
-Node: While Statement444050
-Node: Do Statement446078
-Node: For Statement447226
-Node: Switch Statement450397
-Node: Break Statement452838
-Node: Continue Statement454930
-Node: Next Statement456757
-Node: Nextfile Statement459140
-Node: Exit Statement461792
-Node: Built-in Variables464195
-Node: User-modified465328
-Node: Auto-set473095
-Ref: Auto-set-Footnote-1489902
-Ref: Auto-set-Footnote-2490108
-Node: ARGC and ARGV490164
-Node: Pattern Action Summary494377
-Node: Arrays496807
-Node: Array Basics498136
-Node: Array Intro498980
-Ref: figure-array-elements500955
-Ref: Array Intro-Footnote-1503659
-Node: Reference to Elements503787
-Node: Assigning Elements506251
-Node: Array Example506742
-Node: Scanning an Array508501
-Node: Controlling Scanning511523
-Ref: Controlling Scanning-Footnote-1517979
-Node: Numeric Array Subscripts518295
-Node: Uninitialized Subscripts520479
-Node: Delete522098
-Ref: Delete-Footnote-1524850
-Node: Multidimensional524907
-Node: Multiscanning528002
-Node: Arrays of Arrays529593
-Node: Arrays Summary534361
-Node: Functions536454
-Node: Built-in537492
-Node: Calling Built-in538573
-Node: Numeric Functions540569
-Ref: Numeric Functions-Footnote-1544597
-Ref: Numeric Functions-Footnote-2545245
-Ref: Numeric Functions-Footnote-3545293
-Node: String Functions545565
-Ref: String Functions-Footnote-1569722
-Ref: String Functions-Footnote-2569850
-Ref: String Functions-Footnote-3570098
-Node: Gory Details570185
-Ref: table-sub-escapes571976
-Ref: table-sub-proposed573495
-Ref: table-posix-sub574858
-Ref: table-gensub-escapes576399
-Ref: Gory Details-Footnote-1577222
-Node: I/O Functions577376
-Ref: table-system-return-values583844
-Ref: I/O Functions-Footnote-1585924
-Ref: I/O Functions-Footnote-2586072
-Node: Time Functions586192
-Ref: Time Functions-Footnote-1596863
-Ref: Time Functions-Footnote-2596931
-Ref: Time Functions-Footnote-3597089
-Ref: Time Functions-Footnote-4597200
-Ref: Time Functions-Footnote-5597312
-Ref: Time Functions-Footnote-6597539
-Node: Bitwise Functions597805
-Ref: table-bitwise-ops598399
-Ref: Bitwise Functions-Footnote-1604462
-Ref: Bitwise Functions-Footnote-2604635
-Node: Type Functions604826
-Node: I18N Functions607689
-Node: User-defined609340
-Node: Definition Syntax610152
-Ref: Definition Syntax-Footnote-1615839
-Node: Function Example615910
-Ref: Function Example-Footnote-1618832
-Node: Function Calling618854
-Node: Calling A Function619442
-Node: Variable Scope620400
-Node: Pass By Value/Reference623394
-Node: Function Caveats626038
-Ref: Function Caveats-Footnote-1628085
-Node: Return Statement628205
-Node: Dynamic Typing631184
-Node: Indirect Calls632114
-Ref: Indirect Calls-Footnote-1642366
-Node: Functions Summary642494
-Node: Library Functions645199
-Ref: Library Functions-Footnote-1648806
-Ref: Library Functions-Footnote-2648949
-Node: Library Names649120
-Ref: Library Names-Footnote-1652787
-Ref: Library Names-Footnote-2653010
-Node: General Functions653096
-Node: Strtonum Function654199
-Node: Assert Function657221
-Node: Round Function660547
-Node: Cliff Random Function662087
-Node: Ordinal Functions663103
-Ref: Ordinal Functions-Footnote-1666166
-Ref: Ordinal Functions-Footnote-2666418
-Node: Join Function666628
-Ref: Join Function-Footnote-1668398
-Node: Getlocaltime Function668598
-Node: Readfile Function672340
-Node: Shell Quoting674317
-Node: Data File Management675718
-Node: Filetrans Function676350
-Node: Rewind Function680446
-Node: File Checking682355
-Ref: File Checking-Footnote-1683689
-Node: Empty Files683890
-Node: Ignoring Assigns685869
-Node: Getopt Function687419
-Ref: Getopt Function-Footnote-1702631
-Node: Passwd Functions702831
-Ref: Passwd Functions-Footnote-1711670
-Node: Group Functions711758
-Ref: Group Functions-Footnote-1719656
-Node: Walking Arrays719863
-Node: Library Functions Summary722871
-Node: Library Exercises724277
-Node: Sample Programs724742
-Node: Running Examples725512
-Node: Clones726240
-Node: Cut Program727464
-Node: Egrep Program737393
-Ref: Egrep Program-Footnote-1744905
-Node: Id Program745015
-Node: Split Program748695
-Ref: Split Program-Footnote-1752153
-Node: Tee Program752282
-Node: Uniq Program755072
-Node: Wc Program762693
-Ref: Wc Program-Footnote-1766948
-Node: Miscellaneous Programs767042
-Node: Dupword Program768255
-Node: Alarm Program770285
-Node: Translate Program775140
-Ref: Translate Program-Footnote-1779705
-Node: Labels Program779975
-Ref: Labels Program-Footnote-1783326
-Node: Word Sorting783410
-Node: History Sorting787482
-Node: Extract Program789707
-Node: Simple Sed797761
-Node: Igawk Program800835
-Ref: Igawk Program-Footnote-1815166
-Ref: Igawk Program-Footnote-2815368
-Ref: Igawk Program-Footnote-3815490
-Node: Anagram Program815605
-Node: Signature Program818667
-Node: Programs Summary819914
-Node: Programs Exercises821128
-Ref: Programs Exercises-Footnote-1825257
-Node: Advanced Features825348
-Node: Nondecimal Data827338
-Node: Array Sorting828929
-Node: Controlling Array Traversal829629
-Ref: Controlling Array Traversal-Footnote-1837997
-Node: Array Sorting Functions838115
-Ref: Array Sorting Functions-Footnote-1843206
-Node: Two-way I/O843402
-Ref: Two-way I/O-Footnote-1851123
-Ref: Two-way I/O-Footnote-2851310
-Node: TCP/IP Networking851392
-Node: Profiling854510
-Node: Advanced Features Summary863525
-Node: Internationalization865369
-Node: I18N and L10N866849
-Node: Explaining gettext867536
-Ref: Explaining gettext-Footnote-1873428
-Ref: Explaining gettext-Footnote-2873613
-Node: Programmer i18n873778
-Ref: Programmer i18n-Footnote-1878727
-Node: Translator i18n878776
-Node: String Extraction879570
-Ref: String Extraction-Footnote-1880702
-Node: Printf Ordering880788
-Ref: Printf Ordering-Footnote-1883574
-Node: I18N Portability883638
-Ref: I18N Portability-Footnote-1886094
-Node: I18N Example886157
-Ref: I18N Example-Footnote-1889432
-Ref: I18N Example-Footnote-2889505
-Node: Gawk I18N889614
-Node: I18N Summary890263
-Node: Debugger891604
-Node: Debugging892604
-Node: Debugging Concepts893045
-Node: Debugging Terms894854
-Node: Awk Debugging897429
-Ref: Awk Debugging-Footnote-1898374
-Node: Sample Debugging Session898506
-Node: Debugger Invocation899040
-Node: Finding The Bug900426
-Node: List of Debugger Commands906900
-Node: Breakpoint Control908233
-Node: Debugger Execution Control911927
-Node: Viewing And Changing Data915289
-Node: Execution Stack918830
-Node: Debugger Info920467
-Node: Miscellaneous Debugger Commands924538
-Node: Readline Support929600
-Node: Limitations930496
-Node: Debugging Summary933050
-Node: Namespaces934329
-Node: Global Namespace935440
-Node: Qualified Names936838
-Node: Default Namespace937837
-Node: Changing The Namespace938578
-Node: Naming Rules940192
-Node: Internal Name Management942040
-Node: Namespace Example943082
-Node: Namespace And Features945644
-Node: Namespace Summary947079
-Node: Arbitrary Precision Arithmetic948556
-Node: Computer Arithmetic950043
-Ref: table-numeric-ranges953809
-Ref: table-floating-point-ranges954302
-Ref: Computer Arithmetic-Footnote-1954960
-Node: Math Definitions955017
-Ref: table-ieee-formats958333
-Ref: Math Definitions-Footnote-1958936
-Node: MPFR features959041
-Node: FP Math Caution960759
-Ref: FP Math Caution-Footnote-1961831
-Node: Inexactness of computations962200
-Node: Inexact representation963160
-Node: Comparing FP Values964520
-Node: Errors accumulate965761
-Node: Getting Accuracy967194
-Node: Try To Round969904
-Node: Setting precision970803
-Ref: table-predefined-precision-strings971500
-Node: Setting the rounding mode973330
-Ref: table-gawk-rounding-modes973704
-Ref: Setting the rounding mode-Footnote-1977635
-Node: Arbitrary Precision Integers977814
-Ref: Arbitrary Precision Integers-Footnote-1980989
-Node: Checking for MPFR981138
-Node: POSIX Floating Point Problems982612
-Ref: POSIX Floating Point Problems-Footnote-1986897
-Node: Floating point summary986935
-Node: Dynamic Extensions989125
-Node: Extension Intro990678
-Node: Plugin License991944
-Node: Extension Mechanism Outline992741
-Ref: figure-load-extension993180
-Ref: figure-register-new-function994745
-Ref: figure-call-new-function995837
-Node: Extension API Description997899
-Node: Extension API Functions Introduction999541
-Ref: table-api-std-headers1001377
-Node: General Data Types1005242
-Ref: General Data Types-Footnote-11013603
-Node: Memory Allocation Functions1013902
-Ref: Memory Allocation Functions-Footnote-11018112
-Node: Constructor Functions1018211
-Node: Registration Functions1021797
-Node: Extension Functions1022482
-Node: Exit Callback Functions1027804
-Node: Extension Version String1029054
-Node: Input Parsers1029717
-Node: Output Wrappers1042438
-Node: Two-way processors1046950
-Node: Printing Messages1049215
-Ref: Printing Messages-Footnote-11050386
-Node: Updating ERRNO1050539
-Node: Requesting Values1051278
-Ref: table-value-types-returned1052015
-Node: Accessing Parameters1052951
-Node: Symbol Table Access1054186
-Node: Symbol table by name1054698
-Ref: Symbol table by name-Footnote-11057722
-Node: Symbol table by cookie1057850
-Ref: Symbol table by cookie-Footnote-11062035
-Node: Cached values1062099
-Ref: Cached values-Footnote-11065635
-Node: Array Manipulation1065788
-Ref: Array Manipulation-Footnote-11066879
-Node: Array Data Types1066916
-Ref: Array Data Types-Footnote-11069574
-Node: Array Functions1069666
-Node: Flattening Arrays1074164
-Node: Creating Arrays1081140
-Node: Redirection API1085907
-Node: Extension API Variables1088740
-Node: Extension Versioning1089451
-Ref: gawk-api-version1089880
-Node: Extension GMP/MPFR Versioning1091611
-Node: Extension API Informational Variables1093239
-Node: Extension API Boilerplate1094312
-Node: Changes from API V11098286
-Node: Finding Extensions1099858
-Node: Extension Example1100417
-Node: Internal File Description1101215
-Node: Internal File Ops1105295
-Ref: Internal File Ops-Footnote-11116645
-Node: Using Internal File Ops1116785
-Ref: Using Internal File Ops-Footnote-11119168
-Node: Extension Samples1119442
-Node: Extension Sample File Functions1120971
-Node: Extension Sample Fnmatch1128620
-Node: Extension Sample Fork1130107
-Node: Extension Sample Inplace1131325
-Node: Extension Sample Ord1134950
-Node: Extension Sample Readdir1135786
-Ref: table-readdir-file-types1136675
-Node: Extension Sample Revout1137742
-Node: Extension Sample Rev2way1138331
-Node: Extension Sample Read write array1139071
-Node: Extension Sample Readfile1141013
-Node: Extension Sample Time1142108
-Node: Extension Sample API Tests1143860
-Node: gawkextlib1144352
-Node: Extension summary1147270
-Node: Extension Exercises1150972
-Node: Language History1152214
-Node: V7/SVR3.11153870
-Node: SVR41156022
-Node: POSIX1157456
-Node: BTL1158837
-Node: POSIX/GNU1159566
-Node: Feature History1165344
-Node: Common Extensions1181663
-Node: Ranges and Locales1182946
-Ref: Ranges and Locales-Footnote-11187562
-Ref: Ranges and Locales-Footnote-21187589
-Ref: Ranges and Locales-Footnote-31187824
-Node: Contributors1188047
-Node: History summary1194044
-Node: Installation1195424
-Node: Gawk Distribution1196368
-Node: Getting1196852
-Node: Extracting1197815
-Node: Distribution contents1199453
-Node: Unix Installation1205933
-Node: Quick Installation1206615
-Node: Shell Startup Files1209029
-Node: Additional Configuration Options1210118
-Node: Configuration Philosophy1212433
-Node: Non-Unix Installation1214802
-Node: PC Installation1215262
-Node: PC Binary Installation1216100
-Node: PC Compiling1216535
-Node: PC Using1217652
-Node: Cygwin1221205
-Node: MSYS1222429
-Node: VMS Installation1223031
-Node: VMS Compilation1223822
-Ref: VMS Compilation-Footnote-11225051
-Node: VMS Dynamic Extensions1225109
-Node: VMS Installation Details1226794
-Node: VMS Running1229047
-Node: VMS GNV1233326
-Node: VMS Old Gawk1234061
-Node: Bugs1234532
-Node: Bug address1235195
-Node: Usenet1238177
-Node: Maintainers1239181
-Node: Other Versions1240366
-Node: Installation summary1247454
-Node: Notes1248663
-Node: Compatibility Mode1249457
-Node: Additions1250239
-Node: Accessing The Source1251164
-Node: Adding Code1252601
-Node: New Ports1258820
-Node: Derived Files1263195
-Ref: Derived Files-Footnote-11268855
-Ref: Derived Files-Footnote-21268890
-Ref: Derived Files-Footnote-31269488
-Node: Future Extensions1269602
-Node: Implementation Limitations1270260
-Node: Extension Design1271470
-Node: Old Extension Problems1272614
-Ref: Old Extension Problems-Footnote-11274132
-Node: Extension New Mechanism Goals1274189
-Ref: Extension New Mechanism Goals-Footnote-11277553
-Node: Extension Other Design Decisions1277742
-Node: Extension Future Growth1279855
-Node: Notes summary1280461
-Node: Basic Concepts1281619
-Node: Basic High Level1282300
-Ref: figure-general-flow1282582
-Ref: figure-process-flow1283267
-Ref: Basic High Level-Footnote-11286568
-Node: Basic Data Typing1286753
-Node: Glossary1290081
-Node: Copying1321966
-Node: GNU Free Documentation License1359509
-Node: Index1384629
+Ref: Options-Footnote-1137435
+Ref: Options-Footnote-2137666
+Node: Other Arguments137691
+Node: Naming Standard Input140998
+Node: Environment Variables142208
+Node: AWKPATH Variable142766
+Ref: AWKPATH Variable-Footnote-1146178
+Ref: AWKPATH Variable-Footnote-2146212
+Node: AWKLIBPATH Variable146583
+Ref: AWKLIBPATH Variable-Footnote-1148280
+Node: Other Environment Variables148655
+Node: Exit Status152476
+Node: Include Files153153
+Node: Loading Shared Libraries156843
+Node: Obsolete158271
+Node: Undocumented158963
+Node: Invoking Summary159260
+Node: Regexp162101
+Node: Regexp Usage163555
+Node: Escape Sequences165592
+Node: Regexp Operators171833
+Node: Regexp Operator Details172318
+Ref: Regexp Operator Details-Footnote-1178750
+Node: Interval Expressions178897
+Ref: Interval Expressions-Footnote-1180318
+Node: Bracket Expressions180416
+Ref: table-char-classes182892
+Node: Leftmost Longest186218
+Node: Computed Regexps187521
+Node: GNU Regexp Operators190948
+Node: Case-sensitivity194685
+Ref: Case-sensitivity-Footnote-1197551
+Ref: Case-sensitivity-Footnote-2197786
+Node: Regexp Summary197894
+Node: Reading Files199360
+Node: Records201629
+Node: awk split records202704
+Node: gawk split records207979
+Ref: gawk split records-Footnote-1212712
+Node: Fields212749
+Node: Nonconstant Fields215490
+Ref: Nonconstant Fields-Footnote-1217726
+Node: Changing Fields217930
+Node: Field Separators223961
+Node: Default Field Splitting226659
+Node: Regexp Field Splitting227777
+Node: Single Character Fields231130
+Node: Command Line Field Separator232190
+Node: Full Line Fields235408
+Ref: Full Line Fields-Footnote-1236930
+Ref: Full Line Fields-Footnote-2236976
+Node: Field Splitting Summary237077
+Node: Constant Size239151
+Node: Fixed width data239883
+Node: Skipping intervening243350
+Node: Allowing trailing data244148
+Node: Fields with fixed data245185
+Node: Splitting By Content246703
+Ref: Splitting By Content-Footnote-1250486
+Node: More CSV250649
+Node: Testing field creation251959
+Node: Multiple Line253584
+Node: Getline259861
+Node: Plain Getline262330
+Node: Getline/Variable264903
+Node: Getline/File266054
+Node: Getline/Variable/File267442
+Ref: Getline/Variable/File-Footnote-1269047
+Node: Getline/Pipe269135
+Node: Getline/Variable/Pipe271839
+Node: Getline/Coprocess272974
+Node: Getline/Variable/Coprocess274241
+Node: Getline Notes274983
+Node: Getline Summary277780
+Ref: table-getline-variants278204
+Node: Read Timeout278952
+Ref: Read Timeout-Footnote-1282858
+Node: Retrying Input282916
+Node: Command-line directories284115
+Node: Input Summary285021
+Node: Input Exercises288193
+Node: Printing288627
+Node: Print290461
+Node: Print Examples291918
+Node: Output Separators294698
+Node: OFMT296715
+Node: Printf298071
+Node: Basic Printf298856
+Node: Control Letters300430
+Node: Format Modifiers305594
+Node: Printf Examples311609
+Node: Redirection314095
+Node: Special FD320936
+Ref: Special FD-Footnote-1324104
+Node: Special Files324178
+Node: Other Inherited Files324795
+Node: Special Network325796
+Node: Special Caveats326656
+Node: Close Files And Pipes327605
+Ref: table-close-pipe-return-values334512
+Ref: Close Files And Pipes-Footnote-1335325
+Ref: Close Files And Pipes-Footnote-2335473
+Node: Nonfatal335625
+Node: Output Summary337963
+Node: Output Exercises339185
+Node: Expressions339864
+Node: Values341052
+Node: Constants341730
+Node: Scalar Constants342421
+Ref: Scalar Constants-Footnote-1344945
+Node: Nondecimal-numbers345195
+Node: Regexp Constants348196
+Node: Using Constant Regexps348722
+Node: Standard Regexp Constants349344
+Node: Strong Regexp Constants352532
+Node: Variables355544
+Node: Using Variables356201
+Node: Assignment Options358111
+Node: Conversion360582
+Node: Strings And Numbers361106
+Ref: Strings And Numbers-Footnote-1364169
+Node: Locale influences conversions364278
+Ref: table-locale-affects367036
+Node: All Operators367654
+Node: Arithmetic Ops368283
+Node: Concatenation370789
+Ref: Concatenation-Footnote-1373636
+Node: Assignment Ops373743
+Ref: table-assign-ops378734
+Node: Increment Ops380047
+Node: Truth Values and Conditions383507
+Node: Truth Values384581
+Node: Typing and Comparison385629
+Node: Variable Typing386449
+Ref: Variable Typing-Footnote-1392912
+Ref: Variable Typing-Footnote-2392984
+Node: Comparison Operators393061
+Ref: table-relational-ops393480
+Node: POSIX String Comparison396975
+Ref: POSIX String Comparison-Footnote-1398670
+Ref: POSIX String Comparison-Footnote-2398809
+Node: Boolean Ops398893
+Ref: Boolean Ops-Footnote-1403375
+Node: Conditional Exp403467
+Node: Function Calls405203
+Node: Precedence409080
+Node: Locales412739
+Node: Expressions Summary414371
+Node: Patterns and Actions416944
+Node: Pattern Overview418064
+Node: Regexp Patterns419741
+Node: Expression Patterns420283
+Node: Ranges424064
+Node: BEGIN/END427172
+Node: Using BEGIN/END427933
+Ref: Using BEGIN/END-Footnote-1430669
+Node: I/O And BEGIN/END430775
+Node: BEGINFILE/ENDFILE433089
+Node: Empty436002
+Node: Using Shell Variables436319
+Node: Action Overview438593
+Node: Statements440918
+Node: If Statement442766
+Node: While Statement444261
+Node: Do Statement446289
+Node: For Statement447437
+Node: Switch Statement450608
+Node: Break Statement453049
+Node: Continue Statement455141
+Node: Next Statement456968
+Node: Nextfile Statement459351
+Node: Exit Statement462003
+Node: Built-in Variables464406
+Node: User-modified465539
+Node: Auto-set473306
+Ref: Auto-set-Footnote-1490113
+Ref: Auto-set-Footnote-2490319
+Node: ARGC and ARGV490375
+Node: Pattern Action Summary494588
+Node: Arrays497018
+Node: Array Basics498347
+Node: Array Intro499191
+Ref: figure-array-elements501166
+Ref: Array Intro-Footnote-1503870
+Node: Reference to Elements503998
+Node: Assigning Elements506462
+Node: Array Example506953
+Node: Scanning an Array508712
+Node: Controlling Scanning511734
+Ref: Controlling Scanning-Footnote-1518190
+Node: Numeric Array Subscripts518506
+Node: Uninitialized Subscripts520690
+Node: Delete522309
+Ref: Delete-Footnote-1525061
+Node: Multidimensional525118
+Node: Multiscanning528213
+Node: Arrays of Arrays529804
+Node: Arrays Summary534572
+Node: Functions536665
+Node: Built-in537703
+Node: Calling Built-in538784
+Node: Numeric Functions540780
+Ref: Numeric Functions-Footnote-1544808
+Ref: Numeric Functions-Footnote-2545456
+Ref: Numeric Functions-Footnote-3545504
+Node: String Functions545776
+Ref: String Functions-Footnote-1569933
+Ref: String Functions-Footnote-2570061
+Ref: String Functions-Footnote-3570309
+Node: Gory Details570396
+Ref: table-sub-escapes572187
+Ref: table-sub-proposed573706
+Ref: table-posix-sub575069
+Ref: table-gensub-escapes576610
+Ref: Gory Details-Footnote-1577433
+Node: I/O Functions577587
+Ref: table-system-return-values584055
+Ref: I/O Functions-Footnote-1586135
+Ref: I/O Functions-Footnote-2586283
+Node: Time Functions586403
+Ref: Time Functions-Footnote-1597074
+Ref: Time Functions-Footnote-2597142
+Ref: Time Functions-Footnote-3597300
+Ref: Time Functions-Footnote-4597411
+Ref: Time Functions-Footnote-5597523
+Ref: Time Functions-Footnote-6597750
+Node: Bitwise Functions598016
+Ref: table-bitwise-ops598610
+Ref: Bitwise Functions-Footnote-1604673
+Ref: Bitwise Functions-Footnote-2604846
+Node: Type Functions605037
+Node: I18N Functions607900
+Node: User-defined609551
+Node: Definition Syntax610363
+Ref: Definition Syntax-Footnote-1616050
+Node: Function Example616121
+Ref: Function Example-Footnote-1619043
+Node: Function Calling619065
+Node: Calling A Function619653
+Node: Variable Scope620611
+Node: Pass By Value/Reference623605
+Node: Function Caveats626249
+Ref: Function Caveats-Footnote-1628296
+Node: Return Statement628416
+Node: Dynamic Typing631395
+Node: Indirect Calls632325
+Ref: Indirect Calls-Footnote-1642577
+Node: Functions Summary642705
+Node: Library Functions645410
+Ref: Library Functions-Footnote-1649017
+Ref: Library Functions-Footnote-2649160
+Node: Library Names649331
+Ref: Library Names-Footnote-1652998
+Ref: Library Names-Footnote-2653221
+Node: General Functions653307
+Node: Strtonum Function654410
+Node: Assert Function657432
+Node: Round Function660758
+Node: Cliff Random Function662298
+Node: Ordinal Functions663314
+Ref: Ordinal Functions-Footnote-1666377
+Ref: Ordinal Functions-Footnote-2666629
+Node: Join Function666839
+Ref: Join Function-Footnote-1668609
+Node: Getlocaltime Function668809
+Node: Readfile Function672551
+Node: Shell Quoting674528
+Node: Data File Management675929
+Node: Filetrans Function676561
+Node: Rewind Function680657
+Node: File Checking682566
+Ref: File Checking-Footnote-1683900
+Node: Empty Files684101
+Node: Ignoring Assigns686080
+Node: Getopt Function687630
+Ref: Getopt Function-Footnote-1702842
+Node: Passwd Functions703042
+Ref: Passwd Functions-Footnote-1711881
+Node: Group Functions711969
+Ref: Group Functions-Footnote-1719867
+Node: Walking Arrays720074
+Node: Library Functions Summary723082
+Node: Library Exercises724488
+Node: Sample Programs724953
+Node: Running Examples725723
+Node: Clones726451
+Node: Cut Program727675
+Node: Egrep Program737604
+Ref: Egrep Program-Footnote-1745116
+Node: Id Program745226
+Node: Split Program748906
+Ref: Split Program-Footnote-1752364
+Node: Tee Program752493
+Node: Uniq Program755283
+Node: Wc Program762904
+Ref: Wc Program-Footnote-1767159
+Node: Miscellaneous Programs767253
+Node: Dupword Program768466
+Node: Alarm Program770496
+Node: Translate Program775351
+Ref: Translate Program-Footnote-1779916
+Node: Labels Program780186
+Ref: Labels Program-Footnote-1783537
+Node: Word Sorting783621
+Node: History Sorting787693
+Node: Extract Program789918
+Node: Simple Sed797972
+Node: Igawk Program801046
+Ref: Igawk Program-Footnote-1815377
+Ref: Igawk Program-Footnote-2815579
+Ref: Igawk Program-Footnote-3815701
+Node: Anagram Program815816
+Node: Signature Program818878
+Node: Programs Summary820125
+Node: Programs Exercises821339
+Ref: Programs Exercises-Footnote-1825468
+Node: Advanced Features825559
+Node: Nondecimal Data827549
+Node: Array Sorting829140
+Node: Controlling Array Traversal829840
+Ref: Controlling Array Traversal-Footnote-1838208
+Node: Array Sorting Functions838326
+Ref: Array Sorting Functions-Footnote-1843417
+Node: Two-way I/O843613
+Ref: Two-way I/O-Footnote-1851334
+Ref: Two-way I/O-Footnote-2851521
+Node: TCP/IP Networking851603
+Node: Profiling854721
+Node: Advanced Features Summary863736
+Node: Internationalization865580
+Node: I18N and L10N867060
+Node: Explaining gettext867747
+Ref: Explaining gettext-Footnote-1873639
+Ref: Explaining gettext-Footnote-2873824
+Node: Programmer i18n873989
+Ref: Programmer i18n-Footnote-1878938
+Node: Translator i18n878987
+Node: String Extraction879781
+Ref: String Extraction-Footnote-1880913
+Node: Printf Ordering880999
+Ref: Printf Ordering-Footnote-1883785
+Node: I18N Portability883849
+Ref: I18N Portability-Footnote-1886305
+Node: I18N Example886368
+Ref: I18N Example-Footnote-1889643
+Ref: I18N Example-Footnote-2889716
+Node: Gawk I18N889825
+Node: I18N Summary890474
+Node: Debugger891815
+Node: Debugging892815
+Node: Debugging Concepts893256
+Node: Debugging Terms895065
+Node: Awk Debugging897640
+Ref: Awk Debugging-Footnote-1898585
+Node: Sample Debugging Session898717
+Node: Debugger Invocation899251
+Node: Finding The Bug900637
+Node: List of Debugger Commands907111
+Node: Breakpoint Control908444
+Node: Debugger Execution Control912138
+Node: Viewing And Changing Data915500
+Node: Execution Stack919041
+Node: Debugger Info920678
+Node: Miscellaneous Debugger Commands924749
+Node: Readline Support929811
+Node: Limitations930707
+Node: Debugging Summary933261
+Node: Namespaces934540
+Node: Global Namespace935651
+Node: Qualified Names937049
+Node: Default Namespace938048
+Node: Changing The Namespace938789
+Node: Naming Rules940403
+Node: Internal Name Management942251
+Node: Namespace Example943293
+Node: Namespace And Features945855
+Node: Namespace Summary947290
+Node: Arbitrary Precision Arithmetic948767
+Node: Computer Arithmetic950254
+Ref: table-numeric-ranges954020
+Ref: table-floating-point-ranges954513
+Ref: Computer Arithmetic-Footnote-1955171
+Node: Math Definitions955228
+Ref: table-ieee-formats958544
+Ref: Math Definitions-Footnote-1959147
+Node: MPFR features959252
+Node: FP Math Caution960970
+Ref: FP Math Caution-Footnote-1962042
+Node: Inexactness of computations962411
+Node: Inexact representation963371
+Node: Comparing FP Values964731
+Node: Errors accumulate965972
+Node: Getting Accuracy967405
+Node: Try To Round970115
+Node: Setting precision971014
+Ref: table-predefined-precision-strings971711
+Node: Setting the rounding mode973541
+Ref: table-gawk-rounding-modes973915
+Ref: Setting the rounding mode-Footnote-1977846
+Node: Arbitrary Precision Integers978025
+Ref: Arbitrary Precision Integers-Footnote-1981200
+Node: Checking for MPFR981349
+Node: POSIX Floating Point Problems982823
+Ref: POSIX Floating Point Problems-Footnote-1987108
+Node: Floating point summary987146
+Node: Dynamic Extensions989336
+Node: Extension Intro990889
+Node: Plugin License992155
+Node: Extension Mechanism Outline992952
+Ref: figure-load-extension993391
+Ref: figure-register-new-function994956
+Ref: figure-call-new-function996048
+Node: Extension API Description998110
+Node: Extension API Functions Introduction999752
+Ref: table-api-std-headers1001588
+Node: General Data Types1005453
+Ref: General Data Types-Footnote-11013814
+Node: Memory Allocation Functions1014113
+Ref: Memory Allocation Functions-Footnote-11018323
+Node: Constructor Functions1018422
+Node: Registration Functions1022008
+Node: Extension Functions1022693
+Node: Exit Callback Functions1028015
+Node: Extension Version String1029265
+Node: Input Parsers1029928
+Node: Output Wrappers1042649
+Node: Two-way processors1047161
+Node: Printing Messages1049426
+Ref: Printing Messages-Footnote-11050597
+Node: Updating ERRNO1050750
+Node: Requesting Values1051489
+Ref: table-value-types-returned1052226
+Node: Accessing Parameters1053162
+Node: Symbol Table Access1054397
+Node: Symbol table by name1054909
+Ref: Symbol table by name-Footnote-11057933
+Node: Symbol table by cookie1058061
+Ref: Symbol table by cookie-Footnote-11062246
+Node: Cached values1062310
+Ref: Cached values-Footnote-11065846
+Node: Array Manipulation1065999
+Ref: Array Manipulation-Footnote-11067090
+Node: Array Data Types1067127
+Ref: Array Data Types-Footnote-11069785
+Node: Array Functions1069877
+Node: Flattening Arrays1074375
+Node: Creating Arrays1081351
+Node: Redirection API1086118
+Node: Extension API Variables1088951
+Node: Extension Versioning1089662
+Ref: gawk-api-version1090091
+Node: Extension GMP/MPFR Versioning1091822
+Node: Extension API Informational Variables1093450
+Node: Extension API Boilerplate1094523
+Node: Changes from API V11098497
+Node: Finding Extensions1100069
+Node: Extension Example1100628
+Node: Internal File Description1101426
+Node: Internal File Ops1105506
+Ref: Internal File Ops-Footnote-11116856
+Node: Using Internal File Ops1116996
+Ref: Using Internal File Ops-Footnote-11119379
+Node: Extension Samples1119653
+Node: Extension Sample File Functions1121182
+Node: Extension Sample Fnmatch1128831
+Node: Extension Sample Fork1130318
+Node: Extension Sample Inplace1131536
+Node: Extension Sample Ord1135161
+Node: Extension Sample Readdir1135997
+Ref: table-readdir-file-types1136886
+Node: Extension Sample Revout1137953
+Node: Extension Sample Rev2way1138542
+Node: Extension Sample Read write array1139282
+Node: Extension Sample Readfile1141224
+Node: Extension Sample Time1142319
+Node: Extension Sample API Tests1144071
+Node: gawkextlib1144563
+Node: Extension summary1147481
+Node: Extension Exercises1151183
+Node: Language History1152425
+Node: V7/SVR3.11154081
+Node: SVR41156233
+Node: POSIX1157667
+Node: BTL1159048
+Node: POSIX/GNU1159777
+Node: Feature History1165555
+Node: Common Extensions1181874
+Node: Ranges and Locales1183157
+Ref: Ranges and Locales-Footnote-11187773
+Ref: Ranges and Locales-Footnote-21187800
+Ref: Ranges and Locales-Footnote-31188035
+Node: Contributors1188258
+Node: History summary1194255
+Node: Installation1195635
+Node: Gawk Distribution1196579
+Node: Getting1197063
+Node: Extracting1198026
+Node: Distribution contents1199664
+Node: Unix Installation1206144
+Node: Quick Installation1206826
+Node: Shell Startup Files1209240
+Node: Additional Configuration Options1210329
+Node: Configuration Philosophy1212644
+Node: Non-Unix Installation1215013
+Node: PC Installation1215473
+Node: PC Binary Installation1216311
+Node: PC Compiling1216746
+Node: PC Using1217863
+Node: Cygwin1221416
+Node: MSYS1222640
+Node: VMS Installation1223242
+Node: VMS Compilation1224033
+Ref: VMS Compilation-Footnote-11225262
+Node: VMS Dynamic Extensions1225320
+Node: VMS Installation Details1227005
+Node: VMS Running1229258
+Node: VMS GNV1233537
+Node: VMS Old Gawk1234272
+Node: Bugs1234743
+Node: Bug address1235406
+Node: Usenet1238388
+Node: Maintainers1239392
+Node: Other Versions1240577
+Node: Installation summary1247665
+Node: Notes1248874
+Node: Compatibility Mode1249668
+Node: Additions1250450
+Node: Accessing The Source1251375
+Node: Adding Code1252812
+Node: New Ports1259031
+Node: Derived Files1263406
+Ref: Derived Files-Footnote-11269066
+Ref: Derived Files-Footnote-21269101
+Ref: Derived Files-Footnote-31269699
+Node: Future Extensions1269813
+Node: Implementation Limitations1270471
+Node: Extension Design1271681
+Node: Old Extension Problems1272825
+Ref: Old Extension Problems-Footnote-11274343
+Node: Extension New Mechanism Goals1274400
+Ref: Extension New Mechanism Goals-Footnote-11277764
+Node: Extension Other Design Decisions1277953
+Node: Extension Future Growth1280066
+Node: Notes summary1280672
+Node: Basic Concepts1281830
+Node: Basic High Level1282511
+Ref: figure-general-flow1282793
+Ref: figure-process-flow1283478
+Ref: Basic High Level-Footnote-11286779
+Node: Basic Data Typing1286964
+Node: Glossary1290292
+Node: Copying1322177
+Node: GNU Free Documentation License1359720
+Node: Index1384840

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d211a910..577a114c 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4094,6 +4094,18 @@ or on the command line.
Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"}
at their beginning. @xref{Changing The Namespace}, for more information.
+@item @option{-I}
+@itemx @option{--trace}
+@cindex @option{-I} option
+@cindex @option{--trace} option
+@cindex trace, internal instructions
+@cindex instructions, trace of internal
+@cindex op-codes, trace of internal
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a @code{+}
+sign in the output.
+
@item @option{-l} @var{ext}
@itemx @option{--load} @var{ext}
@cindex @option{-l} option
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 4a169b44..73b30c39 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -4004,6 +4004,18 @@ or on the command line.
Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"}
at their beginning. @xref{Changing The Namespace}, for more information.
+@item @option{-I}
+@itemx @option{--trace}
+@cindex @option{-I} option
+@cindex @option{--trace} option
+@cindex trace, internal instructions
+@cindex instructions, trace of internal
+@cindex op-codes, trace of internal
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a @code{+}
+sign in the output.
+
@item @option{-l} @var{ext}
@itemx @option{--load} @var{ext}
@cindex @option{-l} option
diff --git a/eval.c b/eval.c
index c6c37b8c..a66eaf37 100644
--- a/eval.c
+++ b/eval.c
@@ -503,79 +503,81 @@ genflags2str(int flagval, const struct flagtab *tab)
static int
posix_compare(NODE *s1, NODE *s2)
{
- int ret = 0;
- char save1, save2;
- size_t l = 0;
+ int ret;
+
+ if (gawk_mb_cur_max == 1) {
+ char save1, save2;
+ const char *p1, *p2;
- save1 = s1->stptr[s1->stlen];
- s1->stptr[s1->stlen] = '\0';
+ save1 = s1->stptr[s1->stlen];
+ s1->stptr[s1->stlen] = '\0';
- save2 = s2->stptr[s2->stlen];
- s2->stptr[s2->stlen] = '\0';
+ save2 = s2->stptr[s2->stlen];
+ s2->stptr[s2->stlen] = '\0';
- if (gawk_mb_cur_max == 1) {
- if (strlen(s1->stptr) == s1->stlen && strlen(s2->stptr) == s2->stlen)
- ret = strcoll(s1->stptr, s2->stptr);
- else {
- char b1[2], b2[2];
- char *p1, *p2;
- size_t i;
-
- if (s1->stlen < s2->stlen)
- l = s1->stlen;
- else
- l = s2->stlen;
-
- b1[1] = b2[1] = '\0';
- for (i = ret = 0, p1 = s1->stptr, p2 = s2->stptr;
- ret == 0 && i < l;
- p1++, p2++) {
- b1[0] = *p1;
- b2[0] = *p2;
- ret = strcoll(b1, b2);
+ p1 = s1->stptr;
+ p2 = s2->stptr;
+
+ for (;;) {
+ size_t len;
+
+ ret = strcoll(p1, p2);
+ if (ret != 0)
+ break;
+
+ len = strlen(p1);
+ p1 += len + 1;
+ p2 += len + 1;
+
+ if (p1 == s1->stptr + s1->stlen + 1) {
+ if (p2 != s2->stptr + s2->stlen + 1)
+ ret = -1;
+ break;
+ }
+ if (p2 == s2->stptr + s2->stlen + 1) {
+ ret = 1;
+ break;
}
}
- /*
- * Either worked through the strings or ret != 0.
- * In either case, ret will be the right thing to return.
- */
+
+ s1->stptr[s1->stlen] = save1;
+ s2->stptr[s2->stlen] = save2;
}
#if ! defined(__DJGPP__)
else {
/* Similar logic, using wide characters */
+ const wchar_t *p1, *p2;
+
(void) force_wstring(s1);
(void) force_wstring(s2);
- if (wcslen(s1->wstptr) == s1->wstlen && wcslen(s2->wstptr) == s2->wstlen)
- ret = wcscoll(s1->wstptr, s2->wstptr);
- else {
- wchar_t b1[2], b2[2];
- wchar_t *p1, *p2;
- size_t i;
-
- if (s1->wstlen < s2->wstlen)
- l = s1->wstlen;
- else
- l = s2->wstlen;
-
- b1[1] = b2[1] = L'\0';
- for (i = ret = 0, p1 = s1->wstptr, p2 = s2->wstptr;
- ret == 0 && i < l;
- p1++, p2++) {
- b1[0] = *p1;
- b2[0] = *p2;
- ret = wcscoll(b1, b2);
+ p1 = s1->wstptr;
+ p2 = s2->wstptr;
+
+ for (;;) {
+ size_t len;
+
+ ret = wcscoll(p1, p2);
+ if (ret != 0)
+ break;
+
+ len = wcslen(p1);
+ p1 += len + 1;
+ p2 += len + 1;
+
+ if (p1 == s1->wstptr + s1->wstlen + 1) {
+ if (p2 != s2->wstptr + s2->wstlen + 1)
+ ret = -1;
+ break;
+ }
+ if (p2 == s2->wstptr + s2->wstlen + 1) {
+ ret = 1;
+ break;
}
}
- /*
- * Either worked through the strings or ret != 0.
- * In either case, ret will be the right thing to return.
- */
}
#endif
- s1->stptr[s1->stlen] = save1;
- s2->stptr[s2->stlen] = save2;
return ret;
}
diff --git a/field.c b/field.c
index 0e84447a..c21046b9 100644
--- a/field.c
+++ b/field.c
@@ -90,6 +90,8 @@ Regexp *FPAT_re_no_case = NULL;
Regexp *FPAT_regexp = NULL;
NODE *Null_field = NULL;
+#define clear_mpfr(n) ((n)->flags &= ~(MPFN | MPZN | NUMCUR))
+
/* init_fields --- set up the fields array to start with */
void
@@ -230,6 +232,7 @@ rebuild_record()
}
n->stptr = cops;
+ clear_mpfr(n);
unref(r);
fields_arr[i] = n;
assert((n->flags & WSTRCUR) == 0);
@@ -347,6 +350,11 @@ reset_record()
}
}
+/*
+ * purge_record --- throw away the fields, make sure that
+ * individual nodes remain valid.
+ */
+
static void
purge_record()
{
diff --git a/interpret.h b/interpret.h
index 6137e8e0..4de778e7 100644
--- a/interpret.h
+++ b/interpret.h
@@ -100,7 +100,13 @@ top:
}
#endif
- switch ((op = pc->opcode)) {
+ op = pc->opcode;
+ if (do_itrace) {
+ fprintf(stderr, "+ %s\n", opcode2str(op));
+ fflush(stderr);
+ }
+
+ switch (op) {
case Op_rule:
currule = pc->in_rule; /* for sole use in Op_K_next, Op_K_nextfile, Op_K_getline */
/* fall through */
diff --git a/main.c b/main.c
index 4f239dfc..b09b5f4c 100644
--- a/main.c
+++ b/main.c
@@ -205,6 +205,7 @@ static const struct option optab[] = {
{ "re-interval", no_argument, NULL, 'r' },
{ "sandbox", no_argument, NULL, 'S' },
{ "source", required_argument, NULL, 'e' },
+ { "trace", no_argument, NULL, 'I' },
{ "traditional", no_argument, NULL, 'c' },
{ "use-lc-numeric", no_argument, & use_lc_numeric, 1 },
{ "version", no_argument, & do_version, 'V' },
@@ -601,6 +602,7 @@ usage(int exitval, FILE *fp)
fputs(_("\t-g\t\t\t--gen-pot\n"), fp);
fputs(_("\t-h\t\t\t--help\n"), fp);
fputs(_("\t-i includefile\t\t--include=includefile\n"), fp);
+ fputs(_("\t-I\t\t\t--trace\n"), fp);
fputs(_("\t-l library\t\t--load=library\n"), fp);
/*
* TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal
@@ -1519,7 +1521,7 @@ parse_args(int argc, char **argv)
/*
* The + on the front tells GNU getopt not to rearrange argv.
*/
- const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:l:L::nNo::Op::MPrSstVYZ:";
+ const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:Il:L::nNo::Op::MPrSstVYZ:";
int old_optind;
int c;
char *scan;
@@ -1614,6 +1616,10 @@ parse_args(int argc, char **argv)
(void) add_srcfile(SRC_INC, optarg, srcfiles, NULL, NULL);
break;
+ case 'I':
+ do_flags |= DO_ITRACE;
+ break;
+
case 'l':
(void) add_srcfile(SRC_EXTLIB, optarg, srcfiles, NULL, NULL);
break;
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 7da52fdf..9f8f5790 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -167,7 +167,7 @@ BASIC_TESTS = \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \
opasnidx opasnslf \
paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \
- parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \
+ parse1 parsefld parseme pcntplus posix_compare posix2008sub prdupval prec printf0 \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
@@ -267,7 +267,7 @@ NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum
# List of tests that need --posix
-NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
+NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare
# List of tests that need --pretty-print
NEED_PRETTY = nsprof1 nsprof2 \
@@ -305,8 +305,9 @@ NEED_LOCALE_C = \
NEED_LOCALE_EN = \
backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \
- mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \
- rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4
+ mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \
+ printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \
+ widesub widesub2 widesub3 widesub4
# Unused at the moment, since nlstringtest has additional stufff it does
@@ -2027,6 +2028,12 @@ pcntplus:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+posix_compare:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
posix2008sub:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index ca213e81..a85ef93b 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,17 @@
+2020-07-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): New test, posix_compare.
+ * posix_compare.awk, posix_compare.ok: New files.
+
+ Unrelated:
+
+ * badargs.ok: Updated after code changes.
+
+2020-06-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dbugeval2.ok, dbugtypedre1.ok, dbugtypedre2.ok, symtab10.ok,
+ watchpoint1.ok: Updated after code changes.
+
2020-06-10 Arnold D. Robbins <arnold@skeeve.com>
Miscellanious fixes from Michael Builov <mbuilov@gmail.com>.
diff --git a/test/Makefile.am b/test/Makefile.am
index 3c241aae..9be24a4c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -905,11 +905,13 @@ EXTRA_DIST = \
pipeio2.awk \
pipeio2.in \
pipeio2.ok \
+ posix2008sub.awk \
+ posix2008sub.ok \
+ posix_compare.awk \
+ posix_compare.ok \
posix.awk \
posix.in \
posix.ok \
- posix2008sub.awk \
- posix2008sub.ok \
poundbang.awk \
prdupval.awk \
prdupval.in \
@@ -1366,7 +1368,7 @@ BASIC_TESTS = \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \
opasnidx opasnslf \
paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \
- parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \
+ parse1 parsefld parseme pcntplus posix_compare posix2008sub prdupval prec printf0 \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
@@ -1467,7 +1469,7 @@ NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum
# List of tests that need --posix
-NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
+NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare
# List of tests that need --pretty-print
NEED_PRETTY = nsprof1 nsprof2 \
@@ -1502,8 +1504,9 @@ NEED_LOCALE_C = \
NEED_LOCALE_EN = \
backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \
- mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \
- rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4
+ mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \
+ printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \
+ widesub widesub2 widesub3 widesub4
# Unused at the moment, since nlstringtest has additional stufff it does
# NEED_LOCALE_FR =
diff --git a/test/Makefile.in b/test/Makefile.in
index c4b72106..fae611a4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1168,11 +1168,13 @@ EXTRA_DIST = \
pipeio2.awk \
pipeio2.in \
pipeio2.ok \
+ posix2008sub.awk \
+ posix2008sub.ok \
+ posix_compare.awk \
+ posix_compare.ok \
posix.awk \
posix.in \
posix.ok \
- posix2008sub.awk \
- posix2008sub.ok \
poundbang.awk \
prdupval.awk \
prdupval.in \
@@ -1629,7 +1631,7 @@ BASIC_TESTS = \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \
opasnidx opasnslf \
paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \
- parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \
+ parse1 parsefld parseme pcntplus posix_compare posix2008sub prdupval prec printf0 \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
@@ -1729,7 +1731,7 @@ NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum
# List of tests that need --posix
-NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
+NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare
# List of tests that need --pretty-print
NEED_PRETTY = nsprof1 nsprof2 \
@@ -1767,8 +1769,9 @@ NEED_LOCALE_C = \
NEED_LOCALE_EN = \
backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \
- mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \
- rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4
+ mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \
+ printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \
+ widesub widesub2 widesub3 widesub4
# Unused at the moment, since nlstringtest has additional stufff it does
@@ -3672,6 +3675,12 @@ pcntplus:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+posix_compare:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
posix2008sub:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 1c54a7cf..f7aaa152 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -798,6 +798,12 @@ pcntplus:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+posix_compare:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
posix2008sub:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/badargs.ok b/test/badargs.ok
index dfbd1c19..5ec0558c 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -16,6 +16,7 @@ Short options: GNU long options: (extensions)
-g --gen-pot
-h --help
-i includefile --include=includefile
+ -I --trace
-l library --load=library
-L[fatal|invalid|no-ext] --lint[=fatal|invalid|no-ext]
-M --bignum
diff --git a/test/dbugeval2.ok b/test/dbugeval2.ok
index 4d645269..38cd7bb6 100644
--- a/test/dbugeval2.ok
+++ b/test/dbugeval2.ok
@@ -1,5 +1,5 @@
Breakpoint 1 set at file `dbugeval2.awk', line 3
-Starting program:
+Starting program:
Stopping in BEGIN ...
Breakpoint 1, main() at `dbugeval2.awk':3
3 b = 3
diff --git a/test/dbugtypedre1.ok b/test/dbugtypedre1.ok
index dffee0e8..ae89ff44 100644
--- a/test/dbugtypedre1.ok
+++ b/test/dbugtypedre1.ok
@@ -1,5 +1,5 @@
Watchpoint 1: e
-Starting program:
+Starting program:
number
untyped
regexp
diff --git a/test/dbugtypedre2.ok b/test/dbugtypedre2.ok
index 9c04e1e7..ab70fb90 100644
--- a/test/dbugtypedre2.ok
+++ b/test/dbugtypedre2.ok
@@ -1,5 +1,5 @@
Watchpoint 1: x
-Starting program:
+Starting program:
Stopping in BEGIN ...
Watchpoint 1: x
Old value: untyped variable
diff --git a/test/posix_compare.awk b/test/posix_compare.awk
new file mode 100644
index 00000000..dcef124d
--- /dev/null
+++ b/test/posix_compare.awk
@@ -0,0 +1,47 @@
+function print_str(str, i, n, chars, result)
+{
+ n = split(str, chars, "")
+ result = ""
+ for (i = 1; i <= n; i++) {
+ if (chars[i] == "\0")
+ result = result "\\0"
+ else
+ result = result chars[i]
+ }
+
+ return result
+}
+
+function do_compare(left, comp, right)
+{
+ if (comp == "<")
+ return left < right ? "TRUE" : "FALSE"
+
+ return left > right ? "TRUE" : "FALSE"
+}
+
+
+BEGIN {
+ left[1] = "abc\0z1"; compare[1] = "<"; right[1] = "abc\0z2"; expected[1] = "TRUE"
+ left[2] = "abc\0z2"; compare[2] = "<"; right[2] = "abc\0z2"; expected[2] = "FALSE"
+ left[3] = "abc\0z3"; compare[3] = "<"; right[3] = "abc\0z2"; expected[3] = "FALSE"
+ left[4] = "abc\0z1"; compare[4] = ">"; right[4] = "abc\0z2"; expected[4] = "FALSE"
+ left[5] = "abc\0z2"; compare[5] = ">"; right[5] = "abc\0z2"; expected[5] = "FALSE"
+ left[6] = "abc\0z3"; compare[6] = ">"; right[6] = "abc\0z2"; expected[6] = "TRUE"
+ left[7] = "abc\0z1"; compare[7] = "<"; right[7] = "abc\0z21"; expected[7] = "TRUE"
+ left[8] = "abc\0z2"; compare[8] = "<"; right[8] = "abc\0z21"; expected[8] = "TRUE"
+ left[9] = "abc\0z3"; compare[9] = "<"; right[9] = "abc\0z21"; expected[9] = "FALSE"
+ left[10] = "abc\0z11"; compare[10] = ">"; right[10] = "abc\0z2"; expected[10] = "FALSE"
+ left[11] = "abc\0z21"; compare[11] = ">"; right[11] = "abc\0z2"; expected[11] = "TRUE"
+ left[12] = "abc\0z31"; compare[12] = ">"; right[12] = "abc\0z2"; expected[12] = "TRUE"
+
+ l = 12
+ for (i = 1; i <= l; i++) {
+ result = do_compare(left[i], compare[i], right[i])
+ lstr = print_str(left[i])
+ rstr = print_str(right[i])
+
+ printf("\"%s\" %s \"%s\": Expecting %s: Got %s\n",
+ lstr, compare[i], rstr, expected[i], result)
+ }
+}
diff --git a/test/posix_compare.ok b/test/posix_compare.ok
new file mode 100644
index 00000000..58dee56b
--- /dev/null
+++ b/test/posix_compare.ok
@@ -0,0 +1,12 @@
+"abc\0z1" < "abc\0z2": Expecting TRUE: Got TRUE
+"abc\0z2" < "abc\0z2": Expecting FALSE: Got FALSE
+"abc\0z3" < "abc\0z2": Expecting FALSE: Got FALSE
+"abc\0z1" > "abc\0z2": Expecting FALSE: Got FALSE
+"abc\0z2" > "abc\0z2": Expecting FALSE: Got FALSE
+"abc\0z3" > "abc\0z2": Expecting TRUE: Got TRUE
+"abc\0z1" < "abc\0z21": Expecting TRUE: Got TRUE
+"abc\0z2" < "abc\0z21": Expecting TRUE: Got TRUE
+"abc\0z3" < "abc\0z21": Expecting FALSE: Got FALSE
+"abc\0z11" > "abc\0z2": Expecting FALSE: Got FALSE
+"abc\0z21" > "abc\0z2": Expecting TRUE: Got TRUE
+"abc\0z31" > "abc\0z2": Expecting TRUE: Got TRUE
diff --git a/test/symtab10.ok b/test/symtab10.ok
index b0cabd7c..9ab38556 100644
--- a/test/symtab10.ok
+++ b/test/symtab10.ok
@@ -1,5 +1,5 @@
Watchpoint 1: y
-Starting program:
+Starting program:
Stopping in BEGIN ...
Watchpoint 1: y
Old value: untyped variable
diff --git a/test/watchpoint1.ok b/test/watchpoint1.ok
index b1e7e53c..ec8e598c 100644
--- a/test/watchpoint1.ok
+++ b/test/watchpoint1.ok
@@ -17,7 +17,7 @@ Watchpoint 1: c
2: nr = untyped variable
3: NR = 0
Breakpoint 2 set at file `watchpoint1.awk', line 6
-Starting program:
+Starting program:
Stopping in Rule ...
Watchpoint 1: c
Old value: untyped variable