X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=BaseTools%2FSource%2FC%2FGenFw%2FElfConvert.h;h=801e8de4a2ed2d365ac17bdf8fb112845b655c65;hb=HEAD;hp=fc8c63f34bdcf4fb3d7acc908c72f0d364c0e3b1;hpb=d78675d1956aaae05d5db872eddd4119a01d0ecb;p=mirror_edk2.git diff --git a/BaseTools/Source/C/GenFw/ElfConvert.h b/BaseTools/Source/C/GenFw/ElfConvert.h index fc8c63f34b..6ab4605227 100644 --- a/BaseTools/Source/C/GenFw/ElfConvert.h +++ b/BaseTools/Source/C/GenFw/ElfConvert.h @@ -3,13 +3,7 @@ Header file for Elf convert solution Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
-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. +SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -30,6 +24,7 @@ extern UINT8 *mCoffFile; extern UINT32 mTableOffset; extern UINT32 mOutImageType; extern UINT32 mFileBufferSize; +extern BOOLEAN mExportFlag; // // Common EFI specific data. @@ -37,6 +32,44 @@ extern UINT32 mFileBufferSize; #define ELF_HII_SECTION_NAME ".hii" #define ELF_STRTAB_SECTION_NAME ".strtab" #define MAX_COFF_ALIGNMENT 0x10000 +#define ELF_SYMBOL_SECTION_NAME ".symtab" + +// +// Platform Runtime Mechanism (PRM) specific data. +// +#define PRM_MODULE_EXPORT_SYMBOL_NUM 256 + +// to include PRM header directly once PrmPkg is in main repo +#define PRM_HANDLER_NAME_MAXIMUM_LENGTH 128 + +#define PRM_MODULE_EXPORT_DESCRIPTOR_NAME "PrmModuleExportDescriptor" +#define PRM_MODULE_EXPORT_DESCRIPTOR_SIGNATURE SIGNATURE_64 ('P', 'R', 'M', '_', 'M', 'E', 'D', 'T') +#define PRM_MODULE_EXPORT_REVISION 0x0 + +// +// Platform Runtime Mechanism (PRM) Export Descriptor Structures +// +#pragma pack(push, 1) + +typedef struct { + EFI_GUID PrmHandlerGuid; + CHAR8 PrmHandlerName[PRM_HANDLER_NAME_MAXIMUM_LENGTH]; +} PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT; + +typedef struct { + UINT64 Signature; + UINT16 Revision; + UINT16 NumberPrmHandlers; + EFI_GUID PlatformGuid; + EFI_GUID ModuleGuid; +} PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER; + +typedef struct { + PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER Header; + PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT PrmHandlerExportDescriptors[1]; +} PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT; + +#pragma pack(pop) // // Filter Types @@ -44,21 +77,23 @@ extern UINT32 mFileBufferSize; typedef enum { SECTION_TEXT, SECTION_HII, - SECTION_DATA - + SECTION_DATA, + SECTION_SYMBOL + } SECTION_FILTER_TYPES; // -// FunctionTalbe +// FunctionTable // typedef struct { VOID (*ScanSections) (); BOOLEAN (*WriteSections) (SECTION_FILTER_TYPES FilterType); VOID (*WriteRelocations) (); VOID (*WriteDebug) (); + VOID (*WriteExport) (); VOID (*SetImageSize) (); VOID (*CleanUp) (); - + } ELF_FUNCTION_TABLE; //