mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-3126 Join support for CONCAT trees
This commit is contained in:
parent
bdc6f56c40
commit
7d6c6d28be
17 changed files with 185 additions and 17 deletions
|
@ -114,6 +114,7 @@ void IfaceDecompCapability::registerCommands(IfaceStatus *status)
|
|||
status->registerCom(new IfcRename(),"rename");
|
||||
status->registerCom(new IfcRetype(),"retype");
|
||||
status->registerCom(new IfcRemove(),"remove");
|
||||
status->registerCom(new IfcIsolate(),"isolate");
|
||||
status->registerCom(new IfcLockPrototype(),"prototype","lock");
|
||||
status->registerCom(new IfcUnlockPrototype(),"prototype","unlock");
|
||||
status->registerCom(new IfcCommentInstr(),"comment","instruction");
|
||||
|
@ -1365,6 +1366,29 @@ void IfcRetype::execute(istream &s)
|
|||
}
|
||||
}
|
||||
|
||||
/// \class IfcIsolate
|
||||
/// \brief Mark a symbol as isolated from speculative merging: `isolate <name>`
|
||||
void IfcIsolate::execute(istream &s)
|
||||
|
||||
{
|
||||
string symbolName;
|
||||
|
||||
s >> ws >> symbolName;
|
||||
if (symbolName.size() == 0)
|
||||
throw IfaceParseError("Missing symbol name");
|
||||
|
||||
Symbol *sym;
|
||||
vector<Symbol *> symList;
|
||||
dcp->readSymbol(symbolName,symList);
|
||||
if (symList.empty())
|
||||
throw IfaceExecutionError("No symbol named: "+symbolName);
|
||||
if (symList.size() == 1)
|
||||
sym = symList[0];
|
||||
else
|
||||
throw IfaceExecutionError("More than one symbol named: "+symbolName);
|
||||
sym->setIsolated(true);
|
||||
}
|
||||
|
||||
/// The Varnode is selected from the \e current function. It is specified as a
|
||||
/// storage location with info about its defining p-code in parantheses.
|
||||
/// - `%EAX(r0x10000:0x65)`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue