From fc8dca9dacb68eae277ba37a6356ea57398f96da Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 5 Feb 2009 13:58:43 -0800 Subject: heuristic to stop pulling .6 in from .a is not right if the .6 is only for data and the init function. instead of that, pick up everything and let the dead code/data eliminator throw away the parts that weren't useful. R=r DELTA=25 (0 added, 22 deleted, 3 changed) OCL=24446 CL=24446 --- src/cmd/6l/obj.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/cmd/6l/obj.c') diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c index a23e030f59..b682ab1b1b 100644 --- a/src/cmd/6l/obj.c +++ b/src/cmd/6l/obj.c @@ -368,7 +368,6 @@ main(int argc, char *argv[]) sprint(a, "%s/lib/lib_%s_%s.a", goroot, goarch, goos); objfile(a); } - ignoreoptfuncs(); definetypestrings(); definetypesigs(); deadcode(); @@ -950,11 +949,8 @@ loop: if(debug['W']) print(" ANAME %s\n", s->name); h[o] = s; - if((v == D_EXTERN || v == D_STATIC) && s->type == 0) { + if((v == D_EXTERN || v == D_STATIC) && s->type == 0) s->type = SXREF; - if(isinitfunc(s)) - s->type = SOPT; // optional function; don't pull in an object file just for s. - } if(v == D_FILE) { if(s->type != SFILE) { histgen++; @@ -1096,7 +1092,7 @@ loop: case ATEXT: s = p->from.sym; - if(ntext++ == 0 && s->type != 0 && s->type != SXREF && s->type != SOPT) { + if(ntext++ == 0 && s->type != 0 && s->type != SXREF) { /* redefinition, so file has probably been seen before */ if(debug['v']) Bprint(&bso, "skipping: %s: redefinition: %s", pn, s->name); @@ -1113,7 +1109,7 @@ loop: diag("%s: no TEXT symbol: %P", pn, p); errorexit(); } - if(s->type != 0 && s->type != SXREF && s->type != SOPT) { + if(s->type != 0 && s->type != SXREF) { if(p->from.scale & DUPOK) { skip = 1; goto casdef; -- cgit v1.3-5-g9baa