aboutsummaryrefslogtreecommitdiff
path: root/gdb/blockframe.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-03-18 18:44:34 +0000
committerPedro Alves <palves@redhat.com>2011-03-18 18:44:34 +0000
commite3eebbd742b7c1820bead11710b71bfee694d7fa (patch)
tree5d5ad80e0aa482d4985427484fe1555132a757e8 /gdb/blockframe.c
parent79e1a869ac109293fb60c1909c085ea8c6c7cd12 (diff)
gdb/
* frame.c (frame_unwind_pc): Rename to ... (frame_unwind_pc_if_available): ... this. New `pc' output parameter. Change return type to int. Gracefully handle gdbarch_unwind_pc throwing NOT_AVAILABLE_ERROR. Return 0 if that happened, or 1 otherwise. (frame_unwind_pc): Reimplement on top of frame_unwind_pc_if_available. (get_frame_func): Rename to ... (get_frame_func_if_available): New `pc' output parameter. Change return type to int. Gracefully handle the PC not being available. (get_frame_func): Reimplement on top of get_frame_func_if_available. (select_frame): Handle the PC being unavailable. (get_prev_frame): Handle the PC being unavailable. (get_frame_pc_if_available): New. (get_frame_address_in_block_if_available): New. (find_frame_sal): Handle the frame PC not being available. * frame.h (get_frame_pc_if_available): Declare. (get_frame_address_in_block_if_available): Declare. (get_frame_func_if_available): Declare. * stack.c (print_frame_info): Handle the PC being unavailable. (find_frame_funname): Ditto. (print_frame): Handle the PC being unavailable. (get_frame_language): Ditto. * blockframe.c (get_frame_block): Ditto. * macroscope.c (default_macro_scope): Ditto. * tui/tui-stack.c (tui_show_frame_info): Ditto.
Diffstat (limited to 'gdb/blockframe.c')
-rw-r--r--gdb/blockframe.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index b9aaf54da6..5bc593034e 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -58,10 +58,13 @@
struct block *
get_frame_block (struct frame_info *frame, CORE_ADDR *addr_in_block)
{
- const CORE_ADDR pc = get_frame_address_in_block (frame);
+ CORE_ADDR pc;
struct block *bl;
int inline_count;
+ if (!get_frame_address_in_block_if_available (frame, &pc))
+ return NULL;
+
if (addr_in_block)
*addr_in_block = pc;