Converted to the new debugging interface (done with the help of the script written by Patrik Stridvall). Some changes to the initialisation sequence for 32-bit processes.
diff --git a/loader/task.c b/loader/task.c index 97f2ab5..9c089ee 100644 --- a/loader/task.c +++ b/loader/task.c
@@ -33,7 +33,7 @@ #include "winsock.h" #include "thread.h" #include "syslevel.h" -#include "debug.h" +#include "debugtools.h" #include "dosexe.h" #include "dde_proc.h" #include "server.h" @@ -250,7 +250,7 @@ if (pModule->flags & NE_FFLAGS_WIN32) { - ERR( task, "Called for Win32 task!\n" ); + ERR_(task)("Called for Win32 task!\n" ); ExitProcess( 1 ); } else if (pModule->dos_image) @@ -283,14 +283,14 @@ ECX_reg(&context) = pModule->heap_size; EDI_reg(&context) = context.SegDs; - TRACE(task, "Starting main program: cs:ip=%04lx:%04x ds=%04lx ss:sp=%04x:%04x\n", + TRACE_(task)("Starting main program: cs:ip=%04lx:%04x ds=%04lx ss:sp=%04x:%04x\n", CS_reg(&context), IP_reg(&context), DS_reg(&context), SELECTOROF(pTask->thdb->cur_stack), OFFSETOF(pTask->thdb->cur_stack) ); Callbacks->CallRegisterShortProc( &context, 0 ); /* This should never return */ - ERR( task, "Main program returned! (should never happen)\n" ); + ERR_(task)("Main program returned! (should never happen)\n" ); ExitProcess( 1 ); } } @@ -446,7 +446,7 @@ pTask->thdb->teb.htask16 = pTask->thdb->process->task = hTask; - TRACE(task, "module='%s' cmdline='%s' task=%04x\n", + TRACE_(task)("module='%s' cmdline='%s' task=%04x\n", name, cmd_line, hTask ); return TRUE; @@ -471,7 +471,7 @@ TASK_LinkTask( hTask ); SYSLEVEL_LeaveWin16Lock(); - TRACE(task, "linked task %04x\n", hTask ); + TRACE_(task)("linked task %04x\n", hTask ); /* If requested, add entry point breakpoint */ @@ -492,12 +492,6 @@ else EVENT_WakeUp(); } - else - { - /* To start a 32-bit task, we spawn its initial thread. */ - - SYSDEPS_SpawnThread( pTask->thdb ); - } } @@ -556,7 +550,7 @@ return; } - TRACE(task, "Killing task %04x\n", hTask ); + TRACE_(task)("Killing task %04x\n", hTask ); /* Delete active sockets */ @@ -584,7 +578,7 @@ if (nTaskCount <= 1) { - TRACE(task, "this is the last task, exiting\n" ); + TRACE_(task)("this is the last task, exiting\n" ); USER_ExitWindows(); } @@ -651,13 +645,13 @@ { if ( !THREAD_IsWin16( THREAD_Current() ) ) { - FIXME(task, "called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); + FIXME_(task)("called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); return; } assert(hCurrentTask == GetCurrentTask()); - TRACE(task, "Killing current task %04x\n", hCurrentTask ); + TRACE_(task)("Killing current task %04x\n", hCurrentTask ); TASK_KillTask( 0 ); @@ -665,7 +659,7 @@ /* We should never return from this Yield() */ - ERR(task,"Return of the living dead %04x!!!\n", hCurrentTask); + ERR_(task)("Return of the living dead %04x!!!\n", hCurrentTask); exit(1); } @@ -718,7 +712,7 @@ to global variables (most notably the task list) are protected. */ assert(hCurrentTask == GetCurrentTask()); - TRACE(task, "entered with hTask %04x (pid %d)\n", hCurrentTask, getpid()); + TRACE_(task)("entered with hTask %04x (pid %d)\n", hCurrentTask, getpid()); #ifdef CONFIG_IPC /* FIXME: What about the Win16Lock ??? */ @@ -758,7 +752,7 @@ { pNewTask = (TDB *)GlobalLock16( hTask ); - TRACE(task, "\ttask = %04x, events = %i\n", hTask, pNewTask->nEvents); + TRACE_(task)("\ttask = %04x, events = %i\n", hTask, pNewTask->nEvents); if (pNewTask->nEvents) break; hTask = pNewTask->hNext; @@ -789,11 +783,11 @@ SYSLEVEL_ReleaseWin16Lock(); SYSLEVEL_RestoreWin16Lock(); - TRACE(task, "returning to the current task(%04x)\n", hTask ); + TRACE_(task)("returning to the current task(%04x)\n", hTask ); return FALSE; /* Nothing to do */ } pNewTask = (TDB *)GlobalLock16( hTask ); - TRACE(task, "Switching to task %04x (%.8s)\n", + TRACE_(task)("Switching to task %04x (%.8s)\n", hTask, pNewTask->module_name ); /* Make the task the last in the linked list (round-robin scheduling) */ @@ -848,7 +842,7 @@ { if ( !THREAD_IsWin16( THREAD_Current() ) ) { - FIXME(task, "called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); + FIXME_(task)("called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); return; } @@ -955,7 +949,7 @@ if ( !THREAD_IsWin16( THREAD_Current() ) ) { - FIXME(task, "called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); + FIXME_(task)("called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); return TRUE; } @@ -985,7 +979,7 @@ if ( !THREAD_IsWin16( pTask->thdb ) ) { - FIXME( task, "called for Win32 thread (%04x)!\n", pTask->thdb->teb_sel ); + FIXME_(task)("called for Win32 thread (%04x)!\n", pTask->thdb->teb_sel ); return; } @@ -1049,7 +1043,7 @@ if ( !THREAD_IsWin16( THREAD_Current() ) ) { - FIXME(task, "called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); + FIXME_(task)("called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); return; } @@ -1068,16 +1062,16 @@ if ( !THREAD_IsWin16( THREAD_Current() ) ) { - FIXME(task, "called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); + FIXME_(task)("called for Win32 thread (%04x)!\n", THREAD_Current()->teb_sel); return; } - TRACE(task, "%04x: DirectedYield(%04x)\n", pCurTask->hSelf, hTask ); + TRACE_(task)("%04x: DirectedYield(%04x)\n", pCurTask->hSelf, hTask ); pCurTask->hYieldTo = hTask; OldYield16(); - TRACE(task, "%04x: back from DirectedYield(%04x)\n", pCurTask->hSelf, hTask ); + TRACE_(task)("%04x: back from DirectedYield(%04x)\n", pCurTask->hSelf, hTask ); } /*********************************************************************** @@ -1099,7 +1093,7 @@ { if ( !someTask ) return 0; - FIXME( task, "(%04x): stub\n", someTask ); + FIXME_(task)("(%04x): stub\n", someTask ); return 0; } @@ -1112,7 +1106,7 @@ SEGPTR thunkaddr; if (!func) { - ERR(task, "Ouch ! MakeProcInstance called with func == NULL !\n"); + ERR_(task)("Ouch ! MakeProcInstance called with func == NULL !\n"); return (FARPROC16)0; /* Windows seems to do the same */ } if (!hInstance) hInstance = CURRENT_DS; @@ -1121,12 +1115,12 @@ thunk = PTR_SEG_TO_LIN( thunkaddr ); lfunc = PTR_SEG_TO_LIN( func ); - TRACE(task, "(%08lx,%04x): got thunk %08lx\n", + TRACE_(task)("(%08lx,%04x): got thunk %08lx\n", (DWORD)func, hInstance, (DWORD)thunkaddr ); if (((lfunc[0]==0x8c) && (lfunc[1]==0xd8)) || ((lfunc[0]==0x1e) && (lfunc[1]==0x58)) ) { - FIXME(task,"thunk would be useless for %p, overwriting with nop;nop;\n", func ); + FIXME_(task)("thunk would be useless for %p, overwriting with nop;nop;\n", func ); lfunc[0]=0x90; /* nop */ lfunc[1]=0x90; /* nop */ } @@ -1145,7 +1139,7 @@ */ void WINAPI FreeProcInstance16( FARPROC16 func ) { - TRACE(task, "(%08lx)\n", (DWORD)func ); + TRACE_(task)("(%08lx)\n", (DWORD)func ); TASK_FreeThunk( GetCurrentTask(), (SEGPTR)func ); } @@ -1322,7 +1316,7 @@ Callout.InitThreadInput16( 0, THREAD_IsWin16(thdb)? 4 : 5 ); if (!thdb->teb.queue) - FIXME( task, "(): should initialize thread-local queue, expect failure!\n" ); + FIXME_(task)("(): should initialize thread-local queue, expect failure!\n" ); return (HANDLE)thdb->teb.queue; } @@ -1339,7 +1333,7 @@ if (!(pTask = (TDB *)GlobalLock16( GetCurrentTask() ))) return; if (!(pData = (INSTANCEDATA *)GlobalLock16( seg ))) return; - TRACE(task, "old=%04x:%04x new=%04x:%04x\n", + TRACE_(task)("old=%04x:%04x new=%04x:%04x\n", SELECTOROF( pTask->thdb->cur_stack ), OFFSETOF( pTask->thdb->cur_stack ), seg, ptr ); @@ -1386,10 +1380,10 @@ return; if (!pData->old_ss_sp) { - WARN( task, "No previous SwitchStackTo\n" ); + WARN_(task)("No previous SwitchStackTo\n" ); return; } - TRACE(task, "restoring stack %04x:%04x\n", + TRACE_(task)("restoring stack %04x:%04x\n", SELECTOROF(pData->old_ss_sp), OFFSETOF(pData->old_ss_sp) ); oldFrame = THREAD_STACK16( pTask->thdb ); @@ -1605,7 +1599,7 @@ WORD WINAPI SetSigHandler16( FARPROC16 newhandler, FARPROC16* oldhandler, UINT16 *oldmode, UINT16 newmode, UINT16 flag ) { - FIXME(task,"(%p,%p,%p,%d,%d), unimplemented.\n", + FIXME_(task)("(%p,%p,%p,%d,%d), unimplemented.\n", newhandler,oldhandler,oldmode,newmode,flag ); if (flag != 1) return 0; @@ -1724,7 +1718,7 @@ TDB *pTask; INSTANCEDATA *pInstData; - TRACE(toolhelp, "(%p): task=%04x\n", lpte, lpte->hNext ); + TRACE_(toolhelp)("(%p): task=%04x\n", lpte, lpte->hNext ); if (!lpte->hNext) return FALSE; pTask = (TDB *)GlobalLock16( lpte->hNext ); if (!pTask || pTask->magic != TDB_MAGIC) return FALSE;