Merge remote-tracking branch 'origin/GP-3125_ghidra1_DemanglerAnalyzers--SQUASHED'

This commit is contained in:
ghidra1
2023-02-22 19:04:48 -05:00
@@ -111,6 +111,8 @@ public abstract class AbstractDemanglerAnalyzer extends AbstractAnalyzer {
int count = initialCount;
SymbolTable symbolTable = program.getSymbolTable();
// TODO: iterator will continually need to reinitialize due to symbol changes
// consider copying primary symbols to alt storage for iteration
SymbolIterator it = symbolTable.getPrimarySymbolIterator(set, true);
while (it.hasNext()) {
monitor.checkCanceled();
@@ -129,7 +131,27 @@ public abstract class AbstractDemanglerAnalyzer extends AbstractAnalyzer {
DemangledObject demangled = demangle(mangled, address, options, log);
if (demangled != null) {
apply(program, address, demangled, options, log, monitor);
continue;
}
// Only attempt to demangle a non-primary symbol if primary is imported and will
// not demangle.
if (symbol.getSource() != SourceType.IMPORTED) {
continue;
}
for (Symbol altSym : symbolTable.getSymbols(address)) {
if (altSym.isPrimary() || skipSymbol(altSym)) {
continue;
}
mangled = cleanSymbol(address, altSym.getName());
demangled = demangle(mangled, address, options, log);
if (demangled != null) {
apply(program, address, demangled, options, log, monitor);
break;
}
}
}
return count;
}