comparison lwlink/trunk/src/readfiles.c @ 120:36ce328df3c3

resolve incomplete references done
author lost
date Wed, 21 Jan 2009 06:14:08 +0000
parents 8bc00221ae89
children 4ac96c697ef0
comparison
equal deleted inserted replaced
119:8bc00221ae89 120:36ce328df3c3
182 se = lw_malloc(sizeof(symtab_t)); 182 se = lw_malloc(sizeof(symtab_t));
183 se -> next = s -> localsyms; 183 se -> next = s -> localsyms;
184 s -> localsyms = se; 184 s -> localsyms = se;
185 se -> sym = fp; 185 se -> sym = fp;
186 se -> offset = val; 186 se -> offset = val;
187 se -> realval = val;
188 } 187 }
189 188
190 // now parse the exported symbol table 189 // now parse the exported symbol table
191 while (CURBYTE()) 190 while (CURBYTE())
192 { 191 {
203 se = lw_malloc(sizeof(symtab_t)); 202 se = lw_malloc(sizeof(symtab_t));
204 se -> next = s -> exportedsyms; 203 se -> next = s -> exportedsyms;
205 s -> localsyms = se; 204 s -> localsyms = se;
206 se -> sym = fp; 205 se -> sym = fp;
207 se -> offset = val; 206 se -> offset = val;
208 se -> realval = val;
209 } 207 }
210 208
211 // now parse the incomplete references and make a list of 209 // now parse the incomplete references and make a list of
212 // external references that need resolution 210 // external references that need resolution
213 while (CURBYTE()) 211 while (CURBYTE())
258 break; 256 break;
259 257
260 case 0x05: 258 case 0x05:
261 // section base reference (NULL internal reference is 259 // section base reference (NULL internal reference is
262 // the section base address 260 // the section base address
263 term = lw_expr_term_create_sym(NULL, 0); 261 term = lw_expr_term_create_sym(NULL, 1);
264 break; 262 break;
265 263
266 default: 264 default:
267 fprintf(stderr, "%s (%s): bad relocation expression\n", fn -> filename, s -> name); 265 fprintf(stderr, "%s (%s): bad relocation expression\n", fn -> filename, s -> name);
268 exit(1); 266 exit(1);