diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-02 22:27:42 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-02 22:27:42 +0100 |
| commit | 3e19cfe58ef523fd427b6a9e55f1102275f8f98f (patch) | |
| tree | c01e9e1b4eb8381b139f7ecf99f39eda8bad3ad4 /src | |
| parent | 3d3c7437bec057d0876b1c4878b8b3ecae1d628e (diff) | |
| download | box64-3e19cfe58ef523fd427b6a9e55f1102275f8f98f.tar.gz box64-3e19cfe58ef523fd427b6a9e55f1102275f8f98f.zip | |
Use CREATE_VALIST_FROM_VAARG if exist on XXprintf family
Diffstat (limited to 'src')
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 7d24f736..39c905ec 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -763,8 +763,12 @@ EXPORT void *my_div(void *result, int numerator, int denominator) { #endif EXPORT int my_snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint64_t * b) { + #ifdef CREATE_VALIST_FROM_VAARG + CREATE_VALIST_FROM_VAARG(b, emu->scratch, 3); + #else myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; + #endif int r = vsnprintf(buff, s, fmt, VARARGS); return r; } @@ -772,21 +776,33 @@ EXPORT int my___snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint64 EXPORT int my___snprintf_chk(x64emu_t* emu, void* buff, size_t s, int flags, size_t maxlen, void * fmt, uint64_t * b) { (void)flags; (void)maxlen; + #ifdef CREATE_VALIST_FROM_VAARG + CREATE_VALIST_FROM_VAARG(b, emu->scratch, 5); + #else myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 5); PREPARE_VALIST; + #endif int r = vsnprintf(buff, s, fmt, VARARGS); return r; } EXPORT int my_sprintf(x64emu_t* emu, void* buff, void * fmt, void * b) { + #ifdef CREATE_VALIST_FROM_VAARG + CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2); + #else myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2); PREPARE_VALIST; + #endif return vsprintf(buff, (const char*)fmt, VARARGS); } EXPORT int my___sprintf_chk(x64emu_t* emu, void* buff, int flag, size_t l, void * fmt, void * b) { (void)flag; (void)l; + #ifdef CREATE_VALIST_FROM_VAARG + CREATE_VALIST_FROM_VAARG(b, emu->scratch, 4); + #else myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 4); PREPARE_VALIST; + #endif return vsprintf(buff, (const char*)fmt, VARARGS); } |