diff --git a/Ghidra/Features/Base/developer_scripts/ForceRedisassembly.java b/Ghidra/Features/Base/developer_scripts/ForceRedisassembly.java index ad13cce93b..6590e067cc 100644 --- a/Ghidra/Features/Base/developer_scripts/ForceRedisassembly.java +++ b/Ghidra/Features/Base/developer_scripts/ForceRedisassembly.java @@ -15,12 +15,8 @@ */ import ghidra.app.script.GhidraScript; import ghidra.program.database.ProgramDB; -import ghidra.program.model.lang.*; -import ghidra.program.model.listing.IncompatibleLanguageException; -import ghidra.program.util.LanguageTranslator; -import ghidra.program.util.LanguageTranslatorAdapter; +import ghidra.program.model.lang.Language; import ghidra.util.Msg; -import ghidra.util.exception.AssertException; public class ForceRedisassembly extends GhidraScript { @@ -33,50 +29,8 @@ public class ForceRedisassembly extends GhidraScript { } ProgramDB program = (ProgramDB) currentProgram; - Language lang = program.getLanguage(); + Language lang = null; - LanguageTranslator translator = - new MyLanguageTranslator(lang.getLanguageID(), lang.getVersion()); - if (!translator.isValid()) { - return; - } - - program.setLanguage(translator, program.getCompilerSpec().getCompilerSpecID(), true, - monitor); - } - - private static class MyLanguageTranslator extends LanguageTranslatorAdapter { - protected MyLanguageTranslator(LanguageID languageId, int version) { - super(languageId, version, languageId, version); - } - - @Override - public boolean isValid() { - if (super.isValid()) { - try { - validateDefaultSpaceMap(); - } - catch (IncompatibleLanguageException e) { - throw new AssertException(); - } - Register newContextReg = getNewLanguage().getContextBaseRegister(); - if (newContextReg != Register.NO_CONTEXT) { - Register oldContextReg = getOldLanguage().getContextBaseRegister(); - if (oldContextReg != Register.NO_CONTEXT || - !isSameRegisterConstruction(oldContextReg, newContextReg)) { - throw new AssertException(); - } - } - return true; - } - return false; - } - - @Override - public String toString() { - return "[" + getOldLanguageID() + " (Version " + getOldVersion() + ")] -> [" + - getNewLanguageID() + " (Version " + getNewVersion() + - ")] {Forced Re-Disassembly Translator}"; - } + program.setLanguage(lang, null, true, monitor); } } diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramCompilerSpec.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramCompilerSpec.java index 98f82ac1ae..c6dddb30ac 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramCompilerSpec.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramCompilerSpec.java @@ -121,20 +121,19 @@ public class ProgramCompilerSpec extends BasicCompilerSpec { ArrayList finalList = new ArrayList<>(); TreeSet currentNames = new TreeSet<>(); for (PrototypeModel model : allmodels) { - currentNames.add(model.getName()); if (usermodels.containsKey(model.getName())) { continue; } + currentNames.add(model.getName()); finalList.add(model); // Add original non-userdef models } + usermodels.clear(); for (PrototypeModel model : extensions) { if (currentNames.contains(model.getName())) { - if (!usermodels.containsKey(model.getName())) { - Msg.warn(this, - "Cannot override prototype model " + model.getName() + " with extension"); - continue; - } + Msg.warn(this, + "Cannot override prototype model " + model.getName() + " with extension"); + continue; } markPrototypeAsExtension(model); finalList.add(model);