2012-01-17 Pedro Alves <palves@redhat.com>
authorPedro Alves <palves@redhat.com>
Tue, 17 Jan 2012 14:03:33 +0000 (14:03 +0000)
committerPedro Alves <palves@redhat.com>
Tue, 17 Jan 2012 14:03:33 +0000 (14:03 +0000)
* dwarf2-frame.c (dwarf2_frame_cfa): Throw NOT_AVAILABLE_ERROR, if
the frame's stop reason is UNWIND_UNAVAILABLE.

gdb/ChangeLog
gdb/dwarf2-frame.c

index 71c2051794200b631723c18afd9c2872cd5716a7..5ee25dd83ea1d0d74c6685324867825d9b8582e2 100644 (file)
@@ -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.
index 88aa338919e3da03c2b1908e1d3c234e00c93f98..58700795562d1764112386db096dffc1f981b855 100644 (file)
@@ -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);
 }
 \f