Let recoverNameRecommendationsForSymbols find input register varnodes

This commit is contained in:
caheckman 2020-07-04 18:41:17 -04:00
parent 4d48d6f180
commit 02406aa031

View file

@ -1240,6 +1240,7 @@ SymbolEntry *ScopeLocal::remapSymbolDynamic(Symbol *sym,uint8 hash,const Address
void ScopeLocal::recoverNameRecommendationsForSymbols(void) void ScopeLocal::recoverNameRecommendationsForSymbols(void)
{ {
Address param_usepoint = fd->getAddress() - 1;
list<NameRecommend>::const_iterator iter; list<NameRecommend>::const_iterator iter;
for(iter=nameRecommend.begin();iter!=nameRecommend.end();++iter) { for(iter=nameRecommend.begin();iter!=nameRecommend.end();++iter) {
const Address &addr((*iter).getAddr()); const Address &addr((*iter).getAddr());
@ -1258,7 +1259,10 @@ void ScopeLocal::recoverNameRecommendationsForSymbols(void)
vn = fd->findLinkedVarnode(entry); vn = fd->findLinkedVarnode(entry);
} }
else { else {
vn = fd->findVarnodeWritten(size,addr,usepoint); if (usepoint == param_usepoint)
vn = fd->findVarnodeInput(size, addr);
else
vn = fd->findVarnodeWritten(size,addr,usepoint);
if (vn == (Varnode *)0) continue; if (vn == (Varnode *)0) continue;
sym = vn->getHigh()->getSymbol(); sym = vn->getHigh()->getSymbol();
if (sym == (Symbol *)0) continue; if (sym == (Symbol *)0) continue;