SectionHeader->PointerToRawData -= TeStrippedOffset;\r
}\r
\r
-/**\r
- Retrieves the magic value from the PE/COFF header.\r
-\r
- @param Hdr The buffer in which to return the PE32, PE32+, or TE header.\r
-\r
- @return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32\r
- @return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+\r
-\r
-**/\r
-UINT16\r
-PeCoffLoaderGetPeHeaderMagicValue (\r
- IN EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr\r
- )\r
-{\r
- //\r
- // NOTE: Some versions of Linux ELILO for Itanium have an incorrect magic value\r
- // in the PE/COFF Header. If the MachineType is Itanium(IA64) and the\r
- // Magic value in the OptionalHeader is EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC\r
- // then override the returned value to EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC\r
- //\r
- if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 && Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
- return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;\r
- }\r
- //\r
- // Return the magic value from the PC/COFF Optional Header\r
- //\r
- return Hdr.Pe32->OptionalHeader.Magic;\r
-}\r
-\r
-\r
/**\r
Retrieves the PE or TE Header from a PE/COFF or TE image.\r
\r
EFI_IMAGE_DOS_HEADER DosHdr;\r
UINTN Size;\r
UINTN ReadSize;\r
- UINT16 Magic;\r
UINT32 SectionHeaderOffset;\r
UINT32 Index;\r
UINT32 HeaderWithoutDataDir;\r
ImageContext->IsTeImage = FALSE;\r
ImageContext->Machine = Hdr.Pe32->FileHeader.Machine;\r
\r
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);\r
-\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// 1. Check OptionalHeader.NumberOfRvaAndSizes filed.\r
//\r
ImageContext->SectionAlignment = Hdr.Pe32->OptionalHeader.SectionAlignment;\r
ImageContext->SizeOfHeaders = Hdr.Pe32->OptionalHeader.SizeOfHeaders;\r
\r
- } else if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {\r
+ } else if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {\r
//\r
// 1. Check FileHeader.NumberOfRvaAndSizes filed.\r
//\r
EFI_IMAGE_SECTION_HEADER SectionHeader;\r
EFI_IMAGE_DEBUG_DIRECTORY_ENTRY DebugEntry;\r
UINT32 NumberOfRvaAndSizes;\r
- UINT16 Magic;\r
UINT32 TeStrippedOffset;\r
\r
if (ImageContext == NULL) {\r
return Status;\r
}\r
\r
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);\r
-\r
//\r
// Retrieve the base address of the image\r
//\r
if (!(ImageContext->IsTeImage)) {\r
TeStrippedOffset = 0;\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
}\r
\r
if (!(ImageContext->IsTeImage)) {\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
CHAR8 *FixupData;\r
PHYSICAL_ADDRESS BaseAddress;\r
UINT32 NumberOfRvaAndSizes;\r
- UINT16 Magic;\r
UINT32 TeStrippedOffset;\r
\r
ASSERT (ImageContext != NULL);\r
if (!(ImageContext->IsTeImage)) {\r
Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)ImageContext->ImageAddress + ImageContext->PeCoffHeaderOffset);\r
TeStrippedOffset = 0;\r
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);\r
\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
UINTN Size;\r
UINT32 TempDebugEntryRva;\r
UINT32 NumberOfRvaAndSizes;\r
- UINT16 Magic;\r
EFI_IMAGE_RESOURCE_DIRECTORY *ResourceDirectory;\r
EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *ResourceDirectoryEntry;\r
EFI_IMAGE_RESOURCE_DIRECTORY_STRING *ResourceDirectoryString;\r
//\r
// Get image's entry point\r
//\r
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);\r
if (!(ImageContext->IsTeImage)) {\r
//\r
// Sizes of AddressOfEntryPoint are different so we need to do this safely\r
//\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
// the optional header to verify a desired directory entry is there.\r
//\r
if (!(ImageContext->IsTeImage)) {\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
//\r
ImageContext->HiiResourceData = 0;\r
if (!(ImageContext->IsTeImage)) {\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r
CHAR8 *FixupData;\r
UINTN Adjust;\r
RETURN_STATUS Status;\r
- UINT16 Magic;\r
\r
OldBase = (CHAR8 *)((UINTN)ImageBase);\r
NewBase = (CHAR8 *)((UINTN)VirtImageBase);\r
return ;\r
}\r
\r
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);\r
-\r
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
//\r
// Use PE32 offset\r
//\r