]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update the logic related to get section header offset for TE image.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 4 May 2012 05:11:07 +0000 (05:11 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 4 May 2012 05:11:07 +0000 (05:11 +0000)
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13273 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BasePeCoffLib/BasePeCoff.c

index 69c649a32a1bc404f1d4a583d682985332a8b242..e44f04c799308e6c298d682a78775e02034edd38 100644 (file)
@@ -71,6 +71,7 @@ PeCoffLoaderGetPeHeader (
   UINT32                SectionHeaderOffset;\r
   UINT32                Index;\r
   CHAR8                 BufferData;\r
+  UINTN                 NumberOfSections;\r
   EFI_IMAGE_SECTION_HEADER  SectionHeader;\r
 \r
   //\r
@@ -303,8 +304,15 @@ PeCoffLoaderGetPeHeader (
   //\r
   // Check each section field.\r
   //\r
-  SectionHeaderOffset = ImageContext->PeCoffHeaderOffset + sizeof (UINT32) + sizeof (EFI_IMAGE_FILE_HEADER) + Hdr.Pe32->FileHeader.SizeOfOptionalHeader;\r
-  for (Index = 0; Index < Hdr.Pe32->FileHeader.NumberOfSections; Index++) {\r
+  if (ImageContext->IsTeImage) {\r
+    SectionHeaderOffset = sizeof(EFI_TE_IMAGE_HEADER);\r
+    NumberOfSections    = (UINTN) (Hdr.Te->NumberOfSections);\r
+  } else {\r
+    SectionHeaderOffset = ImageContext->PeCoffHeaderOffset + sizeof (UINT32) + sizeof (EFI_IMAGE_FILE_HEADER) + Hdr.Pe32->FileHeader.SizeOfOptionalHeader;\r
+    NumberOfSections    = (UINTN) (Hdr.Pe32->FileHeader.NumberOfSections);\r
+  }\r
+\r
+  for (Index = 0; Index < NumberOfSections; Index++) {\r
     //\r
     // Read section header from file\r
     //\r