krnl386: Use the magic format string prefix for relay traces.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2017-11-25 11:47:17 +01:00
parent 822e142403
commit 1729cc05af
5 changed files with 67 additions and 78 deletions

View file

@ -558,7 +558,7 @@ static LONG WINAPI exception_handler(EXCEPTION_POINTERS *eptr)
switch(rec->ExceptionCode) {
case EXCEPTION_VM86_INTx:
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%04x\n"
TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%04x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
" ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n",
arg, context->SegCs, context->Eip,
@ -566,7 +566,7 @@ static LONG WINAPI exception_handler(EXCEPTION_POINTERS *eptr)
context->Ebp, context->Esp, context->SegDs, context->SegEs, context->SegFs, context->SegGs,
context->EFlags );
ret = DOSVM_EmulateInterruptRM( context, arg );
TRACE_(relay)("Ret DOS int 0x%02x ret=%04x:%04x\n"
TRACE_(relay)("\1Ret DOS int 0x%02x ret=%04x:%04x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
" ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n",
arg, context->SegCs, context->Eip,

View file

@ -261,7 +261,7 @@ static void DOSVM_PushFlags( CONTEXT *context, BOOL islong, BOOL isstub )
*/
BOOL DOSVM_EmulateInterruptPM( CONTEXT *context, BYTE intnum )
{
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%08x\n"
TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%08x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x\n"
" esi=%08x edi=%08x ebp=%08x esp=%08x\n"
" ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n",
@ -450,7 +450,7 @@ void DOSVM_HardwareInterruptPM( CONTEXT *context, BYTE intnum )
*/
BOOL DOSVM_EmulateInterruptRM( CONTEXT *context, BYTE intnum )
{
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%08x\n"
TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%08x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x\n"
" esi=%08x edi=%08x ebp=%08x esp=%08x\n"
" ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n",

View file

@ -446,7 +446,7 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
if (!TRACE_ON(relay) || !RELAY_ShowDebugmsgRelay( module, ordinal, func ))
return relay_call_from_16_no_debug( entry_point, args16, context, call );
DPRINTF( "%04x:Call %s.%d: %s(",GetCurrentThreadId(), module, ordinal, func );
TRACE( "\1Call %s.%d: %s(", module, ordinal, func );
/* look for the ret instruction */
for (j = 0; j < sizeof(call->ret)/sizeof(call->ret[0]); j++)
@ -459,43 +459,42 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7;
if (type == ARG_NONE) break;
if (i) DPRINTF( "," );
if (i) TRACE( "," );
switch(type)
{
case ARG_WORD:
DPRINTF( "%04x", *(WORD *)args16 );
TRACE( "%04x", *(WORD *)args16 );
args32[nb_args] = *(WORD *)args16;
args16 += sizeof(WORD);
break;
case ARG_SWORD:
DPRINTF( "%04x", *(WORD *)args16 );
TRACE( "%04x", *(WORD *)args16 );
args32[nb_args] = *(short *)args16;
args16 += sizeof(WORD);
break;
case ARG_LONG:
DPRINTF( "%08x", *(int *)args16 );
TRACE( "%08x", *(int *)args16 );
args32[nb_args] = *(int *)args16;
args16 += sizeof(int);
break;
case ARG_PTR:
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
TRACE( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
args16 += sizeof(SEGPTR);
break;
case ARG_STR:
DPRINTF( "%08x %s", *(int *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )));
TRACE( "%08x %s", *(int *)args16, debugstr_a( MapSL(*(SEGPTR *)args16 )));
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
args16 += sizeof(int);
break;
case ARG_SEGSTR:
DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) );
TRACE( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) );
args32[nb_args] = *(SEGPTR *)args16;
args16 += sizeof(SEGPTR);
break;
case ARG_VARARG:
DPRINTF( "..." );
TRACE( "..." );
args32[nb_args] = (int)args16;
break;
default:
@ -512,43 +511,42 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7;
if (type == ARG_NONE) break;
if (i) DPRINTF( "," );
if (i) TRACE( "," );
switch(type)
{
case ARG_WORD:
args16 -= sizeof(WORD);
args32[nb_args] = *(WORD *)args16;
DPRINTF( "%04x", *(WORD *)args16 );
TRACE( "%04x", *(WORD *)args16 );
break;
case ARG_SWORD:
args16 -= sizeof(WORD);
args32[nb_args] = *(short *)args16;
DPRINTF( "%04x", *(WORD *)args16 );
TRACE( "%04x", *(WORD *)args16 );
break;
case ARG_LONG:
args16 -= sizeof(int);
args32[nb_args] = *(int *)args16;
DPRINTF( "%08x", *(int *)args16 );
TRACE( "%08x", *(int *)args16 );
break;
case ARG_PTR:
args16 -= sizeof(SEGPTR);
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
TRACE( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
break;
case ARG_STR:
args16 -= sizeof(int);
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
DPRINTF( "%08x %s", *(int *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )));
TRACE( "%08x %s", *(int *)args16, debugstr_a( MapSL(*(SEGPTR *)args16 )));
break;
case ARG_SEGSTR:
args16 -= sizeof(SEGPTR);
args32[nb_args] = *(SEGPTR *)args16;
DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) );
TRACE( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) );
break;
case ARG_VARARG:
DPRINTF( "..." );
TRACE( "..." );
args32[nb_args] = (int)args16;
break;
default:
@ -557,16 +555,15 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
}
}
DPRINTF( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
if (!j) /* register function */
{
args32[nb_args++] = (int)context;
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08x\n",
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->SegEs, context->EFlags );
TRACE( ") ret=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x ds=%04x es=%04x efl=%08x\n",
frame->cs, frame->ip, (WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi, (WORD)context->SegDs,
(WORD)context->SegEs, context->EFlags );
}
else TRACE( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
SYSLEVEL_CheckNotLevel( 2 );
@ -574,24 +571,22 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
SYSLEVEL_CheckNotLevel( 2 );
DPRINTF( "%04x:Ret %s.%d: %s() ",GetCurrentThreadId(), module, ordinal, func );
TRACE( "\1Ret %s.%d: %s() ", module, ordinal, func );
if (!j) /* register function */
{
DPRINTF("retval=none ret=%04x:%04x ds=%04x\n",
(WORD)context->SegCs, LOWORD(context->Eip), (WORD)context->SegDs);
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08x\n",
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->SegEs, context->EFlags );
TRACE( "retval=none ret=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x ds=%04x es=%04x efl=%08x\n",
(WORD)context->SegCs, LOWORD(context->Eip), (WORD)context->Eax, (WORD)context->Ebx,
(WORD)context->Ecx, (WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->SegDs, (WORD)context->SegEs, context->EFlags );
}
else
{
frame = CURRENT_STACK16; /* might have be changed by the entry point */
if (j == 1) /* 16-bit return sequence */
DPRINTF( "retval=%04x ret=%04x:%04x ds=%04x\n",
TRACE( "retval=%04x ret=%04x:%04x ds=%04x\n",
ret_val & 0xffff, frame->cs, frame->ip, frame->ds );
else
DPRINTF( "retval=%08x ret=%04x:%04x ds=%04x\n",
TRACE( "retval=%08x ret=%04x:%04x ds=%04x\n",
ret_val, frame->cs, frame->ip, frame->ds );
}
return ret_val;

View file

@ -289,20 +289,20 @@ static void WINAPI SNOOP16_Entry(FARPROC proc, LPBYTE args, CONTEXT *context) {
context->SegCs = HIWORD(fun->origfun);
DPRINTF("%04x:CALL %s.%d: %s(",GetCurrentThreadId(), dll->name,ordinal,fun->name);
TRACE("\1CALL %s.%d: %s(", dll->name, ordinal, fun->name);
if (fun->nrofargs>0) {
max = fun->nrofargs;
if (max>16) max=16;
for (i=max;i--;)
DPRINTF("%04x%s",*(WORD*)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8+sizeof(WORD)*i),i?",":"");
TRACE("%04x%s",*(WORD*)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8+sizeof(WORD)*i),i?",":"");
if (max!=fun->nrofargs)
DPRINTF(" ...");
TRACE(" ...");
} else if (fun->nrofargs<0) {
DPRINTF("<unknown, check return>");
TRACE("<unknown, check return>");
ret->args = HeapAlloc(GetProcessHeap(),0,16*sizeof(WORD));
memcpy(ret->args,(LPBYTE)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8),sizeof(WORD)*16);
}
DPRINTF(") ret=%04x:%04x\n",HIWORD(ret->origreturn),LOWORD(ret->origreturn));
TRACE(") ret=%04x:%04x\n",HIWORD(ret->origreturn),LOWORD(ret->origreturn));
}
static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
@ -318,9 +318,7 @@ static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
}
context->Eip = LOWORD(ret->origreturn);
context->SegCs = HIWORD(ret->origreturn);
DPRINTF("%04x:RET %s.%d: %s(",
GetCurrentThreadId(),ret->dll->name,ret->ordinal,
ret->dll->funs[ret->ordinal].name);
TRACE("\1RET %s.%d: %s(", ret->dll->name, ret->ordinal, ret->dll->funs[ret->ordinal].name);
if (ret->args) {
int i,max;
@ -331,14 +329,14 @@ static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
max=0;
for (i=max;i--;)
DPRINTF("%04x%s",ret->args[i],i?",":"");
TRACE("%04x%s",ret->args[i],i?",":"");
if (max!=ret->dll->funs[ret->ordinal].nrofargs)
DPRINTF(" ...");
TRACE(" ...");
HeapFree(GetProcessHeap(),0,ret->args);
ret->args = NULL;
}
DPRINTF(") retval = %04x:%04x ret=%04x:%04x\n",
(WORD)context->Edx,(WORD)context->Eax,
HIWORD(ret->origreturn),LOWORD(ret->origreturn));
TRACE(") retval = %04x:%04x ret=%04x:%04x\n",
(WORD)context->Edx,(WORD)context->Eax,
HIWORD(ret->origreturn),LOWORD(ret->origreturn));
ret->origreturn = NULL; /* mark as empty */
}

View file

@ -538,16 +538,14 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
DWORD count = cbArgs / sizeof(WORD);
WORD * wstack = (WORD *)stack;
DPRINTF("%04x:CallTo16(func=%04x:%04x,ds=%04x",
GetCurrentThreadId(),
context->SegCs, LOWORD(context->Eip), context->SegDs );
while (count) DPRINTF( ",%04x", wstack[--count] );
DPRINTF(") ss:sp=%04x:%04x",
SELECTOROF(NtCurrentTeb()->WOW32Reserved), OFFSETOF(NtCurrentTeb()->WOW32Reserved) );
DPRINTF(" ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x bp=%04x es=%04x fs=%04x\n",
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->Ebp, (WORD)context->SegEs, (WORD)context->SegFs );
TRACE_(relay)( "\1CallTo16(func=%04x:%04x", context->SegCs, LOWORD(context->Eip) );
while (count) TRACE_(relay)( ",%04x", wstack[--count] );
TRACE_(relay)( ") ss:sp=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x bp=%04x ds=%04x es=%04x\n",
SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved),
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->Ebp, (WORD)context->SegDs, (WORD)context->SegEs );
SYSLEVEL_CheckNotLevel( 2 );
}
@ -607,12 +605,11 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
if (TRACE_ON(relay))
{
DPRINTF("%04x:RetFrom16() ss:sp=%04x:%04x ",
GetCurrentThreadId(), SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved));
DPRINTF(" ax=%04x bx=%04x cx=%04x dx=%04x bp=%04x sp=%04x\n",
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Ebp, (WORD)context->Esp );
TRACE_(relay)( "\1RetFrom16() ss:sp=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x bp=%04x sp=%04x\n",
SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved),
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Ebp, (WORD)context->Esp );
SYSLEVEL_CheckNotLevel( 2 );
}
}
@ -625,12 +622,11 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
DWORD count = cbArgs / sizeof(WORD);
WORD * wstack = (WORD *)stack;
DPRINTF("%04x:CallTo16(func=%04x:%04x,ds=%04x",
GetCurrentThreadId(), HIWORD(vpfn16), LOWORD(vpfn16),
SELECTOROF(NtCurrentTeb()->WOW32Reserved) );
while (count) DPRINTF( ",%04x", wstack[--count] );
DPRINTF(") ss:sp=%04x:%04x\n",
SELECTOROF(NtCurrentTeb()->WOW32Reserved), OFFSETOF(NtCurrentTeb()->WOW32Reserved) );
TRACE_(relay)( "\1CallTo16(func=%04x:%04x,ds=%04x",
HIWORD(vpfn16), LOWORD(vpfn16), SELECTOROF(NtCurrentTeb()->WOW32Reserved) );
while (count) TRACE_(relay)( ",%04x", wstack[--count] );
TRACE_(relay)( ") ss:sp=%04x:%04x\n", SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved) );
SYSLEVEL_CheckNotLevel( 2 );
}
@ -652,9 +648,9 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
if (TRACE_ON(relay))
{
DPRINTF("%04x:RetFrom16() ss:sp=%04x:%04x retval=%08x\n",
GetCurrentThreadId(), SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved), ret);
TRACE_(relay)( "\1RetFrom16() ss:sp=%04x:%04x retval=%08x\n",
SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved), ret );
SYSLEVEL_CheckNotLevel( 2 );
}
}