aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gdb
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2006-08-23 19:16:17 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2006-08-23 19:16:17 +0000
commitc198287ff3eaabbbf59d99a4278625b35646ade5 (patch)
tree37aa7bc883cdfaf620e04eb270d52b67216d03f1 /gnu/usr.bin/gdb
parent35a64c9f6f69bd4234866dedfa9b8d5f6b33ef1b (diff)
downloadsrc-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.c7
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)