diff src/symbol.c @ 58:b1d81800bc91

Added symbol listing to list file; various fixes
author lost
date Mon, 05 Jan 2009 00:20:45 +0000
parents b9856da2674a
children d85ba47b1e8f
line wrap: on
line diff
--- a/src/symbol.c	Mon Jan 05 00:01:21 2009 +0000
+++ b/src/symbol.c	Mon Jan 05 00:20:45 2009 +0000
@@ -70,6 +70,8 @@
 			scontext = as -> context;
 	}
 	
+	debug_message(3, "lwasm_register_symbol(): registering '%s' (%d) at %04X", sym, scontext, val);
+	
 	// now look it for to see if it is a duplicate
 	se = lwasm_find_symbol(as, sym, scontext);
 	if (se)
@@ -129,3 +131,31 @@
 	se -> value = val;
 	return 0;
 }
+
+void lwasm_list_symbols(asmstate_t *as, FILE *lf)
+{
+	lwasm_symbol_ent_t *se;
+	
+	for (se = as -> symhead; se; se = se -> next)
+	{
+		if (se -> value > 0xffff || se -> value < -0x8000)
+		{
+			fprintf(lf, "%08X ", se -> value);
+		}
+		else
+		{
+			fprintf(lf, "    %04X ", se -> value);
+		}
+		if (se -> context < 0)
+			fputc('G', lf);
+		else
+			fputc('L', lf);
+		
+		fprintf(lf, " %s", se -> sym);
+		
+		if (se -> context >= 0)
+			fprintf(lf, " (%d)", se -> context);
+		
+		fputc('\n', lf);
+	}
+}