diff --git a/src/emu/x86int3.c b/src/emu/x86int3.c index 65f99061..7c122f6b 100755 --- a/src/emu/x86int3.c +++ b/src/emu/x86int3.c @@ -198,6 +198,8 @@ void x86Int3(x86emu_t* emu) perr = 3; } else if(strstr(s, "strcasecmp")==s || strstr(s, "__strcasecmp")==s) { snprintf(buff, 256, "%04d|%p: Calling %s(\"%s\", \"%s\")", tid, *(void**)(R_ESP), s, *(char**)(R_ESP+4), *(char**)(R_ESP+8)); + } else if(strstr(s, "wcsncasecmp")==s) { + snprintf(buff, 256, "%04d|%p: Calling %s(\"%S\", \"%S\", %d)", tid, *(void**)(R_ESP), s, *(char**)(R_ESP+4), *(char**)(R_ESP+8), *(int*)(R_ESP+12)); } else if(strstr(s, "gtk_signal_connect_full")) { snprintf(buff, 256, "%04d|%p: Calling %s(%p, \"%s\", %p, %p, %p, %p, %d, %d)", tid, *(void**)(R_ESP), "gtk_signal_connect_full", *(void**)(R_ESP+4), *(char**)(R_ESP+8), *(void**)(R_ESP+12), *(void**)(R_ESP+16), *(void**)(R_ESP+20), *(void**)(R_ESP+24), *(int32_t*)(R_ESP+28), *(int32_t*)(R_ESP+32)); } else if(strstr(s, "strcmp")==s || strstr(s, "__strcmp")==s) { diff --git a/src/emu/x86run_private.c b/src/emu/x86run_private.c index 1b22bf7f..399120e9 100755 --- a/src/emu/x86run_private.c +++ b/src/emu/x86run_private.c @@ -923,7 +923,11 @@ void PrintTrace(x86emu_t* emu, uintptr_t ip, int dynarec) if(peek==0xC3 || peek==0xC2) { printf_log(LOG_NONE, " => %p", *(void**)(R_ESP)); printFunctionAddr(*(uintptr_t*)(R_ESP), "=> "); - } else if(peek==0x55) { + } else if(peek==0x55 || peek==0x57 || peek==0x53) { + printf_log(LOG_NONE, " => STACK_TOP: %p", *(void**)(R_ESP)); + printFunctionAddr(*(uintptr_t*)(R_ESP), "top:"); + printFunctionAddr(ip, "here: "); + } else if(peek==0x83 && PK(1)==0xEC) { printf_log(LOG_NONE, " => STACK_TOP: %p", *(void**)(R_ESP)); printFunctionAddr(*(uintptr_t*)(R_ESP), "top:"); printFunctionAddr(ip, "here: ");