gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, porting, updated. gawk-4.1.0-5152-g18a9e1bb


From: Arnold Robbins
Subject: [SCM] gawk branch, porting, updated. gawk-4.1.0-5152-g18a9e1bb
Date: Fri, 8 Jul 2022 03:01:48 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, porting has been updated
       via  18a9e1bb28ccf172cd243cdc0f2164e9f818e209 (commit)
       via  d2e694ad66a379fa128137d19c10b77b942972f2 (commit)
      from  1fec29203476e91498cbeb4ccf0d5a6f6d2032dd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=18a9e1bb28ccf172cd243cdc0f2164e9f818e209

commit 18a9e1bb28ccf172cd243cdc0f2164e9f818e209
Merge: 1fec2920 d2e694ad
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Fri Jul 8 10:01:38 2022 +0300

    Merge branch 'master' into porting


http://git.sv.gnu.org/cgit/gawk.git/commit/?id=d2e694ad66a379fa128137d19c10b77b942972f2

commit d2e694ad66a379fa128137d19c10b77b942972f2
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Fri Jul 8 10:00:17 2022 +0300

    Squashed commit of the following:
    
    commit 50fbb5b087ad2d3522be24276df77bd2f20e5733
    Merge: f8246bcd ff1f652d
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Thu Jul 7 20:32:20 2022 +0300
    
        Merge branch 'master' into feature/mdim-start-again
    
    commit f8246bcd2aa993f686ebedfa52b073f8aecb3d6a
    Merge: e9e57774 fe43a264
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Thu Jul 7 10:19:59 2022 +0300
    
        Merge branch 'master' into feature/mdim-start-again
    
    commit e9e577747cfbe1d20db47a2ab58d57d27564f75f
    Merge: 4585a0b3 37989990
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Tue Jul 5 11:26:20 2022 +0300
    
        Merge branch 'master' into feature/mdim-start-again
    
    commit 4585a0b3090e686493f6f74df9224a5dd36a15e8
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Jul 3 21:11:54 2022 +0300
    
        Additional fix.
    
    commit 72aee849f9ea9b979118a17b7cddb6d3eff85027
    Merge: 114fba55 30af96ec
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Fri Jul 1 11:55:14 2022 +0300
    
        Merge branch 'master' into feature/mdim-start-again
    
    commit 114fba55758093388c60d004d3f8718290cd752b
    Merge: a85b4b76 5b4a2474
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Fri Jul 1 11:52:54 2022 +0300
    
        Merge branch 'master' into feature/mdim-start-again
    
    commit a85b4b76890962a2c47f15ab76e0462e5c795dd5
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Thu Jun 30 21:51:45 2022 +0300
    
        Fix TOP_SCALAR and POP_SCALAR for Node_elem_new.
    
    commit 342bd54e3e87c0b127fcdb1296f4b4ca96b863fd
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Wed Jun 29 08:04:10 2022 +0300
    
        New branch to continue on mdim stuff. Sigh.

diff --git a/ChangeLog b/ChangeLog
index bf467059..43ebd457 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,15 @@
 
 2022-07-03         Arnold D. Robbins     <arnold@skeeve.com>
 
+       * awk.h (TOP_SCALAR): Put converted value back on the stack
+       for any subsequent use.
+
+2022-06-30         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * awk.h (POP_SCALAR): Convert Node_elem_new into a scalar.
+       (TOP_SCALAR): Ditto.
+
+       Unrelated:
        * README: Updated. Remove mention of OS/2.
        * awk.h, awgram.y. gawkmisc.c, io.c, main.c, nonposix.h:
        Remove all code for __EMX__.
@@ -80,17 +89,46 @@
        an array.
        (api_impl): Add hook for api_destroy_array.
 
+2022-06-03         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * awk.h (elem_new_to_scalar): Add declaration.
+       * eval.c (elem_new_to_scalar): No longer static. Make it handle
+       things when valref is > 1. Returns a NODE * instead of being void.
+       (cmp_scalars): Change usage of elem_new_to_scalar().
+       * interpret.h (r_interpret): Op_push*: Make Node_elem_new into
+       a separate case, using elem_new_to_scalar().
+       * array.c (force_array): For Node_elem_new, clear symbol->stptr.
+       * eval.r (r_get_lhs): Use efree() intstead of free() in Node_elem_new
+       case.
+
 2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>
 
        * builtin.c (do_sub): Fix memory corruption when substituting
        into a value that is a typed regex. Thanks to valgrind.
 
+2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>
+
+       Fix a nasty memory corruption problem. Thanks to
+       Andrew Schorr for the report.
+
+       * eval.c (r_get_lhs): Handle Node_elem_new separately
+       to free the string value. This was not the problem.
+       * interpret.h (r_interpret): For Op_assign, when turning
+       Node_elem_new into the null string, DEREF the old value
+       and dupnode the new one. THIS was the problem.
+
 2022-05-24         Adam Van Scyoc        <avanscy@g.clemson.edu>
 
        * awkgram.y (make_assignable): Handle Op_field_assign.
        Avoids a core dump upon a certain kind of syntax error;
        see test/getlnfa.awk.
 
+2022-05-22         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * array.c (force_array): When converting Node_elem_new to an array,
+       release the string storage. Thanks to valgrind, by way of Andrew
+       Schorr, for the report.
+
 2022-05-11         Arnold D. Robbins     <arnold@skeeve.com>
 
        * profile.c (pp_list): Typo fix in a comment.
@@ -127,16 +165,86 @@
        merged.
        * profile.c (pprint): Improve code for Op_K_switch, Op_K_case.
 
+2022-04-20         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * mpfr.c (mpg_force_number): Small whitespace fix.
+       * node.c (r_force_number): Ditto.
+
 2022-04-18         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawkbug.in: Small changes.
 
+2022-04-06         Arnold D. Robbins     <arnold@skeeve.com>
+
+       Further cleanups.
+
+       * array.c (new_array_element): Set s->stfmt to STFMT_UNUSED.
+       * awk.h (force_string_fmt): No need to set s->stfmt anymore.
+       * builtin.c (do_typeof): Collapse Node_var_new and Node_elem_new
+       cases.
+       * symbol.c (print_vars): Node_elem_new can't be in a top level
+       variable. Remove check and add a call to cant_happen if some
+       other node type is received.
+       * NEWS: Updated.
+
 2022-04-01         Arnold D. Robbins     <arnold@skeeve.com>
 
        Small fix from the persistent-gawk guys.
 
        * profile.c (pprint): Use estrdup instead of strdup.
 
+2022-03-31         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * array.c (new_array_element): Make a full null string instead of
+       an empty node; it can be more easily converted to scalar that way.
+       * awk.h (force_string_fmt): Change the node type, remove NUMBER flag,
+       set STFMT_UNUSED.
+       * cint_array.c (lear_clear): Remove check for not equal Node_elem_new.
+       * int_array.c (int_clear): Ditto.
+       * str_array.c (str_clear): Ditto.
+       * eval.c (elem_new_to_scalar): Now only needs to change the node type.
+       * interpret.h (r_interpret): Treat Node_elem_new like Node_val, and
+       UPREF it when pushed. Remove test before DEREFing when popping.
+       * mpfr.c (mpg_force_number): Simplify converting Node_elem_new to
+       Node_val. Fix the string value.
+       * node.c (r_force_number): Ditto.
+
+2022-03-28         Arnold D. Robbins     <arnold@skeeve.com>
+
+       Allow unreferenced array elements to turn into subarrays.
+
+       * awk.h (Node_elem_new): New node type.
+       (new_array_element): Add declaration.
+       (POP_ARRAY): Handle Node_elem_new.
+       (force_string_fmt): Ditto. Make sure valref has the right value.
+       * array.c (force_array): Handle Node_elem_new.
+       (do_sort_up_value_type): Ditto.
+       (new_array_element): New function, creates Node_elem_new node.
+       * builtin.c (do_length): Handle Node_elem_new.
+       (do_typeof): Ditto.
+       * cint_array.c (leaf_lookup): Use new_array_element() when creating
+       a new element.
+       (left_clear): Don't unref Node_elem_new.
+       * debug.c (print_symbol, do_set_var,watchpont_triggered,
+       initialize_watch_item, print_memory, do_print_f): Handle Node_elem_new.
+       * eval.c (nodetypes): Add Node_elem_new.
+       (r_get_lhs, setup_frame): Handle Node_elem_new.
+       (elem_new_to_scalar): New function.
+       (cmp_scalars): Use elem_new_to_scalar.
+       * ext.c (get_actual_argument): Handle Node_elem_new.
+       * gawkapi.c (api_get_argument, api_set_argument, node_to_awk_value,
+       api_sym_update): Handle Node_elem_new.
+       * int_array.c (int_clear): Don't unref Node_elem_new.
+       (int_insert): Use new_array_element() when creating a new element.
+       * interpret.h (r_interpret): Handle Node_elem_new as appropriate.
+       * mpfr.c (mpg_force_number): Handle Node_elem_new.Make sure valref has
+       the right value.
+       * node.c (r_force_number): Ditto.
+       * str_array.c (str_lookup): Use new_array_element() when creating a
+       new element.
+       (str_clear): Don't unref Node_elem_new.
+       * symbol.c (print_vars): Handle Node_elem_new.
+
 2022-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 
        Allow nested indirect function calls. Thanks to
diff --git a/NEWS b/NEWS
index 93f683a3..6adcd6ac 100644
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,9 @@ see the manual.
 10. Support for OS/2 has been removed. It was not being actively
 maintained.
 
+11. Some subtle issues with untyped array elements being passed to
+functions have been fixed.
+
 Changes from 5.1.1 to 5.1.2
 ---------------------------
 
diff --git a/array.c b/array.c
index 3658ac72..6d2ed19b 100644
--- a/array.c
+++ b/array.c
@@ -315,7 +315,7 @@ array_vname(const NODE *symbol)
 
 /*
  *  force_array --- proceed to the actual Node_var_array,
- *     change Node_var_new to an array.
+ *     change Node_var_new or Node_elem_new to an array.
  *     If canfatal and type isn't good, die fatally,
  *     otherwise return the final actual value.
  */
@@ -334,6 +334,11 @@ force_array(NODE *symbol, bool canfatal)
        }
 
        switch (symbol->type) {
+       case Node_elem_new:
+               efree(symbol->stptr);
+               symbol->stptr = NULL;
+               symbol->stlen = 0;
+               /* fall through */
        case Node_var_new:
                symbol->xarray = NULL;  /* make sure union is as it should be */
                null_array(symbol);
@@ -1166,6 +1171,7 @@ do_sort_up_value_type(const void *p1, const void *p2)
                Node_func,
                Node_ext_func,
                Node_var_new,
+               Node_elem_new,
                Node_var,
                Node_var_array,
                Node_val,
@@ -1429,3 +1435,26 @@ assoc_list(NODE *symbol, const char *sort_str, 
sort_context_t sort_ctxt)
 
        return list;
 }
+
+/* new_array_element --- return a new empty element node */
+
+NODE *
+new_array_element(void)
+{
+       NODE *n = make_number(0.0);
+       char *sp;
+
+       emalloc(sp, char *, 2, "new_array_element");
+       sp[0] = sp[1] = '\0';
+
+       n->stptr = sp;
+       n->stlen = 0;
+       n->stfmt = STFMT_UNUSED;
+
+       n->flags |= (MALLOC|STRING|STRCUR);
+
+       n->type = Node_elem_new;
+       n->valref = 1;
+
+       return n;
+}
diff --git a/awk.h b/awk.h
index 67562f4e..dacf6f32 100644
--- a/awk.h
+++ b/awk.h
@@ -258,6 +258,7 @@ typedef enum nodevals {
        Node_var,               /* scalar variable, lnode is value */
        Node_var_array,         /* array is ptr to elements, table_size num of 
eles */
        Node_var_new,           /* newly created variable, may become an array 
*/
+       Node_elem_new,          /* newly created array element, may become a 
subarray */
        Node_param_list,        /* lnode is a variable, rnode is more list */
        Node_func,              /* lnode is param. list, rnode is body */
        Node_ext_func,          /* extension function, code_ptr is builtin code 
*/
@@ -1445,6 +1446,7 @@ extern NODE *do_asorti(int nargs);
 extern unsigned long (*hash)(const char *s, size_t len, unsigned long hsize, 
size_t *code);
 extern void init_env_array(NODE *env_node);
 extern void init_argv_array(NODE *argv_node, NODE *shadow_node);
+extern NODE *new_array_element(void);
 /* awkgram.c */
 extern NODE *variable(int location, char *name, NODETYPE type);
 extern int parse_program(INSTRUCTION **pcode, bool from_eval);
@@ -1559,6 +1561,7 @@ extern STACK_ITEM *grow_stack(void);
 extern void dump_fcall_stack(FILE *fp);
 extern int register_exec_hook(Func_pre_exec preh, Func_post_exec posth);
 extern NODE **r_get_field(NODE *n, Func_ptr *assign, bool reference);
+extern NODE *elem_new_to_scalar(NODE *n);
 /* ext.c */
 extern NODE *do_ext(int nargs);
 void load_ext(const char *lib_name);   /* temporary */
@@ -1849,7 +1852,8 @@ POP_ARRAY(bool check_for_untyped)
        NODE *t = POP();
        static bool warned = false;
 
-       if (do_lint && ! warned && check_for_untyped && t->type == 
Node_var_new) {
+       if (do_lint && ! warned && check_for_untyped
+           && (t->type == Node_var_new || t->type == Node_elem_new)) {
                warned = true;
                lintwarn(_("behavior of `for' loop on untyped variable is not 
defined by POSIX"));
        }
@@ -1876,6 +1880,8 @@ POP_SCALAR()
 
        if (t->type == Node_var_array)
                fatal(_("attempt to use array `%s' in a scalar context"), 
array_vname(t));
+       else if (t->type == Node_elem_new)
+               t = elem_new_to_scalar(t);
 
        return t;
 }
@@ -1889,6 +1895,10 @@ TOP_SCALAR()
 
        if (t->type == Node_var_array)
                fatal(_("attempt to use array `%s' in a scalar context"), 
array_vname(t));
+       else if (t->type == Node_elem_new) {
+               t = elem_new_to_scalar(t);      // fix it up
+               REPLACE(t);                     // put it back on the stack
+       }
 
        return t;
 }
@@ -1942,6 +1952,13 @@ dupnode(NODE *n)
 static inline NODE *
 force_string_fmt(NODE *s, const char *fmtstr, int fmtidx)
 {
+       if (s->type == Node_elem_new) {
+               s->type = Node_val;
+               s->flags &= ~NUMBER;
+
+               return s;
+       }
+
        if ((s->flags & STRCUR) != 0
                && (s->stfmt == STFMT_UNUSED || (s->stfmt == fmtidx
 #ifdef HAVE_MPFR
diff --git a/builtin.c b/builtin.c
index 194ca385..30795406 100644
--- a/builtin.c
+++ b/builtin.c
@@ -591,7 +591,7 @@ do_length(int nargs)
 
                size = assoc_length(tmp);
                return make_number(size);
-       } else if (tmp->type == Node_var_new) {
+       } else if (tmp->type == Node_var_new || tmp->type == Node_elem_new) {
                // this can happen from an indirect call
                DEREF(tmp);
                tmp = dupnode(Nnull_string);
@@ -4342,6 +4342,7 @@ do_typeof(int nargs)
                }
                break;
        case Node_var_new:
+       case Node_elem_new:
                res = "untyped";
                deref = false;
                break;
diff --git a/cint_array.c b/cint_array.c
index 0dc04875..27298fba 100644
--- a/cint_array.c
+++ b/cint_array.c
@@ -1068,7 +1068,7 @@ leaf_lookup(NODE *symbol, NODE *array, long k, long size, 
long base)
        lhs = array->nodes + (k - base); /* leaf element */
        if (*lhs == NULL) {
                array->table_size++;    /* one more element in leaf array */
-               *lhs = dupnode(Nnull_string);
+               *lhs = new_array_element();
        }
        return lhs;
 }
diff --git a/debug.c b/debug.c
index 09bd90f4..87d6fa74 100644
--- a/debug.c
+++ b/debug.c
@@ -967,6 +967,9 @@ print_symbol(NODE *r, bool isparam)
        case Node_var_new:
                fprintf(out_fp, "untyped variable\n");
                break;
+       case Node_elem_new:
+               fprintf(out_fp, "untyped element\n");
+               break;
        case Node_var:
                if (! isparam && r->var_update)
                        r->var_update();
@@ -1241,6 +1244,7 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
 
                switch (r->type) {
                case Node_var_new:
+               case Node_elem_new:
                        r->type = Node_var;
                        r->var_value = dupnode(Nnull_string);
                        /* fall through */
@@ -1730,6 +1734,7 @@ watchpoint_triggered(struct list_item *w)
                        t2 = symbol;
                        break;
                case Node_var_new:
+               case Node_elem_new:
                        break;
                default:
                        cant_happen("unexpected symbol type %s", 
nodetype2str(symbol->type));
@@ -1806,7 +1811,7 @@ initialize_watch_item(struct list_item *w)
                r = *get_field(field_num, NULL);
                w->cur_value = dupnode(r);
        } else {
-               if (symbol->type == Node_var_new)
+               if (symbol->type == Node_var_new || symbol->type == 
Node_elem_new)
                        w->cur_value = (NODE *) 0;
                else if (symbol->type == Node_var) {
                        r = symbol->var_value;
@@ -3753,6 +3758,10 @@ print_memory(NODE *m, NODE *func, Func_print print_func, 
FILE *fp)
                print_func(fp, "%s", m->vname);
                break;
 
+       case Node_elem_new:
+               print_func(fp, "element - %p", m);
+               break;
+
        default:
                print_func(fp, "?");  /* can't happen */
        }
@@ -5109,7 +5118,7 @@ do_print_f(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
                        r = find_symbol(name, NULL);
                        if (r == NULL)
                                goto done;
-                       if (r->type == Node_var_new)
+                       if (r->type == Node_var_new || r->type == Node_elem_new)
                                tmp[i] = Nnull_string;
                        else if (r->type != Node_var) {
                                d_error(_("`%s' is not a scalar variable"), 
name);
diff --git a/eval.c b/eval.c
index 8fde6b39..d7d0b264 100644
--- a/eval.c
+++ b/eval.c
@@ -238,6 +238,7 @@ static const char *const nodetypes[] = {
        "Node_var",
        "Node_var_array",
        "Node_var_new",
+       "Node_elem_new",
        "Node_param_list",
        "Node_func",
        "Node_ext_func",
@@ -1165,6 +1166,14 @@ r_get_lhs(NODE *n, bool reference)
                n->var_value = dupnode(Nnull_string);
                break;
 
+       case Node_elem_new:
+               efree(n->stptr);
+               n->stptr = NULL;
+               n->stlen = 0;
+               n->type = Node_var;
+               n->var_value = dupnode(Nnull_string);
+               break;
+
        case Node_var:
                break;
 
@@ -1311,6 +1320,7 @@ setup_frame(INSTRUCTION *pc)
                switch (m->type) {
                case Node_var_new:
                case Node_var_array:
+               case Node_elem_new:
                        r->type = Node_array_ref;
                        r->orig_array = r->prev_array = m;
                        break;
@@ -1532,6 +1542,10 @@ cmp_scalars(scalar_cmp_t comparison_type)
 
        t2 = POP_SCALAR();
        t1 = TOP();
+
+       t1 = elem_new_to_scalar(t1);
+       t2 = elem_new_to_scalar(t2);
+
        if (t1->type == Node_var_array) {
                DEREF(t2);
                fatal(_("attempt to use array `%s' in a scalar context"), 
array_vname(t1));
@@ -1870,3 +1884,20 @@ init_interpret()
                interpret = r_interpret;
 }
 
+/* elem_new_to_scalar --- convert Node_elem_new to untyped scalar */
+
+NODE *
+elem_new_to_scalar(NODE *n)
+{
+       if (n->type != Node_elem_new)
+               return n;
+
+       if (n->valref > 1) {
+               unref(n);
+               return dupnode(Nnull_string);
+       }
+
+       n->type = Node_val;
+
+       return n;
+}
diff --git a/ext.c b/ext.c
index c4e37297..89b53ab5 100644
--- a/ext.c
+++ b/ext.c
@@ -200,7 +200,7 @@ get_actual_argument(NODE *t, int i, bool want_array)
        pc = TOP()->code_ptr;   /* Op_ext_builtin instruction */
        fname = (pc + 1)->func_name;
 
-       if (t->type == Node_var_new) {
+       if (t->type == Node_var_new || t->type == Node_elem_new) {
                if (want_array)
                        return force_array(t, false);
                else {
diff --git a/gawkapi.c b/gawkapi.c
index 7f19916f..cec4a899 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -69,7 +69,7 @@ api_get_argument(awk_ext_id_t id, size_t count,
                return awk_false;
 
        /* if type is undefined */
-       if (arg->type == Node_var_new) {
+       if (arg->type == Node_var_new || arg->type == Node_elem_new) {
                if (wanted == AWK_UNDEFINED)
                        return awk_true;
                else if (wanted == AWK_ARRAY) {
@@ -124,7 +124,7 @@ api_set_argument(awk_ext_id_t id,
                return awk_false;
 
        if (   (arg = get_argument(count)) == NULL
-           || arg->type != Node_var_new)
+           || (arg->type != Node_var_new && arg->type != Node_elem_new))
                return awk_false;
 
        arg = get_array_argument(arg, count);
@@ -564,6 +564,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, 
awk_valtype_t wanted)
 
        switch (node->type) {
        case Node_var_new:      /* undefined variable */
+       case Node_elem_new:     /* undefined element */
                val->val_type = AWK_UNDEFINED;
                if (wanted == AWK_UNDEFINED) {
                        ret = awk_true;
@@ -896,10 +897,13 @@ api_sym_update(awk_ext_id_t id,
 
        efree((void *) full_name);
 
-       if ((node->type == Node_var && value->val_type != AWK_ARRAY) || 
node->type == Node_var_new) {
+       if ((node->type == Node_var && value->val_type != AWK_ARRAY)
+           || node->type == Node_var_new
+           || node->type == Node_elem_new) {
                unref(node->var_value);
                node->var_value = awk_value_to_node(value);
-               if (node->type == Node_var_new && value->val_type != 
AWK_UNDEFINED)
+               if ((node->type == Node_var_new || node->type == Node_elem_new)
+                   && value->val_type != AWK_UNDEFINED)
                        node->type = Node_var;
 
                return awk_true;
diff --git a/int_array.c b/int_array.c
index 2e9e2476..3a1c5966 100644
--- a/int_array.c
+++ b/int_array.c
@@ -792,7 +792,7 @@ int_insert(NODE *symbol, long k, uint32_t hash1)
        }
 
        b->ainum[i] = k;
-       b->aivalue[i] = dupnode(Nnull_string);
+       b->aivalue[i] = new_array_element();
        b->aicount++;
        return & b->aivalue[i];
 }
diff --git a/interpret.h b/interpret.h
index 24419183..57d060e6 100644
--- a/interpret.h
+++ b/interpret.h
@@ -224,6 +224,20 @@ uninitialized_scalar:
                                                                
save_symbol->vname);
                                if (op != Op_push_arg_untyped)
                                        m = dupnode(Nnull_string);
+                               UPREF(m);
+                               PUSH(m);
+                               break;
+
+                       case Node_elem_new:
+                               if (op != Op_push_arg_untyped) {
+                                       /* convert untyped to scalar */
+                                       m = elem_new_to_scalar(m);
+                               }
+                               if (do_lint)
+                                       lintwarn(isparam ?
+                                               _("reference to uninitialized 
argument `%s'") :
+                                               _("reference to uninitialized 
variable `%s'"),
+                                                               
save_symbol->vname);
                                PUSH(m);
                                break;
 
@@ -320,7 +334,7 @@ uninitialized_scalar:
                                }
                        }
 
-                       if (r->type == Node_val)
+                       if (r->type == Node_val || r->type == Node_elem_new)
                                UPREF(r);
                        PUSH(r);
                        break;
@@ -353,6 +367,11 @@ uninitialized_scalar:
                                t2 = force_string(t2);
                                r->vname = estrdup(t2->stptr, t2->stlen);       
/* the subscript in parent array */
                                assoc_set(t1, t2, r);
+                       } else if (r->type == Node_elem_new) {
+                               r = force_array(r, false);
+                               r->parent_array = t1;
+                               t2 = force_string(t2);
+                               r->vname = estrdup(t2->stptr, t2->stlen);       
/* the subscript in parent array */
                        } else if (r->type != Node_var_array) {
                                t2 = force_string(t2);
                                fatal(_("attempt to use scalar `%s[\"%.*s\"]' 
as an array"),
@@ -389,7 +408,7 @@ uninitialized_scalar:
                         * be stored in SYMTAB:
                         *      1. Variables that don"t yet have a value 
(Node_var_new)
                         *      2. Variables that have a value (Node_var)
-                        *      3. Values that awk code stuck into SYMTAB not 
related to variables (Node_value)
+                        *      3. Values that awk code stuck into SYMTAB not 
related to variables (Node_val)
                         * For 1, since we are giving it a value, we have to 
change the type to Node_var.
                         * For 1 and 2, we have to step through the Node_var to 
get to the value.
                         * For 3, we fatal out. This avoids confusion on things 
like
@@ -713,7 +732,7 @@ mod:
                         * SYMTAB is a little more messy.  Three possibilities 
for SYMTAB:
                         *      1. Variables that don"t yet have a value 
(Node_var_new)
                         *      2. Variables that have a value (Node_var)
-                        *      3. Values that awk code stuck into SYMTAB not 
related to variables (Node_value)
+                        *      3. Values that awk code stuck into SYMTAB not 
related to variables (Node_val)
                         * For 1, since we are giving it a value, we have to 
change the type to Node_var.
                         * For 1 and 2, we have to step through the Node_var to 
get to the value.
                         * For 3, we fatal out. This avoids confusion on things 
like
@@ -844,6 +863,10 @@ mod:
                        lhs = POP_ADDRESS();
                        r = TOP_SCALAR();
                        unref(*lhs);
+                       if (r->type == Node_elem_new) {
+                               DEREF(r);
+                               r = dupnode(Nnull_string);
+                       }
                        UPREF(r);
                        UNFIELD(*lhs, r);
                        REPLACE(r);
@@ -1074,7 +1097,7 @@ arrayfor:
                        (void) POP_CODE();
                        while (arg_count-- > 0) {
                                t1 = POP();
-                               if (t1->type == Node_val)
+                               if (t1->type == Node_val || t1->type == 
Node_elem_new)
                                        DEREF(t1);
                        }
                        free_api_string_copies();
diff --git a/mpfr.c b/mpfr.c
index 6afa8c65..40833124 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -349,6 +349,15 @@ mpg_force_number(NODE *n)
 {
        char *cp, *cpend;
 
+       if (n->type == Node_elem_new) {
+               n->type = Node_val;
+               n->flags &= ~STRING;
+               n->stptr[0] = '0';      // STRCUR is still set
+               n->stlen = 1;
+
+               return n;
+       }
+
        if ((n->flags & NUMCUR) != 0)
                return n;
        n->flags |= NUMCUR;
diff --git a/node.c b/node.c
index 1c913799..7b4346bf 100644
--- a/node.c
+++ b/node.c
@@ -61,6 +61,15 @@ r_force_number(NODE *n)
        char save;
        char *ptr;
 
+       if (n->type == Node_elem_new) {
+               n->type = Node_val;
+               n->flags &= ~STRING;
+               n->stptr[0] = '0';      // STRCUR is still set
+               n->stlen = 1;
+
+               return n;
+       }
+
        if ((n->flags & NUMCUR) != 0)
                return n;
 
diff --git a/pc/ChangeLog b/pc/ChangeLog
index ddeb8883..652daeb3 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -9,6 +9,14 @@ Untracked files:
        * Makefile, config.h, config.sed, gawkmisc.pc:
        Remove stuff related to __EMX__.
 
+2022-06-30         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.tst: Regenerated.
+
+2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.tst: Regenerated.
+
 2022-05-24         Adam Van Scyoc        <avanscy@g.clemson.edu>
 
        * Makefile.tst: Regenerated.
@@ -29,6 +37,10 @@ Untracked files:
 
        * Makefile.tst: Regenerated.
 
+2022-03-28         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.tst: Regenerated.
+
 2022-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 
        * Makefile.tst: Regenerated.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 9dc6837d..0dfd4534 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -202,6 +202,7 @@ GAWK_EXT_TESTS = \
        indirectcall3 indirectbuiltin2 \
        inf-nan-torture intarray iolint isarrayunset lint lintexp \
        lintindex lintint lintlength lintold lintplus lintset lintwarn \
+       mdim1 mdim2 mdim3 mdim4 \
        manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
        modifiers muldimposix nastyparm negtime next nondec nondec2 \
        nonfatal1 nonfatal2 nonfatal3 nsawk1a nsawk1b nsawk1c nsawk2a \
@@ -2977,6 +2978,26 @@ lintwarn:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  --lint >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+mdim1:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim2:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim3:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim4:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 
|| echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 match1:
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/str_array.c b/str_array.c
index a6bc7170..1ff8348f 100644
--- a/str_array.c
+++ b/str_array.c
@@ -217,7 +217,7 @@ str_lookup(NODE *symbol, NODE *subs)
        b->ahname = subs;
        b->ahname_str = subs->stptr;
        b->ahname_len = subs->stlen;
-       b->ahvalue = dupnode(Nnull_string);
+       b->ahvalue = new_array_element();
        b->ahcode = code1;
        return & (b->ahvalue);
 }
diff --git a/symbol.c b/symbol.c
index 8f29f5c4..0d10a520 100644
--- a/symbol.c
+++ b/symbol.c
@@ -497,6 +497,8 @@ print_vars(NODE **table, int (*print_func)(FILE *, const 
char *, ...), FILE *fp)
                        print_func(fp, "untyped variable\n");
                else if (r->type == Node_var)
                        valinfo(r->var_value, print_func, fp);
+               else
+                       cant_happen("unexpected node type: %s", 
nodetype2str(r->type));
        }
 }
 
diff --git a/test/ChangeLog b/test/ChangeLog
index 7a342484..0957a914 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -6,6 +6,16 @@
 
        * Makefile.am: Update copyright year.
 
+2022-06-30         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.am (EXTRA_DIST): mdim4: new test.
+       * mdim4.awk, mdim4.in, mdim4.ok: New files.
+
+2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.am (EXTRA_DIST): mdim3: new test.
+       * mdim3.awk, mdim3.ok: New files.
+
 2022-05-24         Adam Van Scyoc        <avanscy@g.clemson.edu>
 
        * Makefile.am (EXTRA_DIST): getlnfa, new test.
@@ -36,10 +46,19 @@
        * profile5.ok, profile10.ok, profile11.ok: Updated after code changes.
        * profile17.awk, profile17.ok: New files.
 
+2022-03-31         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * aadelete1.awk, aadelete1.ok: Changed to sync with code changes.
+
 2022-03-30         Arnold D. Robbins     <arnold@skeeve.com>
 
        * delarprm2.awk, delarprm2.ok: Changes to make test more helpful.
 
+2022-03-27         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.am (EXTRA_DIST): mdim1, mdim2: new tests.
+       * mdim1.awk, mdim1.ok, mdim2.awk, mdim2.ok: New files.
+
 2022-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 
        * Makefile.am (EXTRA_DIST): indirectcall3, new test.
diff --git a/test/Makefile.am b/test/Makefile.am
index e3e2c707..23908b70 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -678,6 +678,15 @@ EXTRA_DIST = \
        manglprm.ok \
        manyfiles.awk \
        manyfiles.ok \
+       mdim1.awk \
+       mdim1.ok \
+       mdim2.awk \
+       mdim2.ok \
+       mdim3.awk \
+       mdim3.ok \
+       mdim4.awk \
+       mdim4.in \
+       mdim4.ok \
        modifiers.sh \
        modifiers.ok \
        muldimposix.awk \
@@ -1476,6 +1485,7 @@ GAWK_EXT_TESTS = \
        indirectcall3 indirectbuiltin2 \
        inf-nan-torture intarray iolint isarrayunset lint lintexp \
        lintindex lintint lintlength lintold lintplus lintset lintwarn \
+       mdim1 mdim2 mdim3 mdim4 \
        manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
        modifiers muldimposix nastyparm negtime next nondec nondec2 \
        nonfatal1 nonfatal2 nonfatal3 nsawk1a nsawk1b nsawk1c nsawk2a \
diff --git a/test/Makefile.in b/test/Makefile.in
index f801a253..228e660a 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -945,6 +945,15 @@ EXTRA_DIST = \
        manglprm.ok \
        manyfiles.awk \
        manyfiles.ok \
+       mdim1.awk \
+       mdim1.ok \
+       mdim2.awk \
+       mdim2.ok \
+       mdim3.awk \
+       mdim3.ok \
+       mdim4.awk \
+       mdim4.in \
+       mdim4.ok \
        modifiers.sh \
        modifiers.ok \
        muldimposix.awk \
@@ -1743,6 +1752,7 @@ GAWK_EXT_TESTS = \
        indirectcall3 indirectbuiltin2 \
        inf-nan-torture intarray iolint isarrayunset lint lintexp \
        lintindex lintint lintlength lintold lintplus lintset lintwarn \
+       mdim1 mdim2 mdim3 mdim4 \
        manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
        modifiers muldimposix nastyparm negtime next nondec nondec2 \
        nonfatal1 nonfatal2 nonfatal3 nsawk1a nsawk1b nsawk1c nsawk2a \
@@ -4701,6 +4711,26 @@ lintwarn:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  --lint >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+mdim1:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim2:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim3:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim4:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 
|| echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 match1:
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 899b4ec7..e967f845 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1728,6 +1728,26 @@ lintwarn:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  --lint >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+mdim1:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim2:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim3:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mdim4:
+       @echo $@
+       @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 
|| echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 match1:
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/test/aadelete1.awk b/test/aadelete1.awk
index 2484a057..158d2aa3 100644
--- a/test/aadelete1.awk
+++ b/test/aadelete1.awk
@@ -8,7 +8,7 @@ BEGIN {
        print length(a), length(a[1])
        delete a
        print length(a), length(a[1]), length(a)
-       a[1][1] = 11
+       a[1][1] = 11    # this used to fatal, now it no longer does.
 }
 
 function f(c, b) {
diff --git a/test/aadelete1.ok b/test/aadelete1.ok
index d4b678b5..c3e29d26 100644
--- a/test/aadelete1.ok
+++ b/test/aadelete1.ok
@@ -2,5 +2,3 @@
 1
 1 1
 0 0 1
-gawk: aadelete1.awk:11: fatal: attempt to use scalar `a["1"]' as an array
-EXIT CODE: 2
diff --git a/test/mdim1.awk b/test/mdim1.awk
new file mode 100644
index 00000000..c1f398d6
--- /dev/null
+++ b/test/mdim1.awk
@@ -0,0 +1,15 @@
+BEGIN {
+       print "typeof(x[0]) is", typeof(x[0])
+       x[1] = x[0]
+       print "typeof(x[1]) is", typeof(x[1])
+       x[0][1] = "xx"
+       print "typeof(x[0]) is", typeof(x[0])
+       print "typeof(x[0][1]) is", typeof(x[0][1])
+       print "typeof(y) is", typeof(y)
+       z = y
+       print "typeof(y) is", typeof(y)
+       print "typeof(z) is", typeof(z)
+
+       x[1][0] = "xx"  # this will fatal
+       print x[1][0]
+}
diff --git a/test/mdim1.ok b/test/mdim1.ok
new file mode 100644
index 00000000..1247fab1
--- /dev/null
+++ b/test/mdim1.ok
@@ -0,0 +1,9 @@
+typeof(x[0]) is untyped
+typeof(x[1]) is unassigned
+typeof(x[0]) is array
+typeof(x[0][1]) is string
+typeof(y) is untyped
+typeof(y) is unassigned
+typeof(z) is unassigned
+gawk: mdim1.awk:13: fatal: attempt to use scalar `x["1"]' as an array
+EXIT CODE: 2
diff --git a/test/mdim2.awk b/test/mdim2.awk
new file mode 100644
index 00000000..7bc0c127
--- /dev/null
+++ b/test/mdim2.awk
@@ -0,0 +1,9 @@
+BEGIN {
+       p(a[0])
+       print a[0][0]
+}
+
+function p(f)
+{
+       f[0] = 1
+}
diff --git a/test/mdim2.ok b/test/mdim2.ok
new file mode 100644
index 00000000..d00491fd
--- /dev/null
+++ b/test/mdim2.ok
@@ -0,0 +1 @@
+1
diff --git a/test/mdim3.awk b/test/mdim3.awk
new file mode 100644
index 00000000..3cd56b61
--- /dev/null
+++ b/test/mdim3.awk
@@ -0,0 +1,29 @@
+BEGIN {
+   inp[0] = "blah"
+   inp[1] = "blah"
+   inp[2] = ""
+   inp[3] = "Summary Statistics"
+   inp[4] = "temperature,0"
+   inp[5] = "rain,1"
+
+   for (i = 1; i <= 40; i++) {
+      print "i =", i
+      mode = 0
+      nr = 0
+      delete val
+      for (j = 0; j < 6; j++) {
+        x = inp[j]
+        print "\tj =", j
+#       if (i == 27 && j == 3)
+#              stopme()
+        nf = split(x,f,",")
+        print "\tnf =", nf
+        if (++nr > 1) {
+           if (!nf)
+              mode = 1
+           else if (mode == 1)
+              val[f[1]] = f[2]
+        }
+      }
+   }
+}
diff --git a/test/mdim3.ok b/test/mdim3.ok
new file mode 100644
index 00000000..a8f05990
--- /dev/null
+++ b/test/mdim3.ok
@@ -0,0 +1,520 @@
+i = 1
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 2
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 3
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 4
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 5
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 6
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 7
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 8
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 9
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 10
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 11
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 12
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 13
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 14
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 15
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 16
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 17
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 18
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 19
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 20
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 21
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 22
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 23
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 24
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 25
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 26
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 27
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 28
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 29
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 30
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 31
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 32
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 33
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 34
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 35
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 36
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 37
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 38
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 39
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
+i = 40
+       j = 0
+       nf = 1
+       j = 1
+       nf = 1
+       j = 2
+       nf = 0
+       j = 3
+       nf = 1
+       j = 4
+       nf = 2
+       j = 5
+       nf = 2
diff --git a/test/mdim4.awk b/test/mdim4.awk
new file mode 100644
index 00000000..8f5e0f21
--- /dev/null
+++ b/test/mdim4.awk
@@ -0,0 +1,168 @@
+BEGIN {
+S["am__EXEEXT_FALSE"]=""
+S["am__EXEEXT_TRUE"]="#"
+S["LTLIBOBJS"]=""
+S["subdirs"]=" extension"
+S["GAWKLIBEXT"]="so"
+S["LIBMPFR"]="-lmpfr -lgmp"
+S["LIBREADLINE"]="-lreadline"
+S["SOCKET_LIBS"]=""
+S["ENABLE_EXTENSIONS_FALSE"]="#"
+S["ENABLE_EXTENSIONS_TRUE"]=""
+S["USE_PERSISTENT_MALLOC_FALSE"]="#"
+S["USE_PERSISTENT_MALLOC_TRUE"]=""
+S["LIBSIGSEGV_PREFIX"]=""
+S["LTLIBSIGSEGV"]=""
+S["LIBSIGSEGV"]=""
+S["HAVE_LIBSIGSEGV"]="no"
+S["LIBOBJS"]=""
+S["TEST_CROSS_COMPILE_FALSE"]=""
+S["TEST_CROSS_COMPILE_TRUE"]="#"
+S["POSUB"]="po"
+S["LTLIBINTL"]=""
+S["LIBINTL"]=""
+S["INTLLIBS"]=""
+S["LTLIBICONV"]="-liconv"
+S["LIBICONV"]="-liconv"
+S["INTL_MACOSX_LIBS"]=""
+S["XGETTEXT_EXTRA_OPTIONS"]=""
+S["MSGMERGE_FOR_MSGFMT_OPTION"]="--for-msgfmt"
+S["MSGMERGE"]="/usr/local/bin/msgmerge"
+S["XGETTEXT_015"]="/usr/local/bin/xgettext"
+S["XGETTEXT"]="/usr/local/bin/xgettext"
+S["GMSGFMT_015"]="/usr/local/bin/msgfmt"
+S["GMSGFMT"]="/usr/local/bin/msgfmt"
+S["MSGFMT"]="/usr/local/bin/msgfmt"
+S["GETTEXT_MACRO_VERSION"]="0.20"
+S["USE_NLS"]="yes"
+S["SED"]="/bin/sed"
+S["ZOS_FAIL"]=""
+S["acl_shlibext"]="so"
+S["ac_ct_AR"]="ar"
+S["AR"]="ar"
+S["RANLIB"]="ranlib"
+S["CPP"]="gcc -E"
+S["LN_S"]="ln -s"
+S["YFLAGS"]=""
+S["YACC"]="bison -y"
+S["EGREP"]="/bin/grep -E"
+S["GREP"]="/bin/grep"
+S["am__fastdepCC_FALSE"]="#"
+S["am__fastdepCC_TRUE"]=""
+S["CCDEPMODE"]="depmode=gcc3"
+S["am__nodep"]="_no"
+S["AMDEPBACKSLASH"]="\\"
+S["AMDEP_FALSE"]="#"
+S["AMDEP_TRUE"]=""
+S["am__include"]="include"
+S["DEPDIR"]=".deps"
+S["OBJEXT"]="o"
+S["EXEEXT"]=""
+S["ac_ct_CC"]="gcc"
+S["CPPFLAGS"]=""
+S["LDFLAGS"]=" -no-pie"
+S["CFLAGS"]="-g -O2 -DARRAYDEBUG -DYYDEBUG -DLOCALEDEBUG -DMEMDEBUG -Wall 
-fno-builtin -g3 -ggdb3"
+S["CC"]="gcc"
+S["host_os"]="linux-gnu"
+S["host_vendor"]="pc"
+S["host_cpu"]="x86_64"
+S["host"]="x86_64-pc-linux-gnu"
+S["build_os"]="linux-gnu"
+S["build_vendor"]="pc"
+S["build_cpu"]="x86_64"
+S["build"]="x86_64-pc-linux-gnu"
+S["pkgextensiondir"]="${pkglibdir}"
+S["AM_BACKSLASH"]="\\"
+S["AM_DEFAULT_VERBOSITY"]="1"
+S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)"
+S["AM_V"]="$(V)"
+S["CSCOPE"]="cscope"
+S["ETAGS"]="etags"
+S["CTAGS"]="ctags"
+S["am__untar"]="$${TAR-tar} xf -"
+S["am__tar"]="$${TAR-tar} chof - \"$$tardir\""
+S["AMTAR"]="$${TAR-tar}"
+S["am__leading_dot"]="."
+S["SET_MAKE"]=""
+S["AWK"]="gawk"
+S["mkdir_p"]="$(MKDIR_P)"
+S["MKDIR_P"]="/bin/mkdir -p"
+S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
+S["STRIP"]=""
+S["install_sh"]="${SHELL} /home/arnold/Gnu/gawk/gawk.git/build-aux/install-sh"
+S["MAKEINFO"]="${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
makeinfo"
+S["AUTOHEADER"]="${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
autoheader"
+S["AUTOMAKE"]="${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
automake-1.16"
+S["AUTOCONF"]="${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
autoconf"
+S["ACLOCAL"]="${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
aclocal-1.16"
+S["VERSION"]="5.1.60"
+S["PACKAGE"]="gawk"
+S["CYGPATH_W"]="echo"
+S["am__isrc"]=""
+S["INSTALL_DATA"]="${INSTALL} -m 644"
+S["INSTALL_SCRIPT"]="${INSTALL}"
+S["INSTALL_PROGRAM"]="${INSTALL}"
+S["target_alias"]=""
+S["host_alias"]=""
+S["build_alias"]=""
+S["LIBS"]="-ldl -lm "
+S["ECHO_T"]=""
+S["ECHO_N"]="-n"
+S["ECHO_C"]=""
+S["DEFS"]="-DHAVE_CONFIG_H"
+S["mandir"]="${datarootdir}/man"
+S["localedir"]="${datarootdir}/locale"
+S["libdir"]="${exec_prefix}/lib"
+S["psdir"]="${docdir}"
+S["pdfdir"]="${docdir}"
+S["dvidir"]="${docdir}"
+S["htmldir"]="${docdir}"
+S["infodir"]="${datarootdir}/info"
+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
+S["oldincludedir"]="/usr/include"
+S["includedir"]="${prefix}/include"
+S["runstatedir"]="${localstatedir}/run"
+S["localstatedir"]="${prefix}/var"
+S["sharedstatedir"]="${prefix}/com"
+S["sysconfdir"]="${prefix}/etc"
+S["datadir"]="${datarootdir}"
+S["datarootdir"]="${prefix}/share"
+S["libexecdir"]="${exec_prefix}/libexec"
+S["sbindir"]="${exec_prefix}/sbin"
+S["bindir"]="${exec_prefix}/bin"
+S["program_transform_name"]="s,x,x,"
+S["prefix"]="/usr/local"
+S["exec_prefix"]="${prefix}"
+S["PACKAGE_URL"]="https://www.gnu.org/software/gawk/";
+S["PACKAGE_BUGREPORT"]="bug-gawk@gnu.org"
+S["PACKAGE_STRING"]="GNU Awk 5.1.60"
+S["PACKAGE_VERSION"]="5.1.60"
+S["PACKAGE_TARNAME"]="gawk"
+S["PACKAGE_NAME"]="GNU Awk"
+S["PATH_SEPARATOR"]=":"
+S["SHELL"]="/bin/bash"
+S["am__quote"]=""
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
diff --git a/test/mdim4.in b/test/mdim4.in
new file mode 100644
index 00000000..597f3a8b
--- /dev/null
+++ b/test/mdim4.in
@@ -0,0 +1,1373 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# Makefile.am --- automake input file for gawk
+#
+# Copyright (C) 2000-2021 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA
+#
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+
+# Build in extension before test so that
+#      ./configure && make check
+# works properly too.
+@ENABLE_EXTENSIONS_TRUE@am__append_1 = extension
+bin_PROGRAMS = gawk$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
+       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
+       $(top_srcdir)/m4/pma.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
+       $(top_srcdir)/m4/socket.m4 \
+       $(top_srcdir)/m4/triplet-transformation.m4 \
+       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = gawkbug
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(includedir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__objects_1 = array.$(OBJEXT) awkgram.$(OBJEXT) builtin.$(OBJEXT) \
+       cint_array.$(OBJEXT) command.$(OBJEXT) debug.$(OBJEXT) \
+       eval.$(OBJEXT) ext.$(OBJEXT) field.$(OBJEXT) \
+       floatcomp.$(OBJEXT) gawkapi.$(OBJEXT) gawkmisc.$(OBJEXT) \
+       int_array.$(OBJEXT) io.$(OBJEXT) main.$(OBJEXT) mpfr.$(OBJEXT) \
+       msg.$(OBJEXT) node.$(OBJEXT) profile.$(OBJEXT) re.$(OBJEXT) \
+       replace.$(OBJEXT) str_array.$(OBJEXT) symbol.$(OBJEXT) \
+       version.$(OBJEXT)
+am_gawk_OBJECTS = $(am__objects_1)
+gawk_OBJECTS = $(am_gawk_OBJECTS)
+gawk_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+gawk_DEPENDENCIES = support/libsupport.a $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/array.Po ./$(DEPDIR)/awkgram.Po \
+       ./$(DEPDIR)/builtin.Po ./$(DEPDIR)/cint_array.Po \
+       ./$(DEPDIR)/command.Po ./$(DEPDIR)/debug.Po \
+       ./$(DEPDIR)/eval.Po ./$(DEPDIR)/ext.Po ./$(DEPDIR)/field.Po \
+       ./$(DEPDIR)/floatcomp.Po ./$(DEPDIR)/gawkapi.Po \
+       ./$(DEPDIR)/gawkmisc.Po ./$(DEPDIR)/int_array.Po \
+       ./$(DEPDIR)/io.Po ./$(DEPDIR)/main.Po ./$(DEPDIR)/mpfr.Po \
+       ./$(DEPDIR)/msg.Po ./$(DEPDIR)/node.Po ./$(DEPDIR)/profile.Po \
+       ./$(DEPDIR)/re.Po ./$(DEPDIR)/replace.Po \
+       ./$(DEPDIR)/str_array.Po ./$(DEPDIR)/symbol.Po \
+       ./$(DEPDIR)/version.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+                  -e s/c++$$/h++/ -e s/c$$/h/
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_@AM_V@)
+am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
+am__v_YACC_0 = @echo "  YACC    " $@;
+am__v_YACC_1 = 
+YLWRAP = $(top_srcdir)/build-aux/ylwrap
+SOURCES = $(gawk_SOURCES)
+DIST_SOURCES = $(gawk_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(include_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       cscope distdir distdir-am dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+       configh.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+DIST_SUBDIRS = support . extension extras doc awklib po test
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/configh.in \
+       $(srcdir)/gawkbug.in $(top_srcdir)/build-aux/ar-lib \
+       $(top_srcdir)/build-aux/compile \
+       $(top_srcdir)/build-aux/config.guess \
+       $(top_srcdir)/build-aux/config.rpath \
+       $(top_srcdir)/build-aux/config.sub \
+       $(top_srcdir)/build-aux/depcomp \
+       $(top_srcdir)/build-aux/install-sh \
+       $(top_srcdir)/build-aux/missing $(top_srcdir)/build-aux/ylwrap \
+       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+       awkgram.c build-aux/ChangeLog build-aux/ar-lib \
+       build-aux/compile build-aux/config.guess \
+       build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
+       build-aux/install-sh build-aux/ltmain.sh build-aux/missing \
+       build-aux/texinfo.tex build-aux/ylwrap command.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz $(distdir).tar.xz
+GZIP_ENV = --best
+DIST_TARGETS = dist-lzip dist-xz dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+
+# Directory for gawk's data files. Automake supplies datadir.
+pkgdatadir = $(datadir)/awk
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) 
-DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"' -I"$(srcdir)/support"
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+GAWKLIBEXT = @GAWKLIBEXT@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_LIBSIGSEGV = @HAVE_LIBSIGSEGV@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMPFR = @LIBMPFR@
+LIBOBJS = @LIBOBJS@
+LIBREADLINE = @LIBREADLINE@
+LIBS = @LIBS@
+LIBSIGSEGV = @LIBSIGSEGV@
+LIBSIGSEGV_PREFIX = @LIBSIGSEGV_PREFIX@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSIGSEGV = @LTLIBSIGSEGV@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+ZOS_FAIL = @ZOS_FAIL@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+acl_shlibext = @acl_shlibext@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgextensiondir = @pkgextensiondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# This variable insures that aclocal runs
+# correctly after changing configure.ac
+ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = @CFLAGS@
+AM_LDFLAGS = @LDFLAGS@
+
+# Stuff to include in the dist that doesn't need it's own
+# Makefile.am files
+EXTRA_DIST = \
+       ChangeLog.0 \
+       ChangeLog.1 \
+       COPYING \
+       INSTALL \
+       NEWS \
+       NEWS.0 \
+       NEWS.1 \
+       POSIX.STD \
+       README_d \
+       m4 \
+       missing_d \
+       po/README \
+       pc \
+       posix \
+       vms
+
+
+# The order to do things in.
+#
+# Build in support first, since we need the support library.
+#
+# Build explicitly in "." in order to build gawk first, so
+# that `make check' without a prior `make' works.
+
+# Build in awklib after in doc, since we want to extract
+# sample files if doc/gawk.texi changed.
+SUBDIRS = support . $(am__append_1) extras doc awklib po test
+bin_SCRIPTS = gawkbug
+include_HEADERS = gawkapi.h
+BUILT_SOURCES = $(srcdir)/pc/Makefile.tst
+
+# sources for gawk
+base_sources = \
+       array.c \
+       awk.h \
+       awkgram.y \
+       builtin.c \
+       cint_array.c \
+       cmd.h \
+       command.y \
+       custom.h \
+       debug.c \
+       eval.c \
+       ext.c \
+       field.c \
+       floatcomp.c \
+       floatmagic.h \
+       gawkapi.c \
+       gawkapi.h \
+       gawkmisc.c \
+       gettext.h \
+       int_array.c \
+       interpret.h \
+       io.c \
+       mbsupport.h \
+       main.c \
+       mpfr.c \
+       msg.c \
+       node.c \
+       nonposix.h \
+       profile.c \
+       protos.h \
+       re.c \
+       replace.c \
+       str_array.c \
+       symbol.c \
+       version.c
+
+gawk_SOURCES = $(base_sources)
+
+# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
+LDADD = support/libsupport.a \
+       $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) $(LIBREADLINE) $(LIBMPFR) \
+       $(LDFLAGS)
+
+
+# stuff for compiling gawk/pgawk
+DEFPATH = '".$(PATH_SEPARATOR)$(pkgdatadir)"'
+
+# shared library support:
+SHLIBEXT = "\"$(GAWKLIBEXT)"\"
+DEFLIBPATH = "\"$(pkgextensiondir)\""
+
+# Get rid of core files when cleaning
+CLEANFILES = core core.* $(bin_SCRIPTS)
+
+# We want hard links for install-exec-hook, below
+LN = ln
+
+# Make copies...
+CP = cp
+
+# For some make's, e.g. OpenBSD, that don't define this
+RM = rm -f
+all: $(BUILT_SOURCES) config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj .y
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__maybe_remake_depfiles);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/configh.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/configh.in:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+gawkbug: $(top_builddir)/config.status $(srcdir)/gawkbug.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
'$(DESTDIR)$(bindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
"$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+gawk$(EXEEXT): $(gawk_OBJECTS) $(gawk_DEPENDENCIES) $(EXTRA_gawk_DEPENDENCIES) 
+       @rm -f gawk$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gawk_OBJECTS) $(gawk_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit 
$$?; \
+            } \
+       ; done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awkgram.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cint_array.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eval.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/field.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floatcomp.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gawkapi.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gawkmisc.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_array.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpfr.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profile.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/re.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replace.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_array.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbol.Po@am__quote@ # 
am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ # 
am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< 
&&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ 
`$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) 
'$<'`
+
+.y.c:
+       $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h 
`echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
+install-includeHEADERS: $(include_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+       done
+
+uninstall-includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files 
$(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: 
am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c 
>$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} 
>$(distdir).tar.lz
+       $(am__post_remove_distdir)
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c 
>$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-zstd: distdir
+       tardir=$(distdir) && $(am__tar) | zstd -c 
$${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       *.tar.zst*) \
+         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
+       esac
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 
's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=../.. --prefix="$$dc_install_base" \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" 
\
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" 
"$(DESTDIR)$(includedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f 
$(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -rm -f awkgram.c
+       -rm -f command.c
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+               -rm -f ./$(DEPDIR)/array.Po
+       -rm -f ./$(DEPDIR)/awkgram.Po
+       -rm -f ./$(DEPDIR)/builtin.Po
+       -rm -f ./$(DEPDIR)/cint_array.Po
+       -rm -f ./$(DEPDIR)/command.Po
+       -rm -f ./$(DEPDIR)/debug.Po
+       -rm -f ./$(DEPDIR)/eval.Po
+       -rm -f ./$(DEPDIR)/ext.Po
+       -rm -f ./$(DEPDIR)/field.Po
+       -rm -f ./$(DEPDIR)/floatcomp.Po
+       -rm -f ./$(DEPDIR)/gawkapi.Po
+       -rm -f ./$(DEPDIR)/gawkmisc.Po
+       -rm -f ./$(DEPDIR)/int_array.Po
+       -rm -f ./$(DEPDIR)/io.Po
+       -rm -f ./$(DEPDIR)/main.Po
+       -rm -f ./$(DEPDIR)/mpfr.Po
+       -rm -f ./$(DEPDIR)/msg.Po
+       -rm -f ./$(DEPDIR)/node.Po
+       -rm -f ./$(DEPDIR)/profile.Po
+       -rm -f ./$(DEPDIR)/re.Po
+       -rm -f ./$(DEPDIR)/replace.Po
+       -rm -f ./$(DEPDIR)/str_array.Po
+       -rm -f ./$(DEPDIR)/symbol.Po
+       -rm -f ./$(DEPDIR)/version.Po
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+               -rm -f ./$(DEPDIR)/array.Po
+       -rm -f ./$(DEPDIR)/awkgram.Po
+       -rm -f ./$(DEPDIR)/builtin.Po
+       -rm -f ./$(DEPDIR)/cint_array.Po
+       -rm -f ./$(DEPDIR)/command.Po
+       -rm -f ./$(DEPDIR)/debug.Po
+       -rm -f ./$(DEPDIR)/eval.Po
+       -rm -f ./$(DEPDIR)/ext.Po
+       -rm -f ./$(DEPDIR)/field.Po
+       -rm -f ./$(DEPDIR)/floatcomp.Po
+       -rm -f ./$(DEPDIR)/gawkapi.Po
+       -rm -f ./$(DEPDIR)/gawkmisc.Po
+       -rm -f ./$(DEPDIR)/int_array.Po
+       -rm -f ./$(DEPDIR)/io.Po
+       -rm -f ./$(DEPDIR)/main.Po
+       -rm -f ./$(DEPDIR)/mpfr.Po
+       -rm -f ./$(DEPDIR)/msg.Po
+       -rm -f ./$(DEPDIR)/node.Po
+       -rm -f ./$(DEPDIR)/profile.Po
+       -rm -f ./$(DEPDIR)/re.Po
+       -rm -f ./$(DEPDIR)/replace.Po
+       -rm -f ./$(DEPDIR)/str_array.Po
+       -rm -f ./$(DEPDIR)/symbol.Po
+       -rm -f ./$(DEPDIR)/version.Po
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
+       uninstall-includeHEADERS
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+       install-exec install-exec-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--depfiles am--refresh check check-am check-local clean \
+       clean-binPROGRAMS clean-cscope clean-generic cscope \
+       cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+       dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+       dist-zip dist-zstd distcheck distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-local distclean-tags \
+       distcleancheck distdir distuninstallcheck dvi dvi-am html \
+       html-am info info-am install install-am install-binPROGRAMS \
+       install-binSCRIPTS install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-hook \
+       install-html install-html-am install-includeHEADERS \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
+       uninstall-binSCRIPTS uninstall-includeHEADERS
+
+.PRECIOUS: Makefile
+
+
+# First, add a link from gawk to gawk-X.Y.Z.
+#
+# For GNU systems where gawk is awk, add a link to awk.
+# (This is done universally, which may not always be right, but
+# there's no easy way to distinguish GNU from non-GNU systems.)
+#
+# Use the transform, in case --program-prefix=XXX
+install-exec-hook:
+       (cd $(DESTDIR)$(bindir); \
+       name=`echo gawk | sed '$(transform)'` ; \
+       $(LN) $${name}$(EXEEXT) gawk-$(VERSION)$(EXEEXT) 2>/dev/null ; \
+       if [ ! -f awk$(EXEEXT) ]; \
+       then    $(LN_S) $${name}$(EXEEXT) awk$(EXEEXT); \
+       fi; exit 0)
+
+# Undo the above when uninstalling
+uninstall-links:
+       (cd $(DESTDIR)$(bindir); \
+       name=`echo gawk | sed '$(transform)'` ; \
+       if [ -f awk$(EXEEXT) ] && cmp awk$(EXEEXT) $${name}$(EXEEXT) > 
/dev/null; then rm -f awk$(EXEEXT); fi ; \
+       rm -f gawk-$(VERSION)$(EXEEXT); exit 0)
+
+uninstall-recursive: uninstall-links
+
+# force there to be a gawk executable before running tests
+check-local: gawk$(EXEEXT)
+
+# A little extra clean up when making distributions.
+dist-hook:
+       cd "$(distdir)"/extension ; rm -f *.o *.so
+       cd "$(srcdir)"/pc ; \
+       chmod u+w config.h ; \
+       sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \
+       sed -f config.sed < ../configh.in > /tmp/config.tmp ; \
+       sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \
+       $(RM) /tmp/tmp.sed /tmp/config.tmp
+       pwd
+       chmod u+w "$(distdir)"/pc/config.h
+       cp "$(srcdir)"/pc/config.h "$(distdir)"/pc/config.h
+
+# Special rules for individual files
+
+$(srcdir)/awkgram.c: awkgram.y
+       $(YACC) -o $@ $(AM_YFLAGS) $(YFLAGS) $<
+       sed 's/parse error/syntax error/g' < $@ > $@.tmp && mv $@.tmp $@
+
+$(srcdir)/command.c: command.y
+       $(YACC) -o $@ -p zz $<
+       sed 's/parse error/syntax error/g' < $@ > $@.tmp && mv $@.tmp $@
+
+$(srcdir)/pc/Makefile.tst: test/Makefile.in pc/Makefile.tst.prologue 
pc/GenMakefileTst.awk
+       $(AM_V_GEN)$(MKDIR_P) "$(srcdir)"/pc && \
+       cat "$(srcdir)"/pc/Makefile.tst.prologue > "$(srcdir)"/pc/Makefile.tst 
&& \
+       $(AWK) -f "$(srcdir)"/pc/GenMakefileTst.awk 
"$(srcdir)"/test/Makefile.in >> "$(srcdir)"/pc/Makefile.tst
+
+# This is for my development & testing.
+efence: gawk
+       $(CC) $(AM_LDFLAGS) -o gawk $$(ls *.o | grep -v '_p.o$$') $(LDADD) 
$(LIBS) -lefence
+
+diffout valgrind-scan zos-diffout:
+       @cd test && $(MAKE) $(AM_MAKEFLAGS) $@
+
+valgrind:
+       cd test; rm -f log.[0-9]*; \
+       make check VALGRIND="valgrind --leak-check=full --log-file=log.%p"; \
+       make valgrind-scan
+
+valgrind-noleak:
+       cd test; rm -f log.[0-9]*; \
+       make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \
+       make valgrind-scan
+
+spell:
+       cd "$(srcdir)"/doc ; $(MAKE) spell
+
+distclean-local:
+       rm -fr .deps
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/mdim4.ok b/test/mdim4.ok
new file mode 100644
index 00000000..bb7c8d88
--- /dev/null
+++ b/test/mdim4.ok
@@ -0,0 +1,1373 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+#
+# Makefile.am --- automake input file for gawk
+#
+# Copyright (C) 2000-2021 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA
+#
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgincludedir = $(includedir)/gawk
+pkglibdir = $(libdir)/gawk
+pkglibexecdir = $(libexecdir)/gawk
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+
+# Build in extension before test so that
+#      ./configure && make check
+# works properly too.
+am__append_1 = extension
+bin_PROGRAMS = gawk$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
+       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
+       $(top_srcdir)/m4/pma.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
+       $(top_srcdir)/m4/socket.m4 \
+       $(top_srcdir)/m4/triplet-transformation.m4 \
+       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = gawkbug
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(includedir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__objects_1 = array.$(OBJEXT) awkgram.$(OBJEXT) builtin.$(OBJEXT) \
+       cint_array.$(OBJEXT) command.$(OBJEXT) debug.$(OBJEXT) \
+       eval.$(OBJEXT) ext.$(OBJEXT) field.$(OBJEXT) \
+       floatcomp.$(OBJEXT) gawkapi.$(OBJEXT) gawkmisc.$(OBJEXT) \
+       int_array.$(OBJEXT) io.$(OBJEXT) main.$(OBJEXT) mpfr.$(OBJEXT) \
+       msg.$(OBJEXT) node.$(OBJEXT) profile.$(OBJEXT) re.$(OBJEXT) \
+       replace.$(OBJEXT) str_array.$(OBJEXT) symbol.$(OBJEXT) \
+       version.$(OBJEXT)
+am_gawk_OBJECTS = $(am__objects_1)
+gawk_OBJECTS = $(am_gawk_OBJECTS)
+gawk_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+gawk_DEPENDENCIES = support/libsupport.a $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/array.Po ./$(DEPDIR)/awkgram.Po \
+       ./$(DEPDIR)/builtin.Po ./$(DEPDIR)/cint_array.Po \
+       ./$(DEPDIR)/command.Po ./$(DEPDIR)/debug.Po \
+       ./$(DEPDIR)/eval.Po ./$(DEPDIR)/ext.Po ./$(DEPDIR)/field.Po \
+       ./$(DEPDIR)/floatcomp.Po ./$(DEPDIR)/gawkapi.Po \
+       ./$(DEPDIR)/gawkmisc.Po ./$(DEPDIR)/int_array.Po \
+       ./$(DEPDIR)/io.Po ./$(DEPDIR)/main.Po ./$(DEPDIR)/mpfr.Po \
+       ./$(DEPDIR)/msg.Po ./$(DEPDIR)/node.Po ./$(DEPDIR)/profile.Po \
+       ./$(DEPDIR)/re.Po ./$(DEPDIR)/replace.Po \
+       ./$(DEPDIR)/str_array.Po ./$(DEPDIR)/symbol.Po \
+       ./$(DEPDIR)/version.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+                  -e s/c++$$/h++/ -e s/c$$/h/
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_$(V))
+am__v_YACC_ = $(am__v_YACC_$(AM_DEFAULT_VERBOSITY))
+am__v_YACC_0 = @echo "  YACC    " $@;
+am__v_YACC_1 = 
+YLWRAP = $(top_srcdir)/build-aux/ylwrap
+SOURCES = $(gawk_SOURCES)
+DIST_SOURCES = $(gawk_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(include_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       cscope distdir distdir-am dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+       configh.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+DIST_SUBDIRS = support . extension extras doc awklib po test
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/configh.in \
+       $(srcdir)/gawkbug.in $(top_srcdir)/build-aux/ar-lib \
+       $(top_srcdir)/build-aux/compile \
+       $(top_srcdir)/build-aux/config.guess \
+       $(top_srcdir)/build-aux/config.rpath \
+       $(top_srcdir)/build-aux/config.sub \
+       $(top_srcdir)/build-aux/depcomp \
+       $(top_srcdir)/build-aux/install-sh \
+       $(top_srcdir)/build-aux/missing $(top_srcdir)/build-aux/ylwrap \
+       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+       awkgram.c build-aux/ChangeLog build-aux/ar-lib \
+       build-aux/compile build-aux/config.guess \
+       build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
+       build-aux/install-sh build-aux/ltmain.sh build-aux/missing \
+       build-aux/texinfo.tex build-aux/ylwrap command.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz $(distdir).tar.xz
+GZIP_ENV = --best
+DIST_TARGETS = dist-lzip dist-xz dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+
+# Directory for gawk's data files. Automake supplies datadir.
+pkgdatadir = $(datadir)/awk
+ACLOCAL = ${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
aclocal-1.16
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' autoconf
+AUTOHEADER = ${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
autoheader
+AUTOMAKE = ${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' 
automake-1.16
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2 -DARRAYDEBUG -DYYDEBUG -DLOCALEDEBUG -DMEMDEBUG -Wall 
-fno-builtin -g3 -ggdb3
+CPP = gcc -E
+CPPFLAGS = 
+CSCOPE = cscope
+CTAGS = ctags
+CYGPATH_W = echo
+DEFS = -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) 
-DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"' -I"$(srcdir)/support"
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+ETAGS = etags
+EXEEXT = 
+GAWKLIBEXT = so
+GETTEXT_MACRO_VERSION = 0.20
+GMSGFMT = /usr/local/bin/msgfmt
+GMSGFMT_015 = /usr/local/bin/msgfmt
+GREP = /bin/grep
+HAVE_LIBSIGSEGV = no
+INSTALL = @INSTALL@
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+INTLLIBS = 
+INTL_MACOSX_LIBS = 
+LDFLAGS =  -no-pie
+LIBICONV = -liconv
+LIBINTL = 
+LIBMPFR = -lmpfr -lgmp
+LIBOBJS = 
+LIBREADLINE = -lreadline
+LIBS = -ldl -lm 
+LIBSIGSEGV = 
+LIBSIGSEGV_PREFIX = 
+LN_S = ln -s
+LTLIBICONV = -liconv
+LTLIBINTL = 
+LTLIBOBJS = 
+LTLIBSIGSEGV = 
+MAKEINFO = ${SHELL} '/home/arnold/Gnu/gawk/gawk.git/build-aux/missing' makeinfo
+MKDIR_P = /bin/mkdir -p
+MSGFMT = /usr/local/bin/msgfmt
+MSGMERGE = /usr/local/bin/msgmerge
+MSGMERGE_FOR_MSGFMT_OPTION = --for-msgfmt
+OBJEXT = o
+PACKAGE = gawk
+PACKAGE_BUGREPORT = bug-gawk@gnu.org
+PACKAGE_NAME = GNU Awk
+PACKAGE_STRING = GNU Awk 5.1.60
+PACKAGE_TARNAME = gawk
+PACKAGE_URL = https://www.gnu.org/software/gawk/
+PACKAGE_VERSION = 5.1.60
+PATH_SEPARATOR = :
+POSUB = po
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+SOCKET_LIBS = 
+STRIP = 
+USE_NLS = yes
+VERSION = 5.1.60
+XGETTEXT = /usr/local/bin/xgettext
+XGETTEXT_015 = /usr/local/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+ZOS_FAIL = 
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = ar
+ac_ct_CC = gcc
+acl_shlibext = so
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = @builddir@
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/arnold/Gnu/gawk/gawk.git/build-aux/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+pkgextensiondir = ${pkglibdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = @srcdir@
+subdirs =  extension
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# This variable insures that aclocal runs
+# correctly after changing configure.ac
+ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = -g -O2 -DARRAYDEBUG -DYYDEBUG -DLOCALEDEBUG -DMEMDEBUG -Wall 
-fno-builtin -g3 -ggdb3
+AM_LDFLAGS =  -no-pie
+
+# Stuff to include in the dist that doesn't need it's own
+# Makefile.am files
+EXTRA_DIST = \
+       ChangeLog.0 \
+       ChangeLog.1 \
+       COPYING \
+       INSTALL \
+       NEWS \
+       NEWS.0 \
+       NEWS.1 \
+       POSIX.STD \
+       README_d \
+       m4 \
+       missing_d \
+       po/README \
+       pc \
+       posix \
+       vms
+
+
+# The order to do things in.
+#
+# Build in support first, since we need the support library.
+#
+# Build explicitly in "." in order to build gawk first, so
+# that `make check' without a prior `make' works.
+
+# Build in awklib after in doc, since we want to extract
+# sample files if doc/gawk.texi changed.
+SUBDIRS = support . $(am__append_1) extras doc awklib po test
+bin_SCRIPTS = gawkbug
+include_HEADERS = gawkapi.h
+BUILT_SOURCES = $(srcdir)/pc/Makefile.tst
+
+# sources for gawk
+base_sources = \
+       array.c \
+       awk.h \
+       awkgram.y \
+       builtin.c \
+       cint_array.c \
+       cmd.h \
+       command.y \
+       custom.h \
+       debug.c \
+       eval.c \
+       ext.c \
+       field.c \
+       floatcomp.c \
+       floatmagic.h \
+       gawkapi.c \
+       gawkapi.h \
+       gawkmisc.c \
+       gettext.h \
+       int_array.c \
+       interpret.h \
+       io.c \
+       mbsupport.h \
+       main.c \
+       mpfr.c \
+       msg.c \
+       node.c \
+       nonposix.h \
+       profile.c \
+       protos.h \
+       re.c \
+       replace.c \
+       str_array.c \
+       symbol.c \
+       version.c
+
+gawk_SOURCES = $(base_sources)
+
+# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
+LDADD = support/libsupport.a \
+       $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) $(LIBREADLINE) $(LIBMPFR) \
+       $(LDFLAGS)
+
+
+# stuff for compiling gawk/pgawk
+DEFPATH = '".$(PATH_SEPARATOR)$(pkgdatadir)"'
+
+# shared library support:
+SHLIBEXT = "\"$(GAWKLIBEXT)"\"
+DEFLIBPATH = "\"$(pkgextensiondir)\""
+
+# Get rid of core files when cleaning
+CLEANFILES = core core.* $(bin_SCRIPTS)
+
+# We want hard links for install-exec-hook, below
+LN = ln
+
+# Make copies...
+CP = cp
+
+# For some make's, e.g. OpenBSD, that don't define this
+RM = rm -f
+all: $(BUILT_SOURCES) config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj .y
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__maybe_remake_depfiles);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/configh.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/configh.in:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+gawkbug: $(top_builddir)/config.status $(srcdir)/gawkbug.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
'$(DESTDIR)$(bindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
"$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+gawk$(EXEEXT): $(gawk_OBJECTS) $(gawk_DEPENDENCIES) $(EXTRA_gawk_DEPENDENCIES) 
+       @rm -f gawk$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gawk_OBJECTS) $(gawk_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit 
$$?; \
+            } \
+       ; done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+include ./$(DEPDIR)/array.Po # am--include-marker
+include ./$(DEPDIR)/awkgram.Po # am--include-marker
+include ./$(DEPDIR)/builtin.Po # am--include-marker
+include ./$(DEPDIR)/cint_array.Po # am--include-marker
+include ./$(DEPDIR)/command.Po # am--include-marker
+include ./$(DEPDIR)/debug.Po # am--include-marker
+include ./$(DEPDIR)/eval.Po # am--include-marker
+include ./$(DEPDIR)/ext.Po # am--include-marker
+include ./$(DEPDIR)/field.Po # am--include-marker
+include ./$(DEPDIR)/floatcomp.Po # am--include-marker
+include ./$(DEPDIR)/gawkapi.Po # am--include-marker
+include ./$(DEPDIR)/gawkmisc.Po # am--include-marker
+include ./$(DEPDIR)/int_array.Po # am--include-marker
+include ./$(DEPDIR)/io.Po # am--include-marker
+include ./$(DEPDIR)/main.Po # am--include-marker
+include ./$(DEPDIR)/mpfr.Po # am--include-marker
+include ./$(DEPDIR)/msg.Po # am--include-marker
+include ./$(DEPDIR)/node.Po # am--include-marker
+include ./$(DEPDIR)/profile.Po # am--include-marker
+include ./$(DEPDIR)/re.Po # am--include-marker
+include ./$(DEPDIR)/replace.Po # am--include-marker
+include ./$(DEPDIR)/str_array.Po # am--include-marker
+include ./$(DEPDIR)/symbol.Po # am--include-marker
+include ./$(DEPDIR)/version.Po # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+       $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+       $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+       $(am__mv) $$depbase.Tpo $$depbase.Po
+#      $(AM_V_CC)source='$<' object='$@' libtool=no \
+#      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#      $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+       $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+       $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) 
'$<'` &&\
+       $(am__mv) $$depbase.Tpo $$depbase.Po
+#      $(AM_V_CC)source='$<' object='$@' libtool=no \
+#      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#      $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.y.c:
+       $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h 
`echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
+install-includeHEADERS: $(include_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+       done
+
+uninstall-includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files 
$(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: 
am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c 
>$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} 
>$(distdir).tar.lz
+       $(am__post_remove_distdir)
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c 
>$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-zstd: distdir
+       tardir=$(distdir) && $(am__tar) | zstd -c 
$${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       *.tar.zst*) \
+         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
+       esac
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 
's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=../.. --prefix="$$dc_install_base" \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" 
\
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" 
"$(DESTDIR)$(includedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f 
$(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -rm -f awkgram.c
+       -rm -f command.c
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+               -rm -f ./$(DEPDIR)/array.Po
+       -rm -f ./$(DEPDIR)/awkgram.Po
+       -rm -f ./$(DEPDIR)/builtin.Po
+       -rm -f ./$(DEPDIR)/cint_array.Po
+       -rm -f ./$(DEPDIR)/command.Po
+       -rm -f ./$(DEPDIR)/debug.Po
+       -rm -f ./$(DEPDIR)/eval.Po
+       -rm -f ./$(DEPDIR)/ext.Po
+       -rm -f ./$(DEPDIR)/field.Po
+       -rm -f ./$(DEPDIR)/floatcomp.Po
+       -rm -f ./$(DEPDIR)/gawkapi.Po
+       -rm -f ./$(DEPDIR)/gawkmisc.Po
+       -rm -f ./$(DEPDIR)/int_array.Po
+       -rm -f ./$(DEPDIR)/io.Po
+       -rm -f ./$(DEPDIR)/main.Po
+       -rm -f ./$(DEPDIR)/mpfr.Po
+       -rm -f ./$(DEPDIR)/msg.Po
+       -rm -f ./$(DEPDIR)/node.Po
+       -rm -f ./$(DEPDIR)/profile.Po
+       -rm -f ./$(DEPDIR)/re.Po
+       -rm -f ./$(DEPDIR)/replace.Po
+       -rm -f ./$(DEPDIR)/str_array.Po
+       -rm -f ./$(DEPDIR)/symbol.Po
+       -rm -f ./$(DEPDIR)/version.Po
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+               -rm -f ./$(DEPDIR)/array.Po
+       -rm -f ./$(DEPDIR)/awkgram.Po
+       -rm -f ./$(DEPDIR)/builtin.Po
+       -rm -f ./$(DEPDIR)/cint_array.Po
+       -rm -f ./$(DEPDIR)/command.Po
+       -rm -f ./$(DEPDIR)/debug.Po
+       -rm -f ./$(DEPDIR)/eval.Po
+       -rm -f ./$(DEPDIR)/ext.Po
+       -rm -f ./$(DEPDIR)/field.Po
+       -rm -f ./$(DEPDIR)/floatcomp.Po
+       -rm -f ./$(DEPDIR)/gawkapi.Po
+       -rm -f ./$(DEPDIR)/gawkmisc.Po
+       -rm -f ./$(DEPDIR)/int_array.Po
+       -rm -f ./$(DEPDIR)/io.Po
+       -rm -f ./$(DEPDIR)/main.Po
+       -rm -f ./$(DEPDIR)/mpfr.Po
+       -rm -f ./$(DEPDIR)/msg.Po
+       -rm -f ./$(DEPDIR)/node.Po
+       -rm -f ./$(DEPDIR)/profile.Po
+       -rm -f ./$(DEPDIR)/re.Po
+       -rm -f ./$(DEPDIR)/replace.Po
+       -rm -f ./$(DEPDIR)/str_array.Po
+       -rm -f ./$(DEPDIR)/symbol.Po
+       -rm -f ./$(DEPDIR)/version.Po
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
+       uninstall-includeHEADERS
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+       install-exec install-exec-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--depfiles am--refresh check check-am check-local clean \
+       clean-binPROGRAMS clean-cscope clean-generic cscope \
+       cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+       dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+       dist-zip dist-zstd distcheck distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-local distclean-tags \
+       distcleancheck distdir distuninstallcheck dvi dvi-am html \
+       html-am info info-am install install-am install-binPROGRAMS \
+       install-binSCRIPTS install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-hook \
+       install-html install-html-am install-includeHEADERS \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
+       uninstall-binSCRIPTS uninstall-includeHEADERS
+
+.PRECIOUS: Makefile
+
+
+# First, add a link from gawk to gawk-X.Y.Z.
+#
+# For GNU systems where gawk is awk, add a link to awk.
+# (This is done universally, which may not always be right, but
+# there's no easy way to distinguish GNU from non-GNU systems.)
+#
+# Use the transform, in case --program-prefix=XXX
+install-exec-hook:
+       (cd $(DESTDIR)$(bindir); \
+       name=`echo gawk | sed '$(transform)'` ; \
+       $(LN) $${name}$(EXEEXT) gawk-$(VERSION)$(EXEEXT) 2>/dev/null ; \
+       if [ ! -f awk$(EXEEXT) ]; \
+       then    $(LN_S) $${name}$(EXEEXT) awk$(EXEEXT); \
+       fi; exit 0)
+
+# Undo the above when uninstalling
+uninstall-links:
+       (cd $(DESTDIR)$(bindir); \
+       name=`echo gawk | sed '$(transform)'` ; \
+       if [ -f awk$(EXEEXT) ] && cmp awk$(EXEEXT) $${name}$(EXEEXT) > 
/dev/null; then rm -f awk$(EXEEXT); fi ; \
+       rm -f gawk-$(VERSION)$(EXEEXT); exit 0)
+
+uninstall-recursive: uninstall-links
+
+# force there to be a gawk executable before running tests
+check-local: gawk$(EXEEXT)
+
+# A little extra clean up when making distributions.
+dist-hook:
+       cd "$(distdir)"/extension ; rm -f *.o *.so
+       cd "$(srcdir)"/pc ; \
+       chmod u+w config.h ; \
+       sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \
+       sed -f config.sed < ../configh.in > /tmp/config.tmp ; \
+       sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \
+       $(RM) /tmp/tmp.sed /tmp/config.tmp
+       pwd
+       chmod u+w "$(distdir)"/pc/config.h
+       cp "$(srcdir)"/pc/config.h "$(distdir)"/pc/config.h
+
+# Special rules for individual files
+
+$(srcdir)/awkgram.c: awkgram.y
+       $(YACC) -o $@ $(AM_YFLAGS) $(YFLAGS) $<
+       sed 's/parse error/syntax error/g' < $@ > $@.tmp && mv $@.tmp $@
+
+$(srcdir)/command.c: command.y
+       $(YACC) -o $@ -p zz $<
+       sed 's/parse error/syntax error/g' < $@ > $@.tmp && mv $@.tmp $@
+
+$(srcdir)/pc/Makefile.tst: test/Makefile.in pc/Makefile.tst.prologue 
pc/GenMakefileTst.awk
+       $(AM_V_GEN)$(MKDIR_P) "$(srcdir)"/pc && \
+       cat "$(srcdir)"/pc/Makefile.tst.prologue > "$(srcdir)"/pc/Makefile.tst 
&& \
+       $(AWK) -f "$(srcdir)"/pc/GenMakefileTst.awk 
"$(srcdir)"/test/Makefile.in >> "$(srcdir)"/pc/Makefile.tst
+
+# This is for my development & testing.
+efence: gawk
+       $(CC) $(AM_LDFLAGS) -o gawk $$(ls *.o | grep -v '_p.o$$') $(LDADD) 
$(LIBS) -lefence
+
+diffout valgrind-scan zos-diffout:
+       @cd test && $(MAKE) $(AM_MAKEFLAGS) $@
+
+valgrind:
+       cd test; rm -f log.[0-9]*; \
+       make check VALGRIND="valgrind --leak-check=full --log-file=log.%p"; \
+       make valgrind-scan
+
+valgrind-noleak:
+       cd test; rm -f log.[0-9]*; \
+       make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \
+       make valgrind-scan
+
+spell:
+       cd "$(srcdir)"/doc ; $(MAKE) spell
+
+distclean-local:
+       rm -fr .deps
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/typeof3.awk b/test/typeof3.awk
index d148f373..2f864f45 100644
--- a/test/typeof3.awk
+++ b/test/typeof3.awk
@@ -15,5 +15,5 @@ BEGIN {
 BEGIN {
        print typeof(x)
        print typeof(a[1])
-       a[1][2] # fatals on this
+       a[1][2] # this used to fatal, it no longer does
 }
diff --git a/test/typeof3.ok b/test/typeof3.ok
index a6cd6c4a..f9026b08 100644
--- a/test/typeof3.ok
+++ b/test/typeof3.ok
@@ -4,6 +4,4 @@ regexp
 number
 4
 number
-unassigned
-gawk: typeof3.awk:18: fatal: attempt to use scalar `a["1"]' as an array
-EXIT CODE: 2
+untyped

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                       | 108 +++++++++
 NEWS                            |   3 +
 array.c                         |  31 ++-
 awk.h                           |  19 +-
 builtin.c                       |   3 +-
 cint_array.c                    |   2 +-
 debug.c                         |  13 +-
 eval.c                          |  31 +++
 ext.c                           |   2 +-
 gawkapi.c                       |  12 +-
 int_array.c                     |   2 +-
 interpret.h                     |  31 ++-
 mpfr.c                          |   9 +
 node.c                          |   9 +
 pc/ChangeLog                    |  12 +
 pc/Makefile.tst                 |  21 ++
 str_array.c                     |   2 +-
 symbol.c                        |   2 +
 test/ChangeLog                  |  19 ++
 test/Makefile.am                |  10 +
 test/Makefile.in                |  30 +++
 test/Maketests                  |  20 ++
 test/aadelete1.awk              |   2 +-
 test/aadelete1.ok               |   2 -
 test/mdim1.awk                  |  15 ++
 test/mdim1.ok                   |   9 +
 test/mdim2.awk                  |   9 +
 test/{arrayprm3.ok => mdim2.ok} |   0
 test/mdim3.awk                  |  29 +++
 test/mdim3.ok                   | 520 ++++++++++++++++++++++++++++++++++++++++
 test/mdim4.awk                  | 168 +++++++++++++
 Makefile.in => test/mdim4.in    |   2 +-
 Makefile.in => test/mdim4.ok    | 366 ++++++++++++++--------------
 test/typeof3.awk                |   2 +-
 test/typeof3.ok                 |   4 +-
 35 files changed, 1311 insertions(+), 208 deletions(-)
 create mode 100644 test/mdim1.awk
 create mode 100644 test/mdim1.ok
 create mode 100644 test/mdim2.awk
 copy test/{arrayprm3.ok => mdim2.ok} (100%)
 create mode 100644 test/mdim3.awk
 create mode 100644 test/mdim3.ok
 create mode 100644 test/mdim4.awk
 copy Makefile.in => test/mdim4.in (99%)
 copy Makefile.in => test/mdim4.ok (85%)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]