1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 20:33:52 +00:00

Build list of symbol source files.

This commit is contained in:
Bartosz Taudul 2020-04-08 22:18:00 +02:00
parent 0551cd8e44
commit a1bad4b7be
2 changed files with 16 additions and 0 deletions

View File

@ -52,6 +52,7 @@ void SourceView::OpenSource( const char* fileName, int line )
m_baseAddr = 0; m_baseAddr = 0;
m_symAddr = 0; m_symAddr = 0;
m_currentAddr = 0; m_currentAddr = 0;
m_sourceFiles.clear();
ParseSource( fileName, nullptr ); ParseSource( fileName, nullptr );
assert( !m_lines.empty() ); assert( !m_lines.empty() );
@ -65,6 +66,7 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
m_baseAddr = baseAddr; m_baseAddr = baseAddr;
m_symAddr = symAddr; m_symAddr = symAddr;
m_currentAddr = symAddr; m_currentAddr = symAddr;
m_sourceFiles.clear();
ParseSource( fileName, &worker ); ParseSource( fileName, &worker );
Disassemble( baseAddr, worker ); Disassemble( baseAddr, worker );
@ -235,6 +237,18 @@ bool SourceView::Disassemble( uint64_t symAddr, const Worker& worker )
} }
} }
m_asm.emplace_back( AsmLine { op.address, jumpAddr, op.mnemonic, op.op_str } ); m_asm.emplace_back( AsmLine { op.address, jumpAddr, op.mnemonic, op.op_str } );
uint32_t srcline;
const auto srcidx = worker.GetLocationForAddress( op.address, srcline );
if( srcline != 0 )
{
const auto idx = srcidx.Idx();
auto sit = m_sourceFiles.find( idx );
if( sit == m_sourceFiles.end() )
{
m_sourceFiles.emplace( idx );
}
}
} }
cs_free( insn, cnt ); cs_free( insn, cnt );
if( !m_jumpTable.empty() ) if( !m_jumpTable.empty() )

View File

@ -90,6 +90,8 @@ private:
unordered_flat_set<uint64_t> m_jumpOut; unordered_flat_set<uint64_t> m_jumpOut;
int m_maxJumpLevel; int m_maxJumpLevel;
bool m_showJumps; bool m_showJumps;
unordered_flat_set<uint32_t> m_sourceFiles;
}; };
} }