* [PATCH/RFA] Introduce new $_isvoid() convenience function
@ 2013-09-12 20:11 Sergio Durigan Junior
2013-09-12 23:59 ` Doug Evans
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-12 20:11 UTC (permalink / raw)
To: GDB Patches; +Cc: Doug Evans
Hi,
Based on the discussion at:
<https://sourceware.org/ml/gdb-patches/2013-09/msg00301.html>
<https://sourceware.org/ml/gdb-patches/2013-09/msg00383.html>
I am submitting this patch for appreciation. It adds a new convenience
function called $_isvoid, whose only purpose is (duh) to check whether a
convenience variable is void or not. This became necessary because the
new convenience variable $_exitsignal (not yet approved) has a mutual
exclusive behavior with $_exitcode, i.e., when one is "defined" (i.e.,
non-void), the other is cleared (i.e., becomes void). Doug wanted a way
to identify which variable to use, and checking for voidness is the
obvious solution.
It is worth mentioning that my first attempt, after a conversation with
Doug, was to actually implement a new $_isdefined() convenience
function. I would do that (for convenience variables) by calling
lookup_only_internalvar. However, I found a few problems:
- Whenever I called $_isdefined ($variable), $variable became defined
(with a void value), and $_isdefined always returned true.
- Then, I tried to implement $_isdefined ("variable"), and do the "$" +
"variable" inside GDB, thus making it impossible for GDB to create the
convenience variable. However, it was hard to extract the string
without having to mess with values and their idiossincrasies.
Therefore, I decided to abandon this attempt (specially because I
didn't want to spend too much time struggling with it).
Anyway, after talking to Doug again we decided that it would be easier
to implement $_isvoid, and this will probably help in cases like
<http://stackoverflow.com/questions/3744554/testing-if-a-gdb-convenience-variable-is-defined>.
I wrote a NEWS entry for it, and some new lines on the documentation.
I'd appreciate if you could review that.
OK to apply?
Thanks,
--
Sergio
gdb/
2013-09-12 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-12 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.texinfo (Convenience Functions): Mention new convenience
function $_isvoid.
gdb/testsuite/
2013-09-12 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.base/gdbvars.exp (test_convenience_functions): New
function. Call it.
diff --git a/gdb/NEWS b/gdb/NEWS
index ad97f6f..eff90de 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,9 @@
*** Changes since GDB 7.6
+* New convenience function "$_isvoid", to check whether a convenience
+ variable is void.
+
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b6ba239..a056691 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -9829,6 +9829,18 @@ Returns the length of string @var{str}.
@end table
+These functions do not require @value{GDBN} to be configured with
+@code{Python} support, which means that they are always available.
+
+@table @code
+
+@item $_isvoid (@code{$var})
+@findex $_isvoid@r{, convenience function}
+Return one if the convenience variable @code{$var} is void. Otherwise
+it returns zero.
+
+@end table
+
@value{GDBN} provides the ability to list and get help on
convenience functions.
diff --git a/gdb/testsuite/gdb.base/gdbvars.exp b/gdb/testsuite/gdb.base/gdbvars.exp
index 23a6758..79c90b6 100644
--- a/gdb/testsuite/gdb.base/gdbvars.exp
+++ b/gdb/testsuite/gdb.base/gdbvars.exp
@@ -54,6 +54,23 @@ proc test_convenience_variables {} {
"Print contents of uninitialized convenience variable"
}
+proc test_convenience_functions {} {
+ gdb_test "print \$_isvoid" " = <internal function _isvoid>" \
+ "Print internal function \$_isvoid"
+
+ gdb_test "print \$isvoid_foo" " = void" \
+ "Print void convenience variable"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 1" \
+ "Check whether void convenience variable is void"
+
+ gdb_test_no_output "set \$isvoid_foo = 1" \
+ "Set void convenience variable to 1"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 0" \
+ "Check whether non-void convenience variable is void"
+}
+
proc test_value_history {} {
global gdb_prompt
@@ -114,4 +131,5 @@ gdb_test_no_output "set print sevenbit-strings"
test_value_history
test_convenience_variables
+test_convenience_functions
test_with_program
diff --git a/gdb/value.c b/gdb/value.c
index 42a8d2f..e8eea17 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -3584,6 +3584,32 @@ value_fetch_lazy (struct value *val)
return 0;
}
+/* Implementation of the convenience function $_isvoid.
+
+ This function only works for checking whether other convenience
+ variables are void or not. */
+
+static struct value *
+isvoid_internal_fn (struct gdbarch *gdbarch,
+ const struct language_defn *language,
+ void *cookie, int argc, struct value **argv)
+{
+ struct value *v;
+ int ret;
+
+ if (argc != 1)
+ error (_("You must provide one parameter for $_isvoid."));
+
+ v = argv[0];
+
+ if (VALUE_LVAL (v) != lval_internalvar)
+ error (_("$_isvoid can only be used for convenience variables."));
+
+ ret = TYPE_CODE (value_type (v)) == TYPE_CODE_VOID;
+
+ return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
+}
+
void
_initialize_values (void)
{
@@ -3616,4 +3642,10 @@ VARIABLE is already initialized."));
add_prefix_cmd ("function", no_class, function_command, _("\
Placeholder command for showing help on convenience functions."),
&functionlist, "function ", 0, &cmdlist);
+
+ add_internal_function ("_isvoid", _("\
+Check whether a convenience variable is void.\n\
+Usage: $_isvoid ($variable)\n\
+Return 1 if the convenience variable is void, zero otherwise."),
+ isvoid_internal_fn, NULL);
}
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-12 20:11 [PATCH/RFA] Introduce new $_isvoid() convenience function Sergio Durigan Junior
@ 2013-09-12 23:59 ` Doug Evans
2013-09-13 6:42 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Doug Evans @ 2013-09-12 23:59 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: GDB Patches
On Thu, Sep 12, 2013 at 1:11 PM, Sergio Durigan Junior
<sergiodj@redhat.com> wrote:
> gdb/
> 2013-09-12 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-12 Sergio Durigan Junior <sergiodj@redhat.com>
>
> * gdb.texinfo (Convenience Functions): Mention new convenience
> function $_isvoid.
>
> gdb/testsuite/
> 2013-09-12 Sergio Durigan Junior <sergiodj@redhat.com>
>
> * gdb.base/gdbvars.exp (test_convenience_functions): New
> function. Call it.
Hi. Thanks for persevering!
While I often follow "it's easier to relax restrictions than impose
them after the fact",
in this case I wonder if there's any reason to restrict $_isvoid() to
convenience variables.
Thoughts?
For "void foo(){}", is there any real difference to:
(gdb) set $foo = foo()
(gdb) p $_isvoid($foo)
(gdb) p $_isvoid(foo())
[Haven't tried it, but I'm guessing removing the internalva4 check in
your patch would make that work.]
Also, you've put a fair bit of time into this, and I'm happy with
what you've got. And thanks!
The high order bit here for me is being able to script $_exitcode + $exitsignal.
If we're going with checking for a void value, one could just leave it
to be handled in Python.
OTOH, this patch is really simple, and IMO it is *nice* to be able to
do this from just a plain gdb script,
so I'm advocating accepting this patch (modulo maybe handling any void
value, not just conv vars).
btw, I noticed that if I run a program to exit, and then rerun to
main, $_exitcode has the last exit code - I would have expected it to
get reset to void upon rerun. After all, if I stop at main the first
time through, $_exitcode is void.
[I'll file a bug, no need to address this in your patch series.]
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-12 23:59 ` Doug Evans
@ 2013-09-13 6:42 ` Sergio Durigan Junior
2013-09-13 7:30 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-13 6:42 UTC (permalink / raw)
To: Doug Evans; +Cc: GDB Patches
On Thursday, September 12 2013, Doug Evans wrote:
> Hi. Thanks for persevering!
Thank you for reviewing :-).
> While I often follow "it's easier to relax restrictions than impose
> them after the fact",
> in this case I wonder if there's any reason to restrict $_isvoid() to
> convenience variables.
>
> Thoughts?
>
> For "void foo(){}", is there any real difference to:
> (gdb) set $foo = foo()
> (gdb) p $_isvoid($foo)
> (gdb) p $_isvoid(foo())
>
> [Haven't tried it, but I'm guessing removing the internalva4 check in
> your patch would make that work.]
Yes, I agree. I have changed the code to accept not only convenience
variables, but other kinds of expressions (it was just a matter of
removing the check for internalvar, really). BTW, I have reworded the
help message and the documentation and did s/convenience
variable/expression/g.
> Also, you've put a fair bit of time into this, and I'm happy with
> what you've got. And thanks!
> The high order bit here for me is being able to script $_exitcode + $exitsignal.
> If we're going with checking for a void value, one could just leave it
> to be handled in Python.
Yeah, I thought about it too, but then I thought that maybe we shouldn't
always depend on Python. This was easy to do in C, and has the
advantage that it will be available everywhere. But I guess you said
something along those lines below...
> OTOH, this patch is really simple, and IMO it is *nice* to be able to
> do this from just a plain gdb script,
> so I'm advocating accepting this patch (modulo maybe handling any void
> value, not just conv vars).
Nice. I hope you like the new version of the patch.
> btw, I noticed that if I run a program to exit, and then rerun to
> main, $_exitcode has the last exit code - I would have expected it to
> get reset to void upon rerun. After all, if I stop at main the first
> time through, $_exitcode is void.
> [I'll file a bug, no need to address this in your patch series.]
Yes, this is a bug indeed. Thanks for filing it. I may even have a fix
hanging around, will look.
--
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..e58d6ce 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,9 @@
*** Changes since GDB 7.6
+* New convenience function "$_isvoid", to check whether an expression
+ is void.
+
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b6ba239..70d580f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -9829,6 +9829,18 @@ Returns the length of string @var{str}.
@end table
+These functions do not require @value{GDBN} to be configured with
+@code{Python} support, which means that they are always available.
+
+@table @code
+
+@item $_isvoid (@var{expr})
+@findex $_isvoid@r{, convenience function}
+Return one if the expression @code{expr} is void. Otherwise it
+returns zero.
+
+@end table
+
@value{GDBN} provides the ability to list and get help on
convenience functions.
diff --git a/gdb/testsuite/gdb.base/gdbvars.c b/gdb/testsuite/gdb.base/gdbvars.c
index aa3b4d8..352a76b 100644
--- a/gdb/testsuite/gdb.base/gdbvars.c
+++ b/gdb/testsuite/gdb.base/gdbvars.c
@@ -4,6 +4,17 @@ typedef void *ptr;
ptr p = &p;
+static void
+foo_void (void)
+{
+}
+
+static int
+foo_int (void)
+{
+ return 0;
+}
+
int
main ()
{
diff --git a/gdb/testsuite/gdb.base/gdbvars.exp b/gdb/testsuite/gdb.base/gdbvars.exp
index 23a6758..85aaca0 100644
--- a/gdb/testsuite/gdb.base/gdbvars.exp
+++ b/gdb/testsuite/gdb.base/gdbvars.exp
@@ -54,6 +54,34 @@ proc test_convenience_variables {} {
"Print contents of uninitialized convenience variable"
}
+proc test_convenience_functions {} {
+ gdb_test "print \$_isvoid" " = <internal function _isvoid>" \
+ "Print internal function \$_isvoid"
+
+ gdb_test "print \$isvoid_foo" " = void" \
+ "Print void convenience variable"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 1" \
+ "Check whether void convenience variable is void"
+
+ gdb_test_no_output "set \$isvoid_foo = 1" \
+ "Set void convenience variable to 1"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 0" \
+ "Check whether non-void convenience variable is void"
+
+ # For the next test, we need the inferior to be running.
+ if { ![runto_main] } {
+ return -1
+ }
+
+ gdb_test "print \$_isvoid (foo_void ())" " = 1" \
+ "Check whether void function is void"
+
+ gdb_test "print \$_isvoid (foo_int ())" " = 0" \
+ "Check whether non-void function is void"
+}
+
proc test_value_history {} {
global gdb_prompt
@@ -114,4 +142,5 @@ gdb_test_no_output "set print sevenbit-strings"
test_value_history
test_convenience_variables
+test_convenience_functions
test_with_program
diff --git a/gdb/value.c b/gdb/value.c
index 42a8d2f..edbfc70 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -3584,6 +3584,23 @@ value_fetch_lazy (struct value *val)
return 0;
}
+/* Implementation of the convenience function $_isvoid. */
+
+static struct value *
+isvoid_internal_fn (struct gdbarch *gdbarch,
+ const struct language_defn *language,
+ void *cookie, int argc, struct value **argv)
+{
+ int ret;
+
+ if (argc != 1)
+ error (_("You must provide one parameter for $_isvoid."));
+
+ ret = TYPE_CODE (value_type (argv[0])) == TYPE_CODE_VOID;
+
+ return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
+}
+
void
_initialize_values (void)
{
@@ -3616,4 +3633,10 @@ VARIABLE is already initialized."));
add_prefix_cmd ("function", no_class, function_command, _("\
Placeholder command for showing help on convenience functions."),
&functionlist, "function ", 0, &cmdlist);
+
+ add_internal_function ("_isvoid", _("\
+Check whether an expression is void.\n\
+Usage: $_isvoid (expression)\n\
+Return 1 if the expression is void, zero otherwise."),
+ isvoid_internal_fn, NULL);
}
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 6:42 ` Sergio Durigan Junior
@ 2013-09-13 7:30 ` Eli Zaretskii
2013-09-13 17:45 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2013-09-13 7:30 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: dje, gdb-patches
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: GDB Patches <gdb-patches@sourceware.org>
> Date: Fri, 13 Sep 2013 03:42:35 -0300
>
> On Thursday, September 12 2013, Doug Evans wrote:
>
> > Hi. Thanks for persevering!
>
> Thank you for reviewing :-).
>
> > While I often follow "it's easier to relax restrictions than impose
> > them after the fact",
> > in this case I wonder if there's any reason to restrict $_isvoid() to
> > convenience variables.
> >
> > Thoughts?
> >
> > For "void foo(){}", is there any real difference to:
> > (gdb) set $foo = foo()
> > (gdb) p $_isvoid($foo)
> > (gdb) p $_isvoid(foo())
> >
> > [Haven't tried it, but I'm guessing removing the internalva4 check in
> > your patch would make that work.]
>
> Yes, I agree. I have changed the code to accept not only convenience
> variables, but other kinds of expressions (it was just a matter of
> removing the check for internalvar, really). BTW, I have reworded the
> help message and the documentation and did s/convenience
> variable/expression/g.
>
> > Also, you've put a fair bit of time into this, and I'm happy with
> > what you've got. And thanks!
> > The high order bit here for me is being able to script $_exitcode + $exitsignal.
> > If we're going with checking for a void value, one could just leave it
> > to be handled in Python.
>
> Yeah, I thought about it too, but then I thought that maybe we shouldn't
> always depend on Python. This was easy to do in C, and has the
> advantage that it will be available everywhere. But I guess you said
> something along those lines below...
>
> > OTOH, this patch is really simple, and IMO it is *nice* to be able to
> > do this from just a plain gdb script,
> > so I'm advocating accepting this patch (modulo maybe handling any void
> > value, not just conv vars).
>
> Nice. I hope you like the new version of the patch.
>
> > btw, I noticed that if I run a program to exit, and then rerun to
> > main, $_exitcode has the last exit code - I would have expected it to
> > get reset to void upon rerun. After all, if I stop at main the first
> > time through, $_exitcode is void.
> > [I'll file a bug, no need to address this in your patch series.]
>
> Yes, this is a bug indeed. Thanks for filing it. I may even have a fix
> hanging around, will look.
>
> --
> 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..e58d6ce 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -3,6 +3,9 @@
>
> *** Changes since GDB 7.6
>
> +* New convenience function "$_isvoid", to check whether an expression
> + is void.
This is OK, but please add a sentence explaining what is a "void
expression". This is not something GDB users will automatically know
or understand.
> +
> * The "maintenance print objfiles" command now takes an optional regexp.
>
> * The "catch syscall" command now works on arm*-linux* targets.
> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
> index b6ba239..70d580f 100644
> --- a/gdb/doc/gdb.texinfo
> +++ b/gdb/doc/gdb.texinfo
> @@ -9829,6 +9829,18 @@ Returns the length of string @var{str}.
>
> @end table
>
> +These functions do not require @value{GDBN} to be configured with
> +@code{Python} support, which means that they are always available.
I'd prefer to describe functions that don't need Python before those
that do, not after.
> +@table @code
> +
> +@item $_isvoid (@var{expr})
> +@findex $_isvoid@r{, convenience function}
> +Return one if the expression @code{expr} is void. Otherwise it
^^^^^^^^^^^
@var{expr}.
And please put here an explanation of what is a void expression,
preferably more detailed than what you will have in NEWS. AFAICS, we
never explain that anywhere in the manual.
And now a question about this feature: what will use of this function
do in versions of GDB before 7.7?
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 7:30 ` Eli Zaretskii
@ 2013-09-13 17:45 ` Sergio Durigan Junior
2013-09-13 19:33 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-13 17:45 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: dje, gdb-patches
On Friday, September 13 2013, Eli Zaretskii wrote:
>> diff --git a/gdb/NEWS b/gdb/NEWS
>> index ad97f6f..e58d6ce 100644
>> --- a/gdb/NEWS
>> +++ b/gdb/NEWS
>> @@ -3,6 +3,9 @@
>>
>> *** Changes since GDB 7.6
>>
>> +* New convenience function "$_isvoid", to check whether an expression
>> + is void.
>
> This is OK, but please add a sentence explaining what is a "void
> expression". This is not something GDB users will automatically know
> or understand.
Right, I have added a sentence explaining both on the NEWS and on
gdb.texinfo. Please take a look and see if it is OK.
>> +
>> * The "maintenance print objfiles" command now takes an optional regexp.
>>
>> * The "catch syscall" command now works on arm*-linux* targets.
>> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
>> index b6ba239..70d580f 100644
>> --- a/gdb/doc/gdb.texinfo
>> +++ b/gdb/doc/gdb.texinfo
>> @@ -9829,6 +9829,18 @@ Returns the length of string @var{str}.
>>
>> @end table
>>
>> +These functions do not require @value{GDBN} to be configured with
>> +@code{Python} support, which means that they are always available.
>
> I'd prefer to describe functions that don't need Python before those
> that do, not after.
Reordered.
>
>> +@table @code
>> +
>> +@item $_isvoid (@var{expr})
>> +@findex $_isvoid@r{, convenience function}
>> +Return one if the expression @code{expr} is void. Otherwise it
> ^^^^^^^^^^^
> @var{expr}.
Fixed.
> And please put here an explanation of what is a void expression,
> preferably more detailed than what you will have in NEWS. AFAICS, we
> never explain that anywhere in the manual.
Done that. Please tell me what you think.
> 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?
(gdb) p $_isvoid ($var)
You can't do that without a process to debug.
(gdb) p $_isvoid (a)
You can't do that without a process to debug.
(gdb) start
Temporary breakpoint 1 at 0x4004a7: file 1.c, line 12.
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.
(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'.
+
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b6ba239..a5705e4 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -9800,6 +9800,42 @@ function can be used in an expression just like an ordinary function;
however, a convenience function is implemented internally to
@value{GDBN}.
+These functions do not require @value{GDBN} to be configured with
+@code{Python} support, which means that they are always available.
+
+@table @code
+
+@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
+
These functions require @value{GDBN} to be configured with
@code{Python} support.
diff --git a/gdb/testsuite/gdb.base/gdbvars.c b/gdb/testsuite/gdb.base/gdbvars.c
index aa3b4d8..352a76b 100644
--- a/gdb/testsuite/gdb.base/gdbvars.c
+++ b/gdb/testsuite/gdb.base/gdbvars.c
@@ -4,6 +4,17 @@ typedef void *ptr;
ptr p = &p;
+static void
+foo_void (void)
+{
+}
+
+static int
+foo_int (void)
+{
+ return 0;
+}
+
int
main ()
{
diff --git a/gdb/testsuite/gdb.base/gdbvars.exp b/gdb/testsuite/gdb.base/gdbvars.exp
index 23a6758..85aaca0 100644
--- a/gdb/testsuite/gdb.base/gdbvars.exp
+++ b/gdb/testsuite/gdb.base/gdbvars.exp
@@ -54,6 +54,34 @@ proc test_convenience_variables {} {
"Print contents of uninitialized convenience variable"
}
+proc test_convenience_functions {} {
+ gdb_test "print \$_isvoid" " = <internal function _isvoid>" \
+ "Print internal function \$_isvoid"
+
+ gdb_test "print \$isvoid_foo" " = void" \
+ "Print void convenience variable"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 1" \
+ "Check whether void convenience variable is void"
+
+ gdb_test_no_output "set \$isvoid_foo = 1" \
+ "Set void convenience variable to 1"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 0" \
+ "Check whether non-void convenience variable is void"
+
+ # For the next test, we need the inferior to be running.
+ if { ![runto_main] } {
+ return -1
+ }
+
+ gdb_test "print \$_isvoid (foo_void ())" " = 1" \
+ "Check whether void function is void"
+
+ gdb_test "print \$_isvoid (foo_int ())" " = 0" \
+ "Check whether non-void function is void"
+}
+
proc test_value_history {} {
global gdb_prompt
@@ -114,4 +142,5 @@ gdb_test_no_output "set print sevenbit-strings"
test_value_history
test_convenience_variables
+test_convenience_functions
test_with_program
diff --git a/gdb/value.c b/gdb/value.c
index 42a8d2f..edbfc70 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -3584,6 +3584,23 @@ value_fetch_lazy (struct value *val)
return 0;
}
+/* Implementation of the convenience function $_isvoid. */
+
+static struct value *
+isvoid_internal_fn (struct gdbarch *gdbarch,
+ const struct language_defn *language,
+ void *cookie, int argc, struct value **argv)
+{
+ int ret;
+
+ if (argc != 1)
+ error (_("You must provide one parameter for $_isvoid."));
+
+ ret = TYPE_CODE (value_type (argv[0])) == TYPE_CODE_VOID;
+
+ return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
+}
+
void
_initialize_values (void)
{
@@ -3616,4 +3633,10 @@ VARIABLE is already initialized."));
add_prefix_cmd ("function", no_class, function_command, _("\
Placeholder command for showing help on convenience functions."),
&functionlist, "function ", 0, &cmdlist);
+
+ add_internal_function ("_isvoid", _("\
+Check whether an expression is void.\n\
+Usage: $_isvoid (expression)\n\
+Return 1 if the expression is void, zero otherwise."),
+ isvoid_internal_fn, NULL);
}
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 17:45 ` Sergio Durigan Junior
@ 2013-09-13 19:33 ` Eli Zaretskii
2013-09-13 19:41 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2013-09-13 19:33 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: dje, gdb-patches
> 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.
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 19:33 ` Eli Zaretskii
@ 2013-09-13 19:41 ` Sergio Durigan Junior
2013-09-13 19:47 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-13 19:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: dje, gdb-patches
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
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 19:41 ` Sergio Durigan Junior
@ 2013-09-13 19:47 ` Eli Zaretskii
2013-09-13 21:17 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2013-09-13 19:47 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: dje, gdb-patches
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: dje@google.com, gdb-patches@sourceware.org
> Date: Fri, 13 Sep 2013 16:40:52 -0300
>
> > 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.
It would be best to have the explanation in both places, or at least a
cross-reference from one to the other.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 19:47 ` Eli Zaretskii
@ 2013-09-13 21:17 ` Sergio Durigan Junior
2013-09-14 7:00 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-13 21:17 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: dje, gdb-patches
On Friday, September 13 2013, Eli Zaretskii wrote:
>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>> Cc: dje@google.com, gdb-patches@sourceware.org
>> Date: Fri, 13 Sep 2013 16:40:52 -0300
>>
>> > 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.
>
> It would be best to have the explanation in both places, or at least a
> cross-reference from one to the other.
WDYT of this version?
--
Sergio
diff --git a/gdb/NEWS b/gdb/NEWS
index ad97f6f..13bb647 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,14 @@
*** 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, some convenience variables may be
+ "void" when evaluated (e.g., "$_exitcode" before the execution of
+ the program being debugged; or an undefined convenience variable).
+ Another example, when calling a function whose return type is
+ "void".
+
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b6ba239..33318b8 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -9800,6 +9800,69 @@ function can be used in an expression just like an ordinary function;
however, a convenience function is implemented internally to
@value{GDBN}.
+These functions do not require @value{GDBN} to be configured with
+@code{Python} support, which means that they are always available.
+
+@table @code
+
+@item $_isvoid (@var{expr})
+@findex $_isvoid@r{, convenience function}
+Return one if the expression @var{expr} is @code{void}. Otherwise it
+returns zero.
+
+A @code{void} expression is an expression where the type of the result
+is @code{void}. For example, you can examine a convenience variable
+(see @ref{Convenience Vars,, Convenience Variables}) to check whether
+it is @code{void}:
+
+@smallexample
+(@value{GDBP}) print $_exitcode
+$1 = void
+(@value{GDBP}) print $_isvoid ($_exitcode)
+$2 = 1
+(@value{GDBP}) run
+Starting program: ./a.out
+[Inferior 1 (process 29572) exited normally]
+(@value{GDBP}) print $_exitcode
+$3 = 0
+(@value{GDBP}) print $_isvoid ($_exitcode)
+$4 = 0
+@end smallexample
+
+In the example above, we used @code{$_isvoid} to check whether
+@code{$_exitcode} is @code{void} before and after the execution of the
+program being debugged. Before the execution there is no exit code to
+be examined, therefore @code{$_exitcode} is @code{void}. After the
+execution the program being debugged returned zero, therefore
+@code{$_exitcode} is zero, which means that it is not @code{void}
+anymore.
+
+The @code{void} expression can also be a call of a function from the
+program being debugged. For example, given the following function:
+
+@smallexample
+void
+foo (void)
+@{
+@}
+@end smallexample
+
+The result of calling it inside @value{GDBN} is @code{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
+
These functions require @value{GDBN} to be configured with
@code{Python} support.
diff --git a/gdb/testsuite/gdb.base/gdbvars.c b/gdb/testsuite/gdb.base/gdbvars.c
index aa3b4d8..352a76b 100644
--- a/gdb/testsuite/gdb.base/gdbvars.c
+++ b/gdb/testsuite/gdb.base/gdbvars.c
@@ -4,6 +4,17 @@ typedef void *ptr;
ptr p = &p;
+static void
+foo_void (void)
+{
+}
+
+static int
+foo_int (void)
+{
+ return 0;
+}
+
int
main ()
{
diff --git a/gdb/testsuite/gdb.base/gdbvars.exp b/gdb/testsuite/gdb.base/gdbvars.exp
index 23a6758..85aaca0 100644
--- a/gdb/testsuite/gdb.base/gdbvars.exp
+++ b/gdb/testsuite/gdb.base/gdbvars.exp
@@ -54,6 +54,34 @@ proc test_convenience_variables {} {
"Print contents of uninitialized convenience variable"
}
+proc test_convenience_functions {} {
+ gdb_test "print \$_isvoid" " = <internal function _isvoid>" \
+ "Print internal function \$_isvoid"
+
+ gdb_test "print \$isvoid_foo" " = void" \
+ "Print void convenience variable"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 1" \
+ "Check whether void convenience variable is void"
+
+ gdb_test_no_output "set \$isvoid_foo = 1" \
+ "Set void convenience variable to 1"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 0" \
+ "Check whether non-void convenience variable is void"
+
+ # For the next test, we need the inferior to be running.
+ if { ![runto_main] } {
+ return -1
+ }
+
+ gdb_test "print \$_isvoid (foo_void ())" " = 1" \
+ "Check whether void function is void"
+
+ gdb_test "print \$_isvoid (foo_int ())" " = 0" \
+ "Check whether non-void function is void"
+}
+
proc test_value_history {} {
global gdb_prompt
@@ -114,4 +142,5 @@ gdb_test_no_output "set print sevenbit-strings"
test_value_history
test_convenience_variables
+test_convenience_functions
test_with_program
diff --git a/gdb/value.c b/gdb/value.c
index 42a8d2f..edbfc70 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -3584,6 +3584,23 @@ value_fetch_lazy (struct value *val)
return 0;
}
+/* Implementation of the convenience function $_isvoid. */
+
+static struct value *
+isvoid_internal_fn (struct gdbarch *gdbarch,
+ const struct language_defn *language,
+ void *cookie, int argc, struct value **argv)
+{
+ int ret;
+
+ if (argc != 1)
+ error (_("You must provide one parameter for $_isvoid."));
+
+ ret = TYPE_CODE (value_type (argv[0])) == TYPE_CODE_VOID;
+
+ return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
+}
+
void
_initialize_values (void)
{
@@ -3616,4 +3633,10 @@ VARIABLE is already initialized."));
add_prefix_cmd ("function", no_class, function_command, _("\
Placeholder command for showing help on convenience functions."),
&functionlist, "function ", 0, &cmdlist);
+
+ add_internal_function ("_isvoid", _("\
+Check whether an expression is void.\n\
+Usage: $_isvoid (expression)\n\
+Return 1 if the expression is void, zero otherwise."),
+ isvoid_internal_fn, NULL);
}
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-13 21:17 ` Sergio Durigan Junior
@ 2013-09-14 7:00 ` Eli Zaretskii
2013-09-16 17:19 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2013-09-14 7:00 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: dje, gdb-patches
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: dje@google.com, gdb-patches@sourceware.org
> Date: Fri, 13 Sep 2013 18:17:03 -0300
>
> On Friday, September 13 2013, Eli Zaretskii wrote:
>
> >> From: Sergio Durigan Junior <sergiodj@redhat.com>
> >> Cc: dje@google.com, gdb-patches@sourceware.org
> >> Date: Fri, 13 Sep 2013 16:40:52 -0300
> >>
> >> > 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.
> >
> > It would be best to have the explanation in both places, or at least a
> > cross-reference from one to the other.
>
> WDYT of this version?
This is great, thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-14 7:00 ` Eli Zaretskii
@ 2013-09-16 17:19 ` Sergio Durigan Junior
2013-09-16 17:23 ` Doug Evans
0 siblings, 1 reply; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-16 17:19 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: dje, gdb-patches
On Saturday, September 14 2013, Eli Zaretskii wrote:
>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>> WDYT of this version?
>
> This is great, thanks.
Thanks. Doug, just to confirm, have you approved the patch too?
--
Sergio
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-16 17:19 ` Sergio Durigan Junior
@ 2013-09-16 17:23 ` Doug Evans
2013-09-16 17:47 ` Sergio Durigan Junior
0 siblings, 1 reply; 13+ messages in thread
From: Doug Evans @ 2013-09-16 17:23 UTC (permalink / raw)
To: Sergio Durigan Junior; +Cc: Eli Zaretskii, gdb-patches
On Mon, Sep 16, 2013 at 10:18 AM, Sergio Durigan Junior
<sergiodj@redhat.com> wrote:
> On Saturday, September 14 2013, Eli Zaretskii wrote:
>
>>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>
>>> WDYT of this version?
>>
>> This is great, thanks.
>
> Thanks. Doug, just to confirm, have you approved the patch too?
LGTM, thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH/RFA] Introduce new $_isvoid() convenience function
2013-09-16 17:23 ` Doug Evans
@ 2013-09-16 17:47 ` Sergio Durigan Junior
0 siblings, 0 replies; 13+ messages in thread
From: Sergio Durigan Junior @ 2013-09-16 17:47 UTC (permalink / raw)
To: Doug Evans; +Cc: Eli Zaretskii, gdb-patches
On Monday, September 16 2013, Doug Evans wrote:
> On Mon, Sep 16, 2013 at 10:18 AM, Sergio Durigan Junior
> <sergiodj@redhat.com> wrote:
>> On Saturday, September 14 2013, Eli Zaretskii wrote:
>>
>>>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>>
>>>> WDYT of this version?
>>>
>>> This is great, thanks.
>>
>> Thanks. Doug, just to confirm, have you approved the patch too?
>
> LGTM, thanks.
Thanks, checked-in:
https://sourceware.org/ml/gdb-cvs/2013-09/msg00091.html
--
Sergio
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2013-09-16 17:47 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-12 20:11 [PATCH/RFA] Introduce new $_isvoid() convenience function Sergio Durigan Junior
2013-09-12 23:59 ` Doug Evans
2013-09-13 6:42 ` Sergio Durigan Junior
2013-09-13 7:30 ` Eli Zaretskii
2013-09-13 17:45 ` Sergio Durigan Junior
2013-09-13 19:33 ` Eli Zaretskii
2013-09-13 19:41 ` Sergio Durigan Junior
2013-09-13 19:47 ` Eli Zaretskii
2013-09-13 21:17 ` Sergio Durigan Junior
2013-09-14 7:00 ` Eli Zaretskii
2013-09-16 17:19 ` Sergio Durigan Junior
2013-09-16 17:23 ` Doug Evans
2013-09-16 17:47 ` Sergio Durigan Junior
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox