]> Cypherpunks repositories - gostls13.git/commit
runtime: remove assumption that noptrdata data bss noptrbss are ordered and contiguous
authorRuss Cox <rsc@golang.org>
Wed, 19 Nov 2014 20:25:33 +0000 (15:25 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 19 Nov 2014 20:25:33 +0000 (15:25 -0500)
commit378c2515aeec0e23662631dc6ba63148594ad92b
tree7f9bbc58d02f09548b8596ce94019d1dec54d023
parent2d53d6b5d5b5f10c072549607a221c13e5cdb7e3
runtime: remove assumption that noptrdata data bss noptrbss are ordered and contiguous

The assumption can be violated by external linkers reordering them or
inserting non-Go sections in between them. I looked briefly at trying
to write out the _go_.o in external linking mode in a way that forced
the ordering, but no matter what there's no way to force Go's data
and Go's bss to be next to each other. If there is any data or bss from
non-Go objects, it's very likely to get stuck in between them.

Instead, rewrite the two places we know about that make the assumption.
I grepped for noptrdata to look for more and didn't find any.

The added race test (os/exec in external linking mode) fails without
the changes in the runtime. It crashes with an invalid pointer dereference.

Fixes #9133.

LGTM=dneil
R=dneil
CC=dvyukov, golang-codereviews, iant
https://golang.org/cl/179980043
src/run.bash
src/runtime/malloc.go
src/runtime/race.c