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: Sergio Durigan Junior <sergiodj at redhat dot com>
- To: Eli Zaretskii <eliz at gnu dot org>
- Cc: dje at google dot com, gdb-patches at sourceware dot org
- Date: Fri, 13 Sep 2013 16:40:52 -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> <83li30h5z0 dot fsf at gnu dot org>
On Friday, September 13 2013, Eli Zaretskii wrote:
>> 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?
About older GDB versions not offering this convenience function? No, I
don't think we can do anything about it. About the "Do we care?"
question, I don't really have an answer. But this is a new feature,
therefore we should expect the users to understand that it cannot be
used if it doesn't exist in their GDB...
>> 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.
OK, I will rewrite and resubmit.
>> +@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.
I intend to expand this explanation when I resubmit the patch for
$_exitsignal. In fact, I will add another example showing the behavior
of $_exitsignal and $_exitcode. But if you wish, I can add $_exitcode
here as well.
--
Sergio