This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: MI: type prefixes for values
- From: Eli Zaretskii <eliz at gnu dot org>
- To: Vladimir Prus <ghost at cs dot msu dot su>
- Cc: gdb at sources dot redhat dot com
- Date: Fri, 17 Feb 2006 12:22:15 +0200
- Subject: Re: MI: type prefixes for values
- References: <dt43qh$sns$1@sea.gmane.org>
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
> From: Vladimir Prus <ghost@cs.msu.su>
> Date: Fri, 17 Feb 2006 12:08:32 +0300
>
> some time ago I've raised the question why MI output sometimes prefixes
> variable values with it's type. For example:
>
> -data-evaluate-expression *p3
> ^done,value="{int (int)} 0xb7ee6e9c <__DTOR_END__+4>"
> (gdb)
>
> (note the {int (int)} part). The part does not make sense for a GUI and must
> be removed by a specially written code.
>
> See:
>
> http://article.gmane.org/gmane.comp.gdb.devel/13477
And you were answered in that thread that this prefix is to show you
the signature of a function to which p3 is a pointer. That is, GDB is
telling you that p3 points to a function which accepts a single int
argument and returns an int.
> In the end, I've inquired why such prefixes cannot be dropped:
>
> http://article.gmane.org/gmane.comp.gdb.devel/13539
Are you saying that you don't want to show your users the fact that
the pointed object is a function?
> I imagine it's a simple matter of wrapping some code in
> "ui_output_is_mi_like_p". Can somebody comment on this proposal?
I think this will lose useful information. So for now I object.
> Also, I note that gdb is currently inconsitent even within itself:
>
> (gdb)
> -thread-select 2
> ^done,new-thread-id="2",frame={level="0",func="thread",
> args=[{name="p",value="0x0"}],..........
> (gdb)
> -stack-list-arguments 1 0 0
> ^done,stack-args=[frame={level="0",
> args=[{name="p",value="(void *) 0x0"}]}]
>
> Note that first output has "0x0" as value of 'p', and the second has
> "(void *)0x0".
Also, the first one shows the func= part, the second doesn't. Looks
like a bug to me: those two should both use the same code.
> So, can a clear decision be made if the type prefixes has a place in MI, or
> should be removed?
At least for functions, they convey useful information.