This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
- From: Eli Zaretskii <eliz at gnu dot org>
- To: Sergio Durigan Junior <sergiodj at redhat dot com>
- Cc: dje at google dot com, gdb-patches at sourceware dot org
- Date: Fri, 13 Sep 2013 22:33:23 +0300
- Subject: Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
- Authentication-results: sourceware.org; auth=none
- References: <m3a9jh6bs0 dot fsf at redhat dot com> <CADPb22Q-66NK8u3DLTSG0K7QSYNaxVa0SRBQoBCXoLy7OHvZ9w at mail dot gmail dot com> <m3txhp2pes dot fsf at redhat dot com> <83a9jhi3h0 dot fsf at gnu dot org> <m31u4s39be dot fsf at redhat dot com>
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: dje@google.com, gdb-patches@sourceware.org
> Date: Fri, 13 Sep 2013 14:44:53 -0300
>
> > And now a question about this feature: what will use of this function
> > do in versions of GDB before 7.7?
>
> I am not sure I understood your question. Do you want to know what will
> happen when the user calls a non-existent $_isvoid convenience function?
Yes.
> Starting program: /home/sergio/work/src/git/isvoid/build-64/a.out
>
> Temporary breakpoint 1, main () at 1.c:12
> 12 return 0;
> (gdb) p $_isvoid ($var)
> Invalid data type for function to be called.
Exactly. That's a confusing diagnostics. Do we care? Can we do
anything about it?
> (gdb) p $_isvoid (a)
> Invalid data type for function to be called.
> (gdb) p $_isvoid (1)
> Invalid data type for function to be called.
>
> Is this what you wanted to know? IOW, the user won't be able to call
> this function from inside his/her script on a GDB prior to 7.7.
>
> Thanks,
>
> --
> Sergio
>
> gdb/
> 2013-09-13 Sergio Durigan Junior <sergiodj@redhat.com>
>
> * NEWS: Mention new convenience function $_isvoid.
> * value.c (isvoid_internal_fn): New function.
> (_initialize_values): Add new convenience function $_isvoid.
>
> gdb/doc/
> 2013-09-13 Sergio Durigan Junior <sergiodj@redhat.com>
>
> * gdb.texinfo (Convenience Functions): Mention new convenience
> function $_isvoid.
>
> gdb/testsuite/
> 2013-09-13 Sergio Durigan Junior <sergiodj@redhat.com>
>
> * gdb.base/gdbvars.c (foo_void): New function.
> (foo_int): Likewise.
> * gdb.base/gdbvars.exp (test_convenience_functions): New
> function. Call it.
>
> diff --git a/gdb/NEWS b/gdb/NEWS
> index ad97f6f..35aaf41 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -3,6 +3,11 @@
>
> *** Changes since GDB 7.6
>
> +* New convenience function "$_isvoid", to check whether an expression
> + is void. A void expression is an expression where the type of the
> + result is `void'; for example, when calling a function whose return
> + type is `void'.
But this function is being introduced mainly for testing convenience
variables, isn't it? Then the explanation should describe that use
case first, I think.
> +@item $_isvoid (@var{expr})
> +@findex $_isvoid@r{, convenience function}
> +Return one if the expression @var{expr} is void. Otherwise it
> +returns zero.
> +
> +A void expression is an expression where the type of the result is
> +`void'. For example, given the following function:
> +
> +@smallexample
> +void
> +foo (void)
> +@{
> +@}
> +@end smallexample
> +
> +The result of calling it inside @value{GDBN} is `void':
> +
> +@smallexample
> +(@value{GDBP}) print foo ()
> +$1 = void
> +(@value{GDBP}) print $_isvoid (foo ())
> +$2 = 1
> +(@value{GDBP}) set $v = foo ()
> +(@value{GDBP}) print $v
> +$3 = void
> +(@value{GDBP}) print $_isvoid ($v)
> +$4 = 1
> +@end smallexample
> +
> +@end table
This is fine, but I would also include an example with $_exitcode.
Thanks.