From 65b2ecb3bd6262db07a15a06981d518ab892e5b5 Mon Sep 17 00:00:00 2001 From: shygoo <shyguyhex@gmail.com> Date: Sun, 23 Feb 2020 11:28:25 -0600 Subject: [PATCH] [Debugger] Fix symbol display in commands window --- .../Debugger/Debugger-Commands.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp index fac75ff4e..a023dbd45 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp @@ -555,15 +555,16 @@ void CDebugCommandsView::ShowAddress(uint32_t address, bool top, bool bUserInput char* cmdName = strtok((char*)command, "\t"); char* cmdArgs = strtok(NULL, "\t"); + CSymbol jalSymbol; + // Show subroutine symbol name for JAL target if (OpCode.op == R4300i_JAL) { - uint32_t targetAddr = (0x80000000 | (OpCode.target << 2)); + uint32_t targetAddr = (m_StartAddress & 0xF0000000) | (OpCode.target << 2); - CSymbol symbol; - if (m_Debugger->SymbolTable()->GetSymbolByAddress(targetAddr, &symbol)) + if (m_Debugger->SymbolTable()->GetSymbolByAddress(targetAddr, &jalSymbol)) { - cmdArgs = (char*)symbol.m_Name; + cmdArgs = (char*)jalSymbol.m_Name; } } @@ -571,6 +572,8 @@ void CDebugCommandsView::ShowAddress(uint32_t address, bool top, bool bUserInput const char* annotation = NULL; bool bLoadStoreAnnotation = false; + CSymbol memSymbol; + if (OpInfo.IsLoadStoreCommand()) { for (int offset = -4; offset > -24; offset -= 4) @@ -594,10 +597,9 @@ void CDebugCommandsView::ShowAddress(uint32_t address, bool top, bool bUserInput uint32_t memAddr = (OpCodeTest.immediate << 16) + (short)OpCode.offset; - CSymbol symbol; - if (m_Debugger->SymbolTable()->GetSymbolByAddress(memAddr, &symbol)) + if (m_Debugger->SymbolTable()->GetSymbolByAddress(memAddr, &memSymbol)) { - annotation = symbol.m_Name; + annotation = memSymbol.m_Name; } else { @@ -620,10 +622,10 @@ void CDebugCommandsView::ShowAddress(uint32_t address, bool top, bool bUserInput m_CommandList.AddItem(i, CCommandList::COL_PARAMETERS, cmdArgs); // Show routine symbol name for this address - CSymbol symbol; - if (m_Debugger->SymbolTable()->GetSymbolByAddress(opAddr, &symbol)) + CSymbol pcSymbol; + if (m_Debugger->SymbolTable()->GetSymbolByAddress(opAddr, &pcSymbol)) { - m_CommandList.AddItem(i, CCommandList::COL_SYMBOL, symbol.m_Name); + m_CommandList.AddItem(i, CCommandList::COL_SYMBOL, pcSymbol.m_Name); m_bvAnnotatedLines.push_back(false); } else if (annotation != NULL)