aboutsummaryrefslogtreecommitdiff
path: root/gdb/NEWS
diff options
context:
space:
mode:
authorSergio Durigan Junior <sergiodj@redhat.com>2013-09-16 17:47:30 +0000
committerSergio Durigan Junior <sergiodj@redhat.com>2013-09-16 17:47:30 +0000
commita280dbd16004e14560b76141a1aaf1e4659dd33f (patch)
tree2f4e193434b3d8bc3b144d6e094d70d2b111a1b4 /gdb/NEWS
parentc623a6ef72a8d7dbbb646345f75646710cb9bb68 (diff)
downloadgdb-a280dbd16004e14560b76141a1aaf1e4659dd33f.zip
gdb-a280dbd16004e14560b76141a1aaf1e4659dd33f.tar.gz
gdb-a280dbd16004e14560b76141a1aaf1e4659dd33f.tar.bz2
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> This patch adds a new convenience function called $_isvoid, whose only purpose is to check whether an expression 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. gdb/ 2013-09-16 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-16 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Convenience Functions): Mention new convenience function $_isvoid. gdb/testsuite/ 2013-09-16 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.
Diffstat (limited to 'gdb/NEWS')
-rw-r--r--gdb/NEWS8
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index 5eb046b..af06a21 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.