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 }
 };