]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/CCode/Source/PeCoffLoader/BasePeCoff.c
Correct TeImage file format and Clean up PeiRebase tool to remove unused code and...
[mirror_edk2.git] / Tools / CCode / Source / PeCoffLoader / BasePeCoff.c
index 9c25e1f4b8f1162f7b60ae5b85efb606eed657b9..f2053b7e382ea1bc2b106b1a10cdfd70ed4a42a7 100644 (file)
@@ -260,7 +260,7 @@ Returns:
   if (!(ImageContext->IsTeImage)) {\r
     ImageContext->ImageAddress = PeHdr.OptionalHeader.ImageBase;\r
   } else {\r
-    ImageContext->ImageAddress = (PHYSICAL_ADDRESS) (TeHdr.ImageBase);\r
+    ImageContext->ImageAddress = (PHYSICAL_ADDRESS) (TeHdr.ImageBase + sizeof (EFI_TE_IMAGE_HEADER) - TeHdr.StrippedSize);\r
   }\r
   //\r
   // Initialize the alternate destination address to 0 indicating that it\r
@@ -345,12 +345,12 @@ Returns:
         SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
       }\r
 \r
-      if (DebugDirectoryEntryFileOffset != 0) {\r
-        for (Index = 0; Index < DebugDirectoryEntry->Size; Index++) {\r
+      if (DebugDirectoryEntryFileOffset != 0) {    \r
+        for (Index = 0; Index < (DebugDirectoryEntry->Size); Index += Size) {\r
           //\r
           // Read next debug directory entry\r
           //\r
-          Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY);\r
+          Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY);    \r
           Status = ImageContext->ImageRead (\r
                                    ImageContext->Handle,\r
                                    DebugDirectoryEntryFileOffset,\r
@@ -363,7 +363,7 @@ Returns:
           }\r
 \r
           if (DebugEntry.Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {\r
-            ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index * sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));\r
+            ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index);\r
             if (DebugEntry.RVA == 0 && DebugEntry.FileOffset != 0) {\r
               ImageContext->ImageSize += DebugEntry.SizeOfData;\r
             }\r
@@ -438,7 +438,7 @@ Returns:
     }\r
 \r
     if (DebugDirectoryEntryFileOffset != 0) {\r
-      for (Index = 0; Index < DebugDirectoryEntry->Size; Index++) {\r
+      for (Index = 0; Index < (DebugDirectoryEntry->Size); Index += Size) {\r
         //\r
         // Read next debug directory entry\r
         //\r
@@ -455,7 +455,7 @@ Returns:
         }\r
 \r
         if (DebugEntry.Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {\r
-          ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index * sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));\r
+          ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index);\r
           return RETURN_SUCCESS;\r
         }\r
       }\r