This avoids a crash when using cgo where glibc's malloc thinks
that it can use some of the memory following the symbol table.
This fails because the symbol table is mapped read-only, which
affects the whole page.
R=rsc
CC=golang-dev
https://golang.org/cl/
1616042
asmthumbmap();
if(dlm)
asmdyn();
+ if(!debug['s'])
+ strnput("", INITRND-(8+symsize+lcsize)%INITRND);
cflush();
seek(cout, symo, 0);
lputl(symsize);
ph->off = symo;
ph->vaddr = symdatva;
ph->paddr = symdatva;
- ph->filesz = 8+symsize+lcsize;
- ph->memsz = 8+symsize+lcsize;
+ ph->filesz = rnd(8+symsize+lcsize, INITRND);
+ ph->memsz = rnd(8+symsize+lcsize, INITRND);
ph->align = INITRND;
}
asmlc();
if(dlm)
asmdyn();
+ if(!debug['s'])
+ strnput("", INITRND-(8+symsize+lcsize)%INITRND);
cflush();
seek(cout, symo, 0);
lputl(symsize);
ph->off = symo;
ph->vaddr = symdatva;
ph->paddr = symdatva;
- ph->filesz = 8+symsize+lcsize;
- ph->memsz = 8+symsize+lcsize;
+ ph->filesz = rnd(8+symsize+lcsize, INITRND);
+ ph->memsz = rnd(8+symsize+lcsize, INITRND);
ph->align = INITRND;
}
asmlc();
if(dlm)
asmdyn();
- if(HEADTYPE == 10)
+ if(HEADTYPE == 10 || (iself && !debug['s']))
strnput("", INITRND-(8+symsize+lcsize)%INITRND);
cflush();
seek(cout, symo, 0);
ph->off = symo;
ph->vaddr = symdatva;
ph->paddr = symdatva;
- ph->filesz = 8+symsize+lcsize;
- ph->memsz = 8+symsize+lcsize;
+ ph->filesz = rnd(8+symsize+lcsize, INITRND);
+ ph->memsz = rnd(8+symsize+lcsize, INITRND);
ph->align = INITRND;
}