mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 18:29:37 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
539d5b2aad
4 changed files with 50 additions and 12 deletions
|
@ -415,7 +415,7 @@ public class DynamicHash {
|
|||
hash <<= 4;
|
||||
hash |= method; // 4-bits
|
||||
hash <<= 7;
|
||||
hash |= op.getOpcode(); // 7-bits
|
||||
hash |= transtable[op.getOpcode()]; // 7-bits
|
||||
hash <<= 5;
|
||||
hash |= slot & 0x1f; // 5-bits
|
||||
|
||||
|
@ -705,6 +705,21 @@ public class DynamicHash {
|
|||
}
|
||||
}
|
||||
|
||||
private static void dedupVarnodes(ArrayList<Varnode> varlist) {
|
||||
if (varlist.size() < 2) {
|
||||
return;
|
||||
}
|
||||
ArrayList<Varnode> resList = new ArrayList<>();
|
||||
HashSet<Varnode> hashSet = new HashSet<>();
|
||||
for (Varnode vn : varlist) {
|
||||
if (hashSet.add(vn)) {
|
||||
resList.add(vn);
|
||||
}
|
||||
}
|
||||
varlist.clear();
|
||||
varlist.addAll(resList);
|
||||
}
|
||||
|
||||
public static void gatherFirstLevelVars(ArrayList<Varnode> varlist, PcodeSyntaxTree fd,
|
||||
Address addr, long h) {
|
||||
int opc = getOpCodeFromHash(h);
|
||||
|
@ -714,7 +729,7 @@ public class DynamicHash {
|
|||
|
||||
while (iter.hasNext()) {
|
||||
PcodeOp op = iter.next();
|
||||
if (op.getOpcode() != opc) {
|
||||
if (transtable[op.getOpcode()] != opc) {
|
||||
continue;
|
||||
}
|
||||
if (slot < 0) {
|
||||
|
@ -745,6 +760,7 @@ public class DynamicHash {
|
|||
varlist.add(vn);
|
||||
}
|
||||
}
|
||||
dedupVarnodes(varlist);
|
||||
}
|
||||
|
||||
public static int getSlotFromHash(long h) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue