From 9dbd8d4fbec79bb40857161fea68027f7b191d07 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Tue, 5 Dec 2006 18:33:03 +0000 Subject: [PATCH] - Revert 25070: NO. - Please look what I did inside FreeLdr. I called this function perfectly without needing to modify how it works. It's what the AdditionalBias parameter is there for... svn path=/trunk/; revision=25071 --- reactos/lib/rtl/image.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/reactos/lib/rtl/image.c b/reactos/lib/rtl/image.c index 097115df5a5..1df8af534c1 100644 --- a/reactos/lib/rtl/image.c +++ b/reactos/lib/rtl/image.c @@ -226,10 +226,6 @@ LdrProcessRelocationBlockLongLong( return (PIMAGE_BASE_RELOCATION)TypeOffset; } -/* NOTE: When this function is called with LoaderName == "FLx86" - it's going to behave differently: it will perform all - relocations as needed, but will access only valid physical - addresses (not virtual addresses) */ ULONG NTAPI LdrRelocateImageWithBias( @@ -254,10 +250,10 @@ LdrRelocateImageWithBias( if (NtHeaders == NULL) return Invalid; - /*if (NtHeaders->FileHeader.Characteristics & IMAGE_FILE_RELOCS_STRIPPED) + if (NtHeaders->FileHeader.Characteristics & IMAGE_FILE_RELOCS_STRIPPED) { return Conflict; - }*/ + } RelocationDDir = &NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]; @@ -266,19 +262,7 @@ LdrRelocateImageWithBias( return Success; } - /* ROS/FreeLoader/arch-specific stuff, for relocating while being in PA mode */ - if ((LoaderName != NULL) && (!strncmp(LoaderName, "FLx86", 5))) - { - /* Calculate it, converting BaseAddress to a virtual address */ - Delta = ((ULONG_PTR)BaseAddress | 0x80000000) - - NtHeaders->OptionalHeader.ImageBase + AdditionalBias; - } - else - { - /* Calculate it as usual */ - Delta = (ULONG_PTR)BaseAddress - NtHeaders->OptionalHeader.ImageBase + AdditionalBias; - } - + Delta = (ULONG_PTR)BaseAddress - NtHeaders->OptionalHeader.ImageBase + AdditionalBias; RelocationDir = (PIMAGE_BASE_RELOCATION)((ULONG_PTR)BaseAddress + RelocationDDir->VirtualAddress); RelocationEnd = (PIMAGE_BASE_RELOCATION)((ULONG_PTR)RelocationDir + RelocationDDir->Size);