Hi, I'm noticing an unexpected difference between targets when I hit a dbgtrap in the debugger. Consider this simple llvm function:
define void @do_break() { entry: call void @llvm.debugtrap() ret void } If I compile that with llc and use lldb to launch a program that calls it, on x86_64 linux (Ubuntu 18.04), here's what I see at the stop: Process 130404 stopped * thread #1, name = 'doit', stop reason = signal SIGTRAP frame #0: 0x0000000000400541 doit`do_break at stub.ll:2:1 (lldb) disas doit`do_break: 0x400540 <+0>: int3 -> 0x400541 <+1>: retq (lldb) register read rip rip = 0x0000000000400541 doit`do_break + 1 at stub.ll:2:1 Note that rip is reported as pointing to the next instruction after the int3. If I 'continue' from there, the program continues doing whatever was after the debugtrap. If I follow the same steps on aarch64 (also Ubuntu 18.04), I see this: Process 21586 stopped * thread #1, name = 'doit', stop reason = signal SIGTRAP frame #0: 0x00000000004005dc doit`do_break at stub.ll:1:1 (lldb) disas doit`do_break: -> 0x4005dc <+0>: brk #0x1 0x4005e0 <+4>: ret (lldb) register read pc pc = 0x00000000004005dc doit`do_break at stub.ll:1:1 Note that here, pc is reported as pointing at the 'brk' instruction itself. If I 'continue' from there, I immediately find myself stopped back at the same point, ad infinitum. >From what I can tell, GDB also "gets stuck" when it hits this instruction on >aarch64 (and also doesn't on x86_64). I'm wondering what to make of this / where's the "bug". * Should llvm use a different lowering for dbgtrap on aarch64-linux? I don't think so, it seems to be standard * Should the system signal handler be reporting an incremented pc in the context struct when it hits brk? * And even if so, what should the workaround be for systems without such a fix? * Should lldb (and gdb for that matter) somehow recognize this case, and increment pc when stopping or resuming at a brk? * Is this just unsupported, is continuing past a debugtrap UB or otherwise disallowed? I'd appreciate any insights here. Thanks, -Joseph
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev