aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/dwarf2-frame.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 71c2051..5ee25dd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-17 Pedro Alves <palves@redhat.com>
+
+ * dwarf2-frame.c (dwarf2_frame_cfa): Throw NOT_AVAILABLE_ERROR, if
+ the frame's stop reason is UNWIND_UNAVAILABLE.
+
2012-01-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix compilation error.
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index 88aa338..5870079 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);
}