[Lldb-commits] [PATCH] D112069: [lldb][AArch64] Add UnwindPlan for Linux sigreturn
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Oct 27 02:02:57 PDT 2021
labath added a comment.
Thanks for doing this. Just a couple of comments inline.
================
Comment at: lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp:288
+
+ unwind_plan_sp = std::make_shared<UnwindPlan>(eRegisterKindGeneric);
+ unwind_plan_sp->AppendRow(row);
----------------
I have a feeling that this eRegisterKind enum should correspond with the register numbers used in the unwind plan. It'd be great if it did, as then you could replace arm64_dwarf::{pc,sp} with LLDB_REGNUM_GENERIC_{PC,SP}, and avoid including the arm64 header. Though if it does work as I remember, then I guess the question is how does this work in the first place.
================
Comment at: lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp:303-305
+ if ((machine == llvm::Triple::ArchType::aarch64 ||
+ machine == llvm::Triple::ArchType::aarch64_be ||
+ machine == llvm::Triple::ArchType::aarch64_32))
----------------
If you passed in a `llvm::Triple`, you could replace this with `triple.isAArch64()`.
And one could imagine that e.g. the environment field of the triple could be important in determining the precise unwind plan.
================
Comment at: lldb/source/Target/RegisterContextUnwind.cpp:900
// section, so prefer that if available. On other platforms we may need to
// provide a platform-specific UnwindPlan which encodes the details of how to
// unwind out of sigtramp.
----------------
labath wrote:
> this comment
I guess we should also update this comment now. Maybe:
```
On some platforms the unwind information for signal handlers is not present or correct. Give the platform plugins a chance to provide substitute plan. Otherwise, use eh_frame.
```
?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112069/new/
https://reviews.llvm.org/D112069
More information about the lldb-commits
mailing list