diff options
| author | Mason Reed <mason@vector35.com> | 2024-12-03 18:07:32 -0500 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-03-19 21:17:34 -0400 |
| commit | 845dcf25563ed4982ea3f8fbca9aa6893bba7b16 (patch) | |
| tree | 560053107bdce45badfb7c97667384e29ec66c4e /plugins/rtti/plugin.cpp | |
| parent | 31ef836d222aaa8786d4ac2c36e09e4fd9e02929 (diff) | |
Preliminary Itanium RTTI virtual function table support
Still needs to support edge cases and multiple vtables, as well as naming needs to be adjusted
Diffstat (limited to 'plugins/rtti/plugin.cpp')
| -rw-r--r-- | plugins/rtti/plugin.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
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>& 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>& 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<BinaryView> view, uint64_t addr) { auto processor = RTTI::Itanium::ItaniumRTTIProcessor(view); @@ -56,7 +60,6 @@ void MakeItaniumRTTIHere(Ref<BinaryView> view, uint64_t addr) } - extern "C" { BN_DECLARE_CORE_ABI_VERSION |
