Wed Jun 06 21:16:33 2012: Request 77677 was acted upon.
Transaction: Correspondence added by bulk88.
Queue: Win32-API
Subject: x64 asm is broken for ::API, >4 param crash
Broken in: 0.68
Severity: Normal
Owner: Nobody
Requestors: [email protected]
Status: new
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=77677 >
____________________________________
void Call_asm(FARPROC ApiFunction, APIPARAM *params, int nparams,
APIPARAM *retval, BOOL c_call)
{
struct _CONTEXT cxt;
struct _CONTEXT cxt2;
size_t nRegisters = 0, nStack = 0;
size_t required_registers = 0, required_stack = 0;
_____________________________________
RtlCaptureContext(&cxt);
Call_x64_real(ApiFunction, int_registers, float_registers, stack,
required_stack, &iret, &dret);
RtlCaptureContext(&cxt2);
if(cxt.Rsi != cxt2.Rsi) {printf("bad RSI\n"); printf("%d \n",
*(int*)0);}
_____________________________________
I got a "bad RSI" on Strawberry and VC Perl. Both are broken over 4 params.