hrev45910 adds 1 changeset to branch 'master' old head: 5163e1c62dc454d84d5cfbd4558b84b8195a44fa new head: c0a779600707af9e6faf8552134a3cc05219f75a overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=c0a7796+%5E5163e1c ---------------------------------------------------------------------------- c0a7796: Debugger: Fix step over on x86-64. DisassemblerX8664::GetNextInstructionInfo() was mistakenly truncating the instruction address due to a copy-and-paste bug when it was initially spawned off DisassemblerX86. This would result in the temporary breakpoints for skipping over function calls never getting set properly, leading to us stepping into the PLT on a step over. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev45910 Commit: c0a779600707af9e6faf8552134a3cc05219f75a URL: http://cgit.haiku-os.org/haiku/commit/?id=c0a7796 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Jul 27 23:07:02 2013 UTC ---------------------------------------------------------------------------- 1 file changed, 4 insertions(+), 4 deletions(-) src/apps/debugger/arch/x86_64/disasm/DisassemblerX8664.cpp | 8 ++++---- ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/arch/x86_64/disasm/DisassemblerX8664.cpp b/src/apps/debugger/arch/x86_64/disasm/DisassemblerX8664.cpp index 07424ce..70bbf04 100644 --- a/src/apps/debugger/arch/x86_64/disasm/DisassemblerX8664.cpp +++ b/src/apps/debugger/arch/x86_64/disasm/DisassemblerX8664.cpp @@ -111,10 +111,10 @@ DisassemblerX8664::GetNextInstruction(BString& line, target_addr_t& _address, if (size < 1) return B_ENTRY_NOT_FOUND; - uint64 address = ud_insn_off(fUdisData); + target_addr_t address = ud_insn_off(fUdisData); char buffer[256]; - snprintf(buffer, sizeof(buffer), "0x%08" B_PRIx64 ": %16.16s %s", address, + snprintf(buffer, sizeof(buffer), "0x%016" B_PRIx64 ": %16.16s %s", address, ud_insn_hex(fUdisData), ud_insn_asm(fUdisData)); // TODO: Resolve symbols! @@ -159,7 +159,7 @@ DisassemblerX8664::GetNextInstructionInfo(InstructionInfo& _info, if (size < 1) return B_ENTRY_NOT_FOUND; - uint32 address = (uint32)ud_insn_off(fUdisData); + target_addr_t address = ud_insn_off(fUdisData); instruction_type type = INSTRUCTION_TYPE_OTHER; target_addr_t targetAddress = 0; @@ -172,7 +172,7 @@ DisassemblerX8664::GetNextInstructionInfo(InstructionInfo& _info, targetAddress = GetInstructionTargetAddress(state); char buffer[256]; - snprintf(buffer, sizeof(buffer), "0x%08" B_PRIx32 ": %16.16s %s", address, + snprintf(buffer, sizeof(buffer), "0x%016" B_PRIx64 ": %16.16s %s", address, ud_insn_hex(fUdisData), ud_insn_asm(fUdisData)); // TODO: Resolve symbols!