From f38bfdd9cea7030b4b925e8d4354e5dd902bdd08 Mon Sep 17 00:00:00 2001 From: ghizard <50744617+ghizard@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:58:33 -0500 Subject: [PATCH] GP-5218 Add task monitor to PDB U source lines importation --- .../app/util/pdb/pdbapplicator/DefaultPdbApplicator.java | 2 +- .../util/pdb/pdbapplicator/PdbSourceLinesApplicator.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java index 9e5b61fe99..0fb5e1ffad 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java @@ -391,7 +391,7 @@ public class DefaultPdbApplicator implements PdbApplicator { // as that allows us to fetch the function start, given any address within // the function if (applicatorOptions.applySourceLineNumbers()) { - linesApplicator.process(); + linesApplicator.process(monitor); } // Options options = program.getOptions(Program.PROGRAM_INFO); // options.setBoolean(PdbParserConstants.PDB_LOADED, true); diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbSourceLinesApplicator.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbSourceLinesApplicator.java index 22745023b0..fb37e82bcc 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbSourceLinesApplicator.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbSourceLinesApplicator.java @@ -32,6 +32,7 @@ import ghidra.util.Msg; import ghidra.util.SourceFileUtils; import ghidra.util.exception.AssertException; import ghidra.util.exception.CancelledException; +import ghidra.util.task.TaskMonitor; /** * Helper class to PdbApplicator for applying source line information @@ -81,9 +82,10 @@ public class PdbSourceLinesApplicator { //============================================================================================== /** * Process all Module line information + * @param monitor the task monitor * @throws CancelledException upon user cancellation */ - public void process() throws CancelledException { + public void process(TaskMonitor monitor) throws CancelledException { PdbDebugInfo debugInfo = pdb.getDebugInfo(); if (debugInfo == null) { Msg.info(this, "PDB: Missing DebugInfo - cannot process line numbers."); @@ -98,11 +100,14 @@ public class PdbSourceLinesApplicator { // Not processing user defined "Types" source information. TODO: ??? int numModules = debugInfo.getNumModules(); + monitor.initialize(numModules); + monitor.setMessage("PDB: Importing module function source line information..."); for (int num = 1; num <= numModules; num++) { - pdb.checkCancelled(); + monitor.checkCancelled(); Module module = debugInfo.getModule(num); processC11Lines(module); processC13Sections(module); + monitor.incrementProgress(1); } }