OpenCore  1.0.5
OpenCore Bootloader
Loading...
Searching...
No Matches
OcMachoLib.h
Go to the documentation of this file.
1
15#ifndef OC_MACHO_LIB_H
16#define OC_MACHO_LIB_H
17
19
23#define MACHO_PAGE_SIZE 4096U
24
28#define MACHO_ALIGN(x) ALIGN_VALUE((x), MACHO_PAGE_SIZE)
29
49
63BOOLEAN
65 OUT OC_MACHO_CONTEXT *Context,
66 IN VOID *FileData,
67 IN UINT32 FileSize,
68 IN UINT32 HeaderOffset,
69 IN UINT32 InnerSize
70 );
71
85BOOLEAN
87 OUT OC_MACHO_CONTEXT *Context,
88 IN VOID *FileData,
89 IN UINT32 FileSize,
90 IN UINT32 HeaderOffset,
91 IN UINT32 InnerSize
92 );
93
108BOOLEAN
110 OUT OC_MACHO_CONTEXT *Context,
111 IN VOID *FileData,
112 IN UINT32 FileSize,
113 IN UINT32 HeaderOffset,
114 IN UINT32 InnerSize,
115 IN BOOLEAN Is32Bit
116 );
117
126 IN OUT OC_MACHO_CONTEXT *Context
127 );
128
135UINT32
137 IN OUT OC_MACHO_CONTEXT *Context
138 );
139
148 IN OUT OC_MACHO_CONTEXT *Context
149 );
150
159 IN OUT OC_MACHO_CONTEXT *Context
160 );
161
168VOID *
170 IN OUT OC_MACHO_CONTEXT *Context
171 );
172
179UINT32
181 IN OUT OC_MACHO_CONTEXT *Context
182 );
183
190UINT32
192 IN OUT OC_MACHO_CONTEXT *Context
193 );
194
203UINT64
205 IN OUT OC_MACHO_CONTEXT *Context
206 );
207
218 IN OUT OC_MACHO_CONTEXT *Context
219 );
220
232 IN OUT OC_MACHO_CONTEXT *Context,
233 IN CONST CHAR8 *SegmentName
234 );
235
247 IN OUT OC_MACHO_CONTEXT *Context,
248 IN CONST CHAR8 *SegmentName
249 );
250
262 IN OUT OC_MACHO_CONTEXT *Context,
263 IN CONST CHAR8 *SegmentName
264 );
265
278 IN OUT OC_MACHO_CONTEXT *Context,
279 IN MACH_SEGMENT_COMMAND_ANY *Segment,
280 IN CONST CHAR8 *SectionName
281 );
282
295 IN OUT OC_MACHO_CONTEXT *Context,
296 IN MACH_SEGMENT_COMMAND *Segment,
297 IN CONST CHAR8 *SectionName
298 );
299
312 IN OUT OC_MACHO_CONTEXT *Context,
313 IN MACH_SEGMENT_COMMAND_64 *Segment,
314 IN CONST CHAR8 *SectionName
315 );
316
329 IN OUT OC_MACHO_CONTEXT *Context,
330 IN CONST CHAR8 *SegmentName,
331 IN CONST CHAR8 *SectionName
332 );
333
346 IN OUT OC_MACHO_CONTEXT *Context,
347 IN CONST CHAR8 *SegmentName,
348 IN CONST CHAR8 *SectionName
349 );
350
363 IN OUT OC_MACHO_CONTEXT *Context,
364 IN CONST CHAR8 *SegmentName,
365 IN CONST CHAR8 *SectionName
366 );
367
380 IN OUT OC_MACHO_CONTEXT *Context,
381 IN CONST MACH_SEGMENT_COMMAND_ANY *Segment OPTIONAL
382 );
383
396 IN OUT OC_MACHO_CONTEXT *Context,
397 IN CONST MACH_SEGMENT_COMMAND *Segment OPTIONAL
398 );
399
412 IN OUT OC_MACHO_CONTEXT *Context,
413 IN CONST MACH_SEGMENT_COMMAND_64 *Segment OPTIONAL
414 );
415
428 IN OUT OC_MACHO_CONTEXT *Context,
429 IN MACH_SEGMENT_COMMAND_ANY *Segment,
430 IN MACH_SECTION_ANY *Section OPTIONAL
431 );
432
445 IN OUT OC_MACHO_CONTEXT *Context,
446 IN MACH_SEGMENT_COMMAND *Segment,
447 IN MACH_SECTION *Section OPTIONAL
448 );
449
462 IN OUT OC_MACHO_CONTEXT *Context,
463 IN MACH_SEGMENT_COMMAND_64 *Segment,
464 IN MACH_SECTION_64 *Section OPTIONAL
465 );
466
478 IN OUT OC_MACHO_CONTEXT *Context,
479 IN UINT32 Index
480 );
481
493 IN OUT OC_MACHO_CONTEXT *Context,
494 IN UINT32 Index
495 );
496
508 IN OUT OC_MACHO_CONTEXT *Context,
509 IN UINT32 Index
510 );
511
523 IN OUT OC_MACHO_CONTEXT *Context,
524 IN UINT32 Address
525 );
526
538 IN OUT OC_MACHO_CONTEXT *Context,
539 IN UINT64 Address
540 );
541
551BOOLEAN
553 IN OUT OC_MACHO_CONTEXT *Context,
554 IN CONST CHAR8 *Prefix
555 );
556
563BOOLEAN
565 IN CONST MACH_NLIST *Symbol
566 );
567
574BOOLEAN
576 IN CONST MACH_NLIST_64 *Symbol
577 );
578
586BOOLEAN
588 IN OUT OC_MACHO_CONTEXT *Context,
589 IN CONST MACH_NLIST_ANY *Symbol
590 );
591
598BOOLEAN
600 IN CONST MACH_NLIST *Symbol
601 );
602
609BOOLEAN
611 IN CONST MACH_NLIST_64 *Symbol
612 );
613
621BOOLEAN
623 IN OUT OC_MACHO_CONTEXT *Context,
624 IN CONST MACH_NLIST_ANY *Symbol
625 );
626
634BOOLEAN
636 IN OUT OC_MACHO_CONTEXT *Context,
637 IN CONST MACH_NLIST *Symbol
638 );
639
647BOOLEAN
649 IN OUT OC_MACHO_CONTEXT *Context,
650 IN CONST MACH_NLIST_64 *Symbol
651 );
652
662 IN OUT OC_MACHO_CONTEXT *Context,
663 IN CONST CHAR8 *Name
664 );
665
675 IN OUT OC_MACHO_CONTEXT *Context,
676 IN CONST CHAR8 *Name
677 );
678
688 IN OUT OC_MACHO_CONTEXT *Context,
689 IN CONST CHAR8 *Name
690 );
691
703 IN OUT OC_MACHO_CONTEXT *Context,
704 IN UINT32 Index
705 );
706
718 IN OUT OC_MACHO_CONTEXT *Context,
719 IN UINT32 Index
720 );
721
733 IN OUT OC_MACHO_CONTEXT *Context,
734 IN UINT32 Index
735 );
736
746CONST CHAR8 *
748 IN OUT OC_MACHO_CONTEXT *Context,
749 IN CONST MACH_NLIST_ANY *Symbol
750 );
751
761CONST CHAR8 *
763 IN OUT OC_MACHO_CONTEXT *Context,
764 IN CONST MACH_NLIST *Symbol
765 );
766
776CONST CHAR8 *
778 IN OUT OC_MACHO_CONTEXT *Context,
779 IN CONST MACH_NLIST_64 *Symbol
780 );
781
791CONST CHAR8 *
793 IN OUT OC_MACHO_CONTEXT *Context,
794 IN CONST MACH_NLIST_ANY *Symbol
795 );
796
806CONST CHAR8 *
808 IN OUT OC_MACHO_CONTEXT *Context,
809 IN CONST MACH_NLIST *Symbol
810 );
811
821CONST CHAR8 *
823 IN OUT OC_MACHO_CONTEXT *Context,
824 IN CONST MACH_NLIST_64 *Symbol
825 );
826
835BOOLEAN
837 IN OUT OC_MACHO_CONTEXT *Context,
838 IN CONST MACH_NLIST_ANY *Symbol
839 );
840
849BOOLEAN
851 IN OUT OC_MACHO_CONTEXT *Context,
852 IN CONST MACH_NLIST *Symbol
853 );
854
863BOOLEAN
865 IN OUT OC_MACHO_CONTEXT *Context,
866 IN CONST MACH_NLIST_64 *Symbol
867 );
868
881BOOLEAN
883 IN OUT OC_MACHO_CONTEXT *Context,
884 IN UINT32 Address,
885 OUT MACH_NLIST **Symbol
886 );
887
900BOOLEAN
902 IN OUT OC_MACHO_CONTEXT *Context,
903 IN UINT64 Address,
904 OUT MACH_NLIST_64 **Symbol
905 );
906
919BOOLEAN
921 IN OUT OC_MACHO_CONTEXT *Context,
922 IN UINT64 Address,
923 OUT MACH_NLIST_ANY **Symbol
924 );
925
938BOOLEAN
940 IN OUT OC_MACHO_CONTEXT *Context,
941 IN UINT32 Address,
942 OUT MACH_NLIST **Symbol
943 );
944
957BOOLEAN
959 IN OUT OC_MACHO_CONTEXT *Context,
960 IN UINT64 Address,
961 OUT MACH_NLIST_64 **Symbol
962 );
963
974BOOLEAN
976 IN OUT OC_MACHO_CONTEXT *Context,
977 IN UINT64 LinkAddress,
978 IN OUT MACH_NLIST_ANY *Symbol
979 );
980
991BOOLEAN
993 IN OUT OC_MACHO_CONTEXT *Context,
994 IN UINT32 LinkAddress,
995 IN OUT MACH_NLIST *Symbol
996 );
997
1008BOOLEAN
1010 IN OUT OC_MACHO_CONTEXT *Context,
1011 IN UINT64 LinkAddress,
1012 IN OUT MACH_NLIST_64 *Symbol
1013 );
1014
1027BOOLEAN
1029 IN OUT OC_MACHO_CONTEXT *Context,
1030 IN CONST MACH_NLIST *Symbol,
1031 OUT UINT32 *FileOffset,
1032 OUT UINT32 *MaxSize OPTIONAL
1033 );
1034
1047BOOLEAN
1049 IN OUT OC_MACHO_CONTEXT *Context,
1050 IN CONST MACH_NLIST_64 *Symbol,
1051 OUT UINT32 *FileOffset,
1052 OUT UINT32 *MaxSize OPTIONAL
1053 );
1054
1067BOOLEAN
1069 IN OUT OC_MACHO_CONTEXT *Context,
1070 IN CONST MACH_NLIST_ANY *Symbol,
1071 OUT UINT32 *FileOffset,
1072 OUT UINT32 *MaxSize OPTIONAL
1073 );
1074
1087BOOLEAN
1089 IN OUT OC_MACHO_CONTEXT *Context,
1090 IN UINT64 Address,
1091 OUT UINT32 *FileOffset,
1092 OUT UINT32 *MaxSize OPTIONAL
1093 );
1094
1101BOOLEAN
1103 IN CONST CHAR8 *Name
1104 );
1105
1112BOOLEAN
1114 IN CONST CHAR8 *Name
1115 );
1116
1124BOOLEAN
1126 IN OUT OC_MACHO_CONTEXT *Context,
1127 IN CONST CHAR8 *SymbolName
1128 );
1129
1137BOOLEAN
1139 IN OUT OC_MACHO_CONTEXT *Context,
1140 IN CONST CHAR8 *SymbolName
1141 );
1142
1154BOOLEAN
1156 IN OUT OC_MACHO_CONTEXT *Context,
1157 IN CONST CHAR8 *SmcpName,
1158 IN UINTN ClassNameSize,
1159 OUT CHAR8 *ClassName
1160 );
1161
1168CONST CHAR8 *
1170 IN CONST CHAR8 *VtableName
1171 );
1172
1183BOOLEAN
1185 IN CONST CHAR8 *ClassName,
1186 IN UINTN FunctionPrefixSize,
1187 OUT CHAR8 *FunctionPrefix
1188 );
1189
1201BOOLEAN
1203 IN OUT OC_MACHO_CONTEXT *Context,
1204 IN CONST CHAR8 *MetaClassName,
1205 IN UINTN ClassNameSize,
1206 OUT CHAR8 *ClassName
1207 );
1208
1219BOOLEAN
1221 IN CONST CHAR8 *ClassName,
1222 IN UINTN VtableNameSize,
1223 OUT CHAR8 *VtableName
1224 );
1225
1236BOOLEAN
1238 IN CONST CHAR8 *ClassName,
1239 IN UINTN VtableNameSize,
1240 OUT CHAR8 *VtableName
1241 );
1242
1253BOOLEAN
1255 IN CONST CHAR8 *ClassName,
1256 IN UINTN FinalSymbolNameSize,
1257 OUT CHAR8 *FinalSymbolName
1258 );
1259
1266BOOLEAN
1268 IN CONST CHAR8 *SymbolName
1269 );
1270
1277BOOLEAN
1279 IN CONST CHAR8 *Name
1280 );
1281
1293 IN OUT OC_MACHO_CONTEXT *Context,
1294 IN CONST MACH_NLIST_ANY *Smcp
1295 );
1296
1306MACH_NLIST *
1308 IN OUT OC_MACHO_CONTEXT *Context,
1309 IN CONST MACH_NLIST *Smcp
1310 );
1311
1323 IN OUT OC_MACHO_CONTEXT *Context,
1324 IN CONST MACH_NLIST_64 *Smcp
1325 );
1326
1337BOOLEAN
1339 IN OUT OC_MACHO_CONTEXT *Context,
1340 IN CONST CHAR8 *SmcpName,
1341 OUT CONST MACH_NLIST_ANY **Vtable,
1342 OUT CONST MACH_NLIST_ANY **MetaVtable
1343 );
1344
1355BOOLEAN
1357 IN OUT OC_MACHO_CONTEXT *Context,
1358 IN CONST CHAR8 *SmcpName,
1359 OUT CONST MACH_NLIST **Vtable,
1360 OUT CONST MACH_NLIST **MetaVtable
1361 );
1362
1373BOOLEAN
1375 IN OUT OC_MACHO_CONTEXT *Context,
1376 IN CONST CHAR8 *SmcpName,
1377 OUT CONST MACH_NLIST_64 **Vtable,
1378 OUT CONST MACH_NLIST_64 **MetaVtable
1379 );
1380
1388BOOLEAN
1390 IN UINT8 Type
1391 );
1392
1400BOOLEAN
1402 IN UINT8 Type
1403 );
1404
1412BOOLEAN
1414 IN UINT8 Type
1415 );
1416
1423BOOLEAN
1425 IN UINT8 Type
1426 );
1427
1428/*
1429 Initialises Context with the symbol tables of SymsContext.
1430
1431 @param[in,out] Context The context to initialise the symbol info of.
1432 @param[in] SymsContext The context to retrieve the symbol tables from.
1433
1434 @returns Whether the operation was successful.
1435*/
1436BOOLEAN
1438 IN OUT OC_MACHO_CONTEXT *Context,
1439 IN OC_MACHO_CONTEXT *SymsContext
1440 );
1441
1457UINT32
1459 IN OUT OC_MACHO_CONTEXT *Context,
1460 OUT CONST MACH_NLIST_ANY **SymbolTable,
1461 OUT CONST CHAR8 **StringTable OPTIONAL,
1462 OUT CONST MACH_NLIST_ANY **LocalSymbols OPTIONAL,
1463 OUT UINT32 *NumLocalSymbols OPTIONAL,
1464 OUT CONST MACH_NLIST_ANY **ExternalSymbols OPTIONAL,
1465 OUT UINT32 *NumExternalSymbols OPTIONAL,
1466 OUT CONST MACH_NLIST_ANY **UndefinedSymbols OPTIONAL,
1467 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1468 );
1469
1485UINT32
1487 IN OUT OC_MACHO_CONTEXT *Context,
1488 OUT CONST MACH_NLIST **SymbolTable,
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
1496 );
1497
1513UINT32
1515 IN OUT OC_MACHO_CONTEXT *Context,
1516 OUT CONST MACH_NLIST_64 **SymbolTable,
1517 OUT CONST CHAR8 **StringTable OPTIONAL,
1518 OUT CONST MACH_NLIST_64 **LocalSymbols OPTIONAL,
1519 OUT UINT32 *NumLocalSymbols OPTIONAL,
1520 OUT CONST MACH_NLIST_64 **ExternalSymbols OPTIONAL,
1521 OUT UINT32 *NumExternalSymbols OPTIONAL,
1522 OUT CONST MACH_NLIST_64 **UndefinedSymbols OPTIONAL,
1523 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1524 );
1525
1535VOID *
1537 IN OUT OC_MACHO_CONTEXT *Context,
1538 IN UINT64 Address,
1539 OUT UINT32 *MaxSize OPTIONAL
1540 );
1541
1554UINT32
1556 IN OC_MACHO_CONTEXT *Context,
1557 OUT UINT8 *Destination,
1558 IN UINT32 DestinationSize,
1559 IN BOOLEAN Strip,
1560 OUT UINT64 *FileOffset OPTIONAL
1561 );
1562
1571UINT32
1573 IN OC_MACHO_CONTEXT *Context
1574 );
1575
1584UINT64
1586 IN VOID *Image
1587 );
1588
1601 IN OUT OC_MACHO_CONTEXT *Context,
1602 IN MACH_LOAD_COMMAND_TYPE LoadCommandType,
1603 IN CONST MACH_LOAD_COMMAND *LoadCommand OPTIONAL
1604 );
1605
1621EFI_STATUS
1623 IN CONST UINT8 *Buffer,
1624 IN UINT32 BufferSize,
1625 IN UINT32 FullSize,
1626 IN MACH_CPU_TYPE CpuType,
1627 OUT UINT32 *FatOffset,
1628 OUT UINT32 *FatSize
1629 );
1630
1641EFI_STATUS
1643 IN OUT UINT8 **FileData,
1644 IN OUT UINT32 *FileSize,
1645 IN MACH_CPU_TYPE CpuType
1646 );
1647
1657EFI_STATUS
1659 IN OUT UINT8 **FileData,
1660 IN OUT UINT32 *FileSize
1661 );
1662
1672EFI_STATUS
1674 IN OUT UINT8 **FileData,
1675 IN OUT UINT32 *FileSize
1676 );
1677
1678#endif // OC_MACHO_LIB_H
INT32 MACH_CPU_TYPE
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)
Definition Header.c:533
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)
Definition Symbols.c:54
BOOLEAN MachoSymbolNameIsCxx(IN CONST CHAR8 *Name)
Definition CxxSymbols.c:391
BOOLEAN MachoSymbolNameIsPadslot(IN CONST CHAR8 *Name)
Definition CxxSymbols.c:51
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)
Definition CxxSymbols.c:204
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)
Definition Header.c:55
BOOLEAN MachoRelocateSymbol(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 LinkAddress, IN OUT MACH_NLIST_ANY *Symbol)
Definition Symbols.c:136
BOOLEAN MachoGetClassNameFromSuperMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
Definition CxxSymbols.c:116
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)
Definition Header.c:77
BOOLEAN MachoSymbolIsLocalDefined(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
Definition Symbols.c:41
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)
Definition Header.c:214
CONST CHAR8 * MachoGetIndirectSymbolName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
Definition Symbols.c:93
CONST CHAR8 * MachoGetClassNameFromVtableName(IN CONST CHAR8 *VtableName)
Definition CxxSymbols.c:152
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)
Definition CxxSymbols.c:413
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)
Definition MachoFat.c:116
EFI_STATUS FatFilterArchitecture64(IN OUT UINT8 **FileData, IN OUT UINT32 *FileSize)
Definition MachoFat.c:151
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)
Definition CxxSymbols.c:165
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)
Definition Header.c:99
VOID * MachoGetFileData(IN OUT OC_MACHO_CONTEXT *Context)
Definition Header.c:66
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)
Definition Symbols.c:119
VOID * MachoGetFilePointerByAddress(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *MaxSize OPTIONAL)
Definition Header.c:588
MACH_SEGMENT_COMMAND_ANY * MachoGetNextSegment(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_SEGMENT_COMMAND_ANY *Segment OPTIONAL)
Definition Header.c:160
BOOLEAN MachoGetFinalSymbolNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN FinalSymbolNameSize, OUT CHAR8 *FinalSymbolName)
Definition CxxSymbols.c:327
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)
Definition Header.c:397
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)
Definition Header.c:606
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)
Definition CxxSymbols.c:400
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)
Definition CxxSymbols.c:88
MACH_HEADER_ANY * MachoGetMachHeader(IN OUT OC_MACHO_CONTEXT *Context)
Definition Header.c:44
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)
Definition Header.c:29
UINT32 MachoGetVmSize(IN OUT OC_MACHO_CONTEXT *Context)
Definition Header.c:88
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)
Definition Header.c:493
MACH_NLIST * MachoGetLocalDefinedSymbolByName32(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
BOOLEAN MachoRelocationIsPairIntel64(IN UINT8 Type)
Definition Relocations.c:47
MACH_NLIST_ANY * MachoGetSymbolByIndex(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
Definition Symbols.c:67
BOOLEAN MachoPreserveRelocationIntel64(IN UINT8 Type)
Definition Relocations.c:76
BOOLEAN MachoSymbolIsDefined64(IN CONST MACH_NLIST_64 *Symbol)
UINT32 MachoGetExpandedImageSize(IN OC_MACHO_CONTEXT *Context)
Definition Header.c:622
BOOLEAN MachoRelocationIsPairIntel32(IN UINT8 Type)
Definition Relocations.c:32
MACH_SECTION_64 * MachoGetSectionByIndex64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoIsRelocationPairTypeIntel64(IN UINT8 Type)
Definition Relocations.c:62
BOOLEAN MachoIsSymbolValueInRange(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
Definition Symbols.c:106
CONST CHAR8 * MachoGetSymbolName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
Definition Symbols.c:80
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)
Definition Header.c:173
BOOLEAN MachoSymbolGetDirectFileOffset(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
Definition Symbols.c:168
BOOLEAN MachoSymbolNameIsVtable(IN CONST CHAR8 *SymbolName)
Definition CxxSymbols.c:379
BOOLEAN MachoSymbolIsDefined32(IN CONST MACH_NLIST *Symbol)
BOOLEAN MachoGetVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
Definition CxxSymbols.c:239
EFI_STATUS FatFilterArchitecture32(IN OUT UINT8 **FileData, IN OUT UINT32 *FileSize)
Definition MachoFat.c:142
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)
Definition MachoFat.c:27
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)
Definition CxxSymbols.c:60
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)
Definition Header.c:201
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)
Definition Symbols.c:28
BOOLEAN MachoSymbolNameIsPureVirtual(IN CONST CHAR8 *Name)
Definition CxxSymbols.c:42
MACH_SECTION_ANY * MachoGetSectionByIndex(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
Definition Header.c:188
MACH_SECTION_ANY * MachoGetSegmentSectionByName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName, IN CONST CHAR8 *SectionName)
Definition Header.c:228
MACH_UUID_COMMAND * MachoGetUuid(IN OUT OC_MACHO_CONTEXT *Context)
Definition Header.c:124
BOOLEAN MachoSymbolGetFileOffset(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
Definition Symbols.c:153
BOOLEAN MachoGetMetaVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
Definition CxxSymbols.c:279
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)
Definition Header.c:110
BOOLEAN MachoMergeSegments(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Prefix)
Definition Header.c:634
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
Definition OcTypingLib.h:42
MACH_NLIST_ANY * SymbolTable
Definition OcMachoLib.h:41
MACH_RELOCATION_INFO * ExternRelocations
Definition OcMachoLib.h:45
MACH_HEADER_ANY * MachHeader
Definition OcMachoLib.h:38
CHAR8 * StringTable
Definition OcMachoLib.h:42
MACH_DYSYMTAB_COMMAND * DySymtab
Definition OcMachoLib.h:43
MACH_RELOCATION_INFO * LocalRelocations
Definition OcMachoLib.h:44
MACH_SYMTAB_COMMAND * Symtab
Definition OcMachoLib.h:40