diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-02 13:38:23 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-04-02 13:38:23 +0200 |
| commit | 128724d147a0079952275e1bbce48a7e2a0522ab (patch) | |
| tree | 829a04caf0a69161fceaaaf67347f45d5b44fb00 /src/wrapped/wrappedlibc.c | |
| parent | c6c6bfcf2c6aae86d34c29cee3e73031305a72da (diff) | |
| download | box64-128724d147a0079952275e1bbce48a7e2a0522ab.tar.gz box64-128724d147a0079952275e1bbce48a7e2a0522ab.zip | |
Implemented a workaround for mmap64 with MAP_32BIT flag
Diffstat (limited to 'src/wrapped/wrappedlibc.c')
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 756a8ee8..fa021802 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -1887,6 +1887,13 @@ EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot if(prot&PROT_WRITE) prot|=PROT_READ; // PROT_READ is implicit with PROT_WRITE on i386 if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "mmap64(%p, %lu, 0x%x, 0x%x, %d, %ld) =>", addr, length, prot, flags, fd, offset);} + #ifndef NOALIGN + if(!addr && (flags&0x40)) { + // 0x40 is MAP_32BIT, wich only exist on x86_64! + //flags &= ~0x40; // let the flags in? + addr = find32bitBlock(length); + } + #endif void* ret = mmap64(addr, length, prot, flags, fd, offset); if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "%p\n", ret);} #ifdef DYNAREC |