From 845dcf25563ed4982ea3f8fbca9aa6893bba7b16 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Tue, 3 Dec 2024 18:07:32 -0500 Subject: Preliminary Itanium RTTI virtual function table support Still needs to support edge cases and multiple vtables, as well as naming needs to be adjusted --- plugins/rtti/plugin.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'plugins/rtti/plugin.cpp') diff --git a/plugins/rtti/plugin.cpp b/plugins/rtti/plugin.cpp index 4ec833be..52501efe 100644 --- a/plugins/rtti/plugin.cpp +++ b/plugins/rtti/plugin.cpp @@ -31,9 +31,10 @@ void RTTIAnalysis(const Ref& analysisContext) else { // TODO: We currently only want to check for itanium rtti on non windows platforms + // TODO: This needs to always run. auto processor = RTTI::Itanium::ItaniumRTTIProcessor(view); processor.ProcessRTTI(); - // view->StoreMetadata(VIEW_METADATA_RTTI, processor.SerializedMetadata(), true); + view->StoreMetadata(VIEW_METADATA_RTTI, processor.SerializedMetadata(), true); } } @@ -46,9 +47,12 @@ void VFTAnalysis(const Ref& analysisContext) // TODO: Run for both itanium and ms (depending on platform) auto processor = RTTI::Microsoft::MicrosoftRTTIProcessor(view); processor.ProcessVFT(); + auto itaniumProcessor = RTTI::Itanium::ItaniumRTTIProcessor(view); + itaniumProcessor.ProcessVTT(); view->StoreMetadata(VIEW_METADATA_RTTI, processor.SerializedMetadata(), true); } + void MakeItaniumRTTIHere(Ref view, uint64_t addr) { auto processor = RTTI::Itanium::ItaniumRTTIProcessor(view); @@ -56,7 +60,6 @@ void MakeItaniumRTTIHere(Ref view, uint64_t addr) } - extern "C" { BN_DECLARE_CORE_ABI_VERSION -- cgit v1.3.1