From d43ee1b71411ac0b372e4bc191108ddda321e179 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 31 Jul 2013 15:36:49 -0400 Subject: [PATCH] cmd/ld: report pclntab, funcdata sizes in 6l -v output Also move chatty recent additions to -v -v. For what it's worth: $ go build -o /dev/null -ldflags -v cmd/godoc ... 0.73 pclntab=1259976 bytes, funcdata total 79788 bytes ... $ R=ken2 CC=cshapiro, golang-dev https://golang.org/cl/12193043 --- src/cmd/ld/lib.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/cmd/ld/lib.c b/src/cmd/ld/lib.c index 94446c3bbb..31a0efc46c 100644 --- a/src/cmd/ld/lib.c +++ b/src/cmd/ld/lib.c @@ -231,7 +231,7 @@ addlib(char *src, char *obj) if(p != nil) *p = '\0'; - if(debug['v']) + if(debug['v'] > 1) Bprint(&bso, "%5.2f addlib: %s %s pulls in %s\n", cputime(), obj, src, pname); addlibpath(src, obj, pname, name); @@ -330,7 +330,7 @@ loadlib(void) } for(i=0; i 1) Bprint(&bso, "%5.2f autolib: %s (from %s)\n", cputime(), library[i].file, library[i].objref); iscgo |= strcmp(library[i].pkg, "runtime/cgo") == 0; objfile(library[i].file, library[i].pkg); @@ -433,7 +433,7 @@ objfile(char *file, char *pkg) pkg = smprint("%i", pkg); - if(debug['v']) + if(debug['v'] > 1) Bprint(&bso, "%5.2f ldobj: %s (%s)\n", cputime(), file, pkg); Bflush(&bso); f = Bopen(file, 0); @@ -2049,7 +2049,7 @@ genasmsym(void (*put)(Sym*, char*, int, vlong, vlong, int, Sym*)) } } if(debug['v'] || debug['n']) - Bprint(&bso, "symsize = %ud\n", symsize); + Bprint(&bso, "%5.2f symsize = %ud\n", cputime(), symsize); Bflush(&bso); } @@ -2356,7 +2356,9 @@ pclntab(void) uint32 *havepc, *havefunc; Sym *ftab, *s; int32 npcdata, nfuncdata, off, end; + int64 funcdata_bytes; + funcdata_bytes = 0; ftab = lookup("pclntab", 0); ftab->type = SPCLNTAB; ftab->reachable = 1; @@ -2478,8 +2480,13 @@ pclntab(void) i = p->from.offset; if(p->to.type == D_CONST) setuintxx(ftab, off+PtrSize*i, p->to.offset, PtrSize); - else + else { + if(!p->to.sym->hide) { + funcdata_bytes += p->to.sym->size; + p->to.sym->hide = 1; + } setaddrplus(ftab, off+PtrSize*i, p->to.sym, p->to.offset); + } } } off += nfuncdata*PtrSize; @@ -2506,4 +2513,7 @@ pclntab(void) setuint32(ftab, start + s->value*4, ftabaddstring(ftab, s->name)); ftab->size = ftab->np; + + if(debug['v']) + Bprint(&bso, "%5.2f pclntab=%lld bytes, funcdata total %lld bytes\n", cputime(), (vlong)ftab->size, (vlong)funcdata_bytes); }