blob: c08b1bbc885e6157c8619af5af709b42bd6b018c [file] [log] [blame]
struct cd_objc2_list_header {
uint32_t entsize;
uint32_t count;
};
struct cd_objc2_image_info {
uint32_t version;
uint32_t flags;
};
//
// 64-bit, also holding 32-bit
//
struct cd_objc2_class {
uint64_t isa;
uint64_t superclass;
uint64_t cache;
uint64_t vtable;
uint64_t data; // points to class_ro_t
uint64_t reserved1;
uint64_t reserved2;
uint64_t reserved3;
};
struct cd_objc2_class_ro_t {
uint32_t flags;
uint32_t instanceStart;
uint32_t instanceSize;
uint32_t reserved; // *** this field does not exist in the 32-bit version ***
uint64_t ivarLayout;
uint64_t name;
uint64_t baseMethods;
uint64_t baseProtocols;
uint64_t ivars;
uint64_t weakIvarLayout;
uint64_t baseProperties;
};
struct cd_objc2_method {
uint64_t name;
uint64_t types;
uint64_t imp;
};
struct cd_objc2_ivar {
uint64_t offset;
uint64_t name;
uint64_t type;
uint32_t alignment;
uint32_t size;
};
struct cd_objc2_property {
uint64_t name;
uint64_t attributes;
};
struct cd_objc2_protocol {
uint64_t isa;
uint64_t name;
uint64_t protocols;
uint64_t instanceMethods;
uint64_t classMethods;
uint64_t optionalInstanceMethods;
uint64_t optionalClassMethods;
uint64_t instanceProperties; // So far, always 0
uint32_t size; // sizeof(cd_objc2_protocol)
uint32_t flags;
uint64_t extendedMethodTypes;
};
struct cd_objc2_category {
uint64_t name;
uint64_t class;
uint64_t instanceMethods;
uint64_t classMethods;
uint64_t protocols;
uint64_t instanceProperties;
uint64_t v7;
uint64_t v8;
};