[PATCH] Add CTF support to GDB [2/4] Fix a bug of function dwarf_expr_frame_base

Hui Zhu teawater@gmail.com
Sat Dec 1 16:34:00 GMT 2012


On Fri, Nov 30, 2012 at 3:14 AM, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> "Hui" == Hui Zhu <hui_zhu@mentor.com> writes:
>
> Hui> 2012-11-20  Hui Zhu  <hui_zhu@mentor.com>
> Hui>    * dwarf2loc.c (dwarf_expr_frame_base): Add check for the return
> Hui>    value of get_frame_block.
>
> I think this is reasonable even without the rest of your patches.

OK.

>
> One nit:
>
> Hui> +  if (bl == NULL)
> Hui> +    error (_("No symbol table info available.\n"));
>
> I don't think this is a very clear error message.
> I'm not sure what else to suggest though.
>
> Also, no \n at the end of the error message.
>
> Tom

What about I change it to "frame address is not available." because in
get_frame_block:
  if (!get_frame_address_in_block_if_available (frame, &pc))
    return NULL;

Post a new version.

Thanks,
Hui

2012-11-01  Hui Zhu  <hui_zhu@mentor.com>

	* dwarf2loc.c (dwarf_expr_frame_base): Add check for the return
	value of get_frame_block.

--- a/dwarf2loc.c
+++ b/dwarf2loc.c
@@ -332,11 +332,15 @@ dwarf_expr_frame_base (void *baton, cons
      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,



More information about the Gdb-patches mailing list