diff options
| author | Mikkel Krautz <mikkel@krautz.dk> | 2011-04-07 13:17:28 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-04-07 13:17:28 -0400 |
| commit | cf3323f511e1cf4d07258b54fd982252f0313753 (patch) | |
| tree | f094726215fc58a2560aebb9936d13ed827fa53c /src/cmd/ld | |
| parent | 88bbf4f1dff08507bb860bbf81219f34dce9eb83 (diff) | |
| download | go-cf3323f511e1cf4d07258b54fd982252f0313753.tar.xz | |
ld: fix Mach-O bss bug
Fixes #1559.
R=rsc
CC=golang-dev, peterGo, rog
https://golang.org/cl/4356046
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/data.c | 2 | ||||
| -rw-r--r-- | src/cmd/ld/ldmacho.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 848c3637d3..5b74971d83 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -749,7 +749,7 @@ dodata(void) } for(s = datap; s != nil; s = s->next) { - if(s->np > 0 && s->type == SBSS) // TODO: necessary? + if(s->np > 0 && s->type == SBSS && s->file != nil) // TODO: necessary? s->type = SDATA; if(s->np > s->size) diag("%s: initialize bounds (%lld < %d)", diff --git a/src/cmd/ld/ldmacho.c b/src/cmd/ld/ldmacho.c index 7e38db0e44..fbf2f1779b 100644 --- a/src/cmd/ld/ldmacho.c +++ b/src/cmd/ld/ldmacho.c @@ -581,7 +581,10 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) else s->type = SRODATA; } else { - s->type = SDATA; + if (strcmp(sect->name, "__bss") == 0) + s->type = SBSS; + else + s->type = SDATA; } if(s->type == STEXT) { if(etextp) |
