23#define MACHO_PAGE_SIZE 4096U
28#define MACHO_ALIGN(x) ALIGN_VALUE((x), MACHO_PAGE_SIZE)
68 IN UINT32 HeaderOffset,
90 IN UINT32 HeaderOffset,
113 IN UINT32 HeaderOffset,
233 IN CONST CHAR8 *SegmentName
248 IN CONST CHAR8 *SegmentName
263 IN CONST CHAR8 *SegmentName
280 IN CONST CHAR8 *SectionName
297 IN CONST CHAR8 *SectionName
314 IN CONST CHAR8 *SectionName
330 IN CONST CHAR8 *SegmentName,
331 IN CONST CHAR8 *SectionName
347 IN CONST CHAR8 *SegmentName,
348 IN CONST CHAR8 *SectionName
364 IN CONST CHAR8 *SegmentName,
365 IN CONST CHAR8 *SectionName
554 IN CONST CHAR8 *Prefix
977 IN UINT64 LinkAddress,
994 IN UINT32 LinkAddress,
1011 IN UINT64 LinkAddress,
1031 OUT UINT32 *FileOffset,
1032 OUT UINT32 *MaxSize OPTIONAL
1051 OUT UINT32 *FileOffset,
1052 OUT UINT32 *MaxSize OPTIONAL
1071 OUT UINT32 *FileOffset,
1072 OUT UINT32 *MaxSize OPTIONAL
1091 OUT UINT32 *FileOffset,
1092 OUT UINT32 *MaxSize OPTIONAL
1103 IN CONST CHAR8 *Name
1114 IN CONST CHAR8 *Name
1127 IN CONST CHAR8 *SymbolName
1140 IN CONST CHAR8 *SymbolName
1157 IN CONST CHAR8 *SmcpName,
1158 IN UINTN ClassNameSize,
1159 OUT CHAR8 *ClassName
1170 IN CONST CHAR8 *VtableName
1185 IN CONST CHAR8 *ClassName,
1186 IN UINTN FunctionPrefixSize,
1187 OUT CHAR8 *FunctionPrefix
1204 IN CONST CHAR8 *MetaClassName,
1205 IN UINTN ClassNameSize,
1206 OUT CHAR8 *ClassName
1221 IN CONST CHAR8 *ClassName,
1222 IN UINTN VtableNameSize,
1223 OUT CHAR8 *VtableName
1238 IN CONST CHAR8 *ClassName,
1239 IN UINTN VtableNameSize,
1240 OUT CHAR8 *VtableName
1255 IN CONST CHAR8 *ClassName,
1256 IN UINTN FinalSymbolNameSize,
1257 OUT CHAR8 *FinalSymbolName
1268 IN CONST CHAR8 *SymbolName
1279 IN CONST CHAR8 *Name
1340 IN CONST CHAR8 *SmcpName,
1358 IN CONST CHAR8 *SmcpName,
1376 IN CONST CHAR8 *SmcpName,
1461 OUT CONST CHAR8 **StringTable OPTIONAL,
1463 OUT UINT32 *NumLocalSymbols OPTIONAL,
1465 OUT UINT32 *NumExternalSymbols OPTIONAL,
1467 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1489 OUT CONST CHAR8 **StringTable OPTIONAL,
1490 OUT CONST
MACH_NLIST **LocalSymbols OPTIONAL,
1491 OUT UINT32 *NumLocalSymbols OPTIONAL,
1492 OUT CONST
MACH_NLIST **ExternalSymbols OPTIONAL,
1493 OUT UINT32 *NumExternalSymbols OPTIONAL,
1494 OUT CONST
MACH_NLIST **UndefinedSymbols OPTIONAL,
1495 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1517 OUT CONST CHAR8 **StringTable OPTIONAL,
1519 OUT UINT32 *NumLocalSymbols OPTIONAL,
1521 OUT UINT32 *NumExternalSymbols OPTIONAL,
1523 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1539 OUT UINT32 *MaxSize OPTIONAL
1557 OUT UINT8 *Destination,
1558 IN UINT32 DestinationSize,
1560 OUT UINT64 *FileOffset OPTIONAL
1624 IN UINT32 BufferSize,
1627 OUT UINT32 *FatOffset,
1643 IN OUT UINT8 **FileData,
1644 IN OUT UINT32 *FileSize,
1659 IN OUT UINT8 **FileData,
1660 IN OUT UINT32 *FileSize
1674 IN OUT UINT8 **FileData,
1675 IN OUT UINT32 *FileSize
UINT32 MACH_LOAD_COMMAND_TYPE
MACH_SEGMENT_COMMAND_64 * MachoGetNextSegment64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_SEGMENT_COMMAND_64 *Segment OPTIONAL)
BOOLEAN MachoSymbolIsSection32(IN CONST MACH_NLIST *Symbol)
BOOLEAN MachoRelocateSymbol64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 LinkAddress, IN OUT MACH_NLIST_64 *Symbol)
UINT64 MachoRuntimeGetEntryAddress(IN VOID *Image)
BOOLEAN MachoInitializeContext64(OUT OC_MACHO_CONTEXT *Context, IN VOID *FileData, IN UINT32 FileSize, IN UINT32 HeaderOffset, IN UINT32 InnerSize)
MACH_NLIST_ANY * MachoGetLocalDefinedSymbolByName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
BOOLEAN MachoSymbolNameIsCxx(IN CONST CHAR8 *Name)
BOOLEAN MachoSymbolNameIsPadslot(IN CONST CHAR8 *Name)
BOOLEAN MachoRelocateSymbol32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 LinkAddress, IN OUT MACH_NLIST *Symbol)
MACH_NLIST_64 * MachoGetMetaclassSymbolFromSmcpSymbol64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Smcp)
BOOLEAN MachoGetClassNameFromMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *MetaClassName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
MACH_NLIST_64 * MachoGetSymbolByIndex64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
UINT32 MachoGetSymbolTable32(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST **SymbolTable, OUT CONST CHAR8 **StringTable OPTIONAL, OUT CONST MACH_NLIST **LocalSymbols OPTIONAL, OUT UINT32 *NumLocalSymbols OPTIONAL, OUT CONST MACH_NLIST **ExternalSymbols OPTIONAL, OUT UINT32 *NumExternalSymbols OPTIONAL, OUT CONST MACH_NLIST **UndefinedSymbols OPTIONAL, OUT UINT32 *NumUndefinedSymbols OPTIONAL)
UINT32 MachoGetInnerSize(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoRelocateSymbol(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 LinkAddress, IN OUT MACH_NLIST_ANY *Symbol)
BOOLEAN MachoGetClassNameFromSuperMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
MACH_SECTION * MachoGetSectionByName32(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND *Segment, IN CONST CHAR8 *SectionName)
MACH_SECTION_64 * MachoGetSegmentSectionByName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName, IN CONST CHAR8 *SectionName)
BOOLEAN MachoSymbolIsLocalDefined32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Symbol)
CONST CHAR8 * MachoGetSymbolName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Symbol)
UINT32 MachoGetFileSize(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoSymbolIsLocalDefined(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
MACH_HEADER_64 * MachoGetMachHeader64(IN OUT OC_MACHO_CONTEXT *Context)
MACH_SECTION_ANY * MachoGetSectionByName(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_ANY *Segment, IN CONST CHAR8 *SectionName)
CONST CHAR8 * MachoGetIndirectSymbolName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
CONST CHAR8 * MachoGetClassNameFromVtableName(IN CONST CHAR8 *VtableName)
MACH_SECTION * MachoGetNextSection32(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND *Segment, IN MACH_SECTION *Section OPTIONAL)
BOOLEAN MachoGetSymbolByRelocationOffset32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Address, OUT MACH_NLIST **Symbol)
BOOLEAN MachoSymbolIsLocalDefined64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
MACH_SEGMENT_COMMAND * MachoGetSegmentByName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName)
MACH_NLIST_64 * MachoGetLocalDefinedSymbolByName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
BOOLEAN MachoGetVtableSymbolsFromSmcp(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, OUT CONST MACH_NLIST_ANY **Vtable, OUT CONST MACH_NLIST_ANY **MetaVtable)
CONST CHAR8 * MachoGetIndirectSymbolName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
UINT32 MachoGetSymbolTable64(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_64 **SymbolTable, OUT CONST CHAR8 **StringTable OPTIONAL, OUT CONST MACH_NLIST_64 **LocalSymbols OPTIONAL, OUT UINT32 *NumLocalSymbols OPTIONAL, OUT CONST MACH_NLIST_64 **ExternalSymbols OPTIONAL, OUT UINT32 *NumExternalSymbols OPTIONAL, OUT CONST MACH_NLIST_64 **UndefinedSymbols OPTIONAL, OUT UINT32 *NumUndefinedSymbols OPTIONAL)
MACH_NLIST * MachoGetSymbolByIndex32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
EFI_STATUS FatFilterArchitectureByType(IN OUT UINT8 **FileData, IN OUT UINT32 *FileSize, IN MACH_CPU_TYPE CpuType)
EFI_STATUS FatFilterArchitecture64(IN OUT UINT8 **FileData, IN OUT UINT32 *FileSize)
MACH_SECTION * MachoGetSegmentSectionByName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName, IN CONST CHAR8 *SectionName)
BOOLEAN MachoGetFunctionPrefixFromClassName(IN CONST CHAR8 *ClassName, IN UINTN FunctionPrefixSize, OUT CHAR8 *FunctionPrefix)
BOOLEAN MachoInitializeContext32(OUT OC_MACHO_CONTEXT *Context, IN VOID *FileData, IN UINT32 FileSize, IN UINT32 HeaderOffset, IN UINT32 InnerSize)
UINT64 MachoGetLastAddress(IN OUT OC_MACHO_CONTEXT *Context)
VOID * MachoGetFileData(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoSymbolGetFileOffset32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Symbol, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
MACH_HEADER * MachoGetMachHeader32(IN OUT OC_MACHO_CONTEXT *Context)
CONST CHAR8 * MachoGetSymbolName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoGetSymbolByExternRelocationOffset(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT MACH_NLIST_ANY **Symbol)
VOID * MachoGetFilePointerByAddress(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *MaxSize OPTIONAL)
MACH_SEGMENT_COMMAND_ANY * MachoGetNextSegment(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_SEGMENT_COMMAND_ANY *Segment OPTIONAL)
BOOLEAN MachoGetFinalSymbolNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN FinalSymbolNameSize, OUT CHAR8 *FinalSymbolName)
MACH_SECTION_64 * MachoGetNextSection64(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_64 *Segment, IN MACH_SECTION_64 *Section OPTIONAL)
BOOLEAN MachoInitialiseSymtabsExternal(IN OUT OC_MACHO_CONTEXT *Context, IN OC_MACHO_CONTEXT *SymsContext)
MACH_SECTION * MachoGetSectionByAddress32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Address)
UINT32 MachoExpandImage(IN OC_MACHO_CONTEXT *Context, OUT UINT8 *Destination, IN UINT32 DestinationSize, IN BOOLEAN Strip, OUT UINT64 *FileOffset OPTIONAL)
MACH_SECTION_64 * MachoGetSectionByName64(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_64 *Segment, IN CONST CHAR8 *SectionName)
MACH_NLIST_ANY * MachoGetMetaclassSymbolFromSmcpSymbol(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Smcp)
BOOLEAN MachoGetVtableSymbolsFromSmcp32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, OUT CONST MACH_NLIST **Vtable, OUT CONST MACH_NLIST **MetaVtable)
MACH_SECTION_64 * MachoGetSectionByAddress64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address)
CONST CHAR8 * MachoGetIndirectSymbolName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Symbol)
BOOLEAN MachoGetSymbolByExternRelocationOffset32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Address, OUT MACH_NLIST **Symbol)
MACH_SEGMENT_COMMAND * MachoGetNextSegment32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_SEGMENT_COMMAND *Segment OPTIONAL)
BOOLEAN MachoSymbolIsSection64(IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoSymbolNameIsMetaclassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SymbolName)
MACH_HEADER_ANY * MachoGetMachHeader(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoIsSymbolValueInRange64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoInitializeContext(OUT OC_MACHO_CONTEXT *Context, IN VOID *FileData, IN UINT32 FileSize, IN UINT32 HeaderOffset, IN UINT32 InnerSize, IN BOOLEAN Is32Bit)
UINT32 MachoGetVmSize(IN OUT OC_MACHO_CONTEXT *Context)
UINT32 MachoGetSymbolTable(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_ANY **SymbolTable, OUT CONST CHAR8 **StringTable OPTIONAL, OUT CONST MACH_NLIST_ANY **LocalSymbols OPTIONAL, OUT UINT32 *NumLocalSymbols OPTIONAL, OUT CONST MACH_NLIST_ANY **ExternalSymbols OPTIONAL, OUT UINT32 *NumExternalSymbols OPTIONAL, OUT CONST MACH_NLIST_ANY **UndefinedSymbols OPTIONAL, OUT UINT32 *NumUndefinedSymbols OPTIONAL)
MACH_NLIST * MachoGetLocalDefinedSymbolByName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
BOOLEAN MachoRelocationIsPairIntel64(IN UINT8 Type)
MACH_NLIST_ANY * MachoGetSymbolByIndex(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoPreserveRelocationIntel64(IN UINT8 Type)
BOOLEAN MachoSymbolIsDefined64(IN CONST MACH_NLIST_64 *Symbol)
UINT32 MachoGetExpandedImageSize(IN OC_MACHO_CONTEXT *Context)
BOOLEAN MachoRelocationIsPairIntel32(IN UINT8 Type)
MACH_SECTION_64 * MachoGetSectionByIndex64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoIsRelocationPairTypeIntel64(IN UINT8 Type)
BOOLEAN MachoIsSymbolValueInRange(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
CONST CHAR8 * MachoGetSymbolName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
BOOLEAN MachoGetSymbolByRelocationOffset64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT MACH_NLIST_64 **Symbol)
MACH_SECTION_ANY * MachoGetNextSection(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_ANY *Segment, IN MACH_SECTION_ANY *Section OPTIONAL)
BOOLEAN MachoSymbolGetDirectFileOffset(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
BOOLEAN MachoSymbolNameIsVtable(IN CONST CHAR8 *SymbolName)
BOOLEAN MachoSymbolIsDefined32(IN CONST MACH_NLIST *Symbol)
BOOLEAN MachoGetVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
EFI_STATUS FatFilterArchitecture32(IN OUT UINT8 **FileData, IN OUT UINT32 *FileSize)
MACH_SEGMENT_COMMAND_64 * MachoGetSegmentByName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName)
EFI_STATUS FatGetArchitectureOffset(IN CONST UINT8 *Buffer, IN UINT32 BufferSize, IN UINT32 FullSize, IN MACH_CPU_TYPE CpuType, OUT UINT32 *FatOffset, OUT UINT32 *FatSize)
MACH_NLIST * MachoGetMetaclassSymbolFromSmcpSymbol32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Smcp)
BOOLEAN MachoIsSymbolValueInRange32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST *Symbol)
BOOLEAN MachoSymbolNameIsSmcp(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SymbolName)
BOOLEAN MachoSymbolGetFileOffset64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
BOOLEAN MachoGetVtableSymbolsFromSmcp64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, OUT CONST MACH_NLIST_64 **Vtable, OUT CONST MACH_NLIST_64 **MetaVtable)
MACH_SEGMENT_COMMAND_ANY * MachoGetSegmentByName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName)
MACH_SECTION * MachoGetSectionByIndex32(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoSymbolIsDefined(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
BOOLEAN MachoSymbolNameIsPureVirtual(IN CONST CHAR8 *Name)
MACH_SECTION_ANY * MachoGetSectionByIndex(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
MACH_SECTION_ANY * MachoGetSegmentSectionByName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName, IN CONST CHAR8 *SectionName)
MACH_UUID_COMMAND * MachoGetUuid(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoSymbolGetFileOffset(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
BOOLEAN MachoGetMetaVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
BOOLEAN MachoGetSymbolByExternRelocationOffset64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT MACH_NLIST_64 **Symbol)
MACH_LOAD_COMMAND * MachoGetNextCommand(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_LOAD_COMMAND_TYPE LoadCommandType, IN CONST MACH_LOAD_COMMAND *LoadCommand OPTIONAL)
BOOLEAN MachoMergeSegments(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Prefix)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
MACH_NLIST_ANY * SymbolTable
MACH_RELOCATION_INFO * ExternRelocations
MACH_HEADER_ANY * MachHeader
MACH_DYSYMTAB_COMMAND * DySymtab
MACH_RELOCATION_INFO * LocalRelocations
MACH_SYMTAB_COMMAND * Symtab