diff options
| author | Ryan Snyder <ryan@vector35.com> | 2025-03-19 08:21:04 -0400 |
|---|---|---|
| committer | Ryan Snyder <ryan@vector35.com> | 2025-07-03 03:14:45 -0400 |
| commit | 3bfeb0e19d97c71022bb5c50c2a21e129f675e1b (patch) | |
| tree | 8a07e07f58a061dae24c79e75a0ee8a8db57f0df | |
| parent | a79e605fe6d94c5b55bf686e39529d4e57d8b6c8 (diff) | |
arm/thumb: signal that returns can switch arch
| -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; |
