[Lldb-commits] [PATCH] D16814: Fix handling of the arm IT instruction in the unwinder

Tamas Berghammer via lldb-commits lldb-commits at lists.llvm.org
Tue Feb 9 05:43:21 PST 2016

tberghammer added a comment.

Jason: Can you take at the change in the unwinding logic?

Comment at: source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp:13653
@@ -13656,2 +13652,3 @@
     const uint32_t cond = CurrentCond (m_opcode.GetOpcode32());
-    return cond != 0xe && cond != 0xf && cond != UINT32_MAX;
+    if (cond == 0xe || cond == 0xf || cond == UINT32_MAX)
+        return EmulateInstruction::UnconditionalCondition;
clayborg wrote:
> Do you want to use UnconditionalCondition (or k_unconditional_condition) instead of UINT32_MAX here?
No, here we are inside EmulateInstructionARM. CurrentCond returns UINT32_MAX as a failure value what we want to treat as unconditional (as we can't do anything better). Changing CurrentCond to return UnconditionalCondition in case of a failure won't make any sense either.


More information about the lldb-commits mailing list