OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
CxxSymbolsX.h
Go to the documentation of this file.
1
15#include "MachoX.h"
16
20 )(
21 IN OUT OC_MACHO_CONTEXT *Context,
22 IN CONST MACH_NLIST_X *Smcp
23 ) {
24 MACH_NLIST_X *Symbol;
25 BOOLEAN Result;
26
27 ASSERT (Context != NULL);
28 ASSERT (Smcp != NULL);
29 MACH_ASSERT_X (Context);
30
32 Context,
33 Smcp->Value,
34 &Symbol
35 );
36 if (Result && (Symbol != NULL)) {
38 Context,
39 MACH_X (MachoGetSymbolName)(Context, Symbol)
40 );
41 if (Result) {
42 return Symbol;
43 }
44 }
45
46 return NULL;
47}
48
49BOOLEAN
52 )(
53 IN OUT OC_MACHO_CONTEXT *Context,
54 IN CONST CHAR8 *SmcpName,
55 OUT CONST MACH_NLIST_X **Vtable,
56 OUT CONST MACH_NLIST_X **MetaVtable
57 ) {
58 CHAR8 ClassName[SYM_MAX_NAME_LEN];
59 CHAR8 VtableName[SYM_MAX_NAME_LEN];
60 CHAR8 MetaVtableName[SYM_MAX_NAME_LEN];
61 BOOLEAN Result;
62 MACH_NLIST_X *VtableSymbol;
63 MACH_NLIST_X *MetaVtableSymbol;
64
65 ASSERT (Context != NULL);
66 ASSERT (SmcpName != NULL);
67 ASSERT (Vtable != NULL);
68 ASSERT (MetaVtable != NULL);
69 MACH_ASSERT_X (Context);
70
72 Context,
73 SmcpName,
74 sizeof (ClassName),
75 ClassName
76 );
77 if (!Result) {
78 return FALSE;
79 }
80
82 ClassName,
83 sizeof (VtableName),
84 VtableName
85 );
86 if (!Result) {
87 return FALSE;
88 }
89
90 VtableSymbol = MACH_X (MachoGetLocalDefinedSymbolByName)(Context, VtableName);
91 if (VtableSymbol == NULL) {
92 return FALSE;
93 }
94
96 ClassName,
97 sizeof (MetaVtableName),
98 MetaVtableName
99 );
100 if (!Result) {
101 return FALSE;
102 }
103
104 MetaVtableSymbol = MACH_X (MachoGetLocalDefinedSymbolByName)(
105 Context,
106 MetaVtableName
107 );
108 if (MetaVtableSymbol == NULL) {
109 return FALSE;
110 }
111
112 *Vtable = VtableSymbol;
113 *MetaVtable = MetaVtableSymbol;
114
115 return TRUE;
116}
MACH_NLIST_X *MACH_X MachoGetMetaclassSymbolFromSmcpSymbol(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_X *Smcp)
Definition CxxSymbolsX.h:20
BOOLEAN MACH_X MachoGetVtableSymbolsFromSmcp(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, OUT CONST MACH_NLIST_X **Vtable, OUT CONST MACH_NLIST_X **MetaVtable)
Definition CxxSymbolsX.h:52
#define MACH_ASSERT_X(a)
Definition MachoX.h:63
#define MACH_NLIST_X
Definition MachoX.h:58
#define MACH_X(a)
Definition MachoX.h:62
MACH_NLIST_ANY * MachoGetLocalDefinedSymbolByName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
Definition Symbols.c:54
BOOLEAN MachoGetClassNameFromSuperMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
Definition CxxSymbols.c:116
BOOLEAN MachoSymbolNameIsMetaclassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SymbolName)
Definition CxxSymbols.c:88
CONST CHAR8 * MachoGetSymbolName(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_ANY *Symbol)
Definition Symbols.c:80
BOOLEAN MachoGetVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
Definition CxxSymbols.c:239
BOOLEAN MachoGetMetaVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
Definition CxxSymbols.c:279
#define SYM_MAX_NAME_LEN
BOOLEAN MACH_X MachoGetSymbolByRelocationOffset(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_UINT_X Address, OUT MACH_NLIST_X **Symbol)
Definition SymbolsX.h:442
#define ASSERT(x)
Definition coder.h:55