From b66180204aea2025c1f324c0dea995fd39fa4d8e Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Wed, 3 Jun 2026 07:20:13 -0400 Subject: [PATCH] GP-6347: SourceLanguageAnalyzer now tells user to rerun analysis if new languages were found --- .../core/analysis/SourceLanguageAnalyzer.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/SourceLanguageAnalyzer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/SourceLanguageAnalyzer.java index 14f2e4fbd7..3337b5c8b7 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/SourceLanguageAnalyzer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/SourceLanguageAnalyzer.java @@ -17,6 +17,7 @@ package ghidra.app.plugin.core.analysis; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Predicate; import ghidra.app.services.*; import ghidra.app.util.importer.MessageLog; @@ -64,20 +65,23 @@ public class SourceLanguageAnalyzer extends AbstractAnalyzer { return true; } - // Look for new source languages in the program - Set ids = SourceLanguageService.find(program, log, monitor); + Set currentIds = program.getSourceLanguageIDs(); + Set newIds = SourceLanguageService.find(program, log, monitor); + program.setSourceLanguageIDs(newIds); - // Update the "Source Languages" program property - program.setSourceLanguageIDs(ids); + if (newIds.stream().anyMatch(Predicate.not(currentIds::contains))) { + log.appendMsg(NAME + "> New source languages were found.\n" + + "New analyzers may be available if the program is reopened and Auto Analysis is run again."); + } // Optionally add source language spec extensions if (addSpecExtensions) { if (program.hasExclusiveAccess()) { - SourceLanguageService.addSpecExtensions(program, ids, log, monitor); + SourceLanguageService.addSpecExtensions(program, newIds, log, monitor); } else { log.appendMsg( - NAME + ": Cannot add spec extensions without exclusive access to program."); + NAME + "> Cannot add spec extensions without exclusive access to program."); } }