From 74df84bed8bdd19871349acb737d50c58495898a Mon Sep 17 00:00:00 2001 From: caheckman <48068198+caheckman@users.noreply.github.com> Date: Thu, 16 Sep 2021 13:53:46 -0400 Subject: [PATCH] Move segmentop tags into pspec --- .../Decompiler/src/decompile/cpp/userop.cc | 16 ++++++---------- Ghidra/Processors/Z80/data/languages/z180.pspec | 13 +++++++++++++ Ghidra/Processors/Z80/data/languages/z182.pspec | 13 +++++++++++++ Ghidra/Processors/Z80/data/languages/z80.cspec | 13 ------------- Ghidra/Processors/Z80/data/languages/z80.pspec | 13 +++++++++++++ .../Processors/Z80/data/languages/z8401x.pspec | 13 +++++++++++++ 6 files changed, 58 insertions(+), 23 deletions(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc index 082c2f2825..496a32644f 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc @@ -167,7 +167,6 @@ void SegmentOp::restoreXml(const Element *el) injectId = -1; baseinsize = 0; innerinsize = 0; - bool userdefined = false; supportsfarpointer = false; name = "segment"; // Default name, might be overridden by userop attribute for(int4 i=0;igetNumAttributes();++i) { @@ -177,19 +176,16 @@ void SegmentOp::restoreXml(const Element *el) supportsfarpointer = true; else if (nm == "userop") { // Based on existing sleigh op name = el->getAttributeValue(i); - UserPcodeOp *otherop = glb->userops.getOp(name); - if (otherop != (UserPcodeOp *)0) { - userdefined = true; - useropindex = otherop->getIndex(); - if (dynamic_cast(otherop) == (UnspecializedPcodeOp *)0) - throw LowlevelError("Redefining userop "+name); - } } else throw LowlevelError("Bad segmentop tag attribute: "+nm); } - if (!userdefined) - throw LowlevelError("Missing userop attribute in segmentop tag"); + UserPcodeOp *otherop = glb->userops.getOp(name); + if (otherop == (UserPcodeOp *)0) + throw LowlevelError(" unknown userop " + name); + useropindex = otherop->getIndex(); + if (dynamic_cast(otherop) == (UnspecializedPcodeOp *)0) + throw LowlevelError("Redefining userop "+name); const List &list(el->getChildren()); List::const_iterator iter; diff --git a/Ghidra/Processors/Z80/data/languages/z180.pspec b/Ghidra/Processors/Z80/data/languages/z180.pspec index 7273b292f6..c69838f8c7 100644 --- a/Ghidra/Processors/Z80/data/languages/z180.pspec +++ b/Ghidra/Processors/Z80/data/languages/z180.pspec @@ -3,6 +3,19 @@ + + + + + + + + + + + diff --git a/Ghidra/Processors/Z80/data/languages/z182.pspec b/Ghidra/Processors/Z80/data/languages/z182.pspec index 0f580aab6e..f055025c00 100644 --- a/Ghidra/Processors/Z80/data/languages/z182.pspec +++ b/Ghidra/Processors/Z80/data/languages/z182.pspec @@ -1,6 +1,19 @@ + + + + + + + + + + + diff --git a/Ghidra/Processors/Z80/data/languages/z80.cspec b/Ghidra/Processors/Z80/data/languages/z80.cspec index d264cf3b9d..33418cf15a 100644 --- a/Ghidra/Processors/Z80/data/languages/z80.cspec +++ b/Ghidra/Processors/Z80/data/languages/z80.cspec @@ -9,19 +9,6 @@ - - - - - - - - - - - diff --git a/Ghidra/Processors/Z80/data/languages/z80.pspec b/Ghidra/Processors/Z80/data/languages/z80.pspec index 245f82634d..6439c45e60 100644 --- a/Ghidra/Processors/Z80/data/languages/z80.pspec +++ b/Ghidra/Processors/Z80/data/languages/z80.pspec @@ -3,6 +3,19 @@ + + + + + + + + + + + diff --git a/Ghidra/Processors/Z80/data/languages/z8401x.pspec b/Ghidra/Processors/Z80/data/languages/z8401x.pspec index ecb7d44b91..fc26e6fa7a 100644 --- a/Ghidra/Processors/Z80/data/languages/z8401x.pspec +++ b/Ghidra/Processors/Z80/data/languages/z8401x.pspec @@ -3,6 +3,19 @@ + + + + + + + + + + +