/** @file | |
ELF library | |
Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef EFI_LIB_INTERNAL_H_ | |
#define EFI_LIB_INTERNAL_H_ | |
#include <Library/BaseLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include "ElfLib.h" | |
#include "ElfCommon.h" | |
#include "Elf32.h" | |
#include "Elf64.h" | |
#define ELF_NEXT_ENTRY(EntryType, Current, EntrySize) \ | |
((EntryType *) ((UINT8 *)Current + EntrySize)) | |
/** | |
Return the section header specified by Index. | |
@param ImageBase The image base. | |
@param Index The section index. | |
@return Pointer to the section header. | |
**/ | |
Elf32_Shdr * | |
GetElf32SectionByIndex ( | |
IN UINT8 *ImageBase, | |
IN UINT32 Index | |
); | |
/** | |
Return the section header specified by Index. | |
@param ImageBase The image base. | |
@param Index The section index. | |
@return Pointer to the section header. | |
**/ | |
Elf64_Shdr * | |
GetElf64SectionByIndex ( | |
IN UINT8 *ImageBase, | |
IN UINT32 Index | |
); | |
/** | |
Return the segment header specified by Index. | |
@param ImageBase The image base. | |
@param Index The segment index. | |
@return Pointer to the segment header. | |
**/ | |
Elf32_Phdr * | |
GetElf32SegmentByIndex ( | |
IN UINT8 *ImageBase, | |
IN UINT32 Index | |
); | |
/** | |
Return the segment header specified by Index. | |
@param ImageBase The image base. | |
@param Index The segment index. | |
@return Pointer to the segment header. | |
**/ | |
Elf64_Phdr * | |
GetElf64SegmentByIndex ( | |
IN UINT8 *ImageBase, | |
IN UINT32 Index | |
); | |
/** | |
Load ELF image which has 32-bit architecture | |
@param[in] ElfCt ELF image context pointer. | |
@retval EFI_SUCCESS ELF binary is loaded successfully. | |
@retval Others Loading ELF binary fails. | |
**/ | |
EFI_STATUS | |
LoadElf32Image ( | |
IN ELF_IMAGE_CONTEXT *ElfCt | |
); | |
/** | |
Load ELF image which has 64-bit architecture | |
@param[in] ImageBase Memory address of an image. | |
@param[out] EntryPoint The entry point of loaded ELF image. | |
@retval EFI_SUCCESS ELF binary is loaded successfully. | |
@retval Others Loading ELF binary fails. | |
**/ | |
EFI_STATUS | |
LoadElf64Image ( | |
IN ELF_IMAGE_CONTEXT *ElfCt | |
); | |
#endif |