From: Wei Guangjing Date: Sat, 23 Jul 2011 16:21:13 +0000 (-0400) Subject: ld: fixes .bss for ldpe X-Git-Tag: weekly.2011-07-29~72 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7ce1a4bdc0befea976f74dc717dc1e2eccd5bd73;p=gostls13.git ld: fixes .bss for ldpe R=golang-dev, rsc CC=golang-dev https://golang.org/cl/4794056 --- diff --git a/src/cmd/ld/ldpe.c b/src/cmd/ld/ldpe.c index 3423b71a18..049edeb23f 100644 --- a/src/cmd/ld/ldpe.c +++ b/src/cmd/ld/ldpe.c @@ -222,6 +222,8 @@ ldpe(Biobuf *f, char *pkg, int64 len, char *pn) s->type = SRODATA; break; case IMAGE_SCN_CNT_UNINITIALIZED_DATA|IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE: //.bss + s->type = SBSS; + break; case IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE: //.data s->type = SDATA; break; @@ -382,6 +384,8 @@ map(PeObj *obj, PeSect *sect) return 0; sect->base = mal(sect->sh.SizeOfRawData); + if(sect->sh.PointerToRawData == 0) // .bss don't has data in object file. + return 0; werrstr("short read"); if(Bseek(obj->f, obj->base+sect->sh.PointerToRawData, 0) < 0 || Bread(obj->f, sect->base, sect->sh.SizeOfRawData) != sect->sh.SizeOfRawData)