about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/custommem.c3
-rw-r--r--src/mallochook.c32
-rw-r--r--src/wrapped/generated/functions_list.txt5
-rw-r--r--src/wrapped/generated/wrappedtcmallocminimaltypes.h7
-rw-r--r--src/wrapped/generated/wrapper.c4
-rw-r--r--src/wrapped/generated/wrapper.h2
-rw-r--r--src/wrapped/wrappedlibc.c4
-rw-r--r--src/wrapped/wrappedtcmallocminimal_private.h4
8 files changed, 27 insertions, 34 deletions
diff --git a/src/custommem.c b/src/custommem.c
index 1a729fe9..7e73a23d 100644
--- a/src/custommem.c
+++ b/src/custommem.c
@@ -1300,6 +1300,9 @@ void setProtection(uintptr_t addr, size_t size, uint32_t prot)
 
 void setProtection_mmap(uintptr_t addr, size_t size, uint32_t prot)
 {
+    if(!size)
+        return;
+    size = (size+box64_pagesize-1)&~(box64_pagesize-1); // round size
     mutex_lock(&mutex_prot);
     addMapMem(mmapmem, addr, addr+size-1);
     mutex_unlock(&mutex_prot);
diff --git a/src/mallochook.c b/src/mallochook.c
index b4f91a60..52a09c74 100644
--- a/src/mallochook.c
+++ b/src/mallochook.c
@@ -193,11 +193,11 @@ EXPORT void* malloc(size_t l)
 
 EXPORT void free(void* p)
 {
-    if(malloc_hack_2 && FREE && p) {
+    if(malloc_hack_2 && p) {
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
+            if(real_free && FREE)
                 RunFunctionFmt(real_free, "p", p);
             return;
         }
@@ -218,7 +218,7 @@ EXPORT void* realloc(void* p, size_t s)
     if(malloc_hack_2)
         if(getMmapped((uintptr_t)p) || (!p && ALLOC && real_realloc)) {
             void* ret = p;
-            if(real_realloc) {
+            if(real_realloc && ALLOC) {
                 ret = (void*)RunFunctionFmt(real_realloc, "pL", p, s);
             } else {
                 // found! Will realloc using regular malloc then copy from old address as much as possible, but need to check size first
@@ -228,7 +228,7 @@ EXPORT void* realloc(void* p, size_t s)
                 memcpy(ret, p, s);
                 printf_log(LOG_DEBUG, " -> %p (copied %zu from old)\n", ret, s);
                 // Mmaped, free with original function
-                if(real_free)
+                if(real_free && FREE)
                     RunFunctionFmt(real_free, "p", p);
             }
             return ret;
@@ -284,11 +284,11 @@ EXPORT void* pvalloc(size_t size)
 
 EXPORT void cfree(void* p)
 {
-    if(malloc_hack_2 && FREE && p) {
+    if(malloc_hack_2 && p) {
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
+            if(real_free && FREE)
                 RunFunctionFmt(real_free, "p", p);
             return;
         }
@@ -461,8 +461,8 @@ EXPORT void my__ZdaPvSt11align_val_tRKSt9nothrow_t(void* p, size_t align, void*
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
-                RunFunctionFmt(real_free, "p", p);
+            if(real__ZdaPvSt11align_val_tRKSt9nothrow_t)
+                RunFunctionFmt(real__ZdaPvSt11align_val_tRKSt9nothrow_t, "p", p);
             return;
         }
     }
@@ -475,8 +475,8 @@ EXPORT void my__ZdlPvmSt11align_val_t(void* p, size_t sz, size_t align)   //oper
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
-                RunFunctionFmt(real_free, "p", p);
+            if(real__ZdlPvmSt11align_val_t)
+                RunFunctionFmt(real__ZdlPvmSt11align_val_t, "p", p);
             return;
         }
     }
@@ -489,8 +489,8 @@ EXPORT void my__ZdaPvRKSt9nothrow_t(void* p, void* n)   //operator delete[](void
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
-                RunFunctionFmt(real_free, "p", p);
+            if(real__ZdaPvRKSt9nothrow_t)
+                RunFunctionFmt(real__ZdaPvRKSt9nothrow_t, "p", p);
             return;
         }
     }
@@ -503,8 +503,8 @@ EXPORT void my__ZdaPvSt11align_val_t(void* p, size_t align)   //operator delete[
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
-                RunFunctionFmt(real_free, "p", p);
+            if(real__ZdaPvSt11align_val_t)
+                RunFunctionFmt(real__ZdaPvSt11align_val_t, "p", p);
             return;
         }
     }
@@ -517,8 +517,8 @@ EXPORT void my__ZdlPvSt11align_val_t(void* p, size_t align)   //operator delete(
         if(getMmapped((uintptr_t)p)) {
             printf_log(LOG_DEBUG, "%04d|Malloc_Hack_2: not freeing %p\n", GetTID(), p);
             // Mmaped, free with original function
-            if(real_free)
-                RunFunctionFmt(real_free, "p", p);
+            if(real__ZdlPvSt11align_val_t)
+                RunFunctionFmt(real__ZdlPvSt11align_val_t, "p", p);
             return;
         }
     }
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 3d56e9ae..94528335 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -2343,8 +2343,6 @@
 #() LFpLLuupp
 #() LFpLLppuu
 #() pFEpupppp
-#() pFEpLiiii
-#() pFEpLiiiI
 #() pFEpLiiil
 #() pFEppuipp
 #() pFEppppip
@@ -5358,9 +5356,8 @@ wrappedtcmallocminimal:
   - mallinfo
 - iFpL:
   - munmap
-- pFpLiiii:
+- pFpLiiil:
   - mmap
-- pFpLiiiI:
   - mmap64
 wrappedudev0:
 - vFpp:
diff --git a/src/wrapped/generated/wrappedtcmallocminimaltypes.h b/src/wrapped/generated/wrappedtcmallocminimaltypes.h
index 88049970..282096ac 100644
--- a/src/wrapped/generated/wrappedtcmallocminimaltypes.h
+++ b/src/wrapped/generated/wrappedtcmallocminimaltypes.h
@@ -13,13 +13,12 @@
 
 typedef void* (*pFp_t)(void*);
 typedef int32_t (*iFpL_t)(void*, uintptr_t);
-typedef void* (*pFpLiiii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t);
-typedef void* (*pFpLiiiI_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int64_t);
+typedef void* (*pFpLiiil_t)(void*, uintptr_t, int32_t, int32_t, int32_t, intptr_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(mallinfo, pFp_t) \
 	GO(munmap, iFpL_t) \
-	GO(mmap, pFpLiiii_t) \
-	GO(mmap64, pFpLiiiI_t)
+	GO(mmap, pFpLiiil_t) \
+	GO(mmap64, pFpLiiil_t)
 
 #endif // __wrappedtcmallocminimalTYPES_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 8145d821..cfbc714b 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -2379,8 +2379,6 @@ typedef uintptr_t (*LFEpppppu_t)(x64emu_t*, void*, void*, void*, void*, void*, u
 typedef uintptr_t (*LFpLLuupp_t)(void*, uintptr_t, uintptr_t, uint32_t, uint32_t, void*, void*);
 typedef uintptr_t (*LFpLLppuu_t)(void*, uintptr_t, uintptr_t, void*, void*, uint32_t, uint32_t);
 typedef void* (*pFEpupppp_t)(x64emu_t*, void*, uint32_t, void*, void*, void*, void*);
-typedef void* (*pFEpLiiii_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int32_t);
-typedef void* (*pFEpLiiiI_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int64_t);
 typedef void* (*pFEpLiiil_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, intptr_t);
 typedef void* (*pFEppuipp_t)(x64emu_t*, void*, void*, uint32_t, int32_t, void*, void*);
 typedef void* (*pFEppppip_t)(x64emu_t*, void*, void*, void*, void*, int32_t, void*);
@@ -5360,8 +5358,6 @@ void LFEpppppu(x64emu_t *emu, uintptr_t fcn) { LFEpppppu_t fn = (LFEpppppu_t)fcn
 void LFpLLuupp(x64emu_t *emu, uintptr_t fcn) { LFpLLuupp_t fn = (LFpLLuupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void LFpLLppuu(x64emu_t *emu, uintptr_t fcn) { LFpLLppuu_t fn = (LFpLLppuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
 void pFEpupppp(x64emu_t *emu, uintptr_t fcn) { pFEpupppp_t fn = (pFEpupppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
-void pFEpLiiii(x64emu_t *emu, uintptr_t fcn) { pFEpLiiii_t fn = (pFEpLiiii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
-void pFEpLiiiI(x64emu_t *emu, uintptr_t fcn) { pFEpLiiiI_t fn = (pFEpLiiiI_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int64_t)R_R9); }
 void pFEpLiiil(x64emu_t *emu, uintptr_t fcn) { pFEpLiiil_t fn = (pFEpLiiil_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (intptr_t)R_R9); }
 void pFEppuipp(x64emu_t *emu, uintptr_t fcn) { pFEppuipp_t fn = (pFEppuipp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void pFEppppip(x64emu_t *emu, uintptr_t fcn) { pFEppppip_t fn = (pFEppppip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index c3c9897b..d79e5903 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -2380,8 +2380,6 @@ void LFEpppppu(x64emu_t *emu, uintptr_t fnc);
 void LFpLLuupp(x64emu_t *emu, uintptr_t fnc);
 void LFpLLppuu(x64emu_t *emu, uintptr_t fnc);
 void pFEpupppp(x64emu_t *emu, uintptr_t fnc);
-void pFEpLiiii(x64emu_t *emu, uintptr_t fnc);
-void pFEpLiiiI(x64emu_t *emu, uintptr_t fnc);
 void pFEpLiiil(x64emu_t *emu, uintptr_t fnc);
 void pFEppuipp(x64emu_t *emu, uintptr_t fnc);
 void pFEppppip(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index 6a76eab1..b0e7dbd8 100644
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -2557,7 +2557,7 @@ EXPORT int my_readlinkat(x64emu_t* emu, int fd, void* path, void* buf, size_t bu
 #ifndef MAP_32BIT
 #define MAP_32BIT 0x40
 #endif
-EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, int64_t offset)
+EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, ssize_t offset)
 {
     (void)emu;
     if(prot&PROT_WRITE)
@@ -2627,7 +2627,7 @@ EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot
     }
     return ret;
 }
-EXPORT void* my_mmap(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, int64_t offset) __attribute__((alias("my_mmap64")));
+EXPORT void* my_mmap(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, ssize_t offset) __attribute__((alias("my_mmap64")));
 
 EXPORT void* my_mremap(x64emu_t* emu, void* old_addr, size_t old_size, size_t new_size, int flags, void* new_addr)
 {
diff --git a/src/wrapped/wrappedtcmallocminimal_private.h b/src/wrapped/wrappedtcmallocminimal_private.h
index b1f6b1e8..ce2b019d 100644
--- a/src/wrapped/wrappedtcmallocminimal_private.h
+++ b/src/wrapped/wrappedtcmallocminimal_private.h
@@ -69,8 +69,8 @@ GO(malloc_stats, vFv)
 GO(malloc_usable_size, LFp)
 GO(mallopt, iFii)
 GO(memalign, pFuu)
-GOM(mmap, pFEpLiiii)    // use the my_mmap from wrappedlibc.c
-GOM(mmap64, pFEpLiiiI)
+GOM(mmap, pFEpLiiil)    // use the my_mmap from wrappedlibc.c
+GOM(mmap64, pFEpLiiil)
 GO(mremap, pFpuuip)
 GOM(munmap, iFEpL)
 GO(nallocx, LFLi)