[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