diff --git a/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/GdbInJvmDebuggerModelFactory.java b/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/GdbInJvmDebuggerModelFactory.java index ad5fbd81e0..4b2a4cbd5d 100644 --- a/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/GdbInJvmDebuggerModelFactory.java +++ b/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/GdbInJvmDebuggerModelFactory.java @@ -47,18 +47,35 @@ public class GdbInJvmDebuggerModelFactory implements DebuggerModelFactory { public final Property useExistingOption = Property.fromAccessors(boolean.class, this::isUseExisting, this::setUseExisting); - // TODO: newLine option? + private boolean useCrlf = System.lineSeparator().equals("\r\n");; + @FactoryOption("Use DOS line endings (unchecked for UNIX and Cygwin))") + public final Property crlfNewLineOption = + Property.fromAccessors(Boolean.class, this::isUseCrlf, this::setUseCrlf); @Override public CompletableFuture build() { List gdbCmdLine = ShellUtils.parseArgs(gdbCmd); GdbModelImpl model = new GdbModelImpl(PtyFactory.local()); + if (useCrlf) { + model.setDosNewLine(); + } + else { + model.setUnixNewLine(); + } return model .startGDB(existing ? null : gdbCmdLine.get(0), gdbCmdLine.subList(1, gdbCmdLine.size()).toArray(String[]::new)) .thenApply(__ -> model); } + public boolean isUseCrlf() { + return useCrlf; + } + + public void setUseCrlf(boolean useCrlf) { + this.useCrlf = useCrlf; + } + @Override public int getPriority(Program program) { if (!GdbCompatibility.INSTANCE.isCompatible(gdbCmd)) {