diff options
author | Shenghou Ma <minux.ma@gmail.com> | 2012-09-22 05:54:57 +1000 |
---|---|---|
committer | Shenghou Ma <minux.ma@gmail.com> | 2012-09-22 05:54:57 +1000 |
commit | 75d33bc540c477eda95b42f563e83f41712cdc1c (patch) | |
tree | 30c29e78f71007be88876d044af4049c765eb196 | |
parent | 5b7e9adfc3eb52e8d6223d3655353693a27a5ffb (diff) | |
download | go-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.c | 7 |
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) |