]> Cypherpunks repositories - gostls13.git/commitdiff
ld: preserve symbol sizes during data layout
authorRuss Cox <rsc@golang.org>
Wed, 9 Mar 2011 16:18:29 +0000 (11:18 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 9 Mar 2011 16:18:29 +0000 (11:18 -0500)
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

src/cmd/ld/data.c

index 4066cd8143c527be22c6715cf7ddd2bc9608d611..848c3637d3ab1416a9786c9283b280b287ee76e1 100644 (file)
@@ -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;
        }