libmach: fix for Plan 9 build
R=rsc
CC=golang-dev
https://golang.org/cl/5316059
diff --git a/src/libmach/executable.c b/src/libmach/executable.c
index 9d45323..3db3e7d 100644
--- a/src/libmach/executable.c
+++ b/src/libmach/executable.c
@@ -677,7 +677,7 @@
uint32 (*swal)(uint32);
ushort (*swab)(ushort);
Ehdr64 *ep;
- Phdr64 *ph;
+ Phdr64 *ph, *pph;
Shdr64 *sh;
int i, it, id, is, phsz, shsz;
@@ -797,7 +797,8 @@
}
settext(fp, ep->elfentry, ph[it].vaddr, ph[it].memsz, ph[it].offset);
- setdata(fp, ph[id].vaddr, ph[id].filesz, ph[id].offset, ph[id].memsz - ph[id].filesz);
+ pph = ph + id;
+ setdata(fp, pph->vaddr, pph->filesz, pph->offset, pph->memsz - pph->filesz);
if(is != -1)
setsym(fp, ph[is].offset, ph[is].filesz, 0, 0, 0, ph[is].memsz);
else if(sh != 0){
@@ -1049,7 +1050,6 @@
mp->sizeofcmds = swal(mp->sizeofcmds);
mp->flags = swal(mp->flags);
mp->reserved = swal(mp->reserved);
- hdrsize = 0;
switch(mp->magic) {
case 0xFEEDFACE: // 32-bit mach
@@ -1104,7 +1104,9 @@
datava = 0;
symtab = 0;
pclntab = 0;
- textsize = datasize = bsssize = 0;
+ textsize = 0;
+ datasize = 0;
+ bsssize = 0;
for (i = 0; i < mp->ncmds; i++) {
MachCmd *c;
@@ -1379,7 +1381,8 @@
}
seek(fd, start+sizeof(magic)+sizeof(fh)+leswab(fh.SizeOfOptionalHeader), 0);
- fp->txtaddr = fp->dataddr = 0;
+ fp->txtaddr = 0;
+ fp->dataddr = 0;
for (i=0; i<leswab(fh.NumberOfSections); i++) {
if (readn(fd, &sh, sizeof(sh)) != sizeof(sh)) {
werrstr("could not read Section Header %d", i+1);
@@ -1398,7 +1401,7 @@
seek(fd, leswal(fh.PointerToSymbolTable), 0);
symtab = esymtab = 0;
for (i=0; i<leswal(fh.NumberOfSymbols); i++) {
- if (readn(fd, &sym, sizeof(sym)) != sizeof(sym)) {
+ if (readn(fd, sym, sizeof(sym)) != sizeof(sym)) {
werrstr("crippled COFF symbol %d", i);
return 0;
}
@@ -1452,7 +1455,6 @@
fp->lnpcsz = lnpcsz;
}
-
static uvlong
_round(uvlong a, uint32 b)
{