Mercurial > hg-old > index.cgi
diff lwasm/main.c @ 372:90de73ba0cac
Created a useful debug framework and adjusted lw_expr_print() to return a "static" dynamic string
author | lost@starbug |
---|---|
date | Thu, 22 Apr 2010 18:19:06 -0600 |
parents | 6b33faa21a0a |
children | d99322ef6f21 |
line wrap: on
line diff
--- a/lwasm/main.c Wed Apr 21 23:29:18 2010 -0600 +++ b/lwasm/main.c Thu Apr 22 18:19:06 2010 -0600 @@ -43,7 +43,7 @@ static struct argp_option options[] = { { "output", 'o', "FILE", 0, "Output to FILE"}, - { "debug", 'd', 0, 0, "Set debug mode"}, + { "debug", 'd', "LEVEL", OPTION_ARG_OPTIONAL, "Set debug mode"}, { "format", 'f', "TYPE", 0, "Select output format: decb, raw, obj, os9"}, { "list", 'l', "FILE", OPTION_ARG_OPTIONAL, "Generate list [to FILE]"}, { "decb", 'b', 0, 0, "Generate DECB .bin format output, equivalent of --format=decb"}, @@ -75,7 +75,10 @@ break; case 'd': - as -> debug_level++; + if (!arg) + as -> debug_level = 50; + else + as -> debug_level = atoi(arg); break; case 'l': @@ -190,7 +193,6 @@ { NULL, NULL } }; -extern void dump_state(asmstate_t *as, FILE *fp); int main(int argc, char **argv) { @@ -221,10 +223,10 @@ for (passnum = 0; passlist[passnum].fn; passnum++) { - fprintf(stderr, "Doing pass %d (%s)\n", passnum, passlist[passnum].passname); + debug_message(&asmstate, 50, "Doing pass %d (%s)\n", passnum, passlist[passnum].passname); (passlist[passnum].fn)(&asmstate); - fprintf(stderr, "After pass %d (%s):\n", passnum, passlist[passnum].passname); - dump_state(&asmstate, stderr); + debug_message(&asmstate, 50, "After pass %d (%s)\n", passnum, passlist[passnum].passname); + dump_state(&asmstate); if (asmstate.errorcount > 0) {