From 3fd917d8860e9bdcabc14c536da4377307906be0 Mon Sep 17 00:00:00 2001 From: Joseph Tremoulet Date: Fri, 19 Jul 2019 14:05:55 +0000 Subject: Support Linux signal return trampolines in frame initialization Summary: Add __kernel_rt_sigreturn to the list of trap handlers for Linux (it's used as such on aarch64 at least), and __restore_rt as well (used on x86_64). Skip decrement-and-recompute for trap handlers in InitializeNonZerothFrame, as signal dispatch may point the child frame's return address to the start of the return trampoline. Parse the 'S' flag for signal handlers from eh_frame augmentation, and propagate it to the unwind plan. Reviewers: labath, jankratochvil, compnerd, jfb, jasonmolenda Reviewed By: jasonmolenda Subscribers: clayborg, MaskRay, wuzish, nemanjai, kbarton, jrtc27, atanasyan, jsji, javed.absar, kristof.beyls, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D63667 llvm-svn: 366580 --- .../test/functionalities/signal/handle-abrt/main.c | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c') diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c new file mode 100644 index 00000000000..c2daea1e84e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c @@ -0,0 +1,25 @@ +#include +#include +#include + +void handler(int sig) +{ + printf("Set a breakpoint here.\n"); + exit(0); +} + +void abort_caller() { + abort(); +} + +int main() +{ + if (signal(SIGABRT, handler) == SIG_ERR) + { + perror("signal"); + return 1; + } + + abort_caller(); + return 2; +} -- cgit v1.2.3