]>
Commit | Line | Data |
---|---|---|
f51461c8 | 1 | /** @file\r |
97fa0ee9 | 2 | Header file for Elf convert solution\r |
f51461c8 | 3 | \r |
d78675d1 | 4 | Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r |
f51461c8 | 5 | \r |
2e351cbe | 6 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
f51461c8 LG |
7 | \r |
8 | **/\r | |
9 | \r | |
10 | #ifndef _ELF_CONVERT_H_\r | |
11 | #define _ELF_CONVERT_H_\r | |
12 | \r | |
13 | #include "elf_common.h"\r | |
14 | #include "elf32.h"\r | |
15 | #include "elf64.h"\r | |
16 | \r | |
17 | //\r | |
18 | // Externally defined variables\r | |
19 | //\r | |
20 | extern UINT32 mCoffOffset;\r | |
21 | extern CHAR8 *mInImageName;\r | |
22 | extern UINT32 mImageTimeStamp;\r | |
23 | extern UINT8 *mCoffFile;\r | |
24 | extern UINT32 mTableOffset;\r | |
25 | extern UINT32 mOutImageType;\r | |
d78675d1 | 26 | extern UINT32 mFileBufferSize;\r |
414cd2a4 | 27 | extern BOOLEAN mExportFlag;\r |
f51461c8 LG |
28 | \r |
29 | //\r | |
30 | // Common EFI specific data.\r | |
31 | //\r | |
32 | #define ELF_HII_SECTION_NAME ".hii"\r | |
621bb723 | 33 | #define ELF_STRTAB_SECTION_NAME ".strtab"\r |
54b1b57a | 34 | #define MAX_COFF_ALIGNMENT 0x10000\r |
414cd2a4 HLX |
35 | #define ELF_SYMBOL_SECTION_NAME ".symtab"\r |
36 | \r | |
37 | //\r | |
38 | // Platform Runtime Mechanism (PRM) specific data.\r | |
39 | //\r | |
40 | #define PRM_MODULE_EXPORT_SYMBOL_NUM 256\r | |
41 | \r | |
42 | // <to-do> to include PRM header directly once PrmPkg is in main repo\r | |
43 | #define PRM_HANDLER_NAME_MAXIMUM_LENGTH 128\r | |
44 | \r | |
45 | #define PRM_MODULE_EXPORT_DESCRIPTOR_NAME "PrmModuleExportDescriptor"\r | |
46 | #define PRM_MODULE_EXPORT_DESCRIPTOR_SIGNATURE SIGNATURE_64 ('P', 'R', 'M', '_', 'M', 'E', 'D', 'T')\r | |
47 | #define PRM_MODULE_EXPORT_REVISION 0x0\r | |
48 | \r | |
49 | //\r | |
50 | // Platform Runtime Mechanism (PRM) Export Descriptor Structures\r | |
51 | //\r | |
52 | #pragma pack(push, 1)\r | |
53 | \r | |
54 | typedef struct {\r | |
55 | EFI_GUID PrmHandlerGuid;\r | |
56 | CHAR8 PrmHandlerName[PRM_HANDLER_NAME_MAXIMUM_LENGTH];\r | |
57 | } PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT;\r | |
58 | \r | |
59 | typedef struct {\r | |
60 | UINT64 Signature;\r | |
61 | UINT16 Revision;\r | |
62 | UINT16 NumberPrmHandlers;\r | |
63 | EFI_GUID PlatformGuid;\r | |
64 | EFI_GUID ModuleGuid;\r | |
65 | } PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER;\r | |
66 | \r | |
67 | typedef struct {\r | |
68 | PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER Header;\r | |
69 | PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT PrmHandlerExportDescriptors[1];\r | |
70 | } PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT;\r | |
71 | \r | |
72 | #pragma pack(pop)\r | |
f51461c8 LG |
73 | \r |
74 | //\r | |
75 | // Filter Types\r | |
76 | //\r | |
77 | typedef enum {\r | |
78 | SECTION_TEXT,\r | |
79 | SECTION_HII,\r | |
414cd2a4 HLX |
80 | SECTION_DATA,\r |
81 | SECTION_SYMBOL\r | |
f7496d71 | 82 | \r |
f51461c8 LG |
83 | } SECTION_FILTER_TYPES;\r |
84 | \r | |
85 | //\r | |
fb0b35e0 | 86 | // FunctionTable\r |
f51461c8 LG |
87 | //\r |
88 | typedef struct {\r | |
89 | VOID (*ScanSections) ();\r | |
90 | BOOLEAN (*WriteSections) (SECTION_FILTER_TYPES FilterType);\r | |
91 | VOID (*WriteRelocations) ();\r | |
92 | VOID (*WriteDebug) ();\r | |
414cd2a4 | 93 | VOID (*WriteExport) ();\r |
f51461c8 LG |
94 | VOID (*SetImageSize) ();\r |
95 | VOID (*CleanUp) ();\r | |
f7496d71 | 96 | \r |
f51461c8 LG |
97 | } ELF_FUNCTION_TABLE;\r |
98 | \r | |
99 | //\r | |
100 | // Common functions\r | |
101 | //\r | |
102 | VOID\r | |
103 | CoffAddFixup (\r | |
104 | UINT32 Offset,\r | |
105 | UINT8 Type\r | |
106 | );\r | |
107 | \r | |
108 | VOID\r | |
109 | CoffAddFixupEntry (\r | |
110 | UINT16 Val\r | |
111 | );\r | |
112 | \r | |
113 | \r | |
114 | VOID\r | |
115 | CreateSectionHeader (\r | |
116 | const CHAR8 *Name,\r | |
117 | UINT32 Offset,\r | |
118 | UINT32 Size,\r | |
119 | UINT32 Flags\r | |
120 | );\r | |
121 | \r | |
122 | #endif\r |