]> Cypherpunks repositories - gostls13.git/commitdiff
ld: fixes .bss for ldpe
authorWei Guangjing <vcc.163@gmail.com>
Sat, 23 Jul 2011 16:21:13 +0000 (12:21 -0400)
committerRuss Cox <rsc@golang.org>
Sat, 23 Jul 2011 16:21:13 +0000 (12:21 -0400)
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4794056

src/cmd/ld/ldpe.c

index 3423b71a18e0267a3fc4d9502e67f5590b36eac6..049edeb23f65fef56f2434f76c6c17fc0007fcee 100644 (file)
@@ -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)