[ros-diffs] [fireball] 40032: - Give winldr's PE loader its own debug mask.

fireball at svn.reactos.org fireball at svn.reactos.org
Sun Mar 15 14:29:14 CET 2009


Author: fireball
Date: Sun Mar 15 16:29:13 2009
New Revision: 40032

URL: http://svn.reactos.org/svn/reactos?rev=40032&view=rev
Log:
- Give winldr's PE loader its own debug mask.

Modified:
    trunk/reactos/boot/freeldr/freeldr/include/debug.h
    trunk/reactos/boot/freeldr/freeldr/windows/peloader.c

Modified: trunk/reactos/boot/freeldr/freeldr/include/debug.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/include/debug.h?rev=40032&r1=40031&r2=40032&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/include/debug.h [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/include/debug.h [iso-8859-1] Sun Mar 15 16:29:13 2009
@@ -34,6 +34,7 @@
 #define DPRINT_LINUX        0x00000200  // OR this with DebugPrintMask to enable Linux messages
 #define DPRINT_HWDETECT     0x00000400  // OR this with DebugPrintMask to enable hardware detection messages
 #define DPRINT_WINDOWS      0x00000800  // OR this with DebugPrintMask to enable messages from Windows loader
+#define DPRINT_PELOADER     0x00001000  // OR this with DebugPrintMask to enable messages from PE images loader
 
 extern char* g_file;
 extern int g_line;

Modified: trunk/reactos/boot/freeldr/freeldr/windows/peloader.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windows/peloader.c?rev=40032&r1=40031&r2=40032&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/windows/peloader.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/windows/peloader.c [iso-8859-1] Sun Mar 15 16:29:13 2009
@@ -56,7 +56,7 @@
 	PLDR_DATA_TABLE_ENTRY DataTableEntry;
 	LIST_ENTRY *ModuleEntry;
 
-	DPRINTM(DPRINT_WINDOWS, "WinLdrCheckForLoadedDll: DllName %X, LoadedEntry: %X\n",
+	DPRINTM(DPRINT_PELOADER, "WinLdrCheckForLoadedDll: DllName %X, LoadedEntry: %X\n",
 		DllName, LoadedEntry);
 
 	/* Just go through each entry in the LoadOrderList and compare loaded module's
@@ -69,7 +69,7 @@
 			LDR_DATA_TABLE_ENTRY,
 			InLoadOrderLinks);
 
-		DPRINTM(DPRINT_WINDOWS, "WinLdrCheckForLoadedDll: DTE %p, EP %p\n",
+		DPRINTM(DPRINT_PELOADER, "WinLdrCheckForLoadedDll: DTE %p, EP %p\n",
 			DataTableEntry, DataTableEntry->EntryPoint);
 
 		/* Compare names */
@@ -79,7 +79,7 @@
 			   to the caller and increase load count for it */
 			*LoadedEntry = DataTableEntry;
 			DataTableEntry->LoadCount++;
-			DPRINTM(DPRINT_WINDOWS, "WinLdrCheckForLoadedDll: LoadedEntry %X\n", DataTableEntry);
+			DPRINTM(DPRINT_PELOADER, "WinLdrCheckForLoadedDll: LoadedEntry %X\n", DataTableEntry);
 			return TRUE;
 		}
 
@@ -111,7 +111,7 @@
 		BaseName.Buffer = VaToPa(ScanDTE->BaseDllName.Buffer);
 		BaseName.MaximumLength = ScanDTE->BaseDllName.MaximumLength;
 		BaseName.Length = ScanDTE->BaseDllName.Length;
-		DPRINTM(DPRINT_WINDOWS, "WinLdrScanImportDescriptorTable(): %wZ ImportTable = 0x%X\n",
+		DPRINTM(DPRINT_PELOADER, "WinLdrScanImportDescriptorTable(): %wZ ImportTable = 0x%X\n",
 			&BaseName, ImportTable);
 	}
 
@@ -124,7 +124,7 @@
 	{
 		/* Get pointer to the name */
 		ImportName = (PCH)VaToPa(RVA(ScanDTE->DllBase, ImportTable->Name));
-		DPRINTM(DPRINT_WINDOWS, "WinLdrScanImportDescriptorTable(): Looking at %s\n", ImportName);
+		DPRINTM(DPRINT_PELOADER, "WinLdrScanImportDescriptorTable(): Looking at %s\n", ImportName);
 
 		/* In case we get a reference to ourselves - just skip it */
 		if (WinLdrpCompareDllName(ImportName, &ScanDTE->BaseDllName))
@@ -140,7 +140,7 @@
 
 			if (!Status)
 			{
-				DPRINTM(DPRINT_WINDOWS, "WinLdrpLoadAndScanReferencedDll() failed\n");
+				DPRINTM(DPRINT_PELOADER, "WinLdrpLoadAndScanReferencedDll() failed\n");
 				return Status;
 			}
 		}
@@ -154,7 +154,7 @@
 
 		if (!Status)
 		{
-			DPRINTM(DPRINT_WINDOWS, "WinLdrpScanImportAddressTable() failed\n");
+			DPRINTM(DPRINT_PELOADER, "WinLdrpScanImportAddressTable() failed\n");
 			return Status;
 		}
 	}
@@ -337,7 +337,7 @@
 	/* This is the real image base - in form of a virtual address */
 	VirtualBase = PaToVa(PhysicalBase);
 
-	DPRINTM(DPRINT_WINDOWS, "Base PA: 0x%X, VA: 0x%X\n", PhysicalBase, VirtualBase);
+	DPRINTM(DPRINT_PELOADER, "Base PA: 0x%X, VA: 0x%X\n", PhysicalBase, VirtualBase);
 
 	/* Set to 0 position and fully load the file image */
 	FsSetFilePointer(FileHandle, 0);
@@ -390,14 +390,14 @@
 			/* Seek to the correct position */
 			FsSetFilePointer(FileHandle, SectionHeader->PointerToRawData);
 
-			DPRINTM(DPRINT_WINDOWS, "SH->VA: 0x%X\n", SectionHeader->VirtualAddress);
+			DPRINTM(DPRINT_PELOADER, "SH->VA: 0x%X\n", SectionHeader->VirtualAddress);
 
 			/* Read this section from the file, size = SizeOfRawData */
 			Status = FsReadFile(FileHandle, SizeOfRawData, &BytesRead, (PUCHAR)PhysicalBase + SectionHeader->VirtualAddress);
 
 			if (!Status && (BytesRead == 0))
 			{
-				DPRINTM(DPRINT_WINDOWS, "WinLdrLoadImage(): Error reading section from file!\n");
+				DPRINTM(DPRINT_PELOADER, "WinLdrLoadImage(): Error reading section from file!\n");
 				break;
 			}
 		}
@@ -405,7 +405,7 @@
 		/* Size of data is less than the virtual size - fill up the remainder with zeroes */
 		if (SizeOfRawData < VirtualSize)
 		{
-			DPRINTM(DPRINT_WINDOWS, "WinLdrLoadImage(): SORD %d < VS %d\n", SizeOfRawData, VirtualSize);
+			DPRINTM(DPRINT_PELOADER, "WinLdrLoadImage(): SORD %d < VS %d\n", SizeOfRawData, VirtualSize);
 			RtlZeroMemory((PVOID)(SectionHeader->VirtualAddress + (ULONG)PhysicalBase + SizeOfRawData), VirtualSize - SizeOfRawData);
 		}
 
@@ -423,7 +423,7 @@
 	/* Relocate the image, if it needs it */
 	if (NtHeaders->OptionalHeader.ImageBase != (ULONG)VirtualBase)
 	{
-		DPRINTM(DPRINT_WINDOWS, "Relocating %p -> %p\n",
+		DPRINTM(DPRINT_PELOADER, "Relocating %p -> %p\n",
 			NtHeaders->OptionalHeader.ImageBase, VirtualBase);
 		Status = (BOOLEAN)LdrRelocateImageWithBias(PhysicalBase,
 			(ULONG_PTR)VirtualBase - (ULONG_PTR)PhysicalBase,
@@ -453,7 +453,7 @@
 	UnicodeNamePA.Length = UnicodeName->Length;
 	UnicodeNamePA.MaximumLength = UnicodeName->MaximumLength;
 	UnicodeNamePA.Buffer = VaToPa(UnicodeName->Buffer);
-	DPRINTM(DPRINT_WINDOWS, "WinLdrpCompareDllName: %s and %wZ, Length = %d "
+	DPRINTM(DPRINT_PELOADER, "WinLdrpCompareDllName: %s and %wZ, Length = %d "
 		"UN->Length %d\n", DllName, &UnicodeNamePA, Length, UnicodeName->Length);
 
 	if ((Length * sizeof(WCHAR)) > UnicodeName->Length)
@@ -500,13 +500,13 @@
 	LONG High, Low, Middle, Result;
 	ULONG Hint;
 
-	//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): DllBase 0x%X, ImageBase 0x%X, ThunkData 0x%X, ExportDirectory 0x%X, ExportSize %d, ProcessForwards 0x%X\n",
+	//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): DllBase 0x%X, ImageBase 0x%X, ThunkData 0x%X, ExportDirectory 0x%X, ExportSize %d, ProcessForwards 0x%X\n",
 	//	DllBase, ImageBase, ThunkData, ExportDirectory, ExportSize, ProcessForwards);
 
 	/* Check passed DllBase param */
 	if(DllBase == NULL)
 	{
-		DPRINTM(DPRINT_WINDOWS, "WARNING: DllBase == NULL!\n");
+		DPRINTM(DPRINT_PELOADER, "WARNING: DllBase == NULL!\n");
 		return FALSE;
 	}
 
@@ -518,7 +518,7 @@
 	{
 		/* Yes, calculate the ordinal */
 		Ordinal = (ULONG)(IMAGE_ORDINAL(ThunkData->u1.Ordinal) - (UINT32)ExportDirectory->Base);
-		//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): Ordinal %d\n", Ordinal);
+		//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): Ordinal %d\n", Ordinal);
 	}
 	else
 	{
@@ -526,22 +526,22 @@
 		if (!ProcessForwards)
 		{
 			/* AddressOfData in thunk entry will become a virtual address (from relative) */
-			//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): ThunkData->u1.AOD was %p\n", ThunkData->u1.AddressOfData);
+			//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): ThunkData->u1.AOD was %p\n", ThunkData->u1.AddressOfData);
 			ThunkData->u1.AddressOfData =
 				(ULONG)RVA(ImageBase, ThunkData->u1.AddressOfData);
-			//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): ThunkData->u1.AOD became %p\n", ThunkData->u1.AddressOfData);
+			//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): ThunkData->u1.AOD became %p\n", ThunkData->u1.AddressOfData);
 		}
 
 		/* Get pointers to Name and Ordinal tables (RVA -> VA) */
 		NameTable = (PULONG)VaToPa(RVA(DllBase, ExportDirectory->AddressOfNames));
 		OrdinalTable = (PUSHORT)VaToPa(RVA(DllBase, ExportDirectory->AddressOfNameOrdinals));
 
-		//DPRINTM(DPRINT_WINDOWS, "NameTable 0x%X, OrdinalTable 0x%X, ED->AddressOfNames 0x%X, ED->AOFO 0x%X\n",
+		//DPRINTM(DPRINT_PELOADER, "NameTable 0x%X, OrdinalTable 0x%X, ED->AddressOfNames 0x%X, ED->AOFO 0x%X\n",
 		//	NameTable, OrdinalTable, ExportDirectory->AddressOfNames, ExportDirectory->AddressOfNameOrdinals);
 
 		/* Get the hint, convert it to a physical pointer */
 		Hint = ((PIMAGE_IMPORT_BY_NAME)VaToPa((PVOID)ThunkData->u1.AddressOfData))->Hint;
-		//DPRINTM(DPRINT_WINDOWS, "HintIndex %d\n", Hint);
+		//DPRINTM(DPRINT_PELOADER, "HintIndex %d\n", Hint);
 
 		/* If Hint is less than total number of entries in the export directory,
 		   and import name == export name, then we can just get it from the OrdinalTable */
@@ -554,14 +554,14 @@
 			)
 		{
 			Ordinal = OrdinalTable[Hint];
-			//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): Ordinal %d\n", Ordinal);
+			//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): Ordinal %d\n", Ordinal);
 		}
 		else
 		{
 			/* It's not the easy way, we have to lookup import name in the name table.
 			   Let's use a binary search for this task. */
 
-			//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName() looking up the import name using binary search...\n");
+			//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName() looking up the import name using binary search...\n");
 
 			/* Low boundary is set to 0, and high boundary to the maximum index */
 			Low = 0;
@@ -577,11 +577,11 @@
 				Result = strcmp(VaToPa(&((PIMAGE_IMPORT_BY_NAME)VaToPa((PVOID)ThunkData->u1.AddressOfData))->Name[0]),
 					(PCHAR)VaToPa(RVA(DllBase, NameTable[Middle])));
 
-				/*DPRINTM(DPRINT_WINDOWS, "Binary search: comparing Import '__', Export '%s'\n",*/
+				/*DPRINTM(DPRINT_PELOADER, "Binary search: comparing Import '__', Export '%s'\n",*/
 					/*VaToPa(&((PIMAGE_IMPORT_BY_NAME)VaToPa(ThunkData->u1.AddressOfData))->Name[0]),*/
 					/*(PCHAR)VaToPa(RVA(DllBase, NameTable[Middle])));*/
 
-				/*DPRINTM(DPRINT_WINDOWS, "TE->u1.AOD %p, fulladdr %p\n",
+				/*DPRINTM(DPRINT_PELOADER, "TE->u1.AOD %p, fulladdr %p\n",
 					ThunkData->u1.AddressOfData,
 					((PIMAGE_IMPORT_BY_NAME)VaToPa(ThunkData->u1.AddressOfData))->Name );*/
 
@@ -608,21 +608,21 @@
 			if (High < Low)
 			{
 				//Print(L"Error in binary search\n");
-				DPRINTM(DPRINT_WINDOWS, "Error in binary search!\n");
+				DPRINTM(DPRINT_PELOADER, "Error in binary search!\n");
 				return FALSE;
 			}
 
 			/* Everything allright, get the ordinal */
 			Ordinal = OrdinalTable[Middle];
 			
-			//DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName() found Ordinal %d\n", Ordinal);
+			//DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName() found Ordinal %d\n", Ordinal);
 		}
 	}
 
 	/* Check ordinal number for validity! */
 	if (Ordinal >= ExportDirectory->NumberOfFunctions)
 	{
-		DPRINTM(DPRINT_WINDOWS, "Ordinal number is invalid!\n");
+		DPRINTM(DPRINT_PELOADER, "Ordinal number is invalid!\n");
 		return FALSE;
 	}
 
@@ -647,12 +647,12 @@
 		/* Strip out its extension */
 		*strchr(ForwardDllName,'.') = '\0';
 
-		DPRINTM(DPRINT_WINDOWS, "WinLdrpBindImportName(): ForwardDllName %s\n", ForwardDllName);
+		DPRINTM(DPRINT_PELOADER, "WinLdrpBindImportName(): ForwardDllName %s\n", ForwardDllName);
 		if (!WinLdrCheckForLoadedDll(WinLdrBlock, ForwardDllName, &DataTableEntry))
 		{
 			/* We can't continue if DLL couldn't be loaded, so bomb out with an error */
 			//Print(L"Error loading DLL!\n");
-			DPRINTM(DPRINT_WINDOWS, "Error loading DLL!\n");
+			DPRINTM(DPRINT_PELOADER, "Error loading DLL!\n");
 			return FALSE;
 		}
 
@@ -728,7 +728,7 @@
 	strcpy(FullDllName, DirectoryPath);
 	strcat(FullDllName, ImportName);
 
-	DPRINTM(DPRINT_WINDOWS, "Loading referenced DLL: %s\n", FullDllName);
+	DPRINTM(DPRINT_PELOADER, "Loading referenced DLL: %s\n", FullDllName);
 	//Print(L"Loading referenced DLL: %s\n", FullDllName);
 
 	/* Load the image */
@@ -736,7 +736,7 @@
 
 	if (!Status)
 	{
-		DPRINTM(DPRINT_WINDOWS, "WinLdrLoadImage() failed\n");
+		DPRINTM(DPRINT_PELOADER, "WinLdrLoadImage() failed\n");
 		return Status;
 	}
 
@@ -749,20 +749,20 @@
 
 	if (!Status)
 	{
-		DPRINTM(DPRINT_WINDOWS,
+		DPRINTM(DPRINT_PELOADER,
 			"WinLdrAllocateDataTableEntry() failed with Status=0x%X\n", Status);
 		return Status;
 	}
 
 	/* Scan its dependencies too */
-	DPRINTM(DPRINT_WINDOWS,
+	DPRINTM(DPRINT_PELOADER,
 		"WinLdrScanImportDescriptorTable() calling ourselves for %S\n",
 		VaToPa((*DataTableEntry)->BaseDllName.Buffer));
 	Status = WinLdrScanImportDescriptorTable(WinLdrBlock, DirectoryPath, *DataTableEntry);
 
 	if (!Status)
 	{
-		DPRINTM(DPRINT_WINDOWS,
+		DPRINTM(DPRINT_PELOADER,
 			"WinLdrScanImportDescriptorTable() failed with Status=0x%X\n", Status);
 		return Status;
 	}
@@ -780,7 +780,7 @@
 	BOOLEAN Status;
 	ULONG ExportSize;
 
-	DPRINTM(DPRINT_WINDOWS, "WinLdrpScanImportAddressTable(): DllBase 0x%X, "
+	DPRINTM(DPRINT_PELOADER, "WinLdrpScanImportAddressTable(): DllBase 0x%X, "
 		"ImageBase 0x%X, ThunkData 0x%X\n", DllBase, ImageBase, ThunkData);
 
 	/* Obtain the export table from the DLL's base */
@@ -798,7 +798,7 @@
 				&ExportSize);
 	}
 
-	DPRINTM(DPRINT_WINDOWS, "WinLdrpScanImportAddressTable(): ExportDirectory 0x%X\n", ExportDirectory);
+	DPRINTM(DPRINT_PELOADER, "WinLdrpScanImportAddressTable(): ExportDirectory 0x%X\n", ExportDirectory);
 
 	/* If pointer to Export Directory is */
 	if (ExportDirectory == NULL)



More information about the Ros-diffs mailing list