commit 04c7c708c2640586536bd31e01fbb8f05628bd71 Author: Russ Cox Date: Tue Mar 4 23:33:19 2025 -0500 sys/src/libmach: fix default amd64 binary mapping diff --git a/sys/src/libmach/executable.c b/sys/src/libmach/executable.c index 17a1f5cb..59afa31d 100755 --- a/sys/src/libmach/executable.c +++ b/sys/src/libmach/executable.c @@ -478,7 +478,7 @@ common(int fd, Fhdr *fp, ExecHdr *hp) static int commonllp64(int, Fhdr *fp, ExecHdr *hp) { - long pgsize; + long pgsize, start; uvlong entry; hswal(&hp->e, sizeof(Exec)/sizeof(long), beswal); @@ -496,8 +496,11 @@ commonllp64(int, Fhdr *fp, ExecHdr *hp) entry = beswav(hp->e.hdr[0]); pgsize = mach->pgsize; - settext(fp, entry, pgsize+fp->hdrsz, hp->e.text, fp->hdrsz); - setdata(fp, _round(pgsize+fp->txtsz+fp->hdrsz, pgsize), + start = pgsize; + if(fp->type == FAMD64) + start = 0x200000; + settext(fp, entry, start+fp->hdrsz, hp->e.text, fp->hdrsz); + setdata(fp, _round(start+fp->txtsz+fp->hdrsz, pgsize), hp->e.data, fp->txtsz+fp->hdrsz, hp->e.bss); setsym(fp, hp->e.syms, hp->e.spsz, hp->e.pcsz, fp->datoff+fp->datsz);