DBG: refactor SymbolInfo to use VA instead of RVA
This commit is contained in:
parent
ffc168f44d
commit
66017a7442
|
@ -1478,7 +1478,7 @@ extern "C" DLL_EXPORT duint _dbg_sendmessage(DBGMSG type, void* param1, void* pa
|
|||
//TODO: hack^2
|
||||
auto real = (SymbolInfo*)param1;
|
||||
auto fake = (SYMBOLINFO*)param2;
|
||||
fake->addr = real->addr;
|
||||
fake->addr = real->va;
|
||||
fake->decoratedSymbol = (char*)real->decoratedName.c_str();
|
||||
fake->undecoratedSymbol = (char*)real->undecoratedName.c_str();
|
||||
fake->isImported = strncmp(fake->decoratedSymbol, "__imp_", 6) == 0; //TODO: properly handle this
|
||||
|
|
|
@ -65,7 +65,7 @@ void SymEnum(duint Base, CBSYMBOLENUM EnumCallback, void* UserData)
|
|||
SYMBOLINFO curSymbol;
|
||||
memset(&curSymbol, 0, sizeof(SYMBOLINFO));
|
||||
|
||||
curSymbol.addr = Base + info.addr;
|
||||
curSymbol.addr = info.va;
|
||||
curSymbol.decoratedSymbol = cbData.decoratedSymbol.data();
|
||||
curSymbol.undecoratedSymbol = cbData.undecoratedSymbol.data();
|
||||
strncpy_s(curSymbol.decoratedSymbol, MAX_SYM_NAME, info.decoratedName.c_str(), _TRUNCATE);
|
||||
|
@ -282,7 +282,7 @@ bool SymAddrFromName(const char* Name, duint* Address)
|
|||
SymbolInfo symInfo;
|
||||
if(modInfo->symbols->findSymbolByName(name, symInfo, true))
|
||||
{
|
||||
*Address = base + symInfo.addr;
|
||||
*Address = symInfo.va;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
struct SymbolInfo
|
||||
{
|
||||
duint addr;
|
||||
duint va;
|
||||
duint size;
|
||||
int32 disp;
|
||||
String decoratedName;
|
||||
|
|
|
@ -122,7 +122,7 @@ bool SymbolSourceDIA::loadSymbolsAsync(String path)
|
|||
symInfo.undecoratedName = sym.undecoratedName;
|
||||
symInfo.size = sym.size;
|
||||
symInfo.disp = sym.disp;
|
||||
symInfo.addr = sym.virtualAddress;
|
||||
symInfo.va = _imageBase + sym.virtualAddress;
|
||||
symInfo.publicSymbol = sym.publicSymbol;
|
||||
|
||||
// Check if we already have it inside, private symbols have priority over public symbols.
|
||||
|
@ -130,7 +130,7 @@ bool SymbolSourceDIA::loadSymbolsAsync(String path)
|
|||
{
|
||||
ScopedSpinLock lock(_lockSymbols);
|
||||
|
||||
auto it = _symAddrs.find(symInfo.addr);
|
||||
auto it = _symAddrs.find(sym.virtualAddress);
|
||||
if(it != _symAddrs.end())
|
||||
{
|
||||
if(_symData[it->second].publicSymbol == true && symInfo.publicSymbol == false)
|
||||
|
@ -142,7 +142,7 @@ bool SymbolSourceDIA::loadSymbolsAsync(String path)
|
|||
else
|
||||
{
|
||||
_symData.push_back(symInfo);
|
||||
_symAddrs.insert({ symInfo.addr, _symData.size() - 1 });
|
||||
_symAddrs.insert({ sym.virtualAddress, _symData.size() - 1 });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -344,7 +344,7 @@ bool SymbolSourceDIA::findSymbolExactOrLower(duint rva, SymbolInfo & symInfo)
|
|||
if(it != _symAddrs.end())
|
||||
{
|
||||
symInfo = _symData[it->second];
|
||||
symInfo.disp = (int32_t)(rva - symInfo.addr);
|
||||
symInfo.disp = (int32_t)(rva - (symInfo.va - _imageBase));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ bool SymbolFromAddressExactOrLower(duint address, SymbolInfo & symInfo)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool SymbolFromAddr(duint addr, SymbolInfo & symbol)
|
||||
/*bool SymbolFromAddr(duint addr, SymbolInfo & symbol)
|
||||
{
|
||||
SHARED_ACQUIRE(LockSymbolCache);
|
||||
auto foundR = symbolRange.find(Range(addr, addr));
|
||||
|
@ -172,3 +172,4 @@ bool LineDelRange(duint addr)
|
|||
lineRange.erase(foundR);
|
||||
return true;
|
||||
}
|
||||
*/
|
|
@ -7,7 +7,7 @@
|
|||
bool SymbolFromAddressExact(duint address, SymbolInfo & symInfo);
|
||||
bool SymbolFromAddressExactOrLower(duint address, SymbolInfo & symInfo);
|
||||
|
||||
bool SymbolFromAddr(duint addr, SymbolInfo & symbol);
|
||||
/*bool SymbolFromAddr(duint addr, SymbolInfo & symbol);
|
||||
bool SymbolFromName(const char* name, SymbolInfo & symbol);
|
||||
bool SymbolAdd(const SymbolInfo & symbol);
|
||||
bool SymbolAddRange(duint start, duint size);
|
||||
|
@ -17,4 +17,4 @@ bool LineFromAddr(duint addr, LineInfo & line);
|
|||
bool LineFromName(const char* sourceFile, int lineNumber, LineInfo & line);
|
||||
bool LineAdd(const LineInfo & line);
|
||||
bool LineAddRange(duint start, duint size);
|
||||
bool LineDelRange(duint addr);
|
||||
bool LineDelRange(duint addr);*/
|
Loading…
Reference in New Issue