21813290 gdb: can't compute CFA for this frame (SPARC)
authorStefan Teleman <stefan.teleman@oracle.com>
Thu, 10 Sep 2015 19:40:53 -0700
changeset 4855 0057a9ea6dcb
parent 4854 5d61c495aa75
child 4856 7a28487dc3b6
21813290 gdb: can't compute CFA for this frame (SPARC)
components/gdb/patches/gdb.gdb.dwarf2-frame.c.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.dwarf2-frame.c.patch	Thu Sep 10 19:40:53 2015 -0700
@@ -0,0 +1,26 @@
+# Known bug in GDB < 7.8:
+# https://sourceware.org/bugzilla/show_bug.cgi?id=16215
+# Backported to GDB 7.6 until we upgrade to GDB 7.9.
+# Without this patch, we get spurious errors debugging on SPARC,
+# especially with GCC >= 4.9.0.
+--- gdb-7.6/gdb/dwarf2-frame.c	2013-01-31 10:31:48.000000000 -0800
++++ gdb-7.6/gdb/dwarf2-frame.c	2015-09-09 16:07:52.767075883 -0700
[email protected]@ -1497,16 +1497,12 @@
+ {
+   while (get_frame_type (this_frame) == INLINE_FRAME)
+     this_frame = get_prev_frame (this_frame);
+-  /* This restriction could be lifted if other unwinders are known to
+-     compute the frame base in a way compatible with the DWARF
+-     unwinder.  */
+-  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);
+ }
+