From 02406aa031a7545de638a846a8b38e585077beb4 Mon Sep 17 00:00:00 2001 From: caheckman <48068198+caheckman@users.noreply.github.com> Date: Sat, 4 Jul 2020 18:41:17 -0400 Subject: [PATCH] Let recoverNameRecommendationsForSymbols find input register varnodes --- Ghidra/Features/Decompiler/src/decompile/cpp/varmap.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/varmap.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/varmap.cc index e8b8e02b50..68476dfa57 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/varmap.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/varmap.cc @@ -1240,6 +1240,7 @@ SymbolEntry *ScopeLocal::remapSymbolDynamic(Symbol *sym,uint8 hash,const Address void ScopeLocal::recoverNameRecommendationsForSymbols(void) { + Address param_usepoint = fd->getAddress() - 1; list::const_iterator iter; for(iter=nameRecommend.begin();iter!=nameRecommend.end();++iter) { const Address &addr((*iter).getAddr()); @@ -1258,7 +1259,10 @@ void ScopeLocal::recoverNameRecommendationsForSymbols(void) vn = fd->findLinkedVarnode(entry); } 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; sym = vn->getHigh()->getSymbol(); if (sym == (Symbol *)0) continue;