diff options
| -rw-r--r-- | arch/armv7/arch_armv7.cpp | 3 | ||||
| -rw-r--r-- | arch/armv7/thumb2_disasm/arch_thumb2.cpp | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/armv7/arch_armv7.cpp b/arch/armv7/arch_armv7.cpp index f27a3fb9..a851b5ad 100644 --- a/arch/armv7/arch_armv7.cpp +++ b/arch/armv7/arch_armv7.cpp @@ -705,7 +705,10 @@ protected: if (UNCONDITIONAL(instr.cond)) { if (instr.operands[0].cls == REG && instr.operands[0].reg == REG_LR) + { result.AddBranch(FunctionReturn); + result.archTransitionByTargetAddr = true; + } else { result.AddBranch(UnresolvedBranch); diff --git a/arch/armv7/thumb2_disasm/arch_thumb2.cpp b/arch/armv7/thumb2_disasm/arch_thumb2.cpp index 873b9b27..6b876239 100644 --- a/arch/armv7/thumb2_disasm/arch_thumb2.cpp +++ b/arch/armv7/thumb2_disasm/arch_thumb2.cpp @@ -273,6 +273,7 @@ public: ((decomp.format->operands[0].type == OPERAND_FORMAT_REG) && (decomp.fields[decomp.format->operands[0].field0] == 14))) { result.AddBranch(FunctionReturn); + result.archTransitionByTargetAddr = true; } else { result.AddBranch(UnresolvedBranch); result.archTransitionByTargetAddr = true; |
