GP-0 fix for breaking RTTI test

This commit is contained in:
ghidra007
2026-09-15 15:49:27 +00:00
committed by Ryan Kurtz
parent 2d69858b90
commit 8fb1c8ce05
2 changed files with 23 additions and 4 deletions

View File

@@ -236,9 +236,9 @@ public class RTTIWindowsClassRecoverer extends RTTIClassRecoverer {
// }
//
// private void runRTTIAnalyzer() throws Exception {
//// Analyzer analyzer = new RttiAnalyzer();
//// analyzer.added(program, program.getAddressFactory().getAddressSet(), monitor,
//// new MessageLog());
//// Analyzer analyzer = new RttiAnalyzer(); / analyzer.added(program,
/// program.getAddressFactory().getAddressSet(), monitor, /
/// new MessageLog());
// }
//
// /**

View File

@@ -5698,8 +5698,27 @@ public class RecoveredClassHelper {
if (!areVftablesInSameClass(vftableReferenceList)) {
recoveredClass.addIndeterminateInline(indeterminateFunction);
indeterminateIterator.remove();
continue;
}
}
// Next try identifying non-constructor/destructor but contains inline
// using decompiler return type
DataType decompilerReturnType =
decompilerUtils.getDecompilerReturnType(indeterminateFunction);
if (decompilerReturnType != null) {
String returnDataName = decompilerReturnType.getDisplayName();
if (returnDataName.contains("*") &&
!isFidFunction(indeterminateFunction)) {
continue;
}
if (returnDataName.equals("void")) {
continue;
}
recoveredClass.addIndeterminateInline(indeterminateFunction);
indeterminateIterator.remove();
}
}
}
}
@@ -6293,7 +6312,7 @@ public class RecoveredClassHelper {
// otherwise, use pcode info to figure out if inlined constructor or destructor
//If not already, make function a this call
makeFunctionThiscall(inlineFunction);
// makeFunctionThiscall(inlineFunction);
List<OffsetPcodeOpPair> loads = getLoadPcodeOpPairs(inlineFunction);
List<OffsetPcodeOpPair> stores = getStorePcodeOpPairs(inlineFunction);