mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[NTOS:KDBG] Fix the support for /(NO)LOADSYMBOLS as we didn't respect them properly.
LoadSymbols was reset to its default value whenever KdbSymInit() was called, thus we would e.g. load symbols even if /NOLOADSYMBOLS or /LOADSYMBOLS=NO were specified at the command line.
This commit is contained in:
parent
e241c87eea
commit
de892d5bc7
1 changed files with 20 additions and 13 deletions
|
@ -26,7 +26,7 @@ typedef struct _IMAGE_SYMBOL_INFO_CACHE
|
||||||
}
|
}
|
||||||
IMAGE_SYMBOL_INFO_CACHE, *PIMAGE_SYMBOL_INFO_CACHE;
|
IMAGE_SYMBOL_INFO_CACHE, *PIMAGE_SYMBOL_INFO_CACHE;
|
||||||
|
|
||||||
static BOOLEAN LoadSymbols;
|
static BOOLEAN LoadSymbols = FALSE;
|
||||||
static LIST_ENTRY SymbolsToLoad;
|
static LIST_ENTRY SymbolsToLoad;
|
||||||
static KSPIN_LOCK SymbolsToLoadLock;
|
static KSPIN_LOCK SymbolsToLoadLock;
|
||||||
static KEVENT SymbolsToLoadEvent;
|
static KEVENT SymbolsToLoadEvent;
|
||||||
|
@ -345,23 +345,22 @@ KdbSymInit(
|
||||||
{
|
{
|
||||||
DPRINT("KdbSymInit() BootPhase=%d\n", BootPhase);
|
DPRINT("KdbSymInit() BootPhase=%d\n", BootPhase);
|
||||||
|
|
||||||
LoadSymbols = FALSE;
|
|
||||||
|
|
||||||
#if DBG
|
|
||||||
/* Load symbols only if we have 96Mb of RAM or more */
|
|
||||||
if (MmNumberOfPhysicalPages >= 0x6000)
|
|
||||||
LoadSymbols = TRUE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (BootPhase == 0)
|
if (BootPhase == 0)
|
||||||
{
|
{
|
||||||
PCHAR p1, p2;
|
PCHAR p1, p2;
|
||||||
SHORT Found = FALSE;
|
SHORT Found = FALSE;
|
||||||
CHAR YesNo;
|
CHAR YesNo;
|
||||||
|
|
||||||
/* Perform actual initialization of symbol module */
|
/*
|
||||||
//NtoskrnlModuleObject->PatchInformation = NULL;
|
* Default symbols loading strategy:
|
||||||
//LdrHalModuleObject->PatchInformation = NULL;
|
* In DBG builds, load symbols only if we have 96MB of RAM or more.
|
||||||
|
* In REL builds, do not load them by default.
|
||||||
|
*/
|
||||||
|
#if DBG
|
||||||
|
LoadSymbols = (MmNumberOfPhysicalPages >= 0x6000);
|
||||||
|
#else
|
||||||
|
LoadSymbols = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Check the command line for /LOADSYMBOLS, /NOLOADSYMBOLS,
|
/* Check the command line for /LOADSYMBOLS, /NOLOADSYMBOLS,
|
||||||
* /LOADSYMBOLS={YES|NO}, /NOLOADSYMBOLS={YES|NO} */
|
* /LOADSYMBOLS={YES|NO}, /NOLOADSYMBOLS={YES|NO} */
|
||||||
|
@ -405,13 +404,21 @@ KdbSymInit(
|
||||||
p1 = p2;
|
p1 = p2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((BootPhase == 1) && LoadSymbols)
|
else if (BootPhase == 1)
|
||||||
{
|
{
|
||||||
HANDLE Thread;
|
HANDLE Thread;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
PLIST_ENTRY ListEntry;
|
PLIST_ENTRY ListEntry;
|
||||||
|
|
||||||
|
/* Do not load symbols if we have less than 96MB of RAM */
|
||||||
|
if (MmNumberOfPhysicalPages < 0x6000)
|
||||||
|
LoadSymbols = FALSE;
|
||||||
|
|
||||||
|
/* Continue this phase only if we need to load symbols */
|
||||||
|
if (!LoadSymbols)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Launch our worker thread */
|
/* Launch our worker thread */
|
||||||
InitializeListHead(&SymbolsToLoad);
|
InitializeListHead(&SymbolsToLoad);
|
||||||
KeInitializeSpinLock(&SymbolsToLoadLock);
|
KeInitializeSpinLock(&SymbolsToLoadLock);
|
||||||
|
|
Loading…
Reference in a new issue