This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Add CTF support to GDB [2/4] Fix a bug of function dwarf_expr_frame_base
- From: Hui Zhu <teawater at gmail dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: Hui Zhu <hui_zhu at mentor dot com>, gdb-patches at sourceware dot org
- Date: Sun, 2 Dec 2012 00:33:33 +0800
- Subject: Re: [PATCH] Add CTF support to GDB [2/4] Fix a bug of function dwarf_expr_frame_base
- References: <50AC322D.2030209@mentor.com> <87k3t45ihq.fsf@fleche.redhat.com>
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,