mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-31 22:30:19 +08:00
Merge remote-tracking branch 'origin/GP-4337_ryanmkurtz_demangler-null-monitor'
This commit is contained in:
+9
-7
@@ -46,6 +46,8 @@ public abstract class AbstractDemanglerAnalyzer extends AbstractAnalyzer {
|
|||||||
private static final AddressSetView EXTERNAL_SET = new AddressSet(
|
private static final AddressSetView EXTERNAL_SET = new AddressSet(
|
||||||
AddressSpace.EXTERNAL_SPACE.getMinAddress(), AddressSpace.EXTERNAL_SPACE.getMaxAddress());
|
AddressSpace.EXTERNAL_SPACE.getMinAddress(), AddressSpace.EXTERNAL_SPACE.getMaxAddress());
|
||||||
|
|
||||||
|
private String baseMonitorMessage;
|
||||||
|
|
||||||
public AbstractDemanglerAnalyzer(String name, String description) {
|
public AbstractDemanglerAnalyzer(String name, String description) {
|
||||||
super(name, description, AnalyzerType.BYTE_ANALYZER);
|
super(name, description, AnalyzerType.BYTE_ANALYZER);
|
||||||
setPriority(AnalysisPriority.DATA_TYPE_PROPOGATION.before().before().before());
|
setPriority(AnalysisPriority.DATA_TYPE_PROPOGATION.before().before().before());
|
||||||
@@ -93,21 +95,21 @@ public abstract class AbstractDemanglerAnalyzer extends AbstractAnalyzer {
|
|||||||
set = set.subtract(EXTERNAL_SET);
|
set = set.subtract(EXTERNAL_SET);
|
||||||
}
|
}
|
||||||
|
|
||||||
String baseMonitorMessage = monitor.getMessage();
|
if (baseMonitorMessage == null) {
|
||||||
int memorySymbolCount =
|
baseMonitorMessage = monitor.getMessage();
|
||||||
demangleSymbols(program, set, 0, baseMonitorMessage, options, log, monitor);
|
}
|
||||||
|
int memorySymbolCount = demangleSymbols(program, set, 0, options, log, monitor);
|
||||||
if (demangleExternals) {
|
if (demangleExternals) {
|
||||||
// process external symbols last
|
// process external symbols last
|
||||||
demangleSymbols(program, EXTERNAL_SET, memorySymbolCount, baseMonitorMessage, options,
|
demangleSymbols(program, EXTERNAL_SET, memorySymbolCount, options, log, monitor);
|
||||||
log, monitor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int demangleSymbols(Program program, AddressSetView set, int initialCount,
|
private int demangleSymbols(Program program, AddressSetView set, int initialCount,
|
||||||
String baseMonitorMessage, DemanglerOptions options, MessageLog log,
|
DemanglerOptions options, MessageLog log, TaskMonitor monitor)
|
||||||
TaskMonitor monitor) throws CancelledException {
|
throws CancelledException {
|
||||||
|
|
||||||
int count = initialCount;
|
int count = initialCount;
|
||||||
SymbolTable symbolTable = program.getSymbolTable();
|
SymbolTable symbolTable = program.getSymbolTable();
|
||||||
|
|||||||
Reference in New Issue
Block a user