[Lldb-commits] [lldb] [lldb/aarch64] Fix unwinding when signal interrupts a leaf function (PR #91321)
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Fri May 10 16:49:14 PDT 2024
jasonmolenda wrote:
maybe the shell test is building without debug info, I am surprised to see assembly there. If I build it like that and run it by hand,
```
(lldb) settings set platform.plugin.darwin.ignored-exceptions EXC_BAD_INSTRUCTION
(lldb) b sigill_handler
Breakpoint 1: where = a.out`sigill_handler, address = 0x0000000100003f38
(lldb) r
Process 25891 launched: '/tmp/a.out' (arm64)
Process 25891 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGILL
frame #0: 0x0000000100003f2c a.out`signal_generating_add + 4
a.out`signal_generating_add:
-> 0x100003f2c <+4>: udf #0xdead
0x100003f30 <+8>: ret
0x100003f34 <+12>: brk #0x1
a.out`sigill_handler:
0x100003f38 <+0>: sub sp, sp, #0x20
(lldb) c
Process 25891 resuming
Process 25891 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100003f38 a.out`sigill_handler
a.out`sigill_handler:
-> 0x100003f38 <+0>: sub sp, sp, #0x20
0x100003f3c <+4>: stp x29, x30, [sp, #0x10]
0x100003f40 <+8>: add x29, sp, #0x10
0x100003f44 <+12>: stur w0, [x29, #-0x4]
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
* frame #0: 0x0000000100003f38 a.out`sigill_handler
frame #1: 0x0000000197f93584 libsystem_platform.dylib`_sigtramp + 56
frame #2: 0x0000000100003f7c a.out`main + 44
frame #3: 0x0000000197bda0e0 dyld`start + 2360
(lldb)
```
https://github.com/llvm/llvm-project/pull/91321
More information about the lldb-commits
mailing list