/** @file | |
Header file for Elf convert solution | |
Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR> | |
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. | |
**/ | |
#ifndef _ELF_CONVERT_H_ | |
#define _ELF_CONVERT_H_ | |
#include "elf_common.h" | |
#include "elf32.h" | |
#include "elf64.h" | |
// | |
// Externally defined variables | |
// | |
extern UINT32 mCoffOffset; | |
extern CHAR8 *mInImageName; | |
extern UINT32 mImageTimeStamp; | |
extern UINT8 *mCoffFile; | |
extern UINT32 mTableOffset; | |
extern UINT32 mOutImageType; | |
// | |
// Common EFI specific data. | |
// | |
#define ELF_HII_SECTION_NAME ".hii" | |
#define ELF_STRTAB_SECTION_NAME ".strtab" | |
#define MAX_COFF_ALIGNMENT 0x10000 | |
// | |
// Filter Types | |
// | |
typedef enum { | |
SECTION_TEXT, | |
SECTION_HII, | |
SECTION_DATA | |
} SECTION_FILTER_TYPES; | |
// | |
// FunctionTalbe | |
// | |
typedef struct { | |
VOID (*ScanSections) (); | |
BOOLEAN (*WriteSections) (SECTION_FILTER_TYPES FilterType); | |
VOID (*WriteRelocations) (); | |
VOID (*WriteDebug) (); | |
VOID (*SetImageSize) (); | |
VOID (*CleanUp) (); | |
} ELF_FUNCTION_TABLE; | |
// | |
// Common functions | |
// | |
VOID | |
CoffAddFixup ( | |
UINT32 Offset, | |
UINT8 Type | |
); | |
VOID | |
CoffAddFixupEntry ( | |
UINT16 Val | |
); | |
VOID | |
CreateSectionHeader ( | |
const CHAR8 *Name, | |
UINT32 Offset, | |
UINT32 Size, | |
UINT32 Flags | |
); | |
#endif |