aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShenghou Ma <minux.ma@gmail.com>2012-09-22 05:54:57 +1000
committerShenghou Ma <minux.ma@gmail.com>2012-09-22 05:54:57 +1000
commit75d33bc540c477eda95b42f563e83f41712cdc1c (patch)
tree30c29e78f71007be88876d044af4049c765eb196
parent5b7e9adfc3eb52e8d6223d3655353693a27a5ffb (diff)
downloadgo-75d33bc540c477eda95b42f563e83f41712cdc1c.tar.gz
go-75d33bc540c477eda95b42f563e83f41712cdc1c.zip
[release-branch.go1] cmd/ld: support zero-filled section for Mach-O files
««« backport b4b475a9a3c8 cmd/ld: support zero-filled section for Mach-O files R=golang-dev, r, dave, rsc CC=golang-dev https://golang.org/cl/6492069 »»»
-rw-r--r--src/cmd/ld/ldmacho.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cmd/ld/ldmacho.c b/src/cmd/ld/ldmacho.c
index 54126d5862..c02d1e7f82 100644
--- a/src/cmd/ld/ldmacho.c
+++ b/src/cmd/ld/ldmacho.c
@@ -573,9 +573,14 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn)
goto bad;
}
free(name);
- s->p = dat + sect->addr - c->seg.vmaddr;
+
s->np = sect->size;
s->size = s->np;
+ if((sect->flags & 0xff) == 1) // S_ZEROFILL
+ s->p = mal(s->size);
+ else {
+ s->p = dat + sect->addr - c->seg.vmaddr;
+ }
if(strcmp(sect->segname, "__TEXT") == 0) {
if(strcmp(sect->name, "__text") == 0)