diff lwasm/symbol.c @ 389:fbb7bfed8076

Added in structure support and fixed up some warts in the listing code (by adding more warts)
author lost@l-w.ca
date Wed, 14 Jul 2010 22:33:55 -0600
parents d99322ef6f21
children 027d7fbcdcfc
line wrap: on
line diff
--- a/lwasm/symbol.c	Wed Jul 14 20:17:57 2010 -0600
+++ b/lwasm/symbol.c	Wed Jul 14 22:33:55 2010 -0600
@@ -38,16 +38,19 @@
 	int version = -1;
 	char *cp;
 
-	if (*sym < 0x80 && !strchr(SSYMCHARS, *sym))
+	if (!(flags & symbol_flag_nocheck))
 	{
-		lwasm_register_error(as, cl, "Bad symbol (%s)", sym);
-		return NULL;
-	}
+		if (*sym < 0x80 && !strchr(SSYMCHARS, *sym))
+		{
+			lwasm_register_error(as, cl, "Bad symbol (%s)", sym);
+			return NULL;
+		}
 
-	if ((*sym == '$' || *sym == '@') && (sym[1] >= '0' && sym[1] <= '9'))
-	{
-		lwasm_register_error(as, cl, "Bad symbol (%s)", sym);
-		return NULL;
+		if ((*sym == '$' || *sym == '@') && (sym[1] >= '0' && sym[1] <= '9'))
+		{
+			lwasm_register_error(as, cl, "Bad symbol (%s)", sym);
+			return NULL;
+		}
 	}
 
 	for (cp = sym; *cp; cp++)
@@ -58,7 +61,7 @@
 			islocal = 1;
 		
 		// bad symbol
-		if (*cp < 0x80 && !strchr(SYMCHARS, *cp))
+		if (!(flags & symbol_flag_nocheck) && *cp < 0x80 && !strchr(SYMCHARS, *cp))
 		{
 			lwasm_register_error(as, cl, "Bad symbol (%s)", sym);
 			return NULL;
@@ -84,6 +87,7 @@
 			break;
 		}
 	}
+
 	if (se)
 	{
 		// multiply defined symbol