summaryrefslogtreecommitdiff
path: root/plugins/rtti/itanium.h
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-12-04 18:17:10 -0500
committerMason Reed <mason@vector35.com>2025-03-19 21:17:34 -0400
commit93e92844d77b72f07bd7563211d60dc3595cc2e0 (patch)
tree5339586f4e2ebbbfa1c754fd175bc9264b6cb668 /plugins/rtti/itanium.h
parent845dcf25563ed4982ea3f8fbca9aa6893bba7b16 (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.h21
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