Jinoh Kang (@iamahuman) commented about dlls/ntdll/large_int.c:
- * Shift a 64 bit integer to the left. - * - * PARAMS - * a [I] Initial number. - * b [I] Number to shift a by to the left. - * - * RETURNS - * The left-shifted value. */ -LONGLONG WINAPI _allshl( LONGLONG a, LONG b ) +__ASM_GLOBAL_FUNC( _allshl, + "xchgl (%esp),%ecx\n\t" + "pushl %edx\n\t" + "pushl %eax\n\t" + "pushl %ecx\n\t" + "jmp " __ASM_NAME("__regs__allshl") ) We need to either drop the tail call or switch `__regs__allshl` to stdcall.
It might not have been caught by the test due to use of frame pointer. (Ditto for other functions.) -- https://gitlab.winehq.org/wine/wine/-/merge_requests/375#note_3463