mirror of
https://github.com/reactos/reactos.git
synced 2024-07-11 15:15:27 +00:00
- Remove RosSymInfo hack from LDR_DATA_TABLE_ENTRY and use PatchInformation instead. It's still an abuse but at least we're not defining a new structure/
svn path=/trunk/; revision=19372
This commit is contained in:
parent
f4159d0350
commit
918739b554
|
@ -11,7 +11,7 @@ Format:
|
||||||
|
|
||||||
List:
|
List:
|
||||||
Priority 1:
|
Priority 1:
|
||||||
- LDR_DATA_TABLE_ENTRY has a ROSSYM Hack (GvG) [ldrtypes.h]
|
- FIXED: LDR_DATA_TABLE_ENTRY has a ROSSYM Hack (Alex) [ldrtypes.h]
|
||||||
- FIXED: LDR_FLAGS are not correct (Alex) [ldrtypes.h]
|
- FIXED: LDR_FLAGS are not correct (Alex) [ldrtypes.h]
|
||||||
- FIXED: Remove extra Process Info classes from ddk (Alex) [zwtypes.h]
|
- FIXED: Remove extra Process Info classes from ddk (Alex) [zwtypes.h]
|
||||||
- FIXED: PsEstablishWin32Callouts + Parameters don't match NT (Alex) [obtypes.h]
|
- FIXED: PsEstablishWin32Callouts + Parameters don't match NT (Alex) [obtypes.h]
|
||||||
|
|
|
@ -76,10 +76,6 @@ typedef struct _LDR_DATA_TABLE_ENTRY
|
||||||
};
|
};
|
||||||
PVOID EntryPointActivationContext;
|
PVOID EntryPointActivationContext;
|
||||||
PVOID PatchInformation;
|
PVOID PatchInformation;
|
||||||
#if defined(DBG) || defined(KDBG)
|
|
||||||
/* FIXME: THIS _REALLY_ NEEDS TO GO SOMEWHERE ELSE */
|
|
||||||
PVOID RosSymInfo;
|
|
||||||
#endif /* KDBG */
|
|
||||||
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
||||||
|
|
||||||
typedef struct _LDR_RESOURCE_INFO
|
typedef struct _LDR_RESOURCE_INFO
|
||||||
|
|
|
@ -84,7 +84,7 @@ KdbpSymFindUserModule(IN PVOID Address OPTIONAL,
|
||||||
pInfo->Name[Length] = L'\0';
|
pInfo->Name[Length] = L'\0';
|
||||||
pInfo->Base = (ULONG_PTR)current->DllBase;
|
pInfo->Base = (ULONG_PTR)current->DllBase;
|
||||||
pInfo->Size = current->SizeOfImage;
|
pInfo->Size = current->SizeOfImage;
|
||||||
pInfo->RosSymInfo = current->RosSymInfo;
|
pInfo->RosSymInfo = current->PatchInformation;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
current_entry = current_entry->Flink;
|
current_entry = current_entry->Flink;
|
||||||
|
@ -127,7 +127,7 @@ KdbpSymFindModule(IN PVOID Address OPTIONAL,
|
||||||
pInfo->Name[Length] = L'\0';
|
pInfo->Name[Length] = L'\0';
|
||||||
pInfo->Base = (ULONG_PTR)current->DllBase;
|
pInfo->Base = (ULONG_PTR)current->DllBase;
|
||||||
pInfo->Size = current->SizeOfImage;
|
pInfo->Size = current->SizeOfImage;
|
||||||
pInfo->RosSymInfo = current->RosSymInfo;
|
pInfo->RosSymInfo = current->PatchInformation;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
current_entry = current_entry->Flink;
|
current_entry = current_entry->Flink;
|
||||||
|
@ -493,7 +493,7 @@ KdbSymLoadUserModuleSymbols(IN PLDR_DATA_TABLE_ENTRY LdrModule)
|
||||||
UNICODE_STRING KernelName;
|
UNICODE_STRING KernelName;
|
||||||
DPRINT("LdrModule %p\n", LdrModule);
|
DPRINT("LdrModule %p\n", LdrModule);
|
||||||
|
|
||||||
LdrModule->RosSymInfo = NULL;
|
LdrModule->PatchInformation = NULL;
|
||||||
|
|
||||||
KernelName.MaximumLength = sizeof(Prefix) + LdrModule->FullDllName.Length;
|
KernelName.MaximumLength = sizeof(Prefix) + LdrModule->FullDllName.Length;
|
||||||
KernelName.Length = KernelName.MaximumLength - sizeof(WCHAR);
|
KernelName.Length = KernelName.MaximumLength - sizeof(WCHAR);
|
||||||
|
@ -507,7 +507,7 @@ KdbSymLoadUserModuleSymbols(IN PLDR_DATA_TABLE_ENTRY LdrModule)
|
||||||
LdrModule->FullDllName.Length);
|
LdrModule->FullDllName.Length);
|
||||||
KernelName.Buffer[KernelName.Length / sizeof(WCHAR)] = L'\0';
|
KernelName.Buffer[KernelName.Length / sizeof(WCHAR)] = L'\0';
|
||||||
|
|
||||||
KdbpSymLoadModuleSymbols(&KernelName, (PROSSYM_INFO*)&LdrModule->RosSymInfo);
|
KdbpSymLoadModuleSymbols(&KernelName, (PROSSYM_INFO*)&LdrModule->PatchInformation);
|
||||||
|
|
||||||
ExFreePool(KernelName.Buffer);
|
ExFreePool(KernelName.Buffer);
|
||||||
}
|
}
|
||||||
|
@ -539,7 +539,7 @@ KdbSymFreeProcessSymbols(IN PEPROCESS Process)
|
||||||
{
|
{
|
||||||
Current = CONTAINING_RECORD(CurrentEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
Current = CONTAINING_RECORD(CurrentEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
|
|
||||||
KdbpSymUnloadModuleSymbols(Current->RosSymInfo);
|
KdbpSymUnloadModuleSymbols(Current->PatchInformation);
|
||||||
|
|
||||||
CurrentEntry = CurrentEntry->Flink;
|
CurrentEntry = CurrentEntry->Flink;
|
||||||
}
|
}
|
||||||
|
@ -561,9 +561,9 @@ KdbSymLoadDriverSymbols(IN PUNICODE_STRING Filename,
|
||||||
/* Load symbols for the image if available */
|
/* Load symbols for the image if available */
|
||||||
DPRINT("Loading driver %wZ symbols (driver @ %08x)\n", Filename, Module->Base);
|
DPRINT("Loading driver %wZ symbols (driver @ %08x)\n", Filename, Module->Base);
|
||||||
|
|
||||||
Module->RosSymInfo = NULL;
|
Module->PatchInformation = NULL;
|
||||||
|
|
||||||
KdbpSymLoadModuleSymbols(Filename, (PROSSYM_INFO*)&Module->RosSymInfo);
|
KdbpSymLoadModuleSymbols(Filename, (PROSSYM_INFO*)&Module->PatchInformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Unloads symbol info for a driver.
|
/*! \brief Unloads symbol info for a driver.
|
||||||
|
@ -574,8 +574,8 @@ VOID
|
||||||
KdbSymUnloadDriverSymbols(IN PLDR_DATA_TABLE_ENTRY ModuleObject)
|
KdbSymUnloadDriverSymbols(IN PLDR_DATA_TABLE_ENTRY ModuleObject)
|
||||||
{
|
{
|
||||||
/* Unload symbols for module if available */
|
/* Unload symbols for module if available */
|
||||||
KdbpSymUnloadModuleSymbols(ModuleObject->RosSymInfo);
|
KdbpSymUnloadModuleSymbols(ModuleObject->PatchInformation);
|
||||||
ModuleObject->RosSymInfo = NULL;
|
ModuleObject->PatchInformation = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Called when a symbol file is loaded by the loader?
|
/*! \brief Called when a symbol file is loaded by the loader?
|
||||||
|
@ -617,7 +617,7 @@ KdbSymProcessBootSymbols(IN PCHAR FileName)
|
||||||
{
|
{
|
||||||
if (! LoadSymbols)
|
if (! LoadSymbols)
|
||||||
{
|
{
|
||||||
ModuleObject->RosSymInfo = NULL;
|
ModuleObject->PatchInformation = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,16 +631,16 @@ KdbSymProcessBootSymbols(IN PCHAR FileName)
|
||||||
if (i < KeLoaderBlock.ModsCount)
|
if (i < KeLoaderBlock.ModsCount)
|
||||||
{
|
{
|
||||||
KeLoaderModules[i].Reserved = 1;
|
KeLoaderModules[i].Reserved = 1;
|
||||||
if (ModuleObject->RosSymInfo != NULL)
|
if (ModuleObject->PatchInformation != NULL)
|
||||||
{
|
{
|
||||||
KdbpSymRemoveCachedFile(ModuleObject->RosSymInfo);
|
KdbpSymRemoveCachedFile(ModuleObject->PatchInformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsRaw)
|
if (IsRaw)
|
||||||
{
|
{
|
||||||
if (! RosSymCreateFromRaw((PVOID) KeLoaderModules[i].ModStart,
|
if (! RosSymCreateFromRaw((PVOID) KeLoaderModules[i].ModStart,
|
||||||
KeLoaderModules[i].ModEnd - KeLoaderModules[i].ModStart,
|
KeLoaderModules[i].ModEnd - KeLoaderModules[i].ModStart,
|
||||||
(PROSSYM_INFO*)&ModuleObject->RosSymInfo))
|
(PROSSYM_INFO*)&ModuleObject->PatchInformation))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -649,7 +649,7 @@ KdbSymProcessBootSymbols(IN PCHAR FileName)
|
||||||
{
|
{
|
||||||
if (! RosSymCreateFromMem((PVOID) KeLoaderModules[i].ModStart,
|
if (! RosSymCreateFromMem((PVOID) KeLoaderModules[i].ModStart,
|
||||||
KeLoaderModules[i].ModEnd - KeLoaderModules[i].ModStart,
|
KeLoaderModules[i].ModEnd - KeLoaderModules[i].ModStart,
|
||||||
(PROSSYM_INFO*)&ModuleObject->RosSymInfo))
|
(PROSSYM_INFO*)&ModuleObject->PatchInformation))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -658,14 +658,14 @@ KdbSymProcessBootSymbols(IN PCHAR FileName)
|
||||||
/* add file to cache */
|
/* add file to cache */
|
||||||
RtlInitAnsiString(&AnsiString, FileName);
|
RtlInitAnsiString(&AnsiString, FileName);
|
||||||
RtlAnsiStringToUnicodeString(&UnicodeString, &AnsiString, TRUE);
|
RtlAnsiStringToUnicodeString(&UnicodeString, &AnsiString, TRUE);
|
||||||
KdbpSymAddCachedFile(&UnicodeString, ModuleObject->RosSymInfo);
|
KdbpSymAddCachedFile(&UnicodeString, ModuleObject->PatchInformation);
|
||||||
RtlFreeUnicodeString(&UnicodeString);
|
RtlFreeUnicodeString(&UnicodeString);
|
||||||
|
|
||||||
DPRINT("Installed symbols: %s@%08x-%08x %p\n",
|
DPRINT("Installed symbols: %s@%08x-%08x %p\n",
|
||||||
FileName,
|
FileName,
|
||||||
ModuleObject->DllBase,
|
ModuleObject->DllBase,
|
||||||
ModuleObject->SizeOfImage + ModuleObject->DllBase,
|
ModuleObject->SizeOfImage + ModuleObject->DllBase,
|
||||||
ModuleObject->RosSymInfo);
|
ModuleObject->PatchInformation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -683,8 +683,8 @@ KdbSymInit(IN PLDR_DATA_TABLE_ENTRY NtoskrnlModuleObject,
|
||||||
int Found;
|
int Found;
|
||||||
char YesNo;
|
char YesNo;
|
||||||
|
|
||||||
NtoskrnlModuleObject->RosSymInfo = NULL;
|
NtoskrnlModuleObject->PatchInformation = NULL;
|
||||||
LdrHalModuleObject->RosSymInfo = NULL;
|
LdrHalModuleObject->PatchInformation = NULL;
|
||||||
|
|
||||||
InitializeListHead(&SymbolFileListHead);
|
InitializeListHead(&SymbolFileListHead);
|
||||||
KeInitializeSpinLock(&SymbolFileListLock);
|
KeInitializeSpinLock(&SymbolFileListLock);
|
||||||
|
|
Loading…
Reference in a new issue