GP-3838: Add qemu+gdb launcher.

This commit is contained in:
Dan 2024-03-01 12:36:13 -05:00
parent 63e64d5b28
commit 289c5c90fa
16 changed files with 179 additions and 5 deletions

View file

@ -102,6 +102,7 @@ public abstract class AbstractScriptTraceRmiLaunchOffer extends AbstractTraceRmi
List<String> commandLine = new ArrayList<>();
Map<String, String> env = new HashMap<>(System.getenv());
prepareSubprocess(commandLine, env, args, address);
env.put("GHIDRA_LANGUAGE_ID", program.getLanguageID().toString());
for (Map.Entry<String, TtyCondition> ent : attrs.extraTtys().entrySet()) {
if (!ent.getValue().isActive(args)) {

View file

@ -64,6 +64,8 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer
public static final String PREFIX_DBGLAUNCH = "DBGLAUNCH_";
public static final String PARAM_DISPLAY_IMAGE = "Image";
public static final String PREFIX_PARAM_EXTTOOL = "env:GHIDRA_LANG_EXTTOOL_";
public static final int DEFAULT_TIMEOUT_MILLIS = 10000;
protected record PtyTerminalSession(Terminal terminal, Pty pty, PtySession session,
@ -273,6 +275,15 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer
}
paramImage = (ParameterDescription<String>) param;
}
else if (param.name.startsWith(PREFIX_PARAM_EXTTOOL)) {
String tool = param.name.substring(PREFIX_PARAM_EXTTOOL.length());
List<String> names =
program.getLanguage().getLanguageDescription().getExternalNames(tool);
if (names != null && !names.isEmpty()) {
var paramStr = (ParameterDescription<String>) param;
paramStr.set(map, names.get(0));
}
}
}
if (paramImage != null) {
File imageFile = TraceRmiLauncherServicePlugin.getProgramPath(program);