Author: ion Date: Fri Dec 1 10:36:49 2006 New Revision: 25010
URL: http://svn.reactos.org/svn/reactos?rev=25010&view=rev Log: - Write DLL Being mapped into NtTib->ArbitraryUserPointer so that the debugger can pick it up. - Fix bugs in DbgkWakeTarget, DbgkCreateThread, DbgkMapViewOfSection and call from NtMapViewOfSection.
Modified: trunk/reactos/dll/ntdll/dbg/dbgui.c trunk/reactos/dll/ntdll/ldr/utils.c trunk/reactos/ntoskrnl/dbgk/dbgkutil.c trunk/reactos/ntoskrnl/dbgk/debug.c trunk/reactos/ntoskrnl/include/internal/dbgk.h trunk/reactos/ntoskrnl/mm/section.c
Modified: trunk/reactos/dll/ntdll/dbg/dbgui.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/dbg/dbgui.c?rev=2... ============================================================================== --- trunk/reactos/dll/ntdll/dbg/dbgui.c (original) +++ trunk/reactos/dll/ntdll/dbg/dbgui.c Fri Dec 1 10:36:49 2006 @@ -280,8 +280,9 @@ { /* Save the image name from the TIB */ DebugEvent->u.LoadDll.lpImageName = - &((PTEB)ThreadBasicInfo.TebBaseAddress)-> + ((PTEB)ThreadBasicInfo.TebBaseAddress)-> Tib.ArbitraryUserPointer; + DPRINT1("Image name: %p\n", DebugEvent->u.LoadDll.lpImageName); } else {
Modified: trunk/reactos/dll/ntdll/ldr/utils.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/ldr/utils.c?rev=2... ============================================================================== --- trunk/reactos/dll/ntdll/ldr/utils.c (original) +++ trunk/reactos/dll/ntdll/ldr/utils.c Fri Dec 1 10:36:49 2006 @@ -1986,6 +1986,7 @@ PVOID ImageBase; PIMAGE_NT_HEADERS NtHeaders; BOOLEAN MappedAsDataFile; + PVOID ArbitraryUserPointer;
if (Module == NULL) { @@ -2027,6 +2028,9 @@ /* Map the dll into the process */ ViewSize = 0; ImageBase = 0; + ArbitraryUserPointer = NtCurrentTeb()->Tib.ArbitraryUserPointer; + NtCurrentTeb()->Tib.ArbitraryUserPointer = FullDosName.Buffer; + DPRINT1("POI. DAT: %p %S\n", NtCurrentTeb()->Tib.ArbitraryUserPointer, FullDosName.Buffer); Status = NtMapViewOfSection(SectionHandle, NtCurrentProcess(), &ImageBase, @@ -2037,6 +2041,8 @@ 0, MEM_COMMIT, PAGE_READONLY); + NtCurrentTeb()->Tib.ArbitraryUserPointer = ArbitraryUserPointer; + DPRINT1("Poi gone!\n"); if (!NT_SUCCESS(Status)) { DPRINT1("map view of section failed (Status 0x%08lx)\n", Status);
Modified: trunk/reactos/ntoskrnl/dbgk/dbgkutil.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/dbgk/dbgkutil.c?re... ============================================================================== --- trunk/reactos/ntoskrnl/dbgk/dbgkutil.c (original) +++ trunk/reactos/ntoskrnl/dbgk/dbgkutil.c Fri Dec 1 10:36:49 2006 @@ -11,6 +11,8 @@ #include <ntoskrnl.h> #define NDEBUG #include <debug.h> + +extern ULONG DbgkpTraceLevel;
/* FUNCTIONS *****************************************************************/
@@ -236,9 +238,11 @@ if (Teb) { /* Copy the system library name and link to it */ +#if 0 wcsncpy(Teb->StaticUnicodeBuffer, L"ntdll.dll", - sizeof(Teb->StaticUnicodeBuffer)); + sizeof(Teb->StaticUnicodeBuffer) / sizeof(WCHAR)); +#endif Teb->Tib.ArbitraryUserPointer = Teb->StaticUnicodeBuffer;
/* Return it in the debug event as well */ @@ -369,7 +373,7 @@
VOID NTAPI -DbgkMapViewOfSection(IN HANDLE SectionHandle, +DbgkMapViewOfSection(IN PVOID Section, IN PVOID BaseAddress, IN ULONG SectionOffset, IN ULONG_PTR ViewSize) @@ -380,6 +384,8 @@ PETHREAD Thread = PsGetCurrentThread(); PIMAGE_NT_HEADERS NtHeader; PAGED_CODE(); + DBGKTRACE(DBGK_PROCESS_DEBUG, + "Section: %p. Base: %p\n", Section, BaseAddress);
/* Check if this thread is hidden, doesn't have a debug port, or died */ if ((Thread->HideFromDebugger) || @@ -392,7 +398,7 @@ }
/* Setup the parameters */ - LoadDll->FileHandle = DbgkpSectionToFileHandle(SectionHandle); + LoadDll->FileHandle = DbgkpSectionToFileHandle(Section); LoadDll->BaseOfDll = BaseAddress; LoadDll->DebugInfoFileOffset = 0; LoadDll->DebugInfoSize = 0;
Modified: trunk/reactos/ntoskrnl/dbgk/debug.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/dbgk/debug.c?rev=2... ============================================================================== --- trunk/reactos/ntoskrnl/dbgk/debug.c (original) +++ trunk/reactos/ntoskrnl/dbgk/debug.c Fri Dec 1 10:36:49 2006 @@ -329,7 +329,7 @@ PAGED_CODE(); DBGKTRACE(DBGK_EXCEPTION_DEBUG, "ExceptionRecord: %p Port: %p\n", ExceptionRecord, DebugPort); - KEBUGCHECK(0); + while (TRUE);
/* Setup the API Message */ ApiMessage.h.u1.Length = sizeof(DBGKM_MSG) << 16 | @@ -442,13 +442,13 @@ /* Check if we have to wake up the event */ if (DebugEvent->Flags & 2) { + /* Otherwise, free the debug event */ + DbgkpFreeDebugEvent(DebugEvent); + } + else + { /* Signal the continue event */ KeSetEvent(&DebugEvent->ContinueEvent, IO_NO_INCREMENT, FALSE); - } - else - { - /* Otherwise, free the debug event */ - DbgkpFreeDebugEvent(DebugEvent); } }
Modified: trunk/reactos/ntoskrnl/include/internal/dbgk.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/d... ============================================================================== --- trunk/reactos/ntoskrnl/include/internal/dbgk.h (original) +++ trunk/reactos/ntoskrnl/include/internal/dbgk.h Fri Dec 1 10:36:49 2006 @@ -74,7 +74,7 @@ VOID NTAPI DbgkMapViewOfSection( - IN HANDLE SectionHandle, + IN PVOID Section, IN PVOID BaseAddress, IN ULONG SectionOffset, IN ULONG_PTR ViewSize
Modified: trunk/reactos/ntoskrnl/mm/section.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/section.c?rev=2... ============================================================================== --- trunk/reactos/ntoskrnl/mm/section.c (original) +++ trunk/reactos/ntoskrnl/mm/section.c Fri Dec 1 10:36:49 2006 @@ -3777,7 +3777,7 @@ (Status != STATUS_IMAGE_NOT_AT_BASE)) { /* Notify the debugger */ - DbgkMapViewOfSection(SectionHandle, + DbgkMapViewOfSection(Section, SafeBaseAddress, SafeSectionOffset.LowPart, SafeViewSize);