comparison 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
comparison
equal deleted inserted replaced
57:035b95a3690f 58:b1d81800bc91
68 // flag local symbols while we're at it... 68 // flag local symbols while we're at it...
69 if (*p == '?' || *p == '@') 69 if (*p == '?' || *p == '@')
70 scontext = as -> context; 70 scontext = as -> context;
71 } 71 }
72 72
73 debug_message(3, "lwasm_register_symbol(): registering '%s' (%d) at %04X", sym, scontext, val);
74
73 // now look it for to see if it is a duplicate 75 // now look it for to see if it is a duplicate
74 se = lwasm_find_symbol(as, sym, scontext); 76 se = lwasm_find_symbol(as, sym, scontext);
75 if (se) 77 if (se)
76 { 78 {
77 register_error(as, l, 1, "Mulitply defined symbol: %s", sym); 79 register_error(as, l, 1, "Mulitply defined symbol: %s", sym);
127 return -1; 129 return -1;
128 130
129 se -> value = val; 131 se -> value = val;
130 return 0; 132 return 0;
131 } 133 }
134
135 void lwasm_list_symbols(asmstate_t *as, FILE *lf)
136 {
137 lwasm_symbol_ent_t *se;
138
139 for (se = as -> symhead; se; se = se -> next)
140 {
141 if (se -> value > 0xffff || se -> value < -0x8000)
142 {
143 fprintf(lf, "%08X ", se -> value);
144 }
145 else
146 {
147 fprintf(lf, " %04X ", se -> value);
148 }
149 if (se -> context < 0)
150 fputc('G', lf);
151 else
152 fputc('L', lf);
153
154 fprintf(lf, " %s", se -> sym);
155
156 if (se -> context >= 0)
157 fprintf(lf, " (%d)", se -> context);
158
159 fputc('\n', lf);
160 }
161 }