From: Russ Cox Date: Wed, 9 Mar 2011 16:18:29 +0000 (-0500) Subject: ld: preserve symbol sizes during data layout X-Git-Tag: weekly.2011-03-15~66 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f0ab14647ad3c61cd13ffd169ef4a64275e87a21;p=gostls13.git ld: preserve symbol sizes during data layout Fixes the broken linux/amd64 build. The symbol table, itself a symbol, was having its size rounded up to the nearest word boundary. If the rounding add >7 zero bytes then it confused the debug/gosym symbol table parser. So you've got a 1/8 chance to hit the bug on an amd64 system. Just started in the recent change because I fixed the rounding to round to word boundary instead of to 4-byte boundary. R=r CC=golang-dev https://golang.org/cl/4241056 --- diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 4066cd8143..848c3637d3 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -788,7 +788,6 @@ dodata(void) for(; s != nil && s->type < SDATA; s = s->next) { s->type = SRODATA; t = rnd(s->size, PtrSize); - s->size = t; s->value = datsize; datsize += t; } @@ -835,7 +834,6 @@ dodata(void) datsize = rnd(datsize, 4); else datsize = rnd(datsize, 8); - s->size = t; s->value = datsize; datsize += t; }