From 29e93590b00648423886f0663b0841f547099abf Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 13 Jul 2009 16:48:09 -0700 Subject: [PATCH] =?utf8?q?fix=20undefined=20function=20error.=20before:=20?= =?utf8?q?=09mainstart:=20undefined:=20main=C2=B7init=20in=20mainstart=20?= =?utf8?q?=09mainstart:=20branch=20out=20of=20range=20in=20mainstart=20=09?= =?utf8?q?(95)=20=20=20=20CALL=20=20=20=20,0(PC)=20[main=C2=B7init]=20=09m?= =?utf8?q?ainstart:=20undefined:=20main=C2=B7main=20in=20mainstart=20=09ma?= =?utf8?q?instart:=20branch=20out=20of=20range=20in=20mainstart=20=09(97)?= =?utf8?q?=20=20=20=20CALL=20=20=20=20,0(PC)=20[main=C2=B7main]=20=09mains?= =?utf8?q?tart:=20doasm:=20notfound=20from=3D6f=20to=3D6f=20(95)=20=20=20?= =?utf8?q?=20CALL=20=20=20=20,=20=09mainstart:=20doasm:=20notfound=20from?= =?utf8?q?=3D6f=20to=3D6f=20(97)=20=20=20=20CALL=20=20=20=20,=20=09mainsta?= =?utf8?q?rt:=20doasm:=20notfound=20from=3D6f=20to=3D6f=20(95)=20=20=20=20?= =?utf8?q?CALL=20=20=20=20,=20=09mainstart:=20doasm:=20notfound=20from=3D6?= =?utf8?q?f=20to=3D6f=20(97)=20=20=20=20CALL=20=20=20=20,=20=09mainstart:?= =?utf8?q?=20doasm:=20notfound=20from=3D6f=20to=3D6f=20(95)=20=20=20=20CAL?= =?utf8?q?L=20=20=20=20,=20=09mainstart:=20doasm:=20notfound=20from=3D6f?= =?utf8?q?=20to=3D6f=20(97)=20=20=20=20CALL=20=20=20=20,?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/cmd/5l/pass.c | 16 ++++++++-------- src/cmd/6l/pass.c | 5 +++-- src/cmd/8l/pass.c | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/cmd/5l/pass.c b/src/cmd/5l/pass.c index 31af4468ff..852a62048e 100644 --- a/src/cmd/5l/pass.c +++ b/src/cmd/5l/pass.c @@ -343,10 +343,10 @@ patch(void) 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; @@ -559,7 +559,7 @@ reachable() if(p == nil) return; s = p->from.sym; - } + } s->used = 1; do{ todo = 0; @@ -771,7 +771,7 @@ ckuse(Sym *s, Sym *s0, Use *u) } return 1; } - + static void setuse(Sym *s, Sym *s0, Use *u) { @@ -786,7 +786,7 @@ 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() @@ -795,14 +795,14 @@ fnptrs() Sym *s; Prog *p; Use *u; - + for(i=0; ilink){ 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) @@ -827,7 +827,7 @@ fnptrs() for(u = s->use; u != U; u = u->link) setuse(s, s, u); } - } + } } } diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index 69b5c7115b..3917ac5423 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -377,10 +377,11 @@ patch(void) 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; diff --git a/src/cmd/8l/pass.c b/src/cmd/8l/pass.c index fa6d6a00fe..8a45f40a62 100644 --- a/src/cmd/8l/pass.c +++ b/src/cmd/8l/pass.c @@ -346,10 +346,10 @@ patch(void) 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; -- 2.48.1