Skip to content

Commit

Permalink
GP-4700 - Improve PDB and MDMang developer scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
ghizard committed Jun 18, 2024
1 parent 043f66b commit 9990042
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ protected void run() throws Exception {
values.setValidator((valueMap, status) -> {
return validateInputFile(valueMap, status) && validateOutputFile(valueMap, status);
});
setReusePreviousChoices(false); // false for second pass... want our default output
values = askValues(TITLE, null, values);
inputFile = values.getFile(INPUT_PROMPT); // might have changed
inputFileName = inputFile.getAbsolutePath(); // might have changed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
import ghidra.app.util.bin.format.pdb2.pdbreader.symbol.*;
import ghidra.app.util.pdb.pdbapplicator.SymbolGroup;
import ghidra.features.base.values.GhidraValuesMap;
import ghidra.util.*;
import ghidra.util.MessageType;
import ghidra.util.StatusListener;
import ghidra.util.exception.CancelledException;

public class PdbDeveloperDumpMangledSymbolNamesScript extends GhidraScript {
Expand Down Expand Up @@ -88,21 +89,22 @@ protected void run() throws Exception {
values.setValidator((valueMap, status) -> {
return validatePdb(valueMap, status) && validateOutput(valueMap, status);
});
setReusePreviousChoices(false); // false for second pass... want our default output
values = askValues(TITLE, null, values);
pdbFile = values.getFile(PDB_PROMPT); // might have changed
pdbFileName = pdbFile.getAbsolutePath(); // might have changed
File dumpFile = values.getFile(OUTPUT_PROMPT);

if (dumpFile.exists()) {
if (!askYesNo("Confirm Overwrite", "Overwrite file: " + dumpFile.getName())) {
Msg.info(this, "Operation canceled");
println("Operation canceled");
return;
}
}

String message = "Processing PDB Dump of: " + pdbFileName;
monitor.setMessage(message);
Msg.info(this, message);
println(message);
try (AbstractPdb pdb = PdbParser.parse(pdbFile, new PdbReaderOptions(), monitor)) {
pdb.deserialize();
FileWriter fileWriter = new FileWriter(dumpFile);
Expand All @@ -111,12 +113,12 @@ protected void run() throws Exception {
bufferedWriter.close();
}
catch (IOException ioe) {
Msg.info(this, ioe.getMessage());
println(ioe.getMessage());
popup(ioe.getMessage());
}
message = "Results located in: " + dumpFile.getAbsoluteFile();
monitor.setMessage(message);
Msg.info(this, message);
println(message);
}

private void dumpMangledSymbolNames(AbstractPdb pdb, Writer myWriter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
import ghidra.app.util.bin.format.pdb2.pdbreader.type.AbstractComplexMsType;
import ghidra.app.util.bin.format.pdb2.pdbreader.type.AbstractMsType;
import ghidra.features.base.values.GhidraValuesMap;
import ghidra.util.*;
import ghidra.util.MessageType;
import ghidra.util.StatusListener;
import ghidra.util.exception.CancelledException;

public class PdbDeveloperDumpMangledTypeNamesScript extends GhidraScript {
Expand Down Expand Up @@ -88,20 +89,21 @@ protected void run() throws Exception {
values.setValidator((valueMap, status) -> {
return validatePdb(valueMap, status) && validateOutput(valueMap, status);
});
setReusePreviousChoices(false); // false for second pass... want our default output
values = askValues(TITLE, null, values);
pdbFile = values.getFile(PDB_PROMPT); // might have changed
pdbFileName = pdbFile.getAbsolutePath(); // might have changed
File dumpFile = values.getFile(OUTPUT_PROMPT);

if (dumpFile.exists()) {
if (!askYesNo("Confirm Overwrite", "Overwrite file: " + dumpFile.getName())) {
Msg.info(this, "Operation canceled");
println("Operation canceled");
return;
}
}

String message = "Processing PDB Dump of: " + pdbFileName;
Msg.info(this, message);
println(message);
try (AbstractPdb pdb = PdbParser.parse(pdbFile, new PdbReaderOptions(), monitor)) {
pdb.deserialize();
FileWriter fileWriter = new FileWriter(dumpFile);
Expand All @@ -110,11 +112,11 @@ protected void run() throws Exception {
bufferedWriter.close();
}
catch (IOException ioe) {
Msg.info(this, ioe.getMessage());
println(ioe.getMessage());
popup(ioe.getMessage());
}
message = "Results located in: " + dumpFile.getAbsoluteFile();
Msg.info(this, message);
println(message);
}

private void dumpMangledTypeNames(AbstractPdb pdb, Writer myWriter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
import ghidra.app.script.GhidraScript;
import ghidra.app.util.bin.format.pdb2.pdbreader.*;
import ghidra.features.base.values.GhidraValuesMap;
import ghidra.util.*;
import ghidra.util.MessageType;
import ghidra.util.StatusListener;

public class PdbDeveloperDumpScript extends GhidraScript {

Expand Down Expand Up @@ -85,21 +86,22 @@ protected void run() throws Exception {
values.setValidator((valueMap, status) -> {
return validatePdb(valueMap, status) && validateOutput(valueMap, status);
});
setReusePreviousChoices(false); // false for second pass... want our default output
values = askValues(TITLE, null, values);
pdbFile = values.getFile(PDB_PROMPT); // might have changed
pdbFileName = pdbFile.getAbsolutePath(); // might have changed
File dumpFile = values.getFile(OUTPUT_PROMPT);

if (dumpFile.exists()) {
if (!askYesNo("Confirm Overwrite", "Overwrite file: " + dumpFile.getName())) {
Msg.info(this, "Operation canceled");
println("Operation canceled");
return;
}
}

String message = "Processing PDB Dump of: " + pdbFileName;
monitor.setMessage(message);
Msg.info(this, message);
println(message);
try (AbstractPdb pdb = PdbParser.parse(pdbFile, new PdbReaderOptions(), monitor)) {
pdb.deserialize();
FileWriter fileWriter = new FileWriter(dumpFile);
Expand All @@ -110,12 +112,12 @@ protected void run() throws Exception {
bufferedWriter.close();
}
catch (IOException ioe) {
Msg.info(this, ioe.getMessage());
println(ioe.getMessage());
popup(ioe.getMessage());
}
message = "Results located in: " + dumpFile.getAbsoluteFile();
monitor.setMessage(message);
Msg.info(this, message);
println(message);
}

private void outputHeaderMessage(BufferedWriter bufferedWriter, String name) throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

public class PdbDeveloperDumpSetScript extends GhidraScript {

private record IOEntry(String input, String output) {};
private record IOEntry(String input, String output) {}

@Override
protected void run() throws Exception {
Expand Down

0 comments on commit 9990042

Please sign in to comment.