diff options
author | John Baldwin <jhb@FreeBSD.org> | 2006-08-23 19:16:17 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2006-08-23 19:16:17 +0000 |
commit | c198287ff3eaabbbf59d99a4278625b35646ade5 (patch) | |
tree | 37aa7bc883cdfaf620e04eb270d52b67216d03f1 /gnu/usr.bin/gdb | |
parent | 35a64c9f6f69bd4234866dedfa9b8d5f6b33ef1b (diff) | |
download | src-c198287ff3eaabbbf59d99a4278625b35646ade5.tar.gz src-c198287ff3eaabbbf59d99a4278625b35646ade5.zip |
Remove special handling for PC == 0. With this, kgdb can now properly
unwind across a page fault due to a null function pointer. It does a
better job than ddb now in fact.
Reviewed by: marcel
MFC after: 3 days
Notes
Notes:
svn path=/head/; revision=161555
Diffstat (limited to 'gnu/usr.bin/gdb')
-rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_amd64.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c index ed50bbf4dab8..f24883d7c76a 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c @@ -149,15 +149,12 @@ kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, *lvalp = not_lval; *realnump = -1; - cache = kgdb_trgt_frame_cache(next_frame, this_cache); - if (cache->pc == 0) - return; - ofs = (regnum >= AMD64_RAX_REGNUM && regnum <= AMD64_EFLAGS_REGNUM + 2) ? kgdb_trgt_frame_offset[regnum] : -1; if (ofs == -1) return; + cache = kgdb_trgt_frame_cache(next_frame, this_cache); *addrp = cache->sp + ofs; *lvalp = lval_memory; target_read_memory(*addrp, valuep, regsz); @@ -176,8 +173,6 @@ kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) CORE_ADDR pc; pc = frame_pc_unwind(next_frame); - if (pc == 0) - return (&kgdb_trgt_trapframe_unwind); pname = NULL; find_pc_partial_function(pc, &pname, NULL, NULL); if (pname == NULL) |