MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / ReadListOfMethodLists

Method ReadListOfMethodLists

objectivec/objc.cpp:784–805  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

782}
783
784void ObjCProcessor::ReadListOfMethodLists(ObjCReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start)
785{
786 reader->Seek(start);
787 method_list_t head;
788 head.entsizeAndFlags = reader->Read32();
789 head.count = reader->Read32();
790
791 if (head.count > 0x1000)
792 {
793 m_logger->LogError("List of method lists at 0x%llx has an invalid count of 0x%x", start, head.count);
794 return;
795 }
796
797 for (size_t i = 0; i < head.count; ++i) {
798 relative_list_list_entry_t list_entry;
799 reader->Read(&list_entry, sizeof(list_entry));
800
801 ReadMethodList(reader, cls, name, reader->GetOffset() - sizeof(list_entry) + list_entry.listOffset);
802 // Reset the cursor to immediately past the list entry.
803 reader->Seek(start + sizeof(method_list_t) + ((i + 1) * sizeof(relative_list_list_entry_t)));
804 }
805}
806
807void ObjCProcessor::ReadMethodList(ObjCReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start)
808{

Callers

nothing calls this directly

Calls 5

LogErrorMethod · 0.80
SeekMethod · 0.45
Read32Method · 0.45
ReadMethod · 0.45
GetOffsetMethod · 0.45

Tested by

no test coverage detected