diff lwasm/pseudo.c @ 158:f0527dc3804d

Added support for .globl <sym>, .area <section>, .word, .byte, .blkb, and a .module directive that does nothing
author lost
date Sat, 31 Jan 2009 05:30:06 +0000
parents 427e268e876b
children b061350c17e4
line wrap: on
line diff
--- a/lwasm/pseudo.c	Sat Jan 31 05:29:15 2009 +0000
+++ b/lwasm/pseudo.c	Sat Jan 31 05:30:06 2009 +0000
@@ -30,6 +30,11 @@
 
 extern int lwasm_read_file(asmstate_t *as, const char *filename);
 
+OPFUNC(pseudo_noop)
+{
+
+}
+
 OPFUNC(pseudo_org)
 {
 	int v, r;
@@ -908,16 +913,39 @@
 {
 	lwasm_symbol_ent_t *se;
 	export_list_t *ex;
-	
+	char *sym2, *sym3;
+
 	if (as -> outformat != OUTPUT_OBJ)
 	{
 		register_error(as, l, 1, "Symbol exports only supported for obj target");
 		return;
 	}
-	
+
 	if (as -> passnum == 1)
 		return;
 
+	if (!(l -> sym))
+	{
+		// look for symbol after op
+		if (**p)
+		{
+			for (sym2 = *p; **p && !isspace(**p); (*p)++)
+				/* do nothing */
+			sym3 = lwasm_alloc(*p - sym2 + 1);
+			memcpy(sym3, sym2, *p - sym2);
+			sym3[*p - sym2] = '\0';
+			
+			l -> sym = sym3;
+		}
+	}
+
+	if (!(l -> sym))
+	{
+		register_error(as, l, 2, "No symbol");
+		return;
+	}
+
+
 	// the symbol better be defined at this point (pass 2)
 	// local symbols cannot be exported nor can "global" symbols
 	se = lwasm_find_symbol(as, l -> sym, -1);