diff options
| author | Mason Reed <mason@vector35.com> | 2024-12-04 18:17:10 -0500 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-03-19 21:17:34 -0400 |
| commit | 93e92844d77b72f07bd7563211d60dc3595cc2e0 (patch) | |
| tree | 5339586f4e2ebbbfa1c754fd175bc9264b6cb668 /plugins/rtti/itanium.h | |
| parent | 845dcf25563ed4982ea3f8fbca9aa6893bba7b16 (diff) | |
Consolidate metadata for RTTI processors and a bunch of misc fixes
Also allows for both processors to be ran for a single binary
Diffstat (limited to 'plugins/rtti/itanium.h')
| -rw-r--r-- | plugins/rtti/itanium.h | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/plugins/rtti/itanium.h b/plugins/rtti/itanium.h index 01a765bb..98fe7052 100644 --- a/plugins/rtti/itanium.h +++ b/plugins/rtti/itanium.h @@ -108,29 +108,20 @@ namespace BinaryNinja::RTTI::Itanium { PointerToMemberTypeInfo(BinaryView *view, uint64_t address); }; - class ItaniumRTTIProcessor + class ItaniumRTTIProcessor : public RTTIProcessor { - Ref<BinaryView> m_view; - Ref<Logger> m_logger; bool allowMangledClassNames; bool checkWritableRData; bool virtualFunctionTableSweep; - std::map<uint64_t, ClassInfo> m_classInfo; - - void DeserializedMetadata(const Ref<Metadata> &metadata); - - std::optional<VirtualFunctionTableInfo> ProcessVTT(uint64_t vttAddr, const ClassInfo &classInfo); + std::optional<ClassInfo> ProcessRTTI(uint64_t objectAddr) override; + std::optional<VirtualFunctionTableInfo> ProcessVFT(uint64_t vftAddr, ClassInfo &classInfo) override; public: - ItaniumRTTIProcessor(const Ref<BinaryView> &view, bool useMangled = true, bool checkRData = true, bool vttSweep = true); - - Ref<Metadata> SerializedMetadata(); - - void ProcessRTTI(); + explicit ItaniumRTTIProcessor(const Ref<BinaryView> &view, bool useMangled = true, bool checkRData = true, bool vttSweep = true); - std::optional<ClassInfo> ProcessRTTI(uint64_t objectAddr); + void ProcessRTTI() override; - void ProcessVTT(); + void ProcessVFT() override; }; }
\ No newline at end of file |
