Mercurial > hg-old > index.cgi
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 } |