summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/ObjC.h
diff options
context:
space:
mode:
Diffstat (limited to 'view/sharedcache/core/ObjC.h')
-rw-r--r--view/sharedcache/core/ObjC.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/view/sharedcache/core/ObjC.h b/view/sharedcache/core/ObjC.h
index 016ff022..0f4526c0 100644
--- a/view/sharedcache/core/ObjC.h
+++ b/view/sharedcache/core/ObjC.h
@@ -58,6 +58,10 @@ namespace DSCObjC {
typedef struct {
uint64_t count;
} protocol_list_t;
+ struct relative_list_list_entry_t {
+ uint64_t imageIndex: 16;
+ int64_t listOffset: 48;
+ };
typedef struct {
view_ptr_t isa;
view_ptr_t mangledName;
@@ -214,8 +218,9 @@ namespace DSCObjC {
std::vector<QualifiedNameOrType> ParseEncodedType(const std::string& type);
void DefineObjCSymbol(BNSymbolType symbolType, QualifiedName typeName, const std::string& name, uint64_t addr, bool deferred);
void DefineObjCSymbol(BNSymbolType symbolType, Ref<Type> type, const std::string& name, uint64_t addr, bool deferred);
- void ReadIvarList(VMReader* reader, ClassBase& cls, std::string name, view_ptr_t start);
- void ReadMethodList(VMReader* reader, ClassBase& cls, std::string name, view_ptr_t start);
+ void ReadIvarList(VMReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start);
+ void ReadMethodList(VMReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start);
+ void ReadListOfMethodLists(VMReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start);
void LoadClasses(VMReader* reader, Ref<Section> listSection);
void LoadCategories(VMReader* reader, Ref<Section> listSection);
void LoadProtocols(VMReader* reader, Ref<Section> listSection);