Mercurial > hg > index.cgi
diff lwasm/lwasm.c @ 433:b1adf549d181
Add some debugging instrumentation for tracking an expression bug
There's no reason not to keep the instrumentation so into the repo it goes.
author | William Astle <lost@l-w.ca> |
---|---|
date | Mon, 23 Jan 2017 22:54:19 -0700 |
parents | 58cafa61ab40 |
children | cad5937314cb |
line wrap: on
line diff
--- a/lwasm/lwasm.c Fri Nov 18 21:25:43 2016 -0700 +++ b/lwasm/lwasm.c Mon Jan 23 22:54:19 2017 -0700 @@ -64,15 +64,18 @@ importlist_t *im; struct symtabe *s; + debug_message(as, 225, "eval var: look up %s", var); s = lookup_symbol(as, as -> cl, var); if (s) { + debug_message(as, 225, "eval var: symbol found %s = %s (%p)", s -> symbol, lw_expr_print(s -> value), s); e = lw_expr_build(lw_expr_type_special, lwasm_expr_syment, s); return e; } if (as -> undefzero) { + debug_message(as, 225, "eval var: undefined symbol treated as 0"); e = lw_expr_build(lw_expr_type_int, 0); return e; } @@ -91,6 +94,7 @@ // check for "undefined" to import automatically if ((as -> passno != 0) && !im && CURPRAGMA(as -> cl, PRAGMA_UNDEFEXTERN)) { + debug_message(as, 225, "eval var: importing undefined symbol"); im = lw_alloc(sizeof(importlist_t)); im -> symbol = lw_strdup(var); im -> next = as -> importlist; @@ -108,6 +112,7 @@ { lwasm_register_error2(as, as -> cl, E_SYMBOL_UNDEFINED, "%s", var); } + debug_message(as, 225, "eval var: undefined symbol - returning NULL"); return NULL; } @@ -1420,6 +1425,7 @@ // simplify each expression for (i = 0, le = cl -> exprs; le; le = le -> next, i++) { + debug_message(as, 101, "Reduce expressions: (pre) exp[%d] = %s", i, lw_expr_print(le -> expr)); lwasm_reduce_expr(as, le -> expr); debug_message(as, 100, "Reduce expressions: exp[%d] = %s", i, lw_expr_print(le -> expr)); }