Mercurial > hg-old > index.cgi
diff src/main.c @ 143:0ee5f65bccf9
Added pragma to allow all undefined symbols to be considered external and also added a --pragma command line option
author | lost |
---|---|
date | Thu, 29 Jan 2009 01:32:11 +0000 |
parents | 36ca3fa755e0 |
children |
line wrap: on
line diff
--- a/src/main.c Wed Jan 28 06:06:05 2009 +0000 +++ b/src/main.c Thu Jan 29 01:32:11 2009 +0000 @@ -38,6 +38,7 @@ extern void lwasm_pass2(asmstate_t *as); extern void lwasm_list(asmstate_t *as); extern void lwasm_output(asmstate_t *as); +extern void pseudo_pragma_real(asmstate_t *as, lwasm_line_t *cl, char **optr, int error); // command line option handling const char *argp_program_version = "LWASM from " PACKAGE_STRING; @@ -46,6 +47,7 @@ static error_t parse_opts(int key, char *arg, struct argp_state *state) { asmstate_t *as = state -> input; + char *p; switch (key) { @@ -99,6 +101,18 @@ exit(1); } break; + + case 'p': + // pragmas + p = arg; + pseudo_pragma_real(as, NULL, &p, 2); + if (!p) + { + fprintf(stderr, "Invalid pragma string: %s\n", arg); + exit(1); + } + break; + case ARGP_KEY_END: // done; sanity check if (!as -> outfile) @@ -134,6 +148,8 @@ "Generate raw binary format output, equivalent of --format=raw"}, { "obj", 0x100, 0, 0, "Generate proprietary object file format for later linking, equivalent of --format=obj" }, + { "pragma", 'p', "PRAGMA", 0, + "Set an assembler pragma to any value understood by the \"pragma\" pseudo op"}, { 0 } };