about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-04-02 19:27:32 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-04-02 19:27:32 +0200
commit555f4e132fbcb87a5ee5ccf6776aafba922223b2 (patch)
treef453702f2b2a78015115934f7cf10f0e5d87bf78 /src/wrapped
parentc3209a273630eadc79f060c1f295ef3174c62e4d (diff)
downloadbox64-555f4e132fbcb87a5ee5ccf6776aafba922223b2.tar.gz
box64-555f4e132fbcb87a5ee5ccf6776aafba922223b2.zip
Added a few more libc wrapped function and fixed munmap wrapping
Diffstat (limited to 'src/wrapped')
-rw-r--r--src/wrapped/generated/functions_list.txt1
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h10
4 files changed, 9 insertions, 5 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 43601059..599a9bca 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -53,6 +53,7 @@
 #() pFv
 #() pFi
 #() pFu
+#() pFl
 #() pFL
 #() pFp
 #() HFi
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 9447d075..9c525227 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -86,6 +86,7 @@ typedef void* (*pFE_t)(x64emu_t*);
 typedef void* (*pFv_t)(void);
 typedef void* (*pFi_t)(int32_t);
 typedef void* (*pFu_t)(uint32_t);
+typedef void* (*pFl_t)(intptr_t);
 typedef void* (*pFL_t)(uintptr_t);
 typedef void* (*pFp_t)(void*);
 typedef unsigned __int128 (*HFi_t)(int32_t);
@@ -1182,6 +1183,7 @@ void pFE(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_t
 void pFv(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_RAX=(uintptr_t)fn(); }
 void pFi(x64emu_t *emu, uintptr_t fcn) { pFi_t fn = (pFi_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI); }
 void pFu(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI); }
+void pFl(x64emu_t *emu, uintptr_t fcn) { pFl_t fn = (pFl_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI); }
 void pFL(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); }
 void pFp(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
 void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int64_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 2757063c..642f68a4 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -83,6 +83,7 @@ void pFE(x64emu_t *emu, uintptr_t fnc);
 void pFv(x64emu_t *emu, uintptr_t fnc);
 void pFi(x64emu_t *emu, uintptr_t fnc);
 void pFu(x64emu_t *emu, uintptr_t fnc);
+void pFl(x64emu_t *emu, uintptr_t fnc);
 void pFL(x64emu_t *emu, uintptr_t fnc);
 void pFp(x64emu_t *emu, uintptr_t fnc);
 void HFi(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h
index a7707b3f..ea4edf32 100755
--- a/src/wrapped/wrappedlibc_private.h
+++ b/src/wrapped/wrappedlibc_private.h
@@ -1194,7 +1194,7 @@ GO(msync, iFpLi)
 //GO(munlock, 
 //GO(munlockall, 
 //GO(__munmap, 
-GOW(munmap, iFEpL)
+GOM(munmap, iFEpL)  //weak
 //GO(muntrace, 
 GO(name_to_handle_at, iFipppi)
 GO(__nanosleep, iFpp)
@@ -1547,8 +1547,8 @@ GOW(rmdir, iFp)
 //GO(ruserok, 
 //GO(ruserok_af, 
 //GO(ruserpass, 
-//GO(__sbrk, 
-//GOW(sbrk, 
+GO(__sbrk, pFl)
+GOW(sbrk, pFl)
 //GOW(scalbn, 
 //GOW(scalbnf, 
 //GOW(scalbnl, 
@@ -1772,8 +1772,8 @@ GO(__strdup, pFp)
 GOW(strdup, pFp)
 GO(strerror, pFi)
 GO(strerror_l, pFip)
-//GO(__strerror_r, 
-//GOW(strerror_r, 
+GO(__strerror_r, pFipL)
+GOW(strerror_r, pFipL)
 //GO(strfmon, 
 //GO(__strfmon_l, 
 //GOW(strfmon_l,