[PATCH v3 1/4] ntdll: Fix the calling convention for runtime 64-bit shift functions.

Dmitry Timoshkov dmitry at baikal.ru
Thu Jul 7 07:37:23 CDT 2022


Jinoh Kang <jinoh.kang.kr at gmail.com> wrote:

> >> -@ stdcall -arch=i386 -ret64 _aullshr(int64 long)
> >> +@ cdecl -arch=i386 -norelay -ret64 _aullshr(int64 long)
> >>  @ cdecl -arch=i386 -norelay _chkstk()
> >>  @ cdecl -arch=i386 _except_handler2(ptr ptr ptr ptr)
> >>  @ cdecl -arch=i386 _except_handler3(ptr ptr ptr ptr)
> > 
> > According to the tests these APIs use stdcall calling convention,
> 
> The functions are neither cdecl nor stdcall.  They use a custom calling convention where
> arguments are passed in the order EAX (low 32-bit), EDX (high 32-bit), and ECX (shift amount).

Thanks for pointing that out.

> > what is the reason to change them to cdecl in the spec? Existing
> > spec entries also break that rule though...
> 
> Because the functions don't really "pop off" arguments from the stack.

I'd guess by the same logic they shouldn't be marked as cdecl either.
However for -norelay entries that doesn't really matter.

-- 
Dmitry.



More information about the wine-devel mailing list