Make that SBFrame::Disassemble... Jim
> On Feb 28, 2017, at 10:21 AM, Jim Ingham <jing...@apple.com> wrote: > > SBStackFrame::Disassemble calls StackFrame::Disassemble to do its job. From > the looks of it, your goof would cause lldb never to return any instructions > when asked to disassemble a stack frame, since StackFrame does the work > lazily and the error was to NOT do the work when the disassembly is empty, > rather than to ONLY do the work... It should be straightforward to write a > test that disassembles a stack frame with the SB API's and see if it gets ANY > instructions. You can't do more than that without getting architecture > specific, but testing that in the future somebody didn't break stack frame > disassembly altogether should be pretty simple. > > Jim > > > >> On Feb 28, 2017, at 10:17 AM, Zachary Turner <ztur...@google.com> wrote: >> >> I'm not even sure how to exercise this code path. Granted, the reason it >> broke at all is because of no test case, but I feel like someone who >> understands this code should probably prepare a test case for it. (I know >> in the past Jason has said that it was notoriously hard to write test cases >> for disassembler) >> >> On Tue, Feb 28, 2017 at 10:13 AM Jim Ingham <jing...@apple.com> wrote: >> No test case? >> >> Jim >> >>> On Feb 28, 2017, at 9:59 AM, Zachary Turner via lldb-commits >>> <lldb-commits@lists.llvm.org> wrote: >>> >>> Author: zturner >>> Date: Tue Feb 28 11:59:59 2017 >>> New Revision: 296495 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=296495&view=rev >>> Log: >>> Fix incorrect logic in StackFrame::Disassemble. >>> >>> This had broken as the result of some previous cleanup. >>> >>> Modified: >>> lldb/trunk/source/Target/StackFrame.cpp >>> >>> Modified: lldb/trunk/source/Target/StackFrame.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/StackFrame.cpp?rev=296495&r1=296494&r2=296495&view=diff >>> ============================================================================== >>> --- lldb/trunk/source/Target/StackFrame.cpp (original) >>> +++ lldb/trunk/source/Target/StackFrame.cpp Tue Feb 28 11:59:59 2017 >>> @@ -221,18 +221,20 @@ bool StackFrame::ChangePC(addr_t pc) { >>> >>> const char *StackFrame::Disassemble() { >>> std::lock_guard<std::recursive_mutex> guard(m_mutex); >>> - if (m_disassembly.Empty()) >>> - return nullptr; >>> - >>> - ExecutionContext exe_ctx(shared_from_this()); >>> - Target *target = exe_ctx.GetTargetPtr(); >>> - if (target) { >>> - const char *plugin_name = nullptr; >>> - const char *flavor = nullptr; >>> - Disassembler::Disassemble(target->GetDebugger(), >>> target->GetArchitecture(), >>> - plugin_name, flavor, exe_ctx, 0, false, 0, 0, >>> - m_disassembly); >>> + if (m_disassembly.Empty()) { >>> + ExecutionContext exe_ctx(shared_from_this()); >>> + Target *target = exe_ctx.GetTargetPtr(); >>> + if (target) { >>> + const char *plugin_name = nullptr; >>> + const char *flavor = nullptr; >>> + Disassembler::Disassemble(target->GetDebugger(), >>> + target->GetArchitecture(), plugin_name, >>> flavor, >>> + exe_ctx, 0, false, 0, 0, m_disassembly); >>> + } >>> + if (m_disassembly.Empty()) >>> + return nullptr; >>> } >>> + >>> return m_disassembly.GetData(); >>> } >>> >>> >>> >>> _______________________________________________ >>> lldb-commits mailing list >>> lldb-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >> > _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits