This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH/RFA] Introduce new $_isvoid() convenience function


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]