[all-commits] [llvm/llvm-project] 4e4763: [lldb] Handle backwards branches in UnwindAssembly...
Felipe de Azevedo Piovezan via All-commits
all-commits at lists.llvm.org
Wed Dec 3 02:44:10 PST 2025
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 4e4763a8a4659dc252429a003c613f762d5a1083
https://github.com/llvm/llvm-project/commit/4e4763a8a4659dc252429a003c613f762d5a1083
Author: Felipe de Azevedo Piovezan <fpiovezan at apple.com>
Date: 2025-12-03 (Wed, 03 Dec 2025)
Changed paths:
M lldb/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
M lldb/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h
M lldb/unittests/UnwindAssembly/ARM64/TestArm64InstEmulation.cpp
Log Message:
-----------
[lldb] Handle backwards branches in UnwindAssemblyInstEmulation (#169633)
This allows the unwinder to handle code with mid-function epilogues
where the subsequent code is reachable through a backwards branch.
Two changes are required to accomplish this:
1. Do not enqueue the subsequent instruction if the current instruction
is a barrier(*).
2. When processing an instruction, stop ignoring branches with negative
offsets.
(*) As per the definition in LLVM's MC layer, a barrier is any
instruction that "stops control flow from executing the instruction
immediately following it". See `MCInstrDesc::isBarrier` in MCInstrDesc.h
Part of a sequence of PRs:
[lldb][NFCI] Rewrite UnwindAssemblyInstEmulation in terms of a CFG visit
#169630
[lldb][NFC] Rename forward_branch_offset to branch_offset in
UnwindAssemblyInstEmulation #169631
[lldb] Add DisassemblerLLVMC::IsBarrier API #169632
[lldb] Handle backwards branches in UnwindAssemblyInstEmulation #169633
commit-id:fd266c13
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list