aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/ld
diff options
context:
space:
mode:
authorMikkel Krautz <mikkel@krautz.dk>2011-04-07 13:17:28 -0400
committerRuss Cox <rsc@golang.org>2011-04-07 13:17:28 -0400
commitcf3323f511e1cf4d07258b54fd982252f0313753 (patch)
treef094726215fc58a2560aebb9936d13ed827fa53c /src/cmd/ld
parent88bbf4f1dff08507bb860bbf81219f34dce9eb83 (diff)
downloadgo-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.c2
-rw-r--r--src/cmd/ld/ldmacho.c5
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)