From: Mikkel Krautz Date: Thu, 7 Apr 2011 17:17:28 +0000 (-0400) Subject: ld: fix Mach-O bss bug X-Git-Tag: weekly.2011-04-13~76 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=cf3323f511e1cf4d07258b54fd982252f0313753;p=gostls13.git ld: fix Mach-O bss bug Fixes #1559. R=rsc CC=golang-dev, peterGo, rog https://golang.org/cl/4356046 --- 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)