diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/SpecExtension.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/SpecExtension.java index 0b2ee72704..01372bef38 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/SpecExtension.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/SpecExtension.java @@ -637,7 +637,13 @@ public class SpecExtension { } cspecValidator.verify(res.optionName, document); checkExtension(res); - parseExtension(res.optionName, document, program.getCompilerSpec(), false); + if (!(program.getCompilerSpec() instanceof BasicCompilerSpec)) { + throw new SleighException( + "Can only test specification extensions against SLEIGH program"); + } + BasicCompilerSpec cSpecCopy = + new BasicCompilerSpec((BasicCompilerSpec) program.getCompilerSpec()); + parseExtension(res.optionName, document, cSpecCopy, false); return res; } diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java index 6f82352b27..56e457fddd 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java @@ -163,7 +163,7 @@ public class BasicCompilerSpec implements CompilerSpec { * spec from Language. * @param op2 is the spec to clone */ - protected BasicCompilerSpec(BasicCompilerSpec op2) { + public BasicCompilerSpec(BasicCompilerSpec op2) { language = op2.language; description = op2.description; // PrototypeModel is immutable but the map may change, so callingConventionMap