summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-07-13 16:48:09 -0700
committerRuss Cox <rsc@golang.org>2009-07-13 16:48:09 -0700
commit2c1a08f090140bbcc82dcadc700215ae4523a5ad (patch)
treed577443da2aecdcc6f431b06a5026f0d83a245fc
parent2c0d93899e0661a93e14f674abbeafe6c82fec35 (diff)
downloadgolang-2c1a08f090140bbcc82dcadc700215ae4523a5ad.tar.gz
fix undefined function error.
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
-rw-r--r--src/cmd/5l/pass.c16
-rw-r--r--src/cmd/6l/pass.c5
-rw-r--r--src/cmd/8l/pass.c4
3 files changed, 13 insertions, 12 deletions
diff --git a/src/cmd/5l/pass.c b/src/cmd/5l/pass.c
index 31af4468f..852a62048 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; 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)
@@ -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 69b5c7115..3917ac542 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 fa6d6a00f..8a45f40a6 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;