]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Do not update the ImageBase in the PE/COFF header if Adjust is 0.
authormdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 15 Oct 2009 17:21:22 +0000 (17:21 +0000)
committermdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 15 Oct 2009 17:21:22 +0000 (17:21 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9341 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BasePeCoffLib/BasePeCoff.c

index 586b81eadbbbeee3247fc6b81b9201ed01f3bde2..240ea1309b26a32a30f299eb7f273ea19252c40f 100644 (file)
@@ -572,7 +572,9 @@ PeCoffLoaderRelocateImage (
       // Use PE32 offset\r
       //\r
       Adjust = (UINT64)BaseAddress - Hdr.Pe32->OptionalHeader.ImageBase;\r
-      Hdr.Pe32->OptionalHeader.ImageBase = (UINT32)BaseAddress;\r
+      if (Adjust != 0) {\r
+        Hdr.Pe32->OptionalHeader.ImageBase = (UINT32)BaseAddress;\r
+      }\r
 \r
       NumberOfRvaAndSizes = Hdr.Pe32->OptionalHeader.NumberOfRvaAndSizes;\r
       RelocDir  = &Hdr.Pe32->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC];\r
@@ -581,7 +583,9 @@ PeCoffLoaderRelocateImage (
       // Use PE32+ offset\r
       //\r
       Adjust = (UINT64) BaseAddress - Hdr.Pe32Plus->OptionalHeader.ImageBase;\r
-      Hdr.Pe32Plus->OptionalHeader.ImageBase = (UINT64)BaseAddress;\r
+      if (Adjust != 0) {\r
+        Hdr.Pe32Plus->OptionalHeader.ImageBase = (UINT64)BaseAddress;\r
+      }\r
 \r
       NumberOfRvaAndSizes = Hdr.Pe32Plus->OptionalHeader.NumberOfRvaAndSizes;\r
       RelocDir  = &Hdr.Pe32Plus->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC];\r
@@ -612,7 +616,9 @@ PeCoffLoaderRelocateImage (
   } else {\r
     Hdr.Te             = (EFI_TE_IMAGE_HEADER *)(UINTN)(ImageContext->ImageAddress);\r
     Adjust             = (UINT64) (BaseAddress - Hdr.Te->StrippedSize + sizeof (EFI_TE_IMAGE_HEADER) - Hdr.Te->ImageBase);\r
-    Hdr.Te->ImageBase  = (UINT64) (BaseAddress - Hdr.Te->StrippedSize + sizeof (EFI_TE_IMAGE_HEADER));\r
+    if (Adjust != 0) {\r
+      Hdr.Te->ImageBase  = (UINT64) (BaseAddress - Hdr.Te->StrippedSize + sizeof (EFI_TE_IMAGE_HEADER));\r
+    }\r
 \r
     //\r
     // Find the relocation block\r