From c0bf857debe9fdbde5374c2e43e817ebe8f2c4ec Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 17 Jan 2012 14:03:33 +0000 Subject: [PATCH] 2012-01-17 Pedro Alves * dwarf2-frame.c (dwarf2_frame_cfa): Throw NOT_AVAILABLE_ERROR, if the frame's stop reason is UNWIND_UNAVAILABLE. --- gdb/ChangeLog | 5 +++++ gdb/dwarf2-frame.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 71c2051794..5ee25dd83e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-01-17 Pedro Alves + + * dwarf2-frame.c (dwarf2_frame_cfa): Throw NOT_AVAILABLE_ERROR, if + the frame's stop reason is UNWIND_UNAVAILABLE. + 2012-01-17 Jan Kratochvil Fix compilation error. diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 88aa338919..5870079556 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -1490,6 +1490,10 @@ dwarf2_frame_cfa (struct frame_info *this_frame) if (!frame_unwinder_is (this_frame, &dwarf2_frame_unwind) && !frame_unwinder_is (this_frame, &dwarf2_tailcall_frame_unwind)) error (_("can't compute CFA for this frame")); + if (get_frame_unwind_stop_reason (this_frame) == UNWIND_UNAVAILABLE) + throw_error (NOT_AVAILABLE_ERROR, + _("can't compute CFA for this frame: " + "required registers or memory are unavailable")); return get_frame_base (this_frame); }