diff options
author | Tom Tromey <tom@tromey.com> | 2016-05-19 15:51:00 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-07-13 13:21:00 -0600 |
commit | 93daf339a4d9496ecde15d3b1e852fbdb38c07d0 (patch) | |
tree | 6d1b762e04a3b9cbd963284be33ccfdb7c3f9249 /gdb | |
parent | 43684a7b844bce64735940b55b667f7086fa3d44 (diff) | |
download | gdb-93daf339a4d9496ecde15d3b1e852fbdb38c07d0.zip gdb-93daf339a4d9496ecde15d3b1e852fbdb38c07d0.tar.gz gdb-93daf339a4d9496ecde15d3b1e852fbdb38c07d0.tar.bz2 |
PR python/17698 - add Breakpoint.pending
This patch adds a "pending" attribute to gdb.Breakpoint.
Built and regtested on x86-64 Fedora 23.
2016-07-13 Tom Tromey <tom@tromey.com>
PR python/17698:
* NEWS: Update.
* python/py-breakpoint.c (bppy_get_pending): New function.
(breakpoint_object_getset): Add entry for "pending".
* breakpoint.h (pending_breakpoint_p): Declare.
* breakpoint.c (pending_breakpoint_p): New function.
2016-07-13 Tom Tromey <tom@tromey.com>
PR python/17698:
* python.texi (Breakpoints In Python): Document
Breakpoint.pending.
2016-07-13 Tom Tromey <tom@tromey.com>
PR python/17698:
* gdb.python/py-breakpoint.exp (test_bkpt_basic): Add "pending"
test.
(test_watchpoints): Likewise.
(test_bkpt_pending): New proc.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/NEWS | 5 | ||||
-rw-r--r-- | gdb/breakpoint.c | 8 | ||||
-rw-r--r-- | gdb/breakpoint.h | 3 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/doc/python.texi | 6 | ||||
-rw-r--r-- | gdb/python/py-breakpoint.c | 20 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-breakpoint.exp | 11 |
9 files changed, 76 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 437f4a5..6a426b8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2016-07-13 Tom Tromey <tom@tromey.com> + PR python/17698: + * NEWS: Update. + * python/py-breakpoint.c (bppy_get_pending): New function. + (breakpoint_object_getset): Add entry for "pending". + * breakpoint.h (pending_breakpoint_p): Declare. + * breakpoint.c (pending_breakpoint_p): New function. + +2016-07-13 Tom Tromey <tom@tromey.com> + * python/py-breakpoint.c (bppy_get_visibility) (gdbpy_breakpoint_created): Use user_breakpoint_p. @@ -80,6 +80,11 @@ new-ui INTERP TTY Start a new user interface instance running INTERP as interpreter, using the TTY file for input/output. +* Python Scripting + + ** gdb.Breakpoint objects have a new attribute "pending", which + indicates whether the breakpoint is pending. + * Support for tracepoints and fast tracepoints on s390-linux and s390x-linux was added in GDBserver, including JIT compiling fast tracepoint's conditional expression bytecode into native code. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 0b29a8a..e4b62c7 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -6815,6 +6815,14 @@ user_breakpoint_p (struct breakpoint *b) return b->number > 0; } +/* See breakpoint.h. */ + +int +pending_breakpoint_p (struct breakpoint *b) +{ + return b->loc == NULL; +} + /* Print information on user settable breakpoint (watchpoint, etc) number BNUM. If BNUM is -1 print all user-settable breakpoints. If ALLFLAG is non-zero, include non-user-settable breakpoints. If diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 054eab4..5f06772 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1618,6 +1618,9 @@ extern int pc_at_non_inline_function (struct address_space *aspace, extern int user_breakpoint_p (struct breakpoint *); +/* Return true if this breakpoint is pending, false if not. */ +extern int pending_breakpoint_p (struct breakpoint *); + /* Attempt to determine architecture of location identified by SAL. */ extern struct gdbarch *get_sal_arch (struct symtab_and_line sal); diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 2e0c0bb..b1ddc28 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,5 +1,11 @@ 2016-07-13 Tom Tromey <tom@tromey.com> + PR python/17698: + * python.texi (Breakpoints In Python): Document + Breakpoint.pending. + +2016-07-13 Tom Tromey <tom@tromey.com> + * python.texi (Breakpoints In Python): Move table of types and table of watchpoint types earlier in node. diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 69134d4..e00bc2a 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -4685,6 +4685,12 @@ first command is @code{silent}. This is not reported by the @code{silent} attribute. @end defvar +@defvar Breakpoint.pending +This attribute is @code{True} if the breakpoint is pending, and +@code{False} otherwise. @xref{Set Breaks}. This attribute is +read-only. +@end defvar + @anchor{python_breakpoint_thread} @defvar Breakpoint.thread If the breakpoint is thread-specific, this attribute holds the diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index 513a02d..f2d4385 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -563,6 +563,24 @@ bppy_get_temporary (PyObject *self, void *closure) Py_RETURN_FALSE; } +/* Python function to determine if the breakpoint is a pending + breakpoint. */ + +static PyObject * +bppy_get_pending (PyObject *self, void *closure) +{ + gdbpy_breakpoint_object *self_bp = (gdbpy_breakpoint_object *) self; + + BPPY_REQUIRE_VALID (self_bp); + + if (is_watchpoint (self_bp->bp)) + Py_RETURN_FALSE; + if (pending_breakpoint_p (self_bp->bp)) + Py_RETURN_TRUE; + + Py_RETURN_FALSE; +} + /* Python function to get the breakpoint's number. */ static PyObject * bppy_get_number (PyObject *self, void *closure) @@ -1054,6 +1072,8 @@ or None if no condition set."}, "Whether the breakpoint is visible to the user."}, { "temporary", bppy_get_temporary, NULL, "Whether this breakpoint is a temporary breakpoint."}, + { "pending", bppy_get_pending, NULL, + "Whether this breakpoint is a pending breakpoint."}, { NULL } /* Sentinel. */ }; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b404db4..79a3dd7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,13 @@ 2016-07-13 Tom Tromey <tom@tromey.com> + PR python/17698: + * gdb.python/py-breakpoint.exp (test_bkpt_basic): Add "pending" + test. + (test_watchpoints): Likewise. + (test_bkpt_pending): New proc. + +2016-07-13 Tom Tromey <tom@tromey.com> + PR cli/18053: * gdb.base/jit-so.exp (one_jit_test): Add jit-reader-load completion test. diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp index f501aa9..eb8ec88 100644 --- a/gdb/testsuite/gdb.python/py-breakpoint.exp +++ b/gdb/testsuite/gdb.python/py-breakpoint.exp @@ -49,6 +49,8 @@ proc test_bkpt_basic { } { "<gdb.Breakpoint object at $hex>" "Check obj exists @main" gdb_test "python print (blist\[0\].location)" \ "main." "Check breakpoint location @main" + gdb_test "python print (blist\[0\].pending)" "False" \ + "Check pending status of main breakpoint" set mult_line [gdb_get_line_number "Break at multiply."] gdb_breakpoint ${mult_line} @@ -267,6 +269,7 @@ proc test_watchpoints { } { gdb_py_test_silent_cmd "python wp1 = gdb.Breakpoint (\"result\", type=gdb.BP_WATCHPOINT, wp_class=gdb.WP_WRITE )" \ "Set watchpoint" 0 + gdb_test "python print (wp1.pending)" "False" gdb_test "continue" \ ".*\[Ww\]atchpoint.*result.*Old value = 0.*New value = 25.*main.*" \ "Test watchpoint write" @@ -497,6 +500,13 @@ proc test_bkpt_address {} { ".*Breakpoint ($decimal)+ at .*$srcfile, line ($decimal)+\." } +proc test_bkpt_pending {} { + delete_breakpoints + gdb_breakpoint "nosuchfunction" allow-pending + gdb_test "python print (gdb.breakpoints()\[0\].pending)" "True" \ + "Check pending status of pending breakpoint" +} + test_bkpt_basic test_bkpt_deletion test_bkpt_cond_and_cmds @@ -506,3 +516,4 @@ test_bkpt_internal test_bkpt_eval_funcs test_bkpt_temporary test_bkpt_address +test_bkpt_pending |