[Lldb-commits] [PATCH] D134037: [lldb] Fix CommandInterpreter::DidProcessStopAbnormally() with multiple threads
David Spickett via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Sep 26 08:10:46 PDT 2022
DavidSpickett added a comment.
> I might add the AArch64 and Arm equivalent if I have some spare time.
I looked into this and there's a detail that makes this work on x86 only. So I'll leave it as is, it's getting tested somewhere, and that's what matters.
If you're curious this is the spanner in the works:
size_t NativeProcessProtocol::GetSoftwareBreakpointPCOffset() {
switch (GetArchitecture().GetMachine()) {
case llvm::Triple::x86:
case llvm::Triple::x86_64:
case llvm::Triple::systemz:
// These architectures report increment the PC after breakpoint is hit.
return cantFail(GetSoftwareBreakpointTrapOpcode(0)).size();
Meaning AArch64 doesn't. lldb on x86 can continue past a break in the program because of this:
(lldb) run
Process 31032 launched: '/tmp/test.o' (x86_64)
Process 31032 stopped
* thread #1, name = 'test.o', stop reason = signal SIGTRAP
frame #0: 0x000055555555460f test.o`main at test.c:3
1 int main() {
2 __asm__ __volatile__("int3");
-> 3 return 0;
4 }
(lldb) c
Process 31032 resuming
Process 31032 exited with status = 0 (0x00000000)
On AArch64 we just stick on the break:
(lldb) run
Process 2162869 launched: '/tmp/test.o' (aarch64)
Process 2162869 stopped
* thread #1, name = 'test.o', stop reason = signal SIGTRAP
frame #0: 0x0000aaaaaaaaa71c test.o`main at test.c:2:3
1 int main() {
-> 2 asm volatile("brk #0xf000\n\t");
3 return 0;
4 }
(lldb) c
Process 2162869 resuming
Process 2162869 stopped
* thread #1, name = 'test.o', stop reason = signal SIGTRAP
frame #0: 0x0000aaaaaaaaa71c test.o`main at test.c:2:3
1 int main() {
-> 2 asm volatile("brk #0xf000\n\t");
3 return 0;
4 }
gdb has the same behaviour on AArch64 so I'll leave it as is until someone complains.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134037/new/
https://reviews.llvm.org/D134037
More information about the lldb-commits
mailing list