1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Fix up baseAddr by walking back from symAddr

This commit is contained in:
Benoit Jacob 2022-05-03 20:09:18 +00:00
parent 0a432ed349
commit 9b6cb82eee

View File

@ -592,19 +592,23 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
{ {
m_targetLine = line; m_targetLine = line;
m_targetAddr = symAddr; m_targetAddr = symAddr;
m_baseAddr = baseAddr; m_baseAddr = baseAddr ? baseAddr : symAddr;
m_symAddr = symAddr; m_symAddr = symAddr;
m_sourceFiles.clear(); m_sourceFiles.clear();
m_selectedAddresses.clear(); m_selectedAddresses.clear();
m_selectedAddresses.emplace( symAddr ); m_selectedAddresses.emplace( symAddr );
while (!worker.HasSymbolCode( m_baseAddr )) {
m_baseAddr -= 4;
}
ParseSource( fileName, worker, view ); ParseSource( fileName, worker, view );
Disassemble( baseAddr, worker ); Disassemble( m_baseAddr, worker );
SelectLine( line, &worker, true, symAddr ); SelectLine( line, &worker, true, symAddr );
SelectViewMode(); SelectViewMode();
if( !worker.GetInlineSymbolList( baseAddr, m_codeLen ) ) m_calcInlineStats = false; if( !worker.GetInlineSymbolList( m_baseAddr, m_codeLen ) ) m_calcInlineStats = false;
} }
void SourceView::SelectViewMode() void SourceView::SelectViewMode()