/** @file ELF library Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef EFI_LIB_INTERNAL_H_ #define EFI_LIB_INTERNAL_H_ #include #include #include #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