summaryrefslogtreecommitdiff
path: root/src/cmd/ld/ldpe.c
diff options
context:
space:
mode:
authorWei Guangjing <vcc.163@gmail.com>2011-07-23 12:21:13 -0400
committerWei Guangjing <vcc.163@gmail.com>2011-07-23 12:21:13 -0400
commitdb33beac77bf4e7871ffe803974e56e19913da93 (patch)
treef033dda2688d540c332df06dd52b6340d1688409 /src/cmd/ld/ldpe.c
parentfde57d613b53cb5520c959d7c22565f982cb164b (diff)
downloadgo-db33beac77bf4e7871ffe803974e56e19913da93.tar.gz
ld: fixes .bss for ldpe
R=golang-dev, rsc CC=golang-dev http://codereview.appspot.com/4794056 Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd/ld/ldpe.c')
-rw-r--r--src/cmd/ld/ldpe.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cmd/ld/ldpe.c b/src/cmd/ld/ldpe.c
index 3423b71a1..049edeb23 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)