mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
Allow splitting of free varnodes
This commit is contained in:
parent
ce0ab31576
commit
babc6d4d9b
2 changed files with 12 additions and 6 deletions
|
@ -523,6 +523,9 @@ bool Funcdata::fillinReadOnly(Varnode *vn)
|
|||
return false; // No change was made
|
||||
}
|
||||
|
||||
if (vn->getSize() > sizeof(uintb))
|
||||
return false; // Constant will exceed precision
|
||||
|
||||
uintb res;
|
||||
uint1 bytes[32];
|
||||
try {
|
||||
|
|
|
@ -1937,18 +1937,21 @@ TransformVar *LaneDivide::setReplacement(Varnode *vn,int4 numLanes,int4 skipLane
|
|||
return newSplit(vn,description, numLanes, skipLanes);
|
||||
}
|
||||
|
||||
if (vn->isFree())
|
||||
return (TransformVar *)0; // Abort
|
||||
// Allow free varnodes to be split
|
||||
// if (vn->isFree())
|
||||
// return (TransformVar *)0;
|
||||
|
||||
if (vn->isTypeLock())
|
||||
return (TransformVar *)0;
|
||||
|
||||
vn->setMark();
|
||||
TransformVar *res = newSplit(vn, description, numLanes, skipLanes);
|
||||
workList.push_back(WorkNode());
|
||||
workList.back().lanes = res;
|
||||
workList.back().numLanes = numLanes;
|
||||
workList.back().skipLanes = skipLanes;
|
||||
if (!vn->isFree()) {
|
||||
workList.push_back(WorkNode());
|
||||
workList.back().lanes = res;
|
||||
workList.back().numLanes = numLanes;
|
||||
workList.back().skipLanes = skipLanes;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue