From 9b6cb82eeeb06703b9fc94bc44cbacd957e09278 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Tue, 3 May 2022 20:09:18 +0000 Subject: [PATCH] Fix up baseAddr by walking back from symAddr --- server/TracySourceView.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/TracySourceView.cpp b/server/TracySourceView.cpp index 60663a99..e69bec8d 100644 --- a/server/TracySourceView.cpp +++ b/server/TracySourceView.cpp @@ -592,19 +592,23 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, { m_targetLine = line; m_targetAddr = symAddr; - m_baseAddr = baseAddr; + m_baseAddr = baseAddr ? baseAddr : symAddr; m_symAddr = symAddr; m_sourceFiles.clear(); m_selectedAddresses.clear(); m_selectedAddresses.emplace( symAddr ); + while (!worker.HasSymbolCode( m_baseAddr )) { + m_baseAddr -= 4; + } + ParseSource( fileName, worker, view ); - Disassemble( baseAddr, worker ); + Disassemble( m_baseAddr, worker ); SelectLine( line, &worker, true, symAddr ); SelectViewMode(); - if( !worker.GetInlineSymbolList( baseAddr, m_codeLen ) ) m_calcInlineStats = false; + if( !worker.GetInlineSymbolList( m_baseAddr, m_codeLen ) ) m_calcInlineStats = false; } void SourceView::SelectViewMode()