diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2023-05-16 22:55:34 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-16 16:55:34 +0200 |
| commit | d61f3e79e23ed0c2139361091603fd4dc627bccb (patch) | |
| tree | 35b806bbc3e5ad3182a234b07dad8d1a4797bdb5 /src | |
| parent | 1d58879ae5fd508c140a03be842751419f264068 (diff) | |
| download | box64-d61f3e79e23ed0c2139361091603fd4dc627bccb.tar.gz box64-d61f3e79e23ed0c2139361091603fd4dc627bccb.zip | |
[WRAPPER] Fixed stack align on varargs (for #789) (#790)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/myalign.h | 2 | ||||
| -rwxr-xr-x | src/libtools/myalign.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/include/myalign.h b/src/include/myalign.h index 1a0f60bf..247ea1b9 100755 --- a/src/include/myalign.h +++ b/src/include/myalign.h @@ -214,4 +214,4 @@ void AlignSemidDs(void *dest, const void* source); uintptr_t getVArgs(x64emu_t* emu, int pos, uintptr_t* b, int N); -#endif //__MY_ALIGN__H_ \ No newline at end of file +#endif //__MY_ALIGN__H_ diff --git a/src/libtools/myalign.c b/src/libtools/myalign.c index 3d2e49a0..36873cba 100755 --- a/src/libtools/myalign.c +++ b/src/libtools/myalign.c @@ -717,7 +717,7 @@ void myStackAlignValist(x64emu_t* emu, const char* fmt, uint64_t* mystack, x64_v case 15: //%zg, meh.. double? if(fprs<X64_VA_MAX_XMM) { *mystack = area[fprs/8]; - fprs+=8; + fprs+=16; mystack++; } else { *mystack = *st; @@ -862,7 +862,7 @@ void myStackAlignWValist(x64emu_t* emu, const char* fmt, uint64_t* mystack, x64_ case 15: //%zg, meh .. double if(fprs<X64_VA_MAX_XMM) { *mystack = area[fprs/8]; - fprs+=8; + fprs+=16; mystack++; } else { *mystack = *st; @@ -1130,4 +1130,4 @@ void myStackAlignScanfWValist(x64emu_t* emu, const char* fmt, uint64_t* mystack, } } -#endif \ No newline at end of file +#endif |