From b157d4c161fc8ccce07769ac0ecb9e399aab7647 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 19 Apr 2020 14:40:36 +0200 Subject: [PATCH] Detect disassembly failures. --- server/TracySourceView.cpp | 2 ++ server/TracySourceView.hpp | 1 + 2 files changed, 3 insertions(+) diff --git a/server/TracySourceView.cpp b/server/TracySourceView.cpp index ba7cd2ff..c329f8fe 100644 --- a/server/TracySourceView.cpp +++ b/server/TracySourceView.cpp @@ -150,6 +150,7 @@ bool SourceView::Disassemble( uint64_t symAddr, const Worker& worker ) uint32_t len; auto code = worker.GetSymbolCode( symAddr, len ); if( !code ) return false; + m_disasmFail = -1; csh handle; cs_err rval = CS_ERR_ARCH; switch( arch ) @@ -176,6 +177,7 @@ bool SourceView::Disassemble( uint64_t symAddr, const Worker& worker ) size_t cnt = cs_disasm( handle, (const uint8_t*)code, len, symAddr, 0, &insn ); if( cnt > 0 ) { + if( insn[cnt-1].address - symAddr + insn[cnt-1].size < len ) m_disasmFail = insn[cnt-1].address - symAddr; int mLenMax = 0; m_asm.reserve( cnt ); for( size_t i=0; i m_hoveredSource; int m_displayMode; uint32_t m_codeLen; + int32_t m_disasmFail; DecayValue m_highlightAddr; bool m_asmRelative; bool m_asmShowSourceLocation;