<div dir="ltr">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)  <br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 28, 2017 at 10:13 AM Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">No test case?<br class="gmail_msg">
<br class="gmail_msg">
Jim<br class="gmail_msg">
<br class="gmail_msg">
> On Feb 28, 2017, at 9:59 AM, Zachary Turner via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org" class="gmail_msg" target="_blank">lldb-commits@lists.llvm.org</a>> wrote:<br class="gmail_msg">
><br class="gmail_msg">
> Author: zturner<br class="gmail_msg">
> Date: Tue Feb 28 11:59:59 2017<br class="gmail_msg">
> New Revision: 296495<br class="gmail_msg">
><br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=296495&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=296495&view=rev</a><br class="gmail_msg">
> Log:<br class="gmail_msg">
> Fix incorrect logic in StackFrame::Disassemble.<br class="gmail_msg">
><br class="gmail_msg">
> This had broken as the result of some previous cleanup.<br class="gmail_msg">
><br class="gmail_msg">
> Modified:<br class="gmail_msg">
>    lldb/trunk/source/Target/StackFrame.cpp<br class="gmail_msg">
><br class="gmail_msg">
> Modified: lldb/trunk/source/Target/StackFrame.cpp<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/StackFrame.cpp?rev=296495&r1=296494&r2=296495&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/StackFrame.cpp?rev=296495&r1=296494&r2=296495&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- lldb/trunk/source/Target/StackFrame.cpp (original)<br class="gmail_msg">
> +++ lldb/trunk/source/Target/StackFrame.cpp Tue Feb 28 11:59:59 2017<br class="gmail_msg">
> @@ -221,18 +221,20 @@ bool StackFrame::ChangePC(addr_t pc) {<br class="gmail_msg">
><br class="gmail_msg">
> const char *StackFrame::Disassemble() {<br class="gmail_msg">
>   std::lock_guard<std::recursive_mutex> guard(m_mutex);<br class="gmail_msg">
> -  if (m_disassembly.Empty())<br class="gmail_msg">
> -    return nullptr;<br class="gmail_msg">
> -<br class="gmail_msg">
> -  ExecutionContext exe_ctx(shared_from_this());<br class="gmail_msg">
> -  Target *target = exe_ctx.GetTargetPtr();<br class="gmail_msg">
> -  if (target) {<br class="gmail_msg">
> -    const char *plugin_name = nullptr;<br class="gmail_msg">
> -    const char *flavor = nullptr;<br class="gmail_msg">
> -    Disassembler::Disassemble(target->GetDebugger(), target->GetArchitecture(),<br class="gmail_msg">
> -                              plugin_name, flavor, exe_ctx, 0, false, 0, 0,<br class="gmail_msg">
> -                              m_disassembly);<br class="gmail_msg">
> +  if (m_disassembly.Empty()) {<br class="gmail_msg">
> +    ExecutionContext exe_ctx(shared_from_this());<br class="gmail_msg">
> +    Target *target = exe_ctx.GetTargetPtr();<br class="gmail_msg">
> +    if (target) {<br class="gmail_msg">
> +      const char *plugin_name = nullptr;<br class="gmail_msg">
> +      const char *flavor = nullptr;<br class="gmail_msg">
> +      Disassembler::Disassemble(target->GetDebugger(),<br class="gmail_msg">
> +                                target->GetArchitecture(), plugin_name, flavor,<br class="gmail_msg">
> +                                exe_ctx, 0, false, 0, 0, m_disassembly);<br class="gmail_msg">
> +    }<br class="gmail_msg">
> +    if (m_disassembly.Empty())<br class="gmail_msg">
> +      return nullptr;<br class="gmail_msg">
>   }<br class="gmail_msg">
> +<br class="gmail_msg">
>   return m_disassembly.GetData();<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> _______________________________________________<br class="gmail_msg">
> lldb-commits mailing list<br class="gmail_msg">
> <a href="mailto:lldb-commits@lists.llvm.org" class="gmail_msg" target="_blank">lldb-commits@lists.llvm.org</a><br class="gmail_msg">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits</a><br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>