before:
mainstart: undefined: main·init in mainstart
mainstart: branch out of range in mainstart
(95) CALL ,0(PC) [main·init]
mainstart: undefined: main·main in mainstart
mainstart: branch out of range in mainstart
(97) CALL ,0(PC) [main·main]
mainstart: doasm: notfound from=6f to=6f (95) CALL ,
mainstart: doasm: notfound from=6f to=6f (97) CALL ,
mainstart: doasm: notfound from=6f to=6f (95) CALL ,
mainstart: doasm: notfound from=6f to=6f (97) CALL ,
mainstart: doasm: notfound from=6f to=6f (95) CALL ,
mainstart: doasm: notfound from=6f to=6f (97) CALL ,
after:
mainstart: undefined: main·init in mainstart
mainstart: undefined: main·main in mainstart
R=r
DELTA=7 (1 added, 0 deleted, 6 changed)
OCL=31555
CL=31555
s = p->to.sym;
switch(s->type) {
default:
- diag("undefined: %s\n%P", s->name, p);
+ diag("undefined: %s", s->name);
s->type = STEXT;
s->value = vexit;
- break;
+ continue; // avoid more error messages
case STEXT:
p->to.offset = s->value;
p->to.type = D_BRANCH;
if(p == nil)
return;
s = p->from.sym;
- }
+ }
s->used = 1;
do{
todo = 0;
}
return 1;
}
-
+
static void
setuse(Sym *s, Sym *s0, Use *u)
{
setfpuse(u->p, s0, s);
}
}
-
+
/* detect BX O(R) which can be done as BL O(R) */
void
fnptrs()
Sym *s;
Prog *p;
Use *u;
-
+
for(i=0; i<NHASH; i++){
for(s = hash[i]; s != S; s = s->link){
if(s->fnptr && (s->type == STEXT || s->type == SLEAF || s->type == SCONST)){
// print("%s : fnptr %d %d\n", s->name, s->thumb, s->foreign);
}
}
- }
+ }
/* record use of syms */
for(p = firstp; p != P; p = p->link){
if(p->as == ATEXT)
for(u = s->use; u != U; u = u->link)
setuse(s, s, u);
}
- }
+ }
}
}
Bprint(&bso, "%s calls %s\n", TNAME, s->name);
switch(s->type) {
default:
- diag("undefined: %s in %s", s->name, TNAME);
+ /* diag prints TNAME first */
+ diag("undefined: %s", s->name);
s->type = STEXT;
s->value = vexit;
- break; /* or fall through to set offset? */
+ continue; // avoid more error messages
case STEXT:
p->to.offset = s->value;
break;
switch(s->type) {
default:
/* diag prints TNAME first */
- diag("%s is undefined", s->name);
+ diag("undefined: %s", s->name);
s->type = STEXT;
s->value = vexit;
- break; /* or fall through to set offset? */
+ continue; // avoid more error messages
case STEXT:
p->to.offset = s->value;
break;