diff options
| author | Russ Cox <rsc@golang.org> | 2012-10-09 12:50:06 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2012-10-09 12:50:06 -0400 |
| commit | f76f120324f449cff3fdaeb05effbe18162e0cf1 (patch) | |
| tree | f47f21a6dadd38e3eacb65bd088611af1969a85e /src/cmd | |
| parent | 3aae5a0e7ec1f6802844e35ed72aaa929145b2e5 (diff) | |
| download | go-f76f120324f449cff3fdaeb05effbe18162e0cf1.tar.xz | |
cmd/ld: use 64-bit alignment for large data and bss objects
Check for specific, important misalignment in garbage collector.
Not a complete fix for issue 599 but an important workaround.
Update #599.
R=golang-dev, iant, dvyukov
CC=golang-dev
https://golang.org/cl/6641049
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/ld/data.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 89eccd143c..4afe4b801c 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -831,7 +831,9 @@ dosymtype(void) static int32 alignsymsize(int32 s) { - if(s >= PtrSize) + if(s >= 8) + s = rnd(s, 8); + else if(s >= PtrSize) s = rnd(s, PtrSize); else if(s > 2) s = rnd(s, 4); @@ -1054,6 +1056,7 @@ dodata(void) datsize += rnd(s->size, PtrSize); } sect->len = datsize - sect->vaddr; + datsize = rnd(datsize, PtrSize); /* gcdata */ sect = addsection(&segtext, ".gcdata", 04); |
