aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2/dw2-bad-cfi.S
AgeCommit message (Collapse)AuthorFilesLines
2013-11-22Rename gdb.dwarf2/dw2-bad-cfi.* to gdb.dwarf2/dw2-unspecified-ret-addr.*.Pedro Alves1-217/+0
gdb/testsuite/ 2013-11-22 Pedro Alves <palves@redhat.com> * gdb.dwarf2/dw2-bad-cfi.S: Rename to ... * gdb.dwarf2/dw2-unspecified-ret-addr.S: ... this. Adjust. * gdb.dwarf2/dw2-bad-cfi.c: Rename to ... * gdb.dwarf2/dw2-unspecified-ret-addr.c: ... this. * gdb.dwarf2/dw2-bad-cfi.exp: Rename to ... * gdb.dwarf2/dw2-unspecified-ret-addr.exp: ... this.
2013-11-22update comment in dw2-bad-cfi.S.Tom Tromey1-1/+2
Pedro asked me to add a comment to dw2-bad-cfi.S explaining the nature of the badness. I'm checking this in. 2013-11-22 Tom Tromey <tromey@redhat.com> * gdb.dwarf2/dw2-bad-cfi.S: Update comment.
2013-11-22handle an unspecified return address columnTom Tromey1-0/+216
Debugging PR 16155 further, I found that the DWARF unwinder found the function in question, but thought it had no registers saved (fs->regs.num_regs == 0). It seems to me that if a frame does not specify the return address column, or if the return address column is explicitly marked as DWARF2_FRAME_REG_UNSPECIFIED, then we should set the "undefined_retaddr" flag and let the DWARF unwinder gracefully stop. This patch implements that idea. With this patch the backtrace works properly: (gdb) bt #0 0x0000007fb7ed485c in nanosleep () from /lib64/libc.so.6 #1 0x0000007fb7ed4508 in sleep () from /lib64/libc.so.6 #2 0x00000000004008bc in thread_function (arg=0x4) at threadapply.c:73 #3 0x0000007fb7fad950 in start_thread () from /lib64/libpthread.so.0 #4 0x0000007fb7f0956c in clone () from /lib64/libc.so.6 2013-11-22 Tom Tromey <tromey@redhat.com> PR backtrace/16155: * dwarf2-frame.c (dwarf2_frame_cache): Set undefined_retaddr if the return address column is unspecified. 2013-11-22 Tom Tromey <tromey@redhat.com> * gdb.dwarf2/dw2-bad-cfi.c: New file. * gdb.dwarf2/dw2-bad-cfi.exp: New file. * gdb.dwarf2/dw2-bad-cfi.S: New file.