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: bul...@hotmail.com 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.