]> Cypherpunks repositories - gostls13.git/commitdiff
ld: fix alignment of rodata section on Plan 9
authorAnthony Martin <ality@pbrane.org>
Thu, 12 May 2011 03:52:05 +0000 (23:52 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 12 May 2011 03:52:05 +0000 (23:52 -0400)
This was causing a panic in the reflect package
since type.* pointers with their low bits set are
assumed to have certain flags set that disallow
the use of reflection.

Thanks to Pavel and Taru for help tracking down
this bug.

R=rsc, paulzhol, taruti
CC=golang-dev
https://golang.org/cl/4511041

src/cmd/8l/obj.c
src/cmd/ld/data.c

index 2a38f7ef0aa20cc7a29f14bb7ac5efb2e03d9082..f84a30f39056f684ccc3b4cb7742ffb64263b2c7 100644 (file)
@@ -188,7 +188,7 @@ main(int argc, char *argv[])
                if(INITDAT == -1)
                        INITDAT = 0;
                if(INITRND == -1)
-                       INITRND = 1;
+                       INITRND = 4096;
                break;
        case Hmsdoscom: /* MS-DOS .COM */
                HEADR = 0;
index 0cb2b2138f2b80e60394faeb245640db64c2e7b2..f6f71305fd42b68f98a7215350763816e9560a58 100644 (file)
@@ -899,10 +899,8 @@ address(void)
        segdata.fileoff = va - segtext.vaddr + segtext.fileoff;
        if(HEADTYPE == Hwindows)
                segdata.fileoff = segtext.fileoff + rnd(segtext.len, PEFILEALIGN);
-       if(HEADTYPE == Hplan9x32) {
-               segdata.vaddr = va = rnd(va, 4096);
+       if(HEADTYPE == Hplan9x32)
                segdata.fileoff = segtext.fileoff + segtext.filelen;
-       }
        for(s=segdata.sect; s != nil; s=s->next) {
                s->vaddr = va;
                va += s->len;