From be323cab54e32b56ff7c58ce0828a486bb328d3f Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 20 Jan 2009 15:36:43 -0800 Subject: 6l: do not link in objects from an archive just for init functions. (makes go libraries behave more like c libraries.) R=r DELTA=85 (67 added, 12 deleted, 6 changed) OCL=23133 CL=23139 --- src/cmd/6l/pass.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/cmd/6l/pass.c') diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index e5316fe46..45617ac56 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -398,7 +398,8 @@ patch(void) q = q->link; } if(q == P) { - diag("branch out of range in %s\n%P", TNAME, p); + diag("branch out of range in %s\n%P [%s]", + TNAME, p, p->to.sym ? p->to.sym->name : ""); p->to.type = D_NONE; } p->pcond = q; @@ -853,6 +854,28 @@ newdata(Sym *s, int o, int w, int t) return p; } +Prog* +newtext(Prog *p, Sym *s) +{ + if(p == P) { + p = prg(); + p->as = ATEXT; + p->from.sym = s; + } + s->type = STEXT; + s->text = p; + s->value = pc; + lastp->link = p; + lastp = p; + p->pc = pc++; + if(textp == P) + textp = p; + else + etextp->pcond = p; + etextp = p; + return p; +} + void export(void) { -- cgit v1.2.3