about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-08 21:23:44 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-08 21:23:44 +0100
commitdef0f3564c06461232deaaebd95449dd9812cbb1 (patch)
treeb80510e22e22865a3091210889468f0631d45bac /src
parent7da2c56d0a911272dfe9e3b0e16464eda7af9e7c (diff)
downloadbox64-def0f3564c06461232deaaebd95449dd9812cbb1.tar.gz
box64-def0f3564c06461232deaaebd95449dd9812cbb1.zip
Added more wrapped functions to libc and libpthread
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt5
-rw-r--r--src/wrapped/generated/wrapper.c10
-rw-r--r--src/wrapped/generated/wrapper.h5
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h30
-rwxr-xr-xsrc/wrapped/wrappedlibpthread_private.h65
5 files changed, 68 insertions, 47 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 91103155..ab640b20 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -86,6 +86,7 @@
 #() iFpl
 #() iFpL
 #() iFpp
+#() iFpO
 #() IFEp
 #() IFpu
 #() CFui
@@ -128,6 +129,7 @@
 #() pFpp
 #() pFpV
 #() HFpi
+#() vFEpi
 #() vFEpu
 #() vFEpp
 #() vFEpV
@@ -185,6 +187,7 @@
 #() iFuup
 #() iFuff
 #() iFfff
+#() iFLpp
 #() iFpii
 #() iFpiu
 #() iFpiL
@@ -253,6 +256,7 @@
 #() vFEipV
 #() vFEpip
 #() vFEpup
+#() vFEppp
 #() vFiiii
 #() vFiiip
 #() vFiuip
@@ -307,6 +311,7 @@
 #() iFEupp
 #() iFEpip
 #() iFEppi
+#() iFEppL
 #() iFEppp
 #() iFEppV
 #() iFEpOu
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index bb186a80..9e166650 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -119,6 +119,7 @@ typedef int32_t (*iFpd_t)(void*, double);
 typedef int32_t (*iFpl_t)(void*, intptr_t);
 typedef int32_t (*iFpL_t)(void*, uintptr_t);
 typedef int32_t (*iFpp_t)(void*, void*);
+typedef int32_t (*iFpO_t)(void*, int32_t);
 typedef int64_t (*IFEp_t)(x64emu_t*, void*);
 typedef int64_t (*IFpu_t)(void*, uint32_t);
 typedef uint8_t (*CFui_t)(uint32_t, int32_t);
@@ -161,6 +162,7 @@ typedef void* (*pFpL_t)(void*, uintptr_t);
 typedef void* (*pFpp_t)(void*, void*);
 typedef void* (*pFpV_t)(void*, void*);
 typedef unsigned __int128 (*HFpi_t)(void*, int32_t);
+typedef void (*vFEpi_t)(x64emu_t*, void*, int32_t);
 typedef void (*vFEpu_t)(x64emu_t*, void*, uint32_t);
 typedef void (*vFEpp_t)(x64emu_t*, void*, void*);
 typedef void (*vFEpV_t)(x64emu_t*, void*, void*);
@@ -218,6 +220,7 @@ typedef int32_t (*iFipp_t)(int32_t, void*, void*);
 typedef int32_t (*iFuup_t)(uint32_t, uint32_t, void*);
 typedef int32_t (*iFuff_t)(uint32_t, float, float);
 typedef int32_t (*iFfff_t)(float, float, float);
+typedef int32_t (*iFLpp_t)(uintptr_t, void*, void*);
 typedef int32_t (*iFpii_t)(void*, int32_t, int32_t);
 typedef int32_t (*iFpiu_t)(void*, int32_t, uint32_t);
 typedef int32_t (*iFpiL_t)(void*, int32_t, uintptr_t);
@@ -286,6 +289,7 @@ typedef void* (*pFppp_t)(void*, void*, void*);
 typedef void (*vFEipV_t)(x64emu_t*, int32_t, void*, void*);
 typedef void (*vFEpip_t)(x64emu_t*, void*, int32_t, void*);
 typedef void (*vFEpup_t)(x64emu_t*, void*, uint32_t, void*);
+typedef void (*vFEppp_t)(x64emu_t*, void*, void*, void*);
 typedef void (*vFiiii_t)(int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFiiip_t)(int32_t, int32_t, int32_t, void*);
 typedef void (*vFiuip_t)(int32_t, uint32_t, int32_t, void*);
@@ -340,6 +344,7 @@ typedef int32_t (*iFEipp_t)(x64emu_t*, int32_t, void*, void*);
 typedef int32_t (*iFEupp_t)(x64emu_t*, uint32_t, void*, void*);
 typedef int32_t (*iFEpip_t)(x64emu_t*, void*, int32_t, void*);
 typedef int32_t (*iFEppi_t)(x64emu_t*, void*, void*, int32_t);
+typedef int32_t (*iFEppL_t)(x64emu_t*, void*, void*, uintptr_t);
 typedef int32_t (*iFEppp_t)(x64emu_t*, void*, void*, void*);
 typedef int32_t (*iFEppV_t)(x64emu_t*, void*, void*, void*);
 typedef int32_t (*iFEpOu_t)(x64emu_t*, void*, int32_t, uint32_t);
@@ -940,6 +945,7 @@ void iFpd(x64emu_t *emu, uintptr_t fcn) { iFpd_t fn = (iFpd_t)fcn; R_RAX=fn((voi
 void iFpl(x64emu_t *emu, uintptr_t fcn) { iFpl_t fn = (iFpl_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI); }
 void iFpL(x64emu_t *emu, uintptr_t fcn) { iFpL_t fn = (iFpL_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI); }
 void iFpp(x64emu_t *emu, uintptr_t fcn) { iFpp_t fn = (iFpp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI); }
+void iFpO(x64emu_t *emu, uintptr_t fcn) { iFpO_t fn = (iFpO_t)fcn; R_RAX=fn((void*)R_RDI, of_convert((int32_t)R_RSI)); }
 void IFEp(x64emu_t *emu, uintptr_t fcn) { IFEp_t fn = (IFEp_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI); }
 void IFpu(x64emu_t *emu, uintptr_t fcn) { IFpu_t fn = (IFpu_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI, (uint32_t)R_RSI); }
 void CFui(x64emu_t *emu, uintptr_t fcn) { CFui_t fn = (CFui_t)fcn; R_RAX=(unsigned char)fn((uint32_t)R_RDI, (int32_t)R_RSI); }
@@ -982,6 +988,7 @@ void pFpL(x64emu_t *emu, uintptr_t fcn) { pFpL_t fn = (pFpL_t)fcn; R_RAX=(uintpt
 void pFpp(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI); }
 void pFpV(x64emu_t *emu, uintptr_t fcn) { pFpV_t fn = (pFpV_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)(R_RSP + 8)); }
 void HFpi(x64emu_t *emu, uintptr_t fcn) { HFpi_t fn = (HFpi_t)fcn; unsigned __int128 u128 = fn((void*)R_RDI, (int32_t)R_RSI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
+void vFEpi(x64emu_t *emu, uintptr_t fcn) { vFEpi_t fn = (vFEpi_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI); }
 void vFEpu(x64emu_t *emu, uintptr_t fcn) { vFEpu_t fn = (vFEpu_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI); }
 void vFEpp(x64emu_t *emu, uintptr_t fcn) { vFEpp_t fn = (vFEpp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI); }
 void vFEpV(x64emu_t *emu, uintptr_t fcn) { vFEpV_t fn = (vFEpV_t)fcn; fn(emu, (void*)R_RDI, (void*)(R_RSP + 8)); }
@@ -1039,6 +1046,7 @@ void iFipp(x64emu_t *emu, uintptr_t fcn) { iFipp_t fn = (iFipp_t)fcn; R_RAX=fn((
 void iFuup(x64emu_t *emu, uintptr_t fcn) { iFuup_t fn = (iFuup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
 void iFuff(x64emu_t *emu, uintptr_t fcn) { iFuff_t fn = (iFuff_t)fcn; R_RAX=fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
 void iFfff(x64emu_t *emu, uintptr_t fcn) { iFfff_t fn = (iFfff_t)fcn; R_RAX=fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void iFLpp(x64emu_t *emu, uintptr_t fcn) { iFLpp_t fn = (iFLpp_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFpii(x64emu_t *emu, uintptr_t fcn) { iFpii_t fn = (iFpii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void iFpiu(x64emu_t *emu, uintptr_t fcn) { iFpiu_t fn = (iFpiu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
 void iFpiL(x64emu_t *emu, uintptr_t fcn) { iFpiL_t fn = (iFpiL_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX); }
@@ -1107,6 +1115,7 @@ void pFppp(x64emu_t *emu, uintptr_t fcn) { pFppp_t fn = (pFppp_t)fcn; R_RAX=(uin
 void vFEipV(x64emu_t *emu, uintptr_t fcn) { vFEipV_t fn = (vFEipV_t)fcn; fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
 void vFEpip(x64emu_t *emu, uintptr_t fcn) { vFEpip_t fn = (vFEpip_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void vFEpup(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void vFEppp(x64emu_t *emu, uintptr_t fcn) { vFEppp_t fn = (vFEppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void vFiiii(x64emu_t *emu, uintptr_t fcn) { vFiiii_t fn = (vFiiii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void vFiiip(x64emu_t *emu, uintptr_t fcn) { vFiiip_t fn = (vFiiip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void vFiuip(x64emu_t *emu, uintptr_t fcn) { vFiuip_t fn = (vFiuip_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
@@ -1161,6 +1170,7 @@ void iFEipp(x64emu_t *emu, uintptr_t fcn) { iFEipp_t fn = (iFEipp_t)fcn; R_RAX=f
 void iFEupp(x64emu_t *emu, uintptr_t fcn) { iFEupp_t fn = (iFEupp_t)fcn; R_RAX=fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFEpip(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void iFEppi(x64emu_t *emu, uintptr_t fcn) { iFEppi_t fn = (iFEppi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void iFEppL(x64emu_t *emu, uintptr_t fcn) { iFEppL_t fn = (iFEppL_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
 void iFEppp(x64emu_t *emu, uintptr_t fcn) { iFEppp_t fn = (iFEppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFEppV(x64emu_t *emu, uintptr_t fcn) { iFEppV_t fn = (iFEppV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
 void iFEpOu(x64emu_t *emu, uintptr_t fcn) { iFEpOu_t fn = (iFEpOu_t)fcn; R_RAX=fn(emu, (void*)R_RDI, of_convert((int32_t)R_RSI), (uint32_t)R_RDX); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 48cd8a39..f4d6b5d4 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -116,6 +116,7 @@ void iFpd(x64emu_t *emu, uintptr_t fnc);
 void iFpl(x64emu_t *emu, uintptr_t fnc);
 void iFpL(x64emu_t *emu, uintptr_t fnc);
 void iFpp(x64emu_t *emu, uintptr_t fnc);
+void iFpO(x64emu_t *emu, uintptr_t fnc);
 void IFEp(x64emu_t *emu, uintptr_t fnc);
 void IFpu(x64emu_t *emu, uintptr_t fnc);
 void CFui(x64emu_t *emu, uintptr_t fnc);
@@ -158,6 +159,7 @@ void pFpL(x64emu_t *emu, uintptr_t fnc);
 void pFpp(x64emu_t *emu, uintptr_t fnc);
 void pFpV(x64emu_t *emu, uintptr_t fnc);
 void HFpi(x64emu_t *emu, uintptr_t fnc);
+void vFEpi(x64emu_t *emu, uintptr_t fnc);
 void vFEpu(x64emu_t *emu, uintptr_t fnc);
 void vFEpp(x64emu_t *emu, uintptr_t fnc);
 void vFEpV(x64emu_t *emu, uintptr_t fnc);
@@ -215,6 +217,7 @@ void iFipp(x64emu_t *emu, uintptr_t fnc);
 void iFuup(x64emu_t *emu, uintptr_t fnc);
 void iFuff(x64emu_t *emu, uintptr_t fnc);
 void iFfff(x64emu_t *emu, uintptr_t fnc);
+void iFLpp(x64emu_t *emu, uintptr_t fnc);
 void iFpii(x64emu_t *emu, uintptr_t fnc);
 void iFpiu(x64emu_t *emu, uintptr_t fnc);
 void iFpiL(x64emu_t *emu, uintptr_t fnc);
@@ -283,6 +286,7 @@ void pFppp(x64emu_t *emu, uintptr_t fnc);
 void vFEipV(x64emu_t *emu, uintptr_t fnc);
 void vFEpip(x64emu_t *emu, uintptr_t fnc);
 void vFEpup(x64emu_t *emu, uintptr_t fnc);
+void vFEppp(x64emu_t *emu, uintptr_t fnc);
 void vFiiii(x64emu_t *emu, uintptr_t fnc);
 void vFiiip(x64emu_t *emu, uintptr_t fnc);
 void vFiuip(x64emu_t *emu, uintptr_t fnc);
@@ -337,6 +341,7 @@ void iFEipp(x64emu_t *emu, uintptr_t fnc);
 void iFEupp(x64emu_t *emu, uintptr_t fnc);
 void iFEpip(x64emu_t *emu, uintptr_t fnc);
 void iFEppi(x64emu_t *emu, uintptr_t fnc);
+void iFEppL(x64emu_t *emu, uintptr_t fnc);
 void iFEppp(x64emu_t *emu, uintptr_t fnc);
 void iFEppV(x64emu_t *emu, uintptr_t fnc);
 void iFEpOu(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h
index 9f6b4fa3..cdc8c258 100755
--- a/src/wrapped/wrappedlibc_private.h
+++ b/src/wrapped/wrappedlibc_private.h
@@ -8,7 +8,7 @@
 //GO(abs, 
 //GO(accept, 
 //GO(accept4, 
-//GOW(access, 
+GOW(access, iFpi)
 //GO(acct, 
 //GOW(addmntent, 
 //GOW(addseverity, 
@@ -576,9 +576,9 @@ GOW(getpriority, iFii)
 //GO(getrandom, 
 //GO(getresgid, 
 //GO(getresuid, 
-//GO(__getrlimit, 
-//GOW(getrlimit, 
-//GOW(getrlimit64, 
+GO(__getrlimit, iFip)
+GOW(getrlimit, iFip)
+GOW(getrlimit64, iFip)
 //GO(getrpcbyname, 
 //GO(getrpcbyname_r, 
 //GO(getrpcbynumber, 
@@ -1142,11 +1142,11 @@ GO(__memset_chk, pFpiuu)
 //GO(__mempcpy_small, 
 //GO(__merge_grp, 
 //GO(mincore, 
-//GOW(mkdir, 
-//GO(mkdirat, 
-//GO(mkdtemp, 
-//GO(mkfifo, 
-//GO(mkfifoat, 
+GOW(mkdir, iFpu)
+GO(mkdirat, iFipu)
+GO(mkdtemp, pFp)
+GO(mkfifo, iFpu)
+GO(mkfifoat, iFipu)
 //GO(mkostemp, 
 //GOW(mkostemp64, 
 //GO(mkostemps, 
@@ -1254,9 +1254,9 @@ GOW(nl_langinfo_l, pFup)
 //GOW(obstack_vprintf, 
 //GO(__obstack_vprintf_chk, 
 //GOW(on_exit, 
-//GOW(__open, 
-//GOW(open, 
-//GO(__open_2, 
+GOM(__open, iFEpOu) //Weak
+GOM(open, iFEpOu)    //Weak
+GO(__open_2, iFpO)
 //GOW(__open64, 
 GOM(open64, iFEpOu) //Weak
 //GO(__open64_2, 
@@ -1671,9 +1671,9 @@ GOM(sigaction, iFEipp)    // Weak
 //GOW(sigblock, 
 //GO(__sigdelset, 
 //GO(sigdelset, 
-//GO(sigemptyset, 
-//GO(sigfillset, 
-//GO(siggetmask, 
+GO(sigemptyset, iFp)
+GO(sigfillset, iFp)
+GO(siggetmask, iFv)
 //GO(sighold, 
 //GO(sigignore, 
 //GO(siginterrupt, 
diff --git a/src/wrapped/wrappedlibpthread_private.h b/src/wrapped/wrappedlibpthread_private.h
index aeccee66..d0a1148b 100755
--- a/src/wrapped/wrappedlibpthread_private.h
+++ b/src/wrapped/wrappedlibpthread_private.h
@@ -3,6 +3,7 @@
 #endif
 // General note: pthread_t is unsigned long int
 // cpu_set_t is a struct with an array, default size is fixed for all architecture
+// pthread_t is like unsigned long
 
 // __errno_location
 // fork
@@ -18,38 +19,38 @@ GOM(pthread_atfork, iFEppp)
 GOM(__pthread_atfork, iFEppp)
 GOM(pthread_attr_destroy, iFEp)
 // pthread_attr_getaffinity_np
-//GO(pthread_attr_getdetachstate, iFpp)
-//GO(pthread_attr_getguardsize, iFpp)
-//GO(pthread_attr_getinheritsched, iFpp)
-//GO(pthread_attr_getschedparam, iFpp)
-//GO(pthread_attr_getschedpolicy, iFpp)
+GO(pthread_attr_getdetachstate, iFpp)
+GO(pthread_attr_getguardsize, iFpp)
+GO(pthread_attr_getinheritsched, iFpp)
+GO(pthread_attr_getschedparam, iFpp)
+GO(pthread_attr_getschedpolicy, iFpp)
 GO(pthread_attr_getscope, iFpp)
-//GOM(pthread_attr_getstack, iFEppp)
-//GO(pthread_attr_getstackaddr, iFpp)
-//GO(pthread_attr_getstacksize, iFpp)
+GOM(pthread_attr_getstack, iFEppp)
+GO(pthread_attr_getstackaddr, iFpp)
+GO(pthread_attr_getstacksize, iFpp)
 GO(pthread_attr_init, iFp)
-//GOM(pthread_attr_setaffinity_np, iFEpup)
-//GO(pthread_attr_setdetachstate, iFpi)
-//GO(pthread_attr_setguardsize, iFpL)
-//GO(pthread_attr_setinheritsched, iFpi)
-//GO(pthread_attr_setschedparam, iFpp)
-//GO(pthread_attr_setschedpolicy, iFpi)
-//GO(pthread_attr_setscope, iFpi)
-//GOM(pthread_attr_setstack, iFEppL)
-//GO(pthread_attr_setstackaddr, iFpp)
-//GO(pthread_attr_setstacksize, iFpL)
-//GO(pthread_barrierattr_destroy, iFp)
-//GO(pthread_barrierattr_getpshared, iFpp)
-//GO(pthread_barrierattr_init, iFp)
-//GO(pthread_barrierattr_setpshared, iFpi)
-//GO(pthread_barrier_destroy, iFp)
-//GO(pthread_barrier_init, iFppu)
-//GO(pthread_barrier_wait, iFp)
+GO(pthread_attr_setaffinity_np, iFpLp)
+GO(pthread_attr_setdetachstate, iFpi)
+GO(pthread_attr_setguardsize, iFpL)
+GO(pthread_attr_setinheritsched, iFpi)
+GO(pthread_attr_setschedparam, iFpp)
+GO(pthread_attr_setschedpolicy, iFpi)
+GO(pthread_attr_setscope, iFpi)
+GOM(pthread_attr_setstack, iFEppL)
+GO(pthread_attr_setstackaddr, iFpp)
+GO(pthread_attr_setstacksize, iFpL)
+GO(pthread_barrierattr_destroy, iFp)
+GO(pthread_barrierattr_getpshared, iFpp)
+GO(pthread_barrierattr_init, iFp)
+GO(pthread_barrierattr_setpshared, iFpi)
+GO(pthread_barrier_destroy, iFp)
+GO(pthread_barrier_init, iFppu)
+GO(pthread_barrier_wait, iFp)
 GO(pthread_cancel, iFL)
-//GOM(_pthread_cleanup_pop, vFEpi)
-//GOM(_pthread_cleanup_pop_restore, vFEpi)
-//GOM(_pthread_cleanup_push, vFEppp)
-//GOM(_pthread_cleanup_push_defer, vFEppp)
+GOM(_pthread_cleanup_pop, vFEpi)
+GOM(_pthread_cleanup_pop_restore, vFEpi)
+GOM(_pthread_cleanup_push, vFEppp)
+GOM(_pthread_cleanup_push_defer, vFEppp)
 // __pthread_cleanup_routine
 GO(pthread_condattr_destroy, iFp)
 GO(pthread_condattr_getclock, iFpp)
@@ -71,7 +72,7 @@ GO(pthread_equal, iFLL)
 //GO(pthread_getattr_np, iFup)
 //GO(pthread_getconcurrency, iFv)
 //GO(pthread_getcpuclockid, iFup)
-//GO(pthread_getschedparam, iFupp)
+GO(pthread_getschedparam, iFLpp)
 //GO(__pthread_getspecific, pFu)
 //GO(pthread_getspecific, pFu)
 //GOM(pthread_getname_np, iFEppu)  //not present on Pandora
@@ -146,8 +147,8 @@ GO(pthread_self, LFv)
 //GOM(pthread_setname_np, iFEpp)   // not present on the Pandora
 //GO(pthread_setschedparam, iFuip)
 //GO(pthread_setschedprio, iFpi)
-//GO(__pthread_setspecific, iFup)
-//GO(pthread_setspecific, iFup)
+GO(__pthread_setspecific, iFLp)
+GO(pthread_setspecific, iFLp)
 //GO(pthread_sigmask, iFipp)
 //GO(pthread_spin_destroy, iFp)
 //GO(pthread_spin_init, iFpi)