mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GT-2880 add PeLoader.setProcessorContext() with thumb logic
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package ghidra.app.util.opinion;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
|
||||
import generic.continues.GenericFactory;
|
||||
@@ -36,6 +37,8 @@ import ghidra.framework.options.Options;
|
||||
import ghidra.program.database.mem.FileBytes;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.data.*;
|
||||
import ghidra.program.model.lang.Register;
|
||||
import ghidra.program.model.lang.RegisterValue;
|
||||
import ghidra.program.model.listing.*;
|
||||
import ghidra.program.model.mem.Memory;
|
||||
import ghidra.program.model.mem.MemoryAccessException;
|
||||
@@ -133,6 +136,8 @@ public class PeLoader extends AbstractPeDebugLoader {
|
||||
}
|
||||
}
|
||||
|
||||
setProcessorContext(fileHeader, program, monitor, log);
|
||||
|
||||
processExports(optionalHeader, program, monitor, log);
|
||||
processImports(optionalHeader, program, monitor, log);
|
||||
processRelocations(optionalHeader, program, monitor, log);
|
||||
@@ -465,6 +470,20 @@ public class PeLoader extends AbstractPeDebugLoader {
|
||||
}
|
||||
}
|
||||
|
||||
private void setProcessorContext(FileHeader fileHeader, Program program, TaskMonitor monitor,
|
||||
MessageLog log) {
|
||||
|
||||
String machineName = fileHeader.getMachineName();
|
||||
if ("450".equals(machineName) || "452".equals(machineName)) {
|
||||
Register tmodeReg = program.getProgramContext().getRegister("TMode");
|
||||
if (tmodeReg == null) {
|
||||
return;
|
||||
}
|
||||
RegisterValue thumbMode = new RegisterValue(tmodeReg, BigInteger.ONE);
|
||||
program.getProgramContext().setDefaultDisassemblyContext(thumbMode);
|
||||
}
|
||||
}
|
||||
|
||||
private void processExports(OptionalHeader optionalHeader, Program program, TaskMonitor monitor,
|
||||
MessageLog log) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user