[Lldb-commits] [PATCH] D63667: Support __kernel_rt_sigreturn in frame initialization
Joseph Tremoulet via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Jul 15 14:03:11 PDT 2019
JosephTremoulet added a comment.
Herald added subscribers: wuzish, MaskRay.
> That LLDB frame #5 is a bit bogus
Thanks for taking a look at this. I'm trying to reproduce what you're seeing and failing. This is what I see, in a fedora:latest docker container on an Ubuntu host on an x86_64 machine, with my patch applied to lldb:
$ gcc -g -O0 -o sigtest main.c
$ lldb ./sigtest
(lldb) target create "./sigtest"
Current executable set to './sigtest' (x86_64).
(lldb) breakpoint set -f main.c -l 6
Breakpoint 1: where = sigtest`handler + 11 at main.c:7:5, address = 0x0000000000401171
(lldb) run
Process 149148 launched: '/home/josepht/scratch/sigtest' (x86_64)
Process 149148 stopped
* thread #1, name = 'sigtest', stop reason = signal SIGABRT
frame #0: 0x00007ffff7e38e75 libc.so.6`__GI_raise + 325
libc.so.6`__GI_raise:
-> 0x7ffff7e38e75 <+325>: movq 0x108(%rsp), %rax
0x7ffff7e38e7d <+333>: xorq %fs:0x28, %rax
0x7ffff7e38e86 <+342>: jne 0x7ffff7e38eac ; <+380>
0x7ffff7e38e88 <+344>: movl %r8d, %eax
(lldb) continue
Process 149148 resuming
Process 149148 stopped
* thread #1, name = 'sigtest', stop reason = breakpoint 1.1
frame #0: 0x0000000000401171 sigtest`handler(sig=6) at main.c:7:5
4
5 void handler(int sig)
6 {
-> 7 printf("Set a breakpoint here.\n");
8 exit(0);
9 }
10
(lldb) bt
* thread #1, name = 'sigtest', stop reason = breakpoint 1.1
* frame #0: 0x0000000000401171 sigtest`handler(sig=6) at main.c:7:5
frame #1: 0x00007ffff7e38f00 libc.so.6`.annobin_sigaction.c + 16
frame #2: 0x00007ffff7e38e75 libc.so.6`__GI_raise + 325
frame #3: 0x00007ffff7e23895 libc.so.6`__GI_abort + 295
frame #4: 0x000000000040118e sigtest`abort_caller at main.c:12:5
frame #5: 0x00000000004011c2 sigtest`main at main.c:23:5
frame #6: 0x00007ffff7e24f33 libc.so.6`__libc_start_main + 243
frame #7: 0x00000000004010ae sigtest`_start + 46
(lldb) frame select 2
frame #2: 0x00007ffff7e38e75 libc.so.6`__GI_raise + 325
libc.so.6`__GI_raise:
-> 0x7ffff7e38e75 <+325>: movq 0x108(%rsp), %rax
0x7ffff7e38e7d <+333>: xorq %fs:0x28, %rax
0x7ffff7e38e86 <+342>: jne 0x7ffff7e38eac ; <+380>
0x7ffff7e38e88 <+344>: movl %r8d, %eax
(lldb) frame select 3
frame #3: 0x00007ffff7e23895 libc.so.6`__GI_abort + 295
libc.so.6`__GI_abort:
-> 0x7ffff7e23895 <+295>: movq %fs:0x10, %rdx
0x7ffff7e2389e <+304>: cmpq %rdx, 0x19f493(%rip) ; lock + 8
0x7ffff7e238a5 <+311>: je 0x7ffff7e238ed ; <+383>
0x7ffff7e238a7 <+313>: movl $0x1, %esi
My frame 2 seems to correspond to your frame 4, and then my frame 3 seems to correspond to your frame 6, without the bogus frame in between. Do I have the wrong repro steps or something?
Thanks,
-Joseph
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D63667/new/
https://reviews.llvm.org/D63667
More information about the lldb-commits
mailing list