* dwarf2loc.c (dwarf_expr_frame_base): Add check for the return value of get_frame_block.
authorHui Zhu <teawater@gmail.com>
Thu, 6 Dec 2012 01:11:32 +0000 (01:11 +0000)
committerHui Zhu <teawater@gmail.com>
Thu, 6 Dec 2012 01:11:32 +0000 (01:11 +0000)
gdb/ChangeLog
gdb/dwarf2loc.c

index c7a8346ac055ffd51f1a93d587b807c8d1058e8f..cc89930aabc750084220ef66edfb12b9c34eadc2 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-06  Hui Zhu  <hui_zhu@mentor.com>
+
+       * dwarf2loc.c (dwarf_expr_frame_base): Add check for the return
+       value of get_frame_block.
+
 2012-12-05  Pierre Muller  <muller@sourceware.org>
 
        Avoid memory leaks on struct cmd_list_element.doc field.
index cadcc17e0bdfcf7621d5327dab744cda4a341d22..0f8e9af66764b211ebda8624a882254212a9ba63 100644 (file)
@@ -332,11 +332,15 @@ dwarf_expr_frame_base (void *baton, const gdb_byte **start, size_t * length)
      this_base method.  */
   struct symbol *framefunc;
   struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton;
+  struct block *bl = get_frame_block (debaton->frame, NULL);
+
+  if (bl == NULL)
+    error (_("frame address is not available."));
 
   /* Use block_linkage_function, which returns a real (not inlined)
      function, instead of get_frame_function, which may return an
      inlined function.  */
-  framefunc = block_linkage_function (get_frame_block (debaton->frame, NULL));
+  framefunc = block_linkage_function (bl);
 
   /* If we found a frame-relative symbol then it was certainly within
      some function associated with a frame. If we can't find the frame,