GP-1924 Don't override previous dynamic mapping

This commit is contained in:
caheckman 2022-04-14 19:19:48 -04:00
parent 2f414bf570
commit c5c74d987f

View file

@ -1177,11 +1177,10 @@ bool Funcdata::attemptDynamicMapping(SymbolEntry *entry,DynamicHash &dhash)
dhash.clear(); dhash.clear();
Varnode *vn = dhash.findVarnode(this,entry->getFirstUseAddress(),entry->getHash()); Varnode *vn = dhash.findVarnode(this,entry->getFirstUseAddress(),entry->getHash());
if (vn == (Varnode *)0) return false; if (vn == (Varnode *)0) return false;
if (vn->getSymbolEntry() != (SymbolEntry *)0) return false; // Varnode is already labeled
if (entry->getSymbol()->getCategory() == 1) { // Is this an equate symbol if (entry->getSymbol()->getCategory() == 1) { // Is this an equate symbol
if (vn->mapentry != entry) { // Check we haven't marked this before vn->setSymbolEntry(entry);
vn->setSymbolEntry(entry); return true;
return true;
}
} }
else if (entry->getSize() == vn->getSize()) { else if (entry->getSize() == vn->getSize()) {
if (vn->setSymbolProperties(entry)) if (vn->setSymbolProperties(entry))
@ -1205,7 +1204,7 @@ bool Funcdata::attemptDynamicMappingLate(SymbolEntry *entry,DynamicHash &dhash)
Varnode *vn = dhash.findVarnode(this,entry->getFirstUseAddress(),entry->getHash()); Varnode *vn = dhash.findVarnode(this,entry->getFirstUseAddress(),entry->getHash());
if (vn == (Varnode *)0) if (vn == (Varnode *)0)
return false; return false;
if (vn->getSymbolEntry() == entry) return false; // Already applied it if (vn->getSymbolEntry() != (SymbolEntry *)0) return false; // Symbol already applied
Symbol *sym = entry->getSymbol(); Symbol *sym = entry->getSymbol();
if (sym->getCategory() == 1) { // Equate symbol does not depend on size if (sym->getCategory() == 1) { // Equate symbol does not depend on size
vn->setSymbolEntry(entry); vn->setSymbolEntry(entry);