VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/GenFw/ElfConvert.h

Last change on this file was 99404, checked in by vboxsync, 2 years ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette