diff options
author | jhb <jhb@FreeBSD.org> | 2006-08-23 19:16:17 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-08-23 19:16:17 +0000 |
commit | bdd032b9cb2d7ae15c23174a3fd637db826031a7 (patch) | |
tree | 37aa7bc883cdfaf620e04eb270d52b67216d03f1 /gnu/usr.bin/gdb | |
parent | 7b372bea7e47e8112022b8594f8120e37f7ffd05 (diff) | |
download | FreeBSD-src-bdd032b9cb2d7ae15c23174a3fd637db826031a7.zip FreeBSD-src-bdd032b9cb2d7ae15c23174a3fd637db826031a7.tar.gz |
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
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 ed50bbf..f24883d 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) |