mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
Multi-merge functionality
This commit is contained in:
parent
cbcfaf54fa
commit
6c6d5f2f1b
9 changed files with 256 additions and 61 deletions
|
@ -899,7 +899,16 @@ bool Funcdata::syncVarnodesWithSymbol(VarnodeLocSet::const_iterator &iter,uint4
|
|||
vn = *iter++;
|
||||
if (vn->isFree()) continue;
|
||||
vnflags = vn->getFlags();
|
||||
if ((vnflags & mask) != flags) { // We have a change
|
||||
if (vn->mapentry != (SymbolEntry *)0) { // If there is already an attached SymbolEntry (dynamic)
|
||||
uint4 localMask = mask & ~Varnode::mapped; // Make sure 'mapped' bit is unchanged
|
||||
uint4 localFlags = flags & localMask;
|
||||
if ((vnflags & localMask) != localFlags) {
|
||||
updateoccurred = true;
|
||||
vn->setFlags(localFlags);
|
||||
vn->clearFlags((~localFlags)&localMask);
|
||||
}
|
||||
}
|
||||
else if ((vnflags & mask) != flags) { // We have a change
|
||||
updateoccurred = true;
|
||||
vn->setFlags(flags);
|
||||
vn->clearFlags((~flags)&mask);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue