From 878ddf1fc3540a715f63594ed22b6929e881afb4 Mon Sep 17 00:00:00 2001 From: bbahnsen Date: Fri, 21 Apr 2006 22:54:32 +0000 Subject: Initial import. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524 --- .../BasePeCoffGetEntryPointLib.mbd | 30 ++++++++++++ .../BasePeCoffGetEntryPointLib.msa | 43 +++++++++++++++++ .../PeCoffGetEntryPoint.c | 54 ++++++++++++++++++++++ .../Library/BasePeCoffGetEntryPointLib/build.xml | 47 +++++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.mbd create mode 100644 MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa create mode 100644 MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c create mode 100644 MdePkg/Library/BasePeCoffGetEntryPointLib/build.xml (limited to 'MdePkg/Library/BasePeCoffGetEntryPointLib') diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.mbd b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.mbd new file mode 100644 index 0000000000..8bb2641d77 --- /dev/null +++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.mbd @@ -0,0 +1,30 @@ + + + + + BasePeCoffGetEntryPointLib + be490364-73d2-420d-950e-f6450ca75dfb + 0 + FIX ME! + Copyright (c) 2004 - 2005, Intel Corporation + + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + 2006-03-09 23:16 + 2006-03-19 15:17 + + diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa new file mode 100644 index 0000000000..7a619df39b --- /dev/null +++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa @@ -0,0 +1,43 @@ + + + + + BasePeCoffGetEntryPointLib + BASE + LIBRARY + be490364-73d2-420d-950e-f6450ca75dfb + 0 + Component description file for the PEI library. + FIX ME! + Copyright (c) 2004 - 2005, Intel Corporation + + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + 0 + 2006-03-09 23:16 + 2006-03-19 15:17 + + + PeCoffGetEntryPointLib + + + PeCoffGetEntryPoint.c + + + MdePkg + + diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c new file mode 100644 index 0000000000..d5ff7db009 --- /dev/null +++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c @@ -0,0 +1,54 @@ +/** @file + Tiano PE/COFF loader. + + Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Module Name: PeCoffGetEntryPoint.c + +**/ + + + +/** + Loads a PE/COFF image into memory. + + @param Pe32Data Pointer to a PE/COFF Image + + @param EntryPoint Pointer to the entry point of the PE/COFF image + + @retval EFI_SUCCESS if the EntryPoint was returned + @retval EFI_INVALID_PARAMETER if the EntryPoint could not be found from Pe32Data + +**/ +RETURN_STATUS +EFIAPI +PeCoffLoaderGetEntryPoint ( + IN VOID *Pe32Data, + IN OUT VOID **EntryPoint + ) +{ + EFI_IMAGE_DOS_HEADER *DosHeader; + EFI_IMAGE_NT_HEADERS *PeHeader; + + DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data; + if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) { + // + // DOS image header is present, so read the PE header after the DOS image header + // + PeHeader = (EFI_IMAGE_NT_HEADERS *) ((UINTN) Pe32Data + (UINTN) ((DosHeader->e_lfanew) & 0x0ffff)); + } else { + // + // DOS image header is not present, so PE header is at the image base + // + PeHeader = (EFI_IMAGE_NT_HEADERS *) Pe32Data; + } + *EntryPoint = (VOID *) ((UINTN) Pe32Data + (UINTN) (PeHeader->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff)); + return RETURN_SUCCESS; +} diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/build.xml b/MdePkg/Library/BasePeCoffGetEntryPointLib/build.xml new file mode 100644 index 0000000000..4d74c32630 --- /dev/null +++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/build.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3