aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--awk.h3
-rw-r--r--main.c3
-rw-r--r--pc/Makefile.tst14
4 files changed, 23 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1777f55f..8ff8f82c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,14 @@
did that one get by us for so long?)
* mpfr.c (force_mpnum): Check for a + or - sign with nothing following it.
+ Unrelated. Make do_itrace a real variable so that it's easier to
+ change the value from a debugger.
+
+ * awk.h (do_itrace): Declare.
+ (DO_ITRACE, do_itrace): Remove macros.
+ * main.c (do_itrace): Define.
+ (parse_args): Set do_itrace.
+
2020-07-03 Arnold D. Robbins <arnold@skeeve.com>
Fix a double free error with -M. Thanks to
diff --git a/awk.h b/awk.h
index eec41147..dfc25b78 100644
--- a/awk.h
+++ b/awk.h
@@ -1140,6 +1140,7 @@ extern struct block_header nextfree[];
extern bool field0_valid;
extern int do_flags;
+extern bool do_itrace; /* separate so can poke from a debugger */
extern SRCFILE *srcfiles; /* source files */
@@ -1160,7 +1161,6 @@ enum do_flag_values {
DO_PROFILE = 0x02000, /* profile the program */
DO_DEBUG = 0x04000, /* debug the program */
DO_MPFR = 0x08000, /* arbitrary-precision floating-point math */
- DO_ITRACE = 0x10000 /* trace byte-code instructions */
};
#define do_traditional (do_flags & DO_TRADITIONAL)
@@ -1175,7 +1175,6 @@ 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/main.c b/main.c
index b09b5f4c..25008c3d 100644
--- a/main.c
+++ b/main.c
@@ -146,6 +146,7 @@ static void set_locale_stuff(void);
static bool stopped_early = false;
int do_flags = false;
+bool do_itrace = false; /* provide simple instruction trace */
bool do_optimize = true; /* apply default optimizations */
static int do_nostalgia = false; /* provide a blast from the past */
static int do_binary = false; /* hands off my data! */
@@ -1617,7 +1618,7 @@ parse_args(int argc, char **argv)
break;
case 'I':
- do_flags |= DO_ITRACE;
+ do_itrace = true;
break;
case 'l':
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 9f8f5790..e998e421 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -258,8 +258,8 @@ NEED_LINT = \
NEED_LINT_OLD = lintold
# List of tests that must be run with -M
-NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
- mpfrnegzero mpfrnr mpfrrem mpfrrnd mpfrrndeval mpfrsort mpfrsqrt \
+NEED_MPFR = mpfrbigint mpfrbigint2 mpfrcase mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
+ mpfrnegzero mpfrnonum mpfrnr mpfrrem mpfrrnd mpfrrndeval mpfrsort mpfrsqrt \
mpfrstrtonum mpgforcenum mpfruplus mpfranswer42
@@ -3497,6 +3497,11 @@ mpfrbigint2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M --non-decimal-data < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+mpfrcase:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
mpfrfield:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -3507,6 +3512,11 @@ mpfrnegzero:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+mpfrnonum:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
mpfrnr:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@