diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/library_list_32.h | 3 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 18 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedcurldefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedcurltypes32.h | 24 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedcurlundefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 20 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 10 | ||||
| -rw-r--r-- | src/wrapped32/wrappedcurl.c | 946 | ||||
| -rw-r--r-- | src/wrapped32/wrappedcurl_private.h | 85 |
9 files changed, 1122 insertions, 0 deletions
diff --git a/src/library_list_32.h b/src/library_list_32.h index d299e8ae..a9da0f4b 100644 --- a/src/library_list_32.h +++ b/src/library_list_32.h @@ -105,6 +105,9 @@ GO("libcups.so", libcups) GO("libgbm.so.1", gbm) GO("libgbm.so", gbm) GO("libdbus-1.so.3", dbus) +GO("libcurl.so.4", curl) +GO("libcurl-gnutls.so.4", curl) +GO("libcurl.so.3", curl) //GO("crashhandler.so", crashhandler) GO("libtcmalloc_minimal.so.0", tcmallocminimal) diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index c8976ab2..c190dd45 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -663,6 +663,7 @@ #() uFuup -> uFuup #() uFupp -> uFupp #() uFpii -> uFpii +#() uFpip -> uFpip #() uFpuU -> uFpuU #() uEpup -> uEpup #() uFpup -> uFpup @@ -990,6 +991,7 @@ #() iFEpui -> iFEpui #() iFEpuu -> iFEpuu #() iEEpup -> iEEpup +#() iFEpup -> iFEpup #() iFEpll -> iFEpll #() iEEpLi -> iEEpLi #() iFEpLi -> iFEpLi @@ -1043,6 +1045,7 @@ #() iFpiII -> iFpiII #() iFpiuu -> iFpiuu #() iFpili -> iFpili +#() iFpipu -> iFpipu #() iFpipL -> iFpipL #() iEpipp -> iEpipp #() iFpipp -> iFpipp @@ -1070,6 +1073,7 @@ #() iFppLi -> iFppLi #() iFppLI -> iFppLI #() iFppLu -> iFppLu +#() iFppLp -> iFppLp #() iFpppi -> iFpppi #() iFpppu -> iFpppu #() iEpppL -> iEpppL @@ -1108,8 +1112,10 @@ #() uFEpii -> uFEpii #() uFEpip -> uFEpip #() uFEpiV -> uFEpiV +#() uFEpup -> uFEpup #() uFuuuu -> uFuuuu #() uFuppd -> uFuppd +#() uFpiip -> uFpiip #() uFpCCC -> uFpCCC #() uFppii -> uFppii #() uFppip -> uFppip @@ -1447,6 +1453,7 @@ #() iFppiUi -> iFppiUi #() iFppipp -> iFppipp #() iFppWup -> iFppWup +#() iFppuip -> iFppuip #() iFppupu -> iFppupu #() iFppLpL -> iFppLpL #() iFpppip -> iFpppip @@ -1725,6 +1732,7 @@ #() iFXppppp -> iFXppppp #() uFEpippi -> uFEpippi #() uFupuufp -> uFupuufp +#() uFpppppp -> uFpppppp #() lEipLipu -> lEipLipu #() lEipLipp -> lEipLipp #() pFEpiiuu -> pFEpiiuu @@ -1848,6 +1856,7 @@ #() vFXLppipi -> vFXLppipi #() vFXpiipii -> vFXpiipii #() vFXppiiii -> vFXppiiii +#() iFElppppp -> iFElppppp #() iEEpLiipp -> iEEpLiipp #() iEEpLiipV -> iEEpLiipV #() iEEpLiLpV -> iEEpLiLpV @@ -2117,6 +2126,7 @@ #() vFuiiiiiuiiiiilll -> vFuiiiiiuiiiiilll #() vFuuiiiiuuiiiiiii -> vFuuiiiiuuiiiiiii #() vFfffffffffffffff -> vFfffffffffffffff +#() iFpppppppppppppppp -> iFpppppppppppppppp #() vFuuuuiiiiuuiiiiiii -> vFuuuuiiiiuuiiiiiii #() vFXpuiiiiipuiiiiiiii -> vFXpuiiiiipuiiiiiiii #() uFippuuuuiiiiuuiiiiiiiipp -> uFippuuuuiiiiuuiiiiiiiipp @@ -2150,6 +2160,14 @@ wrappedcairo: - cairo_xlib_surface_create - cairo_xlib_surface_create_for_bitmap wrappedcrashhandler: +wrappedcurl: +- iFpup: + - curl_multi_setopt +- uFpup: + - curl_easy_setopt + - curl_share_setopt +- iFlppppp: + - curl_global_init_mem wrappeddbus: - vFp: - dbus_free_string_array diff --git a/src/wrapped32/generated/wrappedcurldefs32.h b/src/wrapped32/generated/wrappedcurldefs32.h new file mode 100644 index 00000000..c154a870 --- /dev/null +++ b/src/wrapped32/generated/wrappedcurldefs32.h @@ -0,0 +1,8 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedcurlDEFS32_H_ +#define __wrappedcurlDEFS32_H_ + + +#endif // __wrappedcurlDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedcurltypes32.h b/src/wrapped32/generated/wrappedcurltypes32.h new file mode 100644 index 00000000..0633c46f --- /dev/null +++ b/src/wrapped32/generated/wrappedcurltypes32.h @@ -0,0 +1,24 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedcurlTYPES32_H_ +#define __wrappedcurlTYPES32_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef int32_t (*iFpup_t)(void*, uint32_t, void*); +typedef uint32_t (*uFpup_t)(void*, uint32_t, void*); +typedef int32_t (*iFlppppp_t)(intptr_t, void*, void*, void*, void*, void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(curl_multi_setopt, iFpup_t) \ + GO(curl_easy_setopt, uFpup_t) \ + GO(curl_share_setopt, uFpup_t) \ + GO(curl_global_init_mem, iFlppppp_t) + +#endif // __wrappedcurlTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedcurlundefs32.h b/src/wrapped32/generated/wrappedcurlundefs32.h new file mode 100644 index 00000000..fa5e4d19 --- /dev/null +++ b/src/wrapped32/generated/wrappedcurlundefs32.h @@ -0,0 +1,8 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedcurlUNDEFS32_H_ +#define __wrappedcurlUNDEFS32_H_ + + +#endif // __wrappedcurlUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 569e951c..b04c5a86 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -757,6 +757,7 @@ typedef uint32_t (*uFuuu_t)(uint32_t, uint32_t, uint32_t); typedef uint32_t (*uFuup_t)(uint32_t, uint32_t, void*); typedef uint32_t (*uFupp_t)(uint32_t, void*, void*); typedef uint32_t (*uFpii_t)(void*, int32_t, int32_t); +typedef uint32_t (*uFpip_t)(void*, int32_t, void*); typedef uint32_t (*uFpuU_t)(void*, uint32_t, uint64_t); typedef uint32_t (*uEpup_t)(void*, uint32_t, void*); typedef uint32_t (*uFpup_t)(void*, uint32_t, void*); @@ -1084,6 +1085,7 @@ typedef int32_t (*iFEpip_t)(x64emu_t*, void*, int32_t, void*); typedef int32_t (*iFEpui_t)(x64emu_t*, void*, uint32_t, int32_t); typedef int32_t (*iFEpuu_t)(x64emu_t*, void*, uint32_t, uint32_t); typedef int32_t (*iEEpup_t)(x64emu_t*, void*, uint32_t, void*); +typedef int32_t (*iFEpup_t)(x64emu_t*, void*, uint32_t, void*); typedef int32_t (*iFEpll_t)(x64emu_t*, void*, intptr_t, intptr_t); typedef int32_t (*iEEpLi_t)(x64emu_t*, void*, uintptr_t, int32_t); typedef int32_t (*iFEpLi_t)(x64emu_t*, void*, uintptr_t, int32_t); @@ -1137,6 +1139,7 @@ typedef int32_t (*iFpiip_t)(void*, int32_t, int32_t, void*); typedef int32_t (*iFpiII_t)(void*, int32_t, int64_t, int64_t); typedef int32_t (*iFpiuu_t)(void*, int32_t, uint32_t, uint32_t); typedef int32_t (*iFpili_t)(void*, int32_t, intptr_t, int32_t); +typedef int32_t (*iFpipu_t)(void*, int32_t, void*, uint32_t); typedef int32_t (*iFpipL_t)(void*, int32_t, void*, uintptr_t); typedef int32_t (*iEpipp_t)(void*, int32_t, void*, void*); typedef int32_t (*iFpipp_t)(void*, int32_t, void*, void*); @@ -1164,6 +1167,7 @@ typedef int32_t (*iFppup_t)(void*, void*, uint32_t, void*); typedef int32_t (*iFppLi_t)(void*, void*, uintptr_t, int32_t); typedef int32_t (*iFppLI_t)(void*, void*, uintptr_t, int64_t); typedef int32_t (*iFppLu_t)(void*, void*, uintptr_t, uint32_t); +typedef int32_t (*iFppLp_t)(void*, void*, uintptr_t, void*); typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t); typedef int32_t (*iFpppu_t)(void*, void*, void*, uint32_t); typedef int32_t (*iEpppL_t)(void*, void*, void*, uintptr_t); @@ -1202,8 +1206,10 @@ typedef uint32_t (*uFEuip_t)(x64emu_t*, uint32_t, int32_t, void*); typedef uint32_t (*uFEpii_t)(x64emu_t*, void*, int32_t, int32_t); typedef uint32_t (*uFEpip_t)(x64emu_t*, void*, int32_t, void*); typedef uint32_t (*uFEpiV_t)(x64emu_t*, void*, int32_t, void*); +typedef uint32_t (*uFEpup_t)(x64emu_t*, void*, uint32_t, void*); typedef uint32_t (*uFuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t); typedef uint32_t (*uFuppd_t)(uint32_t, void*, void*, double); +typedef uint32_t (*uFpiip_t)(void*, int32_t, int32_t, void*); typedef uint32_t (*uFpCCC_t)(void*, uint8_t, uint8_t, uint8_t); typedef uint32_t (*uFppii_t)(void*, void*, int32_t, int32_t); typedef uint32_t (*uFppip_t)(void*, void*, int32_t, void*); @@ -1541,6 +1547,7 @@ typedef int32_t (*iFpuppp_t)(void*, uint32_t, void*, void*, void*); typedef int32_t (*iFppiUi_t)(void*, void*, int32_t, uint64_t, int32_t); typedef int32_t (*iFppipp_t)(void*, void*, int32_t, void*, void*); typedef int32_t (*iFppWup_t)(void*, void*, uint16_t, uint32_t, void*); +typedef int32_t (*iFppuip_t)(void*, void*, uint32_t, int32_t, void*); typedef int32_t (*iFppupu_t)(void*, void*, uint32_t, void*, uint32_t); typedef int32_t (*iFppLpL_t)(void*, void*, uintptr_t, void*, uintptr_t); typedef int32_t (*iFpppip_t)(void*, void*, void*, int32_t, void*); @@ -1819,6 +1826,7 @@ typedef int32_t (*iFXppppi_t)(void*, void*, void*, void*, void*, int32_t); typedef int32_t (*iFXppppp_t)(void*, void*, void*, void*, void*, void*); typedef uint32_t (*uFEpippi_t)(x64emu_t*, void*, int32_t, void*, void*, int32_t); typedef uint32_t (*uFupuufp_t)(uint32_t, void*, uint32_t, uint32_t, float, void*); +typedef uint32_t (*uFpppppp_t)(void*, void*, void*, void*, void*, void*); typedef intptr_t (*lEipLipu_t)(int32_t, void*, uintptr_t, int32_t, void*, uint32_t); typedef intptr_t (*lEipLipp_t)(int32_t, void*, uintptr_t, int32_t, void*, void*); typedef void* (*pFEpiiuu_t)(x64emu_t*, void*, int32_t, int32_t, uint32_t, uint32_t); @@ -1942,6 +1950,7 @@ typedef void (*vFXLLuuuu_t)(void*, uintptr_t, uintptr_t, uint32_t, uint32_t, uin typedef void (*vFXLppipi_t)(void*, uintptr_t, void*, void*, int32_t, void*, int32_t); typedef void (*vFXpiipii_t)(void*, void*, int32_t, int32_t, void*, int32_t, int32_t); typedef void (*vFXppiiii_t)(void*, void*, void*, int32_t, int32_t, int32_t, int32_t); +typedef int32_t (*iFElppppp_t)(x64emu_t*, intptr_t, void*, void*, void*, void*, void*); typedef int32_t (*iEEpLiipp_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, void*, void*); typedef int32_t (*iEEpLiipV_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, void*, void*); typedef int32_t (*iEEpLiLpV_t)(x64emu_t*, void*, uintptr_t, int32_t, uintptr_t, void*, void*); @@ -2211,6 +2220,7 @@ typedef void (*vFuddiiddiiddiip_t)(uint32_t, double, double, int32_t, int32_t, d typedef void (*vFuiiiiiuiiiiilll_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, intptr_t, intptr_t, intptr_t); typedef void (*vFuuiiiiuuiiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (*vFfffffffffffffff_t)(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float); +typedef int32_t (*iFpppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef void (*vFuuuuiiiiuuiiiiiii_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (*vFXpuiiiiipuiiiiiiii_t)(void*, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef uint32_t (*uFippuuuuiiiiuuiiiiiiiipp_t)(int32_t, void*, void*, uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*, void*); @@ -2906,6 +2916,7 @@ void uFuuu_32(x64emu_t *emu, uintptr_t fcn) { uFuuu_t fn = (uFuuu_t)fcn; R_EAX = void uFuup_32(x64emu_t *emu, uintptr_t fcn) { uFuup_t fn = (uFuup_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFupp_32(x64emu_t *emu, uintptr_t fcn) { uFupp_t fn = (uFupp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFpii_32(x64emu_t *emu, uintptr_t fcn) { uFpii_t fn = (uFpii_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } +void uFpip_32(x64emu_t *emu, uintptr_t fcn) { uFpip_t fn = (uFpip_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFpuU_32(x64emu_t *emu, uintptr_t fcn) { uFpuU_t fn = (uFpuU_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12)); } void uEpup_32(x64emu_t *emu, uintptr_t fcn) { uEpup_t fn = (uEpup_t)fcn; errno = emu->libc_err; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; } void uFpup_32(x64emu_t *emu, uintptr_t fcn) { uFpup_t fn = (uFpup_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } @@ -3233,6 +3244,7 @@ void iFEpip_32(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_EA void iFEpui_32(x64emu_t *emu, uintptr_t fcn) { iFEpui_t fn = (iFEpui_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void iFEpuu_32(x64emu_t *emu, uintptr_t fcn) { iFEpuu_t fn = (iFEpuu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void iEEpup_32(x64emu_t *emu, uintptr_t fcn) { iEEpup_t fn = (iEEpup_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; } +void iFEpup_32(x64emu_t *emu, uintptr_t fcn) { iFEpup_t fn = (iFEpup_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFEpll_32(x64emu_t *emu, uintptr_t fcn) { iFEpll_t fn = (iFEpll_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12))); } void iEEpLi_32(x64emu_t *emu, uintptr_t fcn) { iEEpLi_t fn = (iEEpLi_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); emu->libc_err = errno; } void iFEpLi_32(x64emu_t *emu, uintptr_t fcn) { iFEpLi_t fn = (iFEpLi_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); } @@ -3286,6 +3298,7 @@ void iFpiip_32(x64emu_t *emu, uintptr_t fcn) { iFpiip_t fn = (iFpiip_t)fcn; R_EA void iFpiII_32(x64emu_t *emu, uintptr_t fcn) { iFpiII_t fn = (iFpiII_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20)); } void iFpiuu_32(x64emu_t *emu, uintptr_t fcn) { iFpiuu_t fn = (iFpiuu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void iFpili_32(x64emu_t *emu, uintptr_t fcn) { iFpili_t fn = (iFpili_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_long(from_ptri(long_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16)); } +void iFpipu_32(x64emu_t *emu, uintptr_t fcn) { iFpipu_t fn = (iFpipu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void iFpipL_32(x64emu_t *emu, uintptr_t fcn) { iFpipL_t fn = (iFpipL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); } void iEpipp_32(x64emu_t *emu, uintptr_t fcn) { iEpipp_t fn = (iEpipp_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); emu->libc_err = errno; } void iFpipp_32(x64emu_t *emu, uintptr_t fcn) { iFpipp_t fn = (iFpipp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } @@ -3313,6 +3326,7 @@ void iFppup_32(x64emu_t *emu, uintptr_t fcn) { iFppup_t fn = (iFppup_t)fcn; R_EA void iFppLi_32(x64emu_t *emu, uintptr_t fcn) { iFppLi_t fn = (iFppLi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16)); } void iFppLI_32(x64emu_t *emu, uintptr_t fcn) { iFppLI_t fn = (iFppLI_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int64_t, R_ESP + 16)); } void iFppLu_32(x64emu_t *emu, uintptr_t fcn) { iFppLu_t fn = (iFppLu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16)); } +void iFppLp_32(x64emu_t *emu, uintptr_t fcn) { iFppLp_t fn = (iFppLp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } void iFpppi_32(x64emu_t *emu, uintptr_t fcn) { iFpppi_t fn = (iFpppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFpppu_32(x64emu_t *emu, uintptr_t fcn) { iFpppu_t fn = (iFpppu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void iEpppL_32(x64emu_t *emu, uintptr_t fcn) { iEpppL_t fn = (iEpppL_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); emu->libc_err = errno; } @@ -3351,8 +3365,10 @@ void uFEuip_32(x64emu_t *emu, uintptr_t fcn) { uFEuip_t fn = (uFEuip_t)fcn; R_EA void uFEpii_32(x64emu_t *emu, uintptr_t fcn) { uFEpii_t fn = (uFEpii_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void uFEpip_32(x64emu_t *emu, uintptr_t fcn) { uFEpip_t fn = (uFEpip_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFEpiV_32(x64emu_t *emu, uintptr_t fcn) { uFEpiV_t fn = (uFEpiV_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptrv(R_ESP + 12)); } +void uFEpup_32(x64emu_t *emu, uintptr_t fcn) { uFEpup_t fn = (uFEpup_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFuuuu_32(x64emu_t *emu, uintptr_t fcn) { uFuuuu_t fn = (uFuuuu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void uFuppd_32(x64emu_t *emu, uintptr_t fcn) { uFuppd_t fn = (uFuppd_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(double, R_ESP + 16)); } +void uFpiip_32(x64emu_t *emu, uintptr_t fcn) { uFpiip_t fn = (uFpiip_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void uFpCCC_32(x64emu_t *emu, uintptr_t fcn) { uFpCCC_t fn = (uFpCCC_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16)); } void uFppii_32(x64emu_t *emu, uintptr_t fcn) { uFppii_t fn = (uFppii_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void uFppip_32(x64emu_t *emu, uintptr_t fcn) { uFppip_t fn = (uFppip_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } @@ -3690,6 +3706,7 @@ void iFpuppp_32(x64emu_t *emu, uintptr_t fcn) { iFpuppp_t fn = (iFpuppp_t)fcn; R void iFppiUi_32(x64emu_t *emu, uintptr_t fcn) { iFppiUi_t fn = (iFppiUi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint64_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 24)); } void iFppipp_32(x64emu_t *emu, uintptr_t fcn) { iFppipp_t fn = (iFppipp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFppWup_32(x64emu_t *emu, uintptr_t fcn) { iFppWup_t fn = (iFppWup_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint16_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } +void iFppuip_32(x64emu_t *emu, uintptr_t fcn) { iFppuip_t fn = (iFppuip_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFppupu_32(x64emu_t *emu, uintptr_t fcn) { iFppupu_t fn = (iFppupu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); } void iFppLpL_32(x64emu_t *emu, uintptr_t fcn) { iFppLpL_t fn = (iFppLpL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ulong(from_ptri(ulong_t, R_ESP + 20))); } void iFpppip_32(x64emu_t *emu, uintptr_t fcn) { iFpppip_t fn = (iFpppip_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } @@ -3968,6 +3985,7 @@ void iFXppppi_32(x64emu_t *emu, uintptr_t fcn) { iFXppppi_t fn = (iFXppppi_t)fcn void iFXppppp_32(x64emu_t *emu, uintptr_t fcn) { iFXppppp_t fn = (iFXppppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); } void uFEpippi_32(x64emu_t *emu, uintptr_t fcn) { uFEpippi_t fn = (uFEpippi_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); } void uFupuufp_32(x64emu_t *emu, uintptr_t fcn) { uFupuufp_t fn = (uFupuufp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptriv(R_ESP + 24)); } +void uFpppppp_32(x64emu_t *emu, uintptr_t fcn) { uFpppppp_t fn = (uFpppppp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); } void lEipLipu_32(x64emu_t *emu, uintptr_t fcn) { lEipLipu_t fn = (lEipLipu_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(uint32_t, R_ESP + 24))); emu->libc_err = errno; } void lEipLipp_32(x64emu_t *emu, uintptr_t fcn) { lEipLipp_t fn = (lEipLipp_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24))); emu->libc_err = errno; } void pFEpiiuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpiiuu_t fn = (pFEpiiuu_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); } @@ -4091,6 +4109,7 @@ void vFXLLuuuu_32(x64emu_t *emu, uintptr_t fcn) { vFXLLuuuu_t fn = (vFXLLuuuu_t) void vFXLppipi_32(x64emu_t *emu, uintptr_t fcn) { vFXLppipi_t fn = (vFXLppipi_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); } void vFXpiipii_32(x64emu_t *emu, uintptr_t fcn) { vFXpiipii_t fn = (vFXpiipii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); } void vFXppiiii_32(x64emu_t *emu, uintptr_t fcn) { vFXppiiii_t fn = (vFXppiiii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); } +void iFElppppp_32(x64emu_t *emu, uintptr_t fcn) { iFElppppp_t fn = (iFElppppp_t)fcn; R_EAX = fn(emu, from_long(from_ptri(long_t, R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); } void iEEpLiipp_32(x64emu_t *emu, uintptr_t fcn) { iEEpLiipp_t fn = (iEEpLiipp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); emu->libc_err = errno; } void iEEpLiipV_32(x64emu_t *emu, uintptr_t fcn) { iEEpLiipV_t fn = (iEEpLiipV_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); emu->libc_err = errno; } void iEEpLiLpV_32(x64emu_t *emu, uintptr_t fcn) { iEEpLiLpV_t fn = (iEEpLiLpV_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); emu->libc_err = errno; } @@ -4360,6 +4379,7 @@ void vFuddiiddiiddiip_32(x64emu_t *emu, uintptr_t fcn) { vFuddiiddiiddiip_t fn = void vFuiiiiiuiiiiilll_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiuiiiiilll_t fn = (vFuiiiiiuiiiiilll_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_long(from_ptri(long_t, R_ESP + 52)), from_long(from_ptri(long_t, R_ESP + 56)), from_long(from_ptri(long_t, R_ESP + 60))); } void vFuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiuuiiiiiii_t fn = (vFuuiiiiuuiiiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60)); } void vFfffffffffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFfffffffffffffff_t fn = (vFfffffffffffffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32), from_ptri(float, R_ESP + 36), from_ptri(float, R_ESP + 40), from_ptri(float, R_ESP + 44), from_ptri(float, R_ESP + 48), from_ptri(float, R_ESP + 52), from_ptri(float, R_ESP + 56), from_ptri(float, R_ESP + 60)); } +void iFpppppppppppppppp_32(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppp_t fn = (iFpppppppppppppppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48), from_ptriv(R_ESP + 52), from_ptriv(R_ESP + 56), from_ptriv(R_ESP + 60), from_ptriv(R_ESP + 64)); } void vFuuuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuuuiiiiuuiiiiiii_t fn = (vFuuuuiiiiuuiiiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68)); } void vFXpuiiiiipuiiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFXpuiiiiipuiiiiiiii_t fn = (vFXpuiiiiipuiiiiiiii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68), from_ptri(int32_t, R_ESP + 72)); } void uFippuuuuiiiiuuiiiiiiiipp_32(x64emu_t *emu, uintptr_t fcn) { uFippuuuuiiiiuuiiiiiiiipp_t fn = (uFippuuuuiiiiuuiiiiiiiipp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptri(uint32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68), from_ptri(int32_t, R_ESP + 72), from_ptri(int32_t, R_ESP + 76), from_ptri(int32_t, R_ESP + 80), from_ptri(int32_t, R_ESP + 84), from_ptriv(R_ESP + 88), from_ptriv(R_ESP + 92)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index c2fd363d..4fb245c9 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -704,6 +704,7 @@ void uFuuu_32(x64emu_t *emu, uintptr_t fnc); void uFuup_32(x64emu_t *emu, uintptr_t fnc); void uFupp_32(x64emu_t *emu, uintptr_t fnc); void uFpii_32(x64emu_t *emu, uintptr_t fnc); +void uFpip_32(x64emu_t *emu, uintptr_t fnc); void uFpuU_32(x64emu_t *emu, uintptr_t fnc); void uEpup_32(x64emu_t *emu, uintptr_t fnc); void uFpup_32(x64emu_t *emu, uintptr_t fnc); @@ -1031,6 +1032,7 @@ void iFEpip_32(x64emu_t *emu, uintptr_t fnc); void iFEpui_32(x64emu_t *emu, uintptr_t fnc); void iFEpuu_32(x64emu_t *emu, uintptr_t fnc); void iEEpup_32(x64emu_t *emu, uintptr_t fnc); +void iFEpup_32(x64emu_t *emu, uintptr_t fnc); void iFEpll_32(x64emu_t *emu, uintptr_t fnc); void iEEpLi_32(x64emu_t *emu, uintptr_t fnc); void iFEpLi_32(x64emu_t *emu, uintptr_t fnc); @@ -1084,6 +1086,7 @@ void iFpiip_32(x64emu_t *emu, uintptr_t fnc); void iFpiII_32(x64emu_t *emu, uintptr_t fnc); void iFpiuu_32(x64emu_t *emu, uintptr_t fnc); void iFpili_32(x64emu_t *emu, uintptr_t fnc); +void iFpipu_32(x64emu_t *emu, uintptr_t fnc); void iFpipL_32(x64emu_t *emu, uintptr_t fnc); void iEpipp_32(x64emu_t *emu, uintptr_t fnc); void iFpipp_32(x64emu_t *emu, uintptr_t fnc); @@ -1111,6 +1114,7 @@ void iFppup_32(x64emu_t *emu, uintptr_t fnc); void iFppLi_32(x64emu_t *emu, uintptr_t fnc); void iFppLI_32(x64emu_t *emu, uintptr_t fnc); void iFppLu_32(x64emu_t *emu, uintptr_t fnc); +void iFppLp_32(x64emu_t *emu, uintptr_t fnc); void iFpppi_32(x64emu_t *emu, uintptr_t fnc); void iFpppu_32(x64emu_t *emu, uintptr_t fnc); void iEpppL_32(x64emu_t *emu, uintptr_t fnc); @@ -1149,8 +1153,10 @@ void uFEuip_32(x64emu_t *emu, uintptr_t fnc); void uFEpii_32(x64emu_t *emu, uintptr_t fnc); void uFEpip_32(x64emu_t *emu, uintptr_t fnc); void uFEpiV_32(x64emu_t *emu, uintptr_t fnc); +void uFEpup_32(x64emu_t *emu, uintptr_t fnc); void uFuuuu_32(x64emu_t *emu, uintptr_t fnc); void uFuppd_32(x64emu_t *emu, uintptr_t fnc); +void uFpiip_32(x64emu_t *emu, uintptr_t fnc); void uFpCCC_32(x64emu_t *emu, uintptr_t fnc); void uFppii_32(x64emu_t *emu, uintptr_t fnc); void uFppip_32(x64emu_t *emu, uintptr_t fnc); @@ -1488,6 +1494,7 @@ void iFpuppp_32(x64emu_t *emu, uintptr_t fnc); void iFppiUi_32(x64emu_t *emu, uintptr_t fnc); void iFppipp_32(x64emu_t *emu, uintptr_t fnc); void iFppWup_32(x64emu_t *emu, uintptr_t fnc); +void iFppuip_32(x64emu_t *emu, uintptr_t fnc); void iFppupu_32(x64emu_t *emu, uintptr_t fnc); void iFppLpL_32(x64emu_t *emu, uintptr_t fnc); void iFpppip_32(x64emu_t *emu, uintptr_t fnc); @@ -1766,6 +1773,7 @@ void iFXppppi_32(x64emu_t *emu, uintptr_t fnc); void iFXppppp_32(x64emu_t *emu, uintptr_t fnc); void uFEpippi_32(x64emu_t *emu, uintptr_t fnc); void uFupuufp_32(x64emu_t *emu, uintptr_t fnc); +void uFpppppp_32(x64emu_t *emu, uintptr_t fnc); void lEipLipu_32(x64emu_t *emu, uintptr_t fnc); void lEipLipp_32(x64emu_t *emu, uintptr_t fnc); void pFEpiiuu_32(x64emu_t *emu, uintptr_t fnc); @@ -1889,6 +1897,7 @@ void vFXLLuuuu_32(x64emu_t *emu, uintptr_t fnc); void vFXLppipi_32(x64emu_t *emu, uintptr_t fnc); void vFXpiipii_32(x64emu_t *emu, uintptr_t fnc); void vFXppiiii_32(x64emu_t *emu, uintptr_t fnc); +void iFElppppp_32(x64emu_t *emu, uintptr_t fnc); void iEEpLiipp_32(x64emu_t *emu, uintptr_t fnc); void iEEpLiipV_32(x64emu_t *emu, uintptr_t fnc); void iEEpLiLpV_32(x64emu_t *emu, uintptr_t fnc); @@ -2158,6 +2167,7 @@ void vFuddiiddiiddiip_32(x64emu_t *emu, uintptr_t fnc); void vFuiiiiiuiiiiilll_32(x64emu_t *emu, uintptr_t fnc); void vFuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fnc); void vFfffffffffffffff_32(x64emu_t *emu, uintptr_t fnc); +void iFpppppppppppppppp_32(x64emu_t *emu, uintptr_t fnc); void vFuuuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fnc); void vFXpuiiiiipuiiiiiiii_32(x64emu_t *emu, uintptr_t fnc); void uFippuuuuiiiiuuiiiiiiiipp_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedcurl.c b/src/wrapped32/wrappedcurl.c new file mode 100644 index 00000000..8175d6f1 --- /dev/null +++ b/src/wrapped32/wrappedcurl.c @@ -0,0 +1,946 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "wrapper32.h" +#include "bridge.h" +#include "librarian.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "debug.h" +#include "box32context.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "elfloader.h" + +static const char* curlName = "libcurl.so.4"; +#define ALTNAME "libcurl.so" + +#define ALTNAME2 "libcurl-gnutls.so.4" +#define LIBNAME curl + +#include "generated/wrappedcurltypes32.h" + +#include "wrappercallback32.h" + +#define LONG 0 +#define OBJECTPOINT 10000 +#define STRINGPOINT 10000 +#define FUNCTIONPOINT 20000 +#define OFF_T 30000 +#define BLOB 40000 +#define CINIT(name,type,number) CURLOPT_ ## name = type + number +#define CURLOPT(na,t,nu) na = t + nu + +typedef enum { + CINIT(WRITEDATA, OBJECTPOINT, 1), + CINIT(URL, STRINGPOINT, 2), + CINIT(PORT, LONG, 3), + CINIT(PROXY, STRINGPOINT, 4), + CINIT(USERPWD, STRINGPOINT, 5), + CINIT(PROXYUSERPWD, STRINGPOINT, 6), + CINIT(RANGE, STRINGPOINT, 7), + CINIT(READDATA, OBJECTPOINT, 9), + CINIT(ERRORBUFFER, OBJECTPOINT, 10), + CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11), + CINIT(READFUNCTION, FUNCTIONPOINT, 12), + CINIT(TIMEOUT, LONG, 13), + CINIT(INFILESIZE, LONG, 14), + CINIT(POSTFIELDS, OBJECTPOINT, 15), + CINIT(REFERER, STRINGPOINT, 16), + CINIT(FTPPORT, STRINGPOINT, 17), + CINIT(USERAGENT, STRINGPOINT, 18), + CINIT(LOW_SPEED_LIMIT, LONG, 19), + CINIT(LOW_SPEED_TIME, LONG, 20), + CINIT(RESUME_FROM, LONG, 21), + CINIT(COOKIE, STRINGPOINT, 22), + CINIT(HTTPHEADER, OBJECTPOINT, 23), + CINIT(HTTPPOST, OBJECTPOINT, 24), + CINIT(SSLCERT, STRINGPOINT, 25), + CINIT(KEYPASSWD, STRINGPOINT, 26), + CINIT(CRLF, LONG, 27), + CINIT(QUOTE, OBJECTPOINT, 28), + CINIT(HEADERDATA, OBJECTPOINT, 29), + CINIT(COOKIEFILE, STRINGPOINT, 31), + CINIT(SSLVERSION, LONG, 32), + CINIT(TIMECONDITION, LONG, 33), + CINIT(TIMEVALUE, LONG, 34), + CINIT(CUSTOMREQUEST, STRINGPOINT, 36), + CINIT(STDERR, OBJECTPOINT, 37), + CINIT(POSTQUOTE, OBJECTPOINT, 39), + CINIT(OBSOLETE40, OBJECTPOINT, 40), + CINIT(VERBOSE, LONG, 41), + CINIT(HEADER, LONG, 42), + CINIT(NOPROGRESS, LONG, 43), + CINIT(NOBODY, LONG, 44), + CINIT(FAILONERROR, LONG, 45), + CINIT(UPLOAD, LONG, 46), + CINIT(POST, LONG, 47), + CINIT(DIRLISTONLY, LONG, 48), + CINIT(APPEND, LONG, 50), + CINIT(NETRC, LONG, 51), + CINIT(FOLLOWLOCATION, LONG, 52), + CINIT(TRANSFERTEXT, LONG, 53), + CINIT(PUT, LONG, 54), + CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56), + CINIT(PROGRESSDATA, OBJECTPOINT, 57), +#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA + CINIT(AUTOREFERER, LONG, 58), + CINIT(PROXYPORT, LONG, 59), + CINIT(POSTFIELDSIZE, LONG, 60), + CINIT(HTTPPROXYTUNNEL, LONG, 61), + CINIT(INTERFACE, STRINGPOINT, 62), + CINIT(KRBLEVEL, STRINGPOINT, 63), + CINIT(SSL_VERIFYPEER, LONG, 64), + CINIT(CAINFO, STRINGPOINT, 65), + CINIT(MAXREDIRS, LONG, 68), + CINIT(FILETIME, LONG, 69), + CINIT(TELNETOPTIONS, OBJECTPOINT, 70), + CINIT(MAXCONNECTS, LONG, 71), + CINIT(OBSOLETE72, LONG, 72), + CINIT(FRESH_CONNECT, LONG, 74), + CINIT(FORBID_REUSE, LONG, 75), + CINIT(RANDOM_FILE, STRINGPOINT, 76), + CINIT(EGDSOCKET, STRINGPOINT, 77), + CINIT(CONNECTTIMEOUT, LONG, 78), + CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79), + CINIT(HTTPGET, LONG, 80), + CINIT(SSL_VERIFYHOST, LONG, 81), + CINIT(COOKIEJAR, STRINGPOINT, 82), + CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83), + CINIT(HTTP_VERSION, LONG, 84), + CINIT(FTP_USE_EPSV, LONG, 85), + CINIT(SSLCERTTYPE, STRINGPOINT, 86), + CINIT(SSLKEY, STRINGPOINT, 87), + CINIT(SSLKEYTYPE, STRINGPOINT, 88), + CINIT(SSLENGINE, STRINGPOINT, 89), + CINIT(SSLENGINE_DEFAULT, LONG, 90), + CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), + CINIT(DNS_CACHE_TIMEOUT, LONG, 92), + CINIT(PREQUOTE, OBJECTPOINT, 93), + CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94), + CINIT(DEBUGDATA, OBJECTPOINT, 95), + CINIT(COOKIESESSION, LONG, 96), + CINIT(CAPATH, STRINGPOINT, 97), + CINIT(BUFFERSIZE, LONG, 98), + CINIT(NOSIGNAL, LONG, 99), + CINIT(SHARE, OBJECTPOINT, 100), + CINIT(PROXYTYPE, LONG, 101), + CINIT(ACCEPT_ENCODING, STRINGPOINT, 102), + CINIT(PRIVATE, OBJECTPOINT, 103), + CINIT(HTTP200ALIASES, OBJECTPOINT, 104), + CINIT(UNRESTRICTED_AUTH, LONG, 105), + CINIT(FTP_USE_EPRT, LONG, 106), + CINIT(HTTPAUTH, LONG, 107), + CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108), + CINIT(SSL_CTX_DATA, OBJECTPOINT, 109), + CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110), + CINIT(PROXYAUTH, LONG, 111), + CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112), +#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT + CINIT(IPRESOLVE, LONG, 113), + CINIT(MAXFILESIZE, LONG, 114), + CINIT(INFILESIZE_LARGE, OFF_T, 115), + CINIT(RESUME_FROM_LARGE, OFF_T, 116), + CINIT(MAXFILESIZE_LARGE, OFF_T, 117), + CINIT(NETRC_FILE, STRINGPOINT, 118), + CINIT(USE_SSL, LONG, 119), + CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120), + CINIT(TCP_NODELAY, LONG, 121), + CINIT(FTPSSLAUTH, LONG, 129), + CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130), + CINIT(IOCTLDATA, OBJECTPOINT, 131), + CINIT(FTP_ACCOUNT, STRINGPOINT, 134), + CINIT(COOKIELIST, STRINGPOINT, 135), + CINIT(IGNORE_CONTENT_LENGTH, LONG, 136), + CINIT(FTP_SKIP_PASV_IP, LONG, 137), + CINIT(FTP_FILEMETHOD, LONG, 138), + CINIT(LOCALPORT, LONG, 139), + CINIT(LOCALPORTRANGE, LONG, 140), + CINIT(CONNECT_ONLY, LONG, 141), + CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142), + CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143), + CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144), + CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145), + CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146), + CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147), + CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148), + CINIT(SOCKOPTDATA, OBJECTPOINT, 149), + CINIT(SSL_SESSIONID_CACHE, LONG, 150), + CINIT(SSH_AUTH_TYPES, LONG, 151), + CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152), + CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153), + CINIT(FTP_SSL_CCC, LONG, 154), + CINIT(TIMEOUT_MS, LONG, 155), + CINIT(CONNECTTIMEOUT_MS, LONG, 156), + CINIT(HTTP_TRANSFER_DECODING, LONG, 157), + CINIT(HTTP_CONTENT_DECODING, LONG, 158), + CINIT(NEW_FILE_PERMS, LONG, 159), + CINIT(NEW_DIRECTORY_PERMS, LONG, 160), + CINIT(POSTREDIR, LONG, 161), + CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162), + CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163), + CINIT(OPENSOCKETDATA, OBJECTPOINT, 164), + CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165), + CINIT(PROXY_TRANSFER_MODE, LONG, 166), + CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167), + CINIT(SEEKDATA, OBJECTPOINT, 168), + CINIT(CRLFILE, STRINGPOINT, 169), + CINIT(ISSUERCERT, STRINGPOINT, 170), + CINIT(ADDRESS_SCOPE, LONG, 171), + CINIT(CERTINFO, LONG, 172), + CINIT(USERNAME, STRINGPOINT, 173), + CINIT(PASSWORD, STRINGPOINT, 174), + CINIT(PROXYUSERNAME, STRINGPOINT, 175), + CINIT(PROXYPASSWORD, STRINGPOINT, 176), + CINIT(NOPROXY, STRINGPOINT, 177), + CINIT(TFTP_BLKSIZE, LONG, 178), + CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), + CINIT(SOCKS5_GSSAPI_NEC, LONG, 180), + CINIT(PROTOCOLS, LONG, 181), + CINIT(REDIR_PROTOCOLS, LONG, 182), + CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183), + CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184), + CINIT(SSH_KEYDATA, OBJECTPOINT, 185), + CINIT(MAIL_FROM, STRINGPOINT, 186), + CINIT(MAIL_RCPT, OBJECTPOINT, 187), + CINIT(FTP_USE_PRET, LONG, 188), + CINIT(RTSP_REQUEST, LONG, 189), + CINIT(RTSP_SESSION_ID, STRINGPOINT, 190), + CINIT(RTSP_STREAM_URI, STRINGPOINT, 191), + CINIT(RTSP_TRANSPORT, STRINGPOINT, 192), + CINIT(RTSP_CLIENT_CSEQ, LONG, 193), + CINIT(RTSP_SERVER_CSEQ, LONG, 194), + CINIT(INTERLEAVEDATA, OBJECTPOINT, 195), + CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196), + CINIT(WILDCARDMATCH, LONG, 197), + CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198), + CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199), + CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200), + CINIT(CHUNK_DATA, OBJECTPOINT, 201), + CINIT(FNMATCH_DATA, OBJECTPOINT, 202), + CINIT(RESOLVE, OBJECTPOINT, 203), + CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204), + CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205), + CINIT(TLSAUTH_TYPE, STRINGPOINT, 206), + CINIT(TRANSFER_ENCODING, LONG, 207), + CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208), + CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209), + CINIT(GSSAPI_DELEGATION, LONG, 210), + CINIT(DNS_SERVERS, STRINGPOINT, 211), + CINIT(ACCEPTTIMEOUT_MS, LONG, 212), + CINIT(TCP_KEEPALIVE, LONG, 213), + CINIT(TCP_KEEPIDLE, LONG, 214), + CINIT(TCP_KEEPINTVL, LONG, 215), + CINIT(SSL_OPTIONS, LONG, 216), + CINIT(MAIL_AUTH, STRINGPOINT, 217), + CINIT(SASL_IR, LONG, 218), + CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219), + CINIT(XOAUTH2_BEARER, STRINGPOINT, 220), + CINIT(DNS_INTERFACE, STRINGPOINT, 221), + CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222), + CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223), + CINIT(LOGIN_OPTIONS, STRINGPOINT, 224), + CINIT(SSL_ENABLE_NPN, LONG, 225), + CINIT(SSL_ENABLE_ALPN, LONG, 226), + CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227), + CINIT(PROXYHEADER, OBJECTPOINT, 228), + CINIT(HEADEROPT, LONG, 229), + CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230), + CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231), + CINIT(SSL_VERIFYSTATUS, LONG, 232), + CINIT(SSL_FALSESTART, LONG, 233), + CINIT(PATH_AS_IS, LONG, 234), + CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235), + CINIT(SERVICE_NAME, STRINGPOINT, 236), + CINIT(PIPEWAIT, LONG, 237), + CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238), + CINIT(STREAM_WEIGHT, LONG, 239), + CINIT(STREAM_DEPENDS, OBJECTPOINT, 240), + CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241), + CINIT(TFTP_NO_OPTIONS, LONG, 242), + CINIT(CONNECT_TO, OBJECTPOINT, 243), + CINIT(TCP_FASTOPEN, LONG, 244), + CINIT(KEEP_SENDING_ON_ERROR, LONG, 245), + CINIT(PROXY_CAINFO, STRINGPOINT, 246), + CINIT(PROXY_CAPATH, STRINGPOINT, 247), + CINIT(PROXY_SSL_VERIFYPEER, LONG, 248), + CINIT(PROXY_SSL_VERIFYHOST, LONG, 249), + CINIT(PROXY_SSLVERSION, LONG, 250), + CINIT(PROXY_TLSAUTH_USERNAME, STRINGPOINT, 251), + CINIT(PROXY_TLSAUTH_PASSWORD, STRINGPOINT, 252), + CINIT(PROXY_TLSAUTH_TYPE, STRINGPOINT, 253), + CINIT(PROXY_SSLCERT, STRINGPOINT, 254), + CINIT(PROXY_SSLCERTTYPE, STRINGPOINT, 255), + CINIT(PROXY_SSLKEY, STRINGPOINT, 256), + CINIT(PROXY_SSLKEYTYPE, STRINGPOINT, 257), + CINIT(PROXY_KEYPASSWD, STRINGPOINT, 258), + CINIT(PROXY_SSL_CIPHER_LIST, STRINGPOINT, 259), + CINIT(PROXY_CRLFILE, STRINGPOINT, 260), + CINIT(PROXY_SSL_OPTIONS, LONG, 261), + CINIT(PRE_PROXY, STRINGPOINT, 262), + CINIT(PROXY_PINNEDPUBLICKEY, STRINGPOINT, 263), + CINIT(ABSTRACT_UNIX_SOCKET, STRINGPOINT, 264), + CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265), + CINIT(REQUEST_TARGET, STRINGPOINT, 266), + CINIT(SOCKS5_AUTH, LONG, 267), + CINIT(SSH_COMPRESSION, LONG, 268), + CINIT(MIMEPOST, OBJECTPOINT, 269), + CINIT(TIMEVALUE_LARGE, OFF_T, 270), + CINIT(HAPPY_EYEBALLS_TIMEOUT_MS, LONG, 271), + CINIT(RESOLVER_START_FUNCTION, FUNCTIONPOINT, 272), + CINIT(RESOLVER_START_DATA, OBJECTPOINT, 273), + CINIT(HAPROXYPROTOCOL, LONG, 274), + CINIT(DNS_SHUFFLE_ADDRESSES, LONG, 275), + CINIT(TLS13_CIPHERS, STRINGPOINT, 276), + CINIT(PROXY_TLS13_CIPHERS, STRINGPOINT, 277), + CINIT(DISALLOW_USERNAME_IN_URL, LONG, 278), + CINIT(DOH_URL, STRINGPOINT, 279), + CINIT(UPLOAD_BUFFERSIZE, LONG, 280), + CINIT(UPKEEP_INTERVAL_MS, LONG, 281), + CINIT(CURLU, OBJECTPOINT, 282), + CINIT(TRAILERFUNCTION, FUNCTIONPOINT, 283), + CINIT(TRAILERDATA, OBJECTPOINT, 284), + CINIT(HTTP09_ALLOWED, LONG, 285), + CINIT(ALTSVC_CTRL, LONG, 286), + CINIT(ALTSVC, STRINGPOINT, 287), + CINIT(MAXAGE_CONN, LONG, 288), + CINIT(SASL_AUTHZID, STRINGPOINT, 289), + CINIT(MAIL_RCPT_ALLOWFAILS, LONG, 290), + CINIT(SSLCERT_BLOB, BLOB, 291), + CINIT(SSLKEY_BLOB, BLOB, 292), + CINIT(PROXY_SSLCERT_BLOB, BLOB, 293), + CINIT(PROXY_SSLKEY_BLOB, BLOB, 294), + CINIT(ISSUERCERT_BLOB, BLOB, 295), + CINIT(PROXY_ISSUERCERT, STRINGPOINT, 296), + CINIT(PROXY_ISSUERCERT_BLOB, BLOB, 297), + CINIT(SSL_EC_CURVES, STRINGPOINT, 298), + CINIT(HSTS_CTRL, LONG, 299), + CINIT(HSTS, STRINGPOINT, 300), + CINIT(HSTSREADFUNCTION, FUNCTIONPOINT, 301), + CINIT(HSTSREADDATA, OBJECTPOINT, 302), + CINIT(HSTSWRITEFUNCTION, FUNCTIONPOINT, 303), + CINIT(HSTSWRITEDATA, OBJECTPOINT, 304), + CINIT(AWS_SIGV4, STRINGPOINT, 305), + CINIT(DOH_SSL_VERIFYPEER, LONG, 306), + CINIT(DOH_SSL_VERIFYHOST, LONG, 307), + CINIT(DOH_SSL_VERIFYSTATUS, LONG, 308), + CINIT(CAINFO_BLOB, BLOB, 309), + CINIT(PROXY_CAINFO_BLOB, BLOB, 310), + CINIT(SSH_HOST_PUBLIC_KEY_SHA256, STRINGPOINT, 311), + CINIT(PREREQFUNCTION, FUNCTIONPOINT, 312), + CINIT(PREREQDATA, OBJECTPOINT, 313), + CINIT(MAXLIFETIME_CONN, LONG, 314), + CINIT(MIME_OPTIONS, LONG, 315), + CINIT(SSH_HOSTKEYFUNCTION, FUNCTIONPOINT, 316), + CINIT(SSH_HOSTKEYDATA, OBJECTPOINT, 317), + CINIT(PROTOCOLS_STR, STRINGPOINT, 318), + CINIT(REDIR_PROTOCOLS_STR, STRINGPOINT, 319), + CINIT(WS_OPTIONS, LONG, 320), + CINIT(CA_CACHE_TIMEOUT, LONG, 321), + CINIT(QUICK_EXIT, LONG, 322), + CINIT(HAPROXY_CLIENT_IP, STRINGPOINT, 323), + CINIT(SERVER_RESPONSE_TIMEOUT_MS, LONG, 324), + CURLOPT_LASTENTRY /* the last unused */ +} CURLoption; + +typedef enum { + CURLOPT(CURLMOPT_SOCKETFUNCTION, FUNCTIONPOINT, 1), + CURLOPT(CURLMOPT_SOCKETDATA, OBJECTPOINT, 2), + CURLOPT(CURLMOPT_PIPELINING, LONG, 3), + CURLOPT(CURLMOPT_TIMERFUNCTION, FUNCTIONPOINT, 4), + CURLOPT(CURLMOPT_TIMERDATA, OBJECTPOINT, 5), + CURLOPT(CURLMOPT_MAXCONNECTS, LONG, 6), + CURLOPT(CURLMOPT_MAX_HOST_CONNECTIONS, LONG, 7), + CURLOPT(CURLMOPT_MAX_PIPELINE_LENGTH, LONG, 8), + CURLOPT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9), + CURLOPT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10), + CURLOPT(CURLMOPT_PIPELINING_SITE_BL, OBJECTPOINT, 11), + CURLOPT(CURLMOPT_PIPELINING_SERVER_BL, OBJECTPOINT, 12), + CURLOPT(CURLMOPT_MAX_TOTAL_CONNECTIONS, LONG, 13), + CURLOPT(CURLMOPT_PUSHFUNCTION, FUNCTIONPOINT, 14), + CURLOPT(CURLMOPT_PUSHDATA, OBJECTPOINT, 15), + CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, LONG, 16), + CURLMOPT_LASTENTRY /* the last unused */ +} CURLMoption; + +typedef enum { + CURLSHOPT_NONE, + CURLSHOPT_SHARE, + CURLSHOPT_UNSHARE, + CURLSHOPT_LOCKFUNC, + CURLSHOPT_UNLOCKFUNC, + CURLSHOPT_USERDATA, + CURLSHOPT_LAST /* never use */ +} CURLSHoption; + + +#undef LONG +#undef OBJECTPOINT +#undef STRINGPOINT +#undef FUNCTIONPOINT +#undef OFF_T +#undef CURLOPT +#undef CINIT + +#define SUPER() \ + GO(0) \ + GO(1) \ + GO(2) \ + GO(3) + +// write +#define GO(A) \ +static uintptr_t my_write_fct_##A = 0; \ +static size_t my_write_##A(char* ptr, size_t size, size_t nmemb, void* userdata) \ +{ \ + return (size_t)RunFunctionFmt(my_write_fct_##A, "pLLp", ptr, size, nmemb, userdata);\ +} +SUPER() +#undef GO +static void* find_write_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_write_fct_##A == (uintptr_t)fct) return my_write_##A; + SUPER() + #undef GO + #define GO(A) if(my_write_fct_##A == 0) {my_write_fct_##A = (uintptr_t)fct; return my_write_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl write callback\n"); + return NULL; +} + +// read +#define GO(A) \ +static uintptr_t my_read_fct_##A = 0; \ +static size_t my_read_##A(char* buffer, size_t size, size_t nitems, void* userdata) \ +{ \ + return (size_t)RunFunctionFmt(my_read_fct_##A, "pLLp", buffer, size, nitems, userdata);\ +} +SUPER() +#undef GO +static void* find_read_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_read_fct_##A == (uintptr_t)fct) return my_read_##A; + SUPER() + #undef GO + #define GO(A) if(my_read_fct_##A == 0) {my_read_fct_##A = (uintptr_t)fct; return my_read_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl read callback\n"); + return NULL; +} + +// ioctl +#define GO(A) \ +static uintptr_t my_ioctl_fct_##A = 0; \ +static size_t my_ioctl_##A(void* handle, int32_t fnc, void* userdata) \ +{ \ + return (size_t)RunFunctionFmt(my_ioctl_fct_##A, "pip", handle, fnc, userdata);\ +} +SUPER() +#undef GO +static void* find_ioctl_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_ioctl_fct_##A == (uintptr_t)fct) return my_ioctl_##A; + SUPER() + #undef GO + #define GO(A) if(my_ioctl_fct_##A == 0) {my_ioctl_fct_##A = (uintptr_t)fct; return my_ioctl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl ioctl callback\n"); + return NULL; +} + +// seek +#define GO(A) \ +static uintptr_t my_seek_fct_##A = 0; \ +static int32_t my_seek_##A(void* userdata, int64_t off, int32_t origin) \ +{ \ + return (int32_t)RunFunctionFmt(my_seek_fct_##A, "pIi", userdata, off, origin);\ +} +SUPER() +#undef GO +static void* find_seek_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_seek_fct_##A == (uintptr_t)fct) return my_seek_##A; + SUPER() + #undef GO + #define GO(A) if(my_seek_fct_##A == 0) {my_seek_fct_##A = (uintptr_t)fct; return my_seek_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl seek callback\n"); + return NULL; +} + +// header +#define GO(A) \ +static uintptr_t my_header_fct_##A = 0; \ +static size_t my_header_##A(char* buffer, size_t size, size_t nitems, void* userdata) \ +{ \ + return (size_t)RunFunctionFmt(my_header_fct_##A, "pLLp", buffer, size, nitems, userdata);\ +} +SUPER() +#undef GO +static void* find_header_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_header_fct_##A == (uintptr_t)fct) return my_header_##A; + SUPER() + #undef GO + #define GO(A) if(my_header_fct_##A == 0) {my_header_fct_##A = (uintptr_t)fct; return my_header_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl header callback\n"); + return NULL; +} + +// progress +#define GO(A) \ +static uintptr_t my_progress_fct_##A = 0; \ +static int my_progress_##A(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow) \ +{ \ + return (int)RunFunctionFmt(my_progress_fct_##A, "pdddd", clientp, dltotal, dlnow, ultotal, ulnow);\ +} +SUPER() +#undef GO +static void* find_progress_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_progress_fct_##A == (uintptr_t)fct) return my_progress_##A; + SUPER() + #undef GO + #define GO(A) if(my_progress_fct_##A == 0) {my_progress_fct_##A = (uintptr_t)fct; return my_progress_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl progress callback\n"); + return NULL; +} + +// progress_int +#define GO(A) \ +static uintptr_t my_progress_int_fct_##A = 0; \ +static int my_progress_int_##A(void *clientp, uint64_t dltotal, uint64_t dlnow, uint64_t ultotal, uint64_t ulnow) \ +{ \ + return (int)RunFunctionFmt(my_progress_int_fct_##A, "pUUUU", clientp, dltotal, dlnow, ultotal, ulnow);\ +} +SUPER() +#undef GO +static void* find_progress_int_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_progress_int_fct_##A == (uintptr_t)fct) return my_progress_int_##A; + SUPER() + #undef GO + #define GO(A) if(my_progress_int_fct_##A == 0) {my_progress_int_fct_##A = (uintptr_t)fct; return my_progress_int_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl progress_int callback\n"); + return NULL; +} + +// socket +#define GO(A) \ +static uintptr_t my_socket_fct_##A = 0; \ +static int my_socket_##A(void *a, int b, int c, void* d, void* e) \ +{ \ + return (int)RunFunctionFmt(my_socket_fct_##A, "piipp", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_socket_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_socket_fct_##A == (uintptr_t)fct) return my_socket_##A; + SUPER() + #undef GO + #define GO(A) if(my_socket_fct_##A == 0) {my_socket_fct_##A = (uintptr_t)fct; return my_socket_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl socket callback\n"); + return NULL; +} + +// timer +#define GO(A) \ +static uintptr_t my_timer_fct_##A = 0; \ +static int my_timer_##A(void *a, long b, void* c) \ +{ \ + return (int)RunFunctionFmt(my_timer_fct_##A, "plp", a, b, c); \ +} +SUPER() +#undef GO +static void* find_timer_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_timer_fct_##A == (uintptr_t)fct) return my_timer_##A; + SUPER() + #undef GO + #define GO(A) if(my_timer_fct_##A == 0) {my_timer_fct_##A = (uintptr_t)fct; return my_timer_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl timer callback\n"); + return NULL; +} + +// push +#define GO(A) \ +static uintptr_t my_push_fct_##A = 0; \ +static int my_push_##A(void *a, void* b, size_t c, void* d, void* e) \ +{ \ + return (int)RunFunctionFmt(my_push_fct_##A, "ppLpp", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_push_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_push_fct_##A == (uintptr_t)fct) return my_push_##A; + SUPER() + #undef GO + #define GO(A) if(my_push_fct_##A == 0) {my_push_fct_##A = (uintptr_t)fct; return my_push_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl push callback\n"); + return NULL; +} + +// debug +#define GO(A) \ +static uintptr_t my_debug_fct_##A = 0; \ +static int my_debug_##A(void *a, int b, void* c, size_t d, void* e) \ +{ \ + return (int)RunFunctionFmt(my_debug_fct_##A, "pipLp", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_debug_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_debug_fct_##A == (uintptr_t)fct) return my_debug_##A; + SUPER() + #undef GO + #define GO(A) if(my_debug_fct_##A == 0) {my_debug_fct_##A = (uintptr_t)fct; return my_debug_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl debug callback\n"); + return NULL; +} + +// lockcb +#define GO(A) \ +static uintptr_t my_lockcb_fct_##A = 0; \ +static void my_lockcb_##A(void *a, int b, int c, void* d) \ +{ \ + RunFunctionFmt(my_lockcb_fct_##A, "piip", a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_lockcb_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_lockcb_fct_##A == (uintptr_t)fct) return my_lockcb_##A; + SUPER() + #undef GO + #define GO(A) if(my_lockcb_fct_##A == 0) {my_lockcb_fct_##A = (uintptr_t)fct; return my_lockcb_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl lockcb callback\n"); + return NULL; +} + +// unlockcb +#define GO(A) \ +static uintptr_t my_unlockcb_fct_##A = 0; \ +static void my_unlockcb_##A(void *a, int b, void* c) \ +{ \ + RunFunctionFmt(my_unlockcb_fct_##A, "pip", a, b, c); \ +} +SUPER() +#undef GO +static void* find_unlockcb_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_unlockcb_fct_##A == (uintptr_t)fct) return my_unlockcb_##A; + SUPER() + #undef GO + #define GO(A) if(my_unlockcb_fct_##A == 0) {my_unlockcb_fct_##A = (uintptr_t)fct; return my_unlockcb_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl unlockcb callback\n"); + return NULL; +} + +// ssl_ctx_callback +#define GO(A) \ +static uintptr_t my_ssl_ctx_callback_fct_##A = 0; \ +static int my_ssl_ctx_callback_##A(void *a, void* b, void* c) \ +{ \ + return (int)RunFunctionFmt(my_ssl_ctx_callback_fct_##A, "ppp", a, b, c); \ +} +SUPER() +#undef GO +static void* find_ssl_ctx_callback_Fct(void* fct) +{ + if(!fct) return NULL; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_ssl_ctx_callback_fct_##A == (uintptr_t)fct) return my_ssl_ctx_callback_##A; + SUPER() + #undef GO + #define GO(A) if(my_ssl_ctx_callback_fct_##A == 0) {my_ssl_ctx_callback_fct_##A = (uintptr_t)fct; return my_ssl_ctx_callback_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl ssl_ctx_callback callback\n"); + return NULL; +} + +// malloc_callback +#define GO(A) \ + static uintptr_t my_malloc_callback_fct_##A = 0; \ + static void* my_malloc_callback_##A(size_t a) \ + { \ + return (void*)RunFunctionFmt(my_malloc_callback_fct_##A, "L", a); \ + } +SUPER() +#undef GO +static void* find_malloc_callback_Fct(void* fct) +{ + if (!fct) return NULL; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_malloc_callback_fct_##A == (uintptr_t)fct) return my_malloc_callback_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_malloc_callback_fct_##A == 0) { \ + my_malloc_callback_fct_##A = (uintptr_t)fct; \ + return my_malloc_callback_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl malloc_callback callback\n"); + return NULL; +} + +// free_callback +#define GO(A) \ + static uintptr_t my_free_callback_fct_##A = 0; \ + static void my_free_callback_##A(void* a) \ + { \ + RunFunctionFmt(my_free_callback_fct_##A, "p", a); \ + } +SUPER() +#undef GO +static void* find_free_callback_Fct(void* fct) +{ + if (!fct) return NULL; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_free_callback_fct_##A == (uintptr_t)fct) return my_free_callback_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_free_callback_fct_##A == 0) { \ + my_free_callback_fct_##A = (uintptr_t)fct; \ + return my_free_callback_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl free_callback callback\n"); + return NULL; +} + +// realloc_callback +#define GO(A) \ + static uintptr_t my_realloc_callback_fct_##A = 0; \ + static void* my_realloc_callback_##A(void* a, size_t b) \ + { \ + return (void*)RunFunctionFmt(my_realloc_callback_fct_##A, "pL", a, b); \ + } +SUPER() +#undef GO +static void* find_realloc_callback_Fct(void* fct) +{ + if (!fct) return NULL; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_realloc_callback_fct_##A == (uintptr_t)fct) return my_realloc_callback_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_realloc_callback_fct_##A == 0) { \ + my_realloc_callback_fct_##A = (uintptr_t)fct; \ + return my_realloc_callback_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl realloc_callback callback\n"); + return NULL; +} + +// strdup_callback +#define GO(A) \ + static uintptr_t my_strdup_callback_fct_##A = 0; \ + static void* my_strdup_callback_##A(void* a) \ + { \ + return (void*)RunFunctionFmt(my_strdup_callback_fct_##A, "p", a); \ + } +SUPER() +#undef GO +static void* find_strdup_callback_Fct(void* fct) +{ + if (!fct) return NULL; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_strdup_callback_fct_##A == (uintptr_t)fct) return my_strdup_callback_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_strdup_callback_fct_##A == 0) { \ + my_strdup_callback_fct_##A = (uintptr_t)fct; \ + return my_strdup_callback_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl strdup_callback callback\n"); + return NULL; +} + + +// calloc_callback +#define GO(A) \ + static uintptr_t my_calloc_callback_fct_##A = 0; \ + static void* my_calloc_callback_##A(size_t a, size_t b) \ + { \ + return (void*)RunFunctionFmt(my_calloc_callback_fct_##A, "LL", a, b); \ + } +SUPER() +#undef GO +static void* find_calloc_callback_Fct(void* fct) +{ + if (!fct) return NULL; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_calloc_callback_fct_##A == (uintptr_t)fct) return my_calloc_callback_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_calloc_callback_fct_##A == 0) { \ + my_calloc_callback_fct_##A = (uintptr_t)fct; \ + return my_calloc_callback_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for curl calloc_callback callback\n"); + return NULL; +} +#undef SUPER + +EXPORT uint32_t my32_curl_easy_setopt(x64emu_t* emu, void* handle, uint32_t option, void* param) +{ + (void)emu; + + switch(option) { + case CURLOPT_WRITEFUNCTION: + return my->curl_easy_setopt(handle, option, find_write_Fct(param)); + case CURLOPT_READFUNCTION: + return my->curl_easy_setopt(handle, option, find_read_Fct(param)); + case CURLOPT_IOCTLFUNCTION: + return my->curl_easy_setopt(handle, option, find_ioctl_Fct(param)); + case CURLOPT_SEEKFUNCTION: + return my->curl_easy_setopt(handle, option, find_seek_Fct(param)); + case CURLOPT_HEADERFUNCTION: + return my->curl_easy_setopt(handle, option, find_header_Fct(param)); + case CURLOPT_PROGRESSFUNCTION: + return my->curl_easy_setopt(handle, option, find_progress_Fct(param)); + case CURLOPT_XFERINFOFUNCTION: + return my->curl_easy_setopt(handle, option, find_progress_int_Fct(param)); + case CURLOPT_DEBUGFUNCTION: + return my->curl_easy_setopt(handle, option, find_debug_Fct(param)); + case CURLOPT_SSL_CTX_FUNCTION: + return my->curl_easy_setopt(handle, option, find_ssl_ctx_callback_Fct(param)); + case CURLOPT_SSL_CTX_DATA: + return my->curl_easy_setopt(handle, option, param); + case CURLOPT_SOCKOPTFUNCTION: + case CURLOPT_OPENSOCKETFUNCTION: + case CURLOPT_CLOSESOCKETFUNCTION: + case CURLOPT_CONV_TO_NETWORK_FUNCTION: + case CURLOPT_CONV_FROM_NETWORK_FUNCTION: + case CURLOPT_CONV_FROM_UTF8_FUNCTION: + case CURLOPT_INTERLEAVEFUNCTION: + case CURLOPT_CHUNK_BGN_FUNCTION: + case CURLOPT_CHUNK_END_FUNCTION: + case CURLOPT_FNMATCH_FUNCTION: + case CURLOPT_RESOLVER_START_FUNCTION: + case CURLOPT_TRAILERFUNCTION: + case CURLOPT_HSTSREADFUNCTION: + case CURLOPT_HSTSWRITEFUNCTION: + case CURLOPT_PREREQFUNCTION: + case CURLOPT_SSH_HOSTKEYFUNCTION: + printf_log(LOG_NONE, "Error: unimplemented option %u in curl_easy_setopt\n", option); + return 48; //unknown option... + default: + return my->curl_easy_setopt(handle, option, param); + } +} + +EXPORT uint32_t my32_curl_multi_setopt(x64emu_t* emu, void* handle, uint32_t option, void* param) +{ + (void)emu; + + switch(option) { + case CURLMOPT_SOCKETFUNCTION: + return my->curl_multi_setopt(handle, option, find_socket_Fct(param)); + case CURLMOPT_TIMERFUNCTION: + return my->curl_multi_setopt(handle, option, find_timer_Fct(param)); + case CURLMOPT_PUSHFUNCTION: + return my->curl_multi_setopt(handle, option, find_push_Fct(param)); + default: + return my->curl_multi_setopt(handle, option, param); + } +} + +EXPORT uint32_t my32_curl_share_setopt(x64emu_t* emu, void* handle, CURLSHoption option, void* param) +{ + switch(option) { + case CURLSHOPT_LOCKFUNC: + return my->curl_share_setopt(handle, option, find_lockcb_Fct(param)); + case CURLSHOPT_UNLOCKFUNC: + return my->curl_share_setopt(handle, option, find_unlockcb_Fct(param)); + default: + return my->curl_share_setopt(handle, option, param); + } +} + +EXPORT int my32_curl_global_init_mem(x64emu_t* emu, long flags, void* m, void* f, void* r, void* s, void* c) +{ + return my->curl_global_init_mem(flags, + find_malloc_callback_Fct(m), + find_free_callback_Fct(f), + find_realloc_callback_Fct(r), + find_strdup_callback_Fct(s), + find_calloc_callback_Fct(c)); +} + +#include "wrappedlib_init32.h" diff --git a/src/wrapped32/wrappedcurl_private.h b/src/wrapped32/wrappedcurl_private.h new file mode 100644 index 00000000..ce198abe --- /dev/null +++ b/src/wrapped32/wrappedcurl_private.h @@ -0,0 +1,85 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh.... +#endif + +GO(curl_easy_cleanup, vFp) +GO(curl_easy_duphandle, pFp) +GO(curl_easy_escape, pFppi) +GO(curl_easy_getinfo, uFpppppp) //vararg +GO(curl_easy_init, pFv) +//GO(curl_easy_pause, +GO(curl_easy_perform, uFp) +GO(curl_easy_recv, iFppLp) +GO(curl_easy_reset, vFp) +GO(curl_easy_send, iFppLp) +GOM(curl_easy_setopt, uFEpup) // can set many callbacks! +GO(curl_easy_strerror, pFu) +//GO(curl_easy_unescape, +//GO(curl_escape, +GO(curl_formadd, iFpppppppppppppppp) // there is a vararg here. Should GOM and use CURLFORM_ARRAY instead +GO(curl_formfree, vFp) +//GO(curl_formget, +GO(curl_free, vFp) +//GO(curl_getdate, +//GO(curl_getenv, +GO(curl_global_cleanup, vFv) +GO(curl_global_init, uFu) +GOM(curl_global_init_mem, iFElppppp) +GO(curl_global_sslset, uFupp) +// GO(curl_maprintf, +// GO(curl_mfprintf, +GO(curl_mime_addpart, pFp) +GO(curl_mime_data, iFppL) +// GO(curl_mime_data_cb, +// GO(curl_mime_encoder, +GO(curl_mime_filedata, iFpp) +// GO(curl_mime_filename, +// GO(curl_mime_free, +// GO(curl_mime_headers, +GO(curl_mime_init, pFp) +GO(curl_mime_name, iFpp) +//GO(curl_mime_subparts, +//GO(curl_mime_type, +//GO(curl_mprintf, +//GO(curl_msnprintf, +//GO(curl_msprintf, +GO(curl_multi_add_handle, uFpp) +GO(curl_multi_assign, uFpip) +GO(curl_multi_cleanup, uFp) +GO(curl_multi_fdset, uFppppp) +GO(curl_multi_info_read, pFpp) +GO(curl_multi_init, pFv) +GO(curl_multi_perform, uFpp) +GO(curl_multi_poll, iFppuip) // since 7.66.0 +GO(curl_multi_remove_handle, uFpp) +GOM(curl_multi_setopt, iFEpup) +//GO(curl_multi_socket, +GO(curl_multi_socket_action, uFpiip) +//GO(curl_multi_socket_all, +GO(curl_multi_strerror, pFi) +GO(curl_multi_timeout, iFpp) +GO(curl_multi_wait, iFppuip) +//GO(curl_mvaprintf, +//GO(curl_mvfprintf, +//GO(curl_mvprintf, +//GO(curl_mvsnprintf, +//GO(curl_mvsprintf, +//GO(curl_pushheader_byname, +//GO(curl_pushheader_bynum, +GO(curl_share_cleanup, uFp) +GO(curl_share_init, pFv) +GOM(curl_share_setopt, uFEpup) +//GO(curl_share_strerror, +GO(curl_slist_append, pFpp) +GO(curl_slist_free_all, vFp) +//GO(curl_strequal, +//GO(curl_strnequal, +//GO(curl_unescape, +GO(curl_url, pFv) +GO(curl_url_cleanup, vFp) +GO(curl_url_dup, pFp) +GO(curl_url_get, iFpipu) +GO(curl_url_set, iFpipu) +GO(curl_url_strerror, pFi) +GO(curl_version, pFv) +GO(curl_version_info, pFi) |