OpenCore  1.0.4
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
50
64BOOLEAN
66 OUT OC_MACHO_CONTEXT *Context,
67 IN VOID *FileData,
68 IN UINT32 FileSize,
69 IN UINT32 HeaderOffset,
70 IN UINT32 InnerSize
71 );
72
86BOOLEAN
88 OUT OC_MACHO_CONTEXT *Context,
89 IN VOID *FileData,
90 IN UINT32 FileSize,
91 IN UINT32 HeaderOffset,
92 IN UINT32 InnerSize
93 );
94
109BOOLEAN
111 OUT OC_MACHO_CONTEXT *Context,
112 IN VOID *FileData,
113 IN UINT32 FileSize,
114 IN UINT32 HeaderOffset,
115 IN UINT32 InnerSize,
116 IN BOOLEAN Is32Bit
117 );
118
127 IN OUT OC_MACHO_CONTEXT *Context
128 );
129
136UINT32
138 IN OUT OC_MACHO_CONTEXT *Context
139 );
140
149 IN OUT OC_MACHO_CONTEXT *Context
150 );
151
160 IN OUT OC_MACHO_CONTEXT *Context
161 );
162
169VOID *
171 IN OUT OC_MACHO_CONTEXT *Context
172 );
173
180UINT32
182 IN OUT OC_MACHO_CONTEXT *Context
183 );
184
191UINT32
193 IN OUT OC_MACHO_CONTEXT *Context
194 );
195
204UINT64
206 IN OUT OC_MACHO_CONTEXT *Context
207 );
208
219 IN OUT OC_MACHO_CONTEXT *Context
220 );
221
233 IN OUT OC_MACHO_CONTEXT *Context,
234 IN CONST CHAR8 *SegmentName
235 );
236
248 IN OUT OC_MACHO_CONTEXT *Context,
249 IN CONST CHAR8 *SegmentName
250 );
251
263 IN OUT OC_MACHO_CONTEXT *Context,
264 IN CONST CHAR8 *SegmentName
265 );
266
279 IN OUT OC_MACHO_CONTEXT *Context,
280 IN MACH_SEGMENT_COMMAND_ANY *Segment,
281 IN CONST CHAR8 *SectionName
282 );
283
296 IN OUT OC_MACHO_CONTEXT *Context,
297 IN MACH_SEGMENT_COMMAND *Segment,
298 IN CONST CHAR8 *SectionName
299 );
300
313 IN OUT OC_MACHO_CONTEXT *Context,
314 IN MACH_SEGMENT_COMMAND_64 *Segment,
315 IN CONST CHAR8 *SectionName
316 );
317
330 IN OUT OC_MACHO_CONTEXT *Context,
331 IN CONST CHAR8 *SegmentName,
332 IN CONST CHAR8 *SectionName
333 );
334
347 IN OUT OC_MACHO_CONTEXT *Context,
348 IN CONST CHAR8 *SegmentName,
349 IN CONST CHAR8 *SectionName
350 );
351
364 IN OUT OC_MACHO_CONTEXT *Context,
365 IN CONST CHAR8 *SegmentName,
366 IN CONST CHAR8 *SectionName
367 );
368
381 IN OUT OC_MACHO_CONTEXT *Context,
382 IN CONST MACH_SEGMENT_COMMAND_ANY *Segment OPTIONAL
383 );
384
397 IN OUT OC_MACHO_CONTEXT *Context,
398 IN CONST MACH_SEGMENT_COMMAND *Segment OPTIONAL
399 );
400
413 IN OUT OC_MACHO_CONTEXT *Context,
414 IN CONST MACH_SEGMENT_COMMAND_64 *Segment OPTIONAL
415 );
416
429 IN OUT OC_MACHO_CONTEXT *Context,
430 IN MACH_SEGMENT_COMMAND_ANY *Segment,
431 IN MACH_SECTION_ANY *Section OPTIONAL
432 );
433
446 IN OUT OC_MACHO_CONTEXT *Context,
447 IN MACH_SEGMENT_COMMAND *Segment,
448 IN MACH_SECTION *Section OPTIONAL
449 );
450
463 IN OUT OC_MACHO_CONTEXT *Context,
464 IN MACH_SEGMENT_COMMAND_64 *Segment,
465 IN MACH_SECTION_64 *Section OPTIONAL
466 );
467
479 IN OUT OC_MACHO_CONTEXT *Context,
480 IN UINT32 Index
481 );
482
494 IN OUT OC_MACHO_CONTEXT *Context,
495 IN UINT32 Index
496 );
497
509 IN OUT OC_MACHO_CONTEXT *Context,
510 IN UINT32 Index
511 );
512
524 IN OUT OC_MACHO_CONTEXT *Context,
525 IN UINT32 Address
526 );
527
539 IN OUT OC_MACHO_CONTEXT *Context,
540 IN UINT64 Address
541 );
542
552BOOLEAN
554 IN OUT OC_MACHO_CONTEXT *Context,
555 IN CONST CHAR8 *Prefix
556 );
557
564BOOLEAN
566 IN CONST MACH_NLIST *Symbol
567 );
568
575BOOLEAN
577 IN CONST MACH_NLIST_64 *Symbol
578 );
579
587BOOLEAN
589 IN OUT OC_MACHO_CONTEXT *Context,
590 IN CONST MACH_NLIST_ANY *Symbol
591 );
592
599BOOLEAN
601 IN CONST MACH_NLIST *Symbol
602 );
603
610BOOLEAN
612 IN CONST MACH_NLIST_64 *Symbol
613 );
614
622BOOLEAN
624 IN OUT OC_MACHO_CONTEXT *Context,
625 IN CONST MACH_NLIST_ANY *Symbol
626 );
627
635BOOLEAN
637 IN OUT OC_MACHO_CONTEXT *Context,
638 IN CONST MACH_NLIST *Symbol
639 );
640
648BOOLEAN
650 IN OUT OC_MACHO_CONTEXT *Context,
651 IN CONST MACH_NLIST_64 *Symbol
652 );
653
663 IN OUT OC_MACHO_CONTEXT *Context,
664 IN CONST CHAR8 *Name
665 );
666
676 IN OUT OC_MACHO_CONTEXT *Context,
677 IN CONST CHAR8 *Name
678 );
679
689 IN OUT OC_MACHO_CONTEXT *Context,
690 IN CONST CHAR8 *Name
691 );
692
704 IN OUT OC_MACHO_CONTEXT *Context,
705 IN UINT32 Index
706 );
707
719 IN OUT OC_MACHO_CONTEXT *Context,
720 IN UINT32 Index
721 );
722
734 IN OUT OC_MACHO_CONTEXT *Context,
735 IN UINT32 Index
736 );
737
747CONST CHAR8 *
749 IN OUT OC_MACHO_CONTEXT *Context,
750 IN CONST MACH_NLIST_ANY *Symbol
751 );
752
762CONST CHAR8 *
764 IN OUT OC_MACHO_CONTEXT *Context,
765 IN CONST MACH_NLIST *Symbol
766 );
767
777CONST CHAR8 *
779 IN OUT OC_MACHO_CONTEXT *Context,
780 IN CONST MACH_NLIST_64 *Symbol
781 );
782
792CONST CHAR8 *
794 IN OUT OC_MACHO_CONTEXT *Context,
795 IN CONST MACH_NLIST_ANY *Symbol
796 );
797
807CONST CHAR8 *
809 IN OUT OC_MACHO_CONTEXT *Context,
810 IN CONST MACH_NLIST *Symbol
811 );
812
822CONST CHAR8 *
824 IN OUT OC_MACHO_CONTEXT *Context,
825 IN CONST MACH_NLIST_64 *Symbol
826 );
827
836BOOLEAN
838 IN OUT OC_MACHO_CONTEXT *Context,
839 IN CONST MACH_NLIST_ANY *Symbol
840 );
841
850BOOLEAN
852 IN OUT OC_MACHO_CONTEXT *Context,
853 IN CONST MACH_NLIST *Symbol
854 );
855
864BOOLEAN
866 IN OUT OC_MACHO_CONTEXT *Context,
867 IN CONST MACH_NLIST_64 *Symbol
868 );
869
882BOOLEAN
884 IN OUT OC_MACHO_CONTEXT *Context,
885 IN UINT32 Address,
886 OUT MACH_NLIST **Symbol
887 );
888
901BOOLEAN
903 IN OUT OC_MACHO_CONTEXT *Context,
904 IN UINT64 Address,
905 OUT MACH_NLIST_64 **Symbol
906 );
907
920BOOLEAN
922 IN OUT OC_MACHO_CONTEXT *Context,
923 IN UINT64 Address,
924 OUT MACH_NLIST_ANY **Symbol
925 );
926
939BOOLEAN
941 IN OUT OC_MACHO_CONTEXT *Context,
942 IN UINT32 Address,
943 OUT MACH_NLIST **Symbol
944 );
945
958BOOLEAN
960 IN OUT OC_MACHO_CONTEXT *Context,
961 IN UINT64 Address,
962 OUT MACH_NLIST_64 **Symbol
963 );
964
975BOOLEAN
977 IN OUT OC_MACHO_CONTEXT *Context,
978 IN UINT64 LinkAddress,
979 IN OUT MACH_NLIST_ANY *Symbol
980 );
981
992BOOLEAN
994 IN OUT OC_MACHO_CONTEXT *Context,
995 IN UINT32 LinkAddress,
996 IN OUT MACH_NLIST *Symbol
997 );
998
1009BOOLEAN
1011 IN OUT OC_MACHO_CONTEXT *Context,
1012 IN UINT64 LinkAddress,
1013 IN OUT MACH_NLIST_64 *Symbol
1014 );
1015
1028BOOLEAN
1030 IN OUT OC_MACHO_CONTEXT *Context,
1031 IN CONST MACH_NLIST *Symbol,
1032 OUT UINT32 *FileOffset,
1033 OUT UINT32 *MaxSize OPTIONAL
1034 );
1035
1048BOOLEAN
1050 IN OUT OC_MACHO_CONTEXT *Context,
1051 IN CONST MACH_NLIST_64 *Symbol,
1052 OUT UINT32 *FileOffset,
1053 OUT UINT32 *MaxSize OPTIONAL
1054 );
1055
1068BOOLEAN
1070 IN OUT OC_MACHO_CONTEXT *Context,
1071 IN CONST MACH_NLIST_ANY *Symbol,
1072 OUT UINT32 *FileOffset,
1073 OUT UINT32 *MaxSize OPTIONAL
1074 );
1075
1088BOOLEAN
1090 IN OUT OC_MACHO_CONTEXT *Context,
1091 IN UINT64 Address,
1092 OUT UINT32 *FileOffset,
1093 OUT UINT32 *MaxSize OPTIONAL
1094 );
1095
1102BOOLEAN
1104 IN CONST CHAR8 *Name
1105 );
1106
1113BOOLEAN
1115 IN CONST CHAR8 *Name
1116 );
1117
1125BOOLEAN
1127 IN OUT OC_MACHO_CONTEXT *Context,
1128 IN CONST CHAR8 *SymbolName
1129 );
1130
1138BOOLEAN
1140 IN OUT OC_MACHO_CONTEXT *Context,
1141 IN CONST CHAR8 *SymbolName
1142 );
1143
1155BOOLEAN
1157 IN OUT OC_MACHO_CONTEXT *Context,
1158 IN CONST CHAR8 *SmcpName,
1159 IN UINTN ClassNameSize,
1160 OUT CHAR8 *ClassName
1161 );
1162
1169CONST CHAR8 *
1171 IN CONST CHAR8 *VtableName
1172 );
1173
1184BOOLEAN
1186 IN CONST CHAR8 *ClassName,
1187 IN UINTN FunctionPrefixSize,
1188 OUT CHAR8 *FunctionPrefix
1189 );
1190
1202BOOLEAN
1204 IN OUT OC_MACHO_CONTEXT *Context,
1205 IN CONST CHAR8 *MetaClassName,
1206 IN UINTN ClassNameSize,
1207 OUT CHAR8 *ClassName
1208 );
1209
1220BOOLEAN
1222 IN CONST CHAR8 *ClassName,
1223 IN UINTN VtableNameSize,
1224 OUT CHAR8 *VtableName
1225 );
1226
1237BOOLEAN
1239 IN CONST CHAR8 *ClassName,
1240 IN UINTN VtableNameSize,
1241 OUT CHAR8 *VtableName
1242 );
1243
1254BOOLEAN
1256 IN CONST CHAR8 *ClassName,
1257 IN UINTN FinalSymbolNameSize,
1258 OUT CHAR8 *FinalSymbolName
1259 );
1260
1267BOOLEAN
1269 IN CONST CHAR8 *SymbolName
1270 );
1271
1278BOOLEAN
1280 IN CONST CHAR8 *Name
1281 );
1282
1294 IN OUT OC_MACHO_CONTEXT *Context,
1295 IN CONST MACH_NLIST_ANY *Smcp
1296 );
1297
1307MACH_NLIST *
1309 IN OUT OC_MACHO_CONTEXT *Context,
1310 IN CONST MACH_NLIST *Smcp
1311 );
1312
1324 IN OUT OC_MACHO_CONTEXT *Context,
1325 IN CONST MACH_NLIST_64 *Smcp
1326 );
1327
1338BOOLEAN
1340 IN OUT OC_MACHO_CONTEXT *Context,
1341 IN CONST CHAR8 *SmcpName,
1342 OUT CONST MACH_NLIST_ANY **Vtable,
1343 OUT CONST MACH_NLIST_ANY **MetaVtable
1344 );
1345
1356BOOLEAN
1358 IN OUT OC_MACHO_CONTEXT *Context,
1359 IN CONST CHAR8 *SmcpName,
1360 OUT CONST MACH_NLIST **Vtable,
1361 OUT CONST MACH_NLIST **MetaVtable
1362 );
1363
1374BOOLEAN
1376 IN OUT OC_MACHO_CONTEXT *Context,
1377 IN CONST CHAR8 *SmcpName,
1378 OUT CONST MACH_NLIST_64 **Vtable,
1379 OUT CONST MACH_NLIST_64 **MetaVtable
1380 );
1381
1389BOOLEAN
1391 IN UINT8 Type
1392 );
1393
1401BOOLEAN
1403 IN UINT8 Type
1404 );
1405
1413BOOLEAN
1415 IN UINT8 Type
1416 );
1417
1424BOOLEAN
1426 IN UINT8 Type
1427 );
1428
1429/*
1430 Initialises Context with the symbol tables of SymsContext.
1431
1432 @param[in,out] Context The context to initialise the symbol info of.
1433 @param[in] SymsContext The context to retrieve the symbol tables from.
1434
1435 @returns Whether the operation was successful.
1436*/
1437BOOLEAN
1439 IN OUT OC_MACHO_CONTEXT *Context,
1440 IN OC_MACHO_CONTEXT *SymsContext
1441 );
1442
1458UINT32
1460 IN OUT OC_MACHO_CONTEXT *Context,
1461 OUT CONST MACH_NLIST_ANY **SymbolTable,
1462 OUT CONST CHAR8 **StringTable OPTIONAL,
1463 OUT CONST MACH_NLIST_ANY **LocalSymbols OPTIONAL,
1464 OUT UINT32 *NumLocalSymbols OPTIONAL,
1465 OUT CONST MACH_NLIST_ANY **ExternalSymbols OPTIONAL,
1466 OUT UINT32 *NumExternalSymbols OPTIONAL,
1467 OUT CONST MACH_NLIST_ANY **UndefinedSymbols OPTIONAL,
1468 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1469 );
1470
1486UINT32
1488 IN OUT OC_MACHO_CONTEXT *Context,
1489 OUT CONST MACH_NLIST **SymbolTable,
1490 OUT CONST CHAR8 **StringTable OPTIONAL,
1491 OUT CONST MACH_NLIST **LocalSymbols OPTIONAL,
1492 OUT UINT32 *NumLocalSymbols OPTIONAL,
1493 OUT CONST MACH_NLIST **ExternalSymbols OPTIONAL,
1494 OUT UINT32 *NumExternalSymbols OPTIONAL,
1495 OUT CONST MACH_NLIST **UndefinedSymbols OPTIONAL,
1496 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1497 );
1498
1514UINT32
1516 IN OUT OC_MACHO_CONTEXT *Context,
1517 OUT CONST MACH_NLIST_64 **SymbolTable,
1518 OUT CONST CHAR8 **StringTable OPTIONAL,
1519 OUT CONST MACH_NLIST_64 **LocalSymbols OPTIONAL,
1520 OUT UINT32 *NumLocalSymbols OPTIONAL,
1521 OUT CONST MACH_NLIST_64 **ExternalSymbols OPTIONAL,
1522 OUT UINT32 *NumExternalSymbols OPTIONAL,
1523 OUT CONST MACH_NLIST_64 **UndefinedSymbols OPTIONAL,
1524 OUT UINT32 *NumUndefinedSymbols OPTIONAL
1525 );
1526
1535UINT32
1537 IN OUT OC_MACHO_CONTEXT *Context,
1538 OUT CONST MACH_NLIST_ANY **SymbolTable
1539 );
1540
1549UINT32
1551 IN OUT OC_MACHO_CONTEXT *Context,
1552 OUT CONST MACH_NLIST **SymbolTable
1553 );
1554
1563UINT32
1565 IN OUT OC_MACHO_CONTEXT *Context,
1566 OUT CONST MACH_NLIST_64 **SymbolTable
1567 );
1568
1578VOID *
1580 IN OUT OC_MACHO_CONTEXT *Context,
1581 IN UINT64 Address,
1582 OUT UINT32 *MaxSize OPTIONAL
1583 );
1584
1597UINT32
1599 IN OC_MACHO_CONTEXT *Context,
1600 OUT UINT8 *Destination,
1601 IN UINT32 DestinationSize,
1602 IN BOOLEAN Strip,
1603 OUT UINT64 *FileOffset OPTIONAL
1604 );
1605
1614UINT32
1616 IN OC_MACHO_CONTEXT *Context
1617 );
1618
1627UINT64
1629 IN VOID *Image
1630 );
1631
1644 IN OUT OC_MACHO_CONTEXT *Context,
1645 IN MACH_LOAD_COMMAND_TYPE LoadCommandType,
1646 IN CONST MACH_LOAD_COMMAND *LoadCommand OPTIONAL
1647 );
1648
1664EFI_STATUS
1666 IN CONST UINT8 *Buffer,
1667 IN UINT32 BufferSize,
1668 IN UINT32 FullSize,
1669 IN MACH_CPU_TYPE CpuType,
1670 OUT UINT32 *FatOffset,
1671 OUT UINT32 *FatSize
1672 );
1673
1684EFI_STATUS
1686 IN OUT UINT8 **FileData,
1687 IN OUT UINT32 *FileSize,
1688 IN MACH_CPU_TYPE CpuType
1689 );
1690
1700EFI_STATUS
1702 IN OUT UINT8 **FileData,
1703 IN OUT UINT32 *FileSize
1704 );
1705
1715EFI_STATUS
1717 IN OUT UINT8 **FileData,
1718 IN OUT UINT32 *FileSize
1719 );
1720
1721#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:572
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)
UINT32 MachoGetIndirectSymbolTable32(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST **SymbolTable)
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:627
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:423
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:645
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:519
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:661
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
UINT32 MachoGetIndirectSymbolTable(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_ANY **SymbolTable)
Definition Header.c:559
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:673
UINT32 MachoGetIndirectSymbolTable64(IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_64 **SymbolTable)
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:46
MACH_HEADER_ANY * MachHeader
Definition OcMachoLib.h:38
MACH_NLIST_ANY * IndirectSymbolTable
Definition OcMachoLib.h:44
CHAR8 * StringTable
Definition OcMachoLib.h:42
MACH_DYSYMTAB_COMMAND * DySymtab
Definition OcMachoLib.h:43
MACH_RELOCATION_INFO * LocalRelocations
Definition OcMachoLib.h:45
MACH_SYMTAB_COMMAND * Symtab
Definition OcMachoLib.h:40