From 2aa483373c8e7abf69bbc074a17bf708a1a5eaff Mon Sep 17 00:00:00 2001 From: Kevin Pouget Date: Thu, 15 Sep 2011 12:42:30 +0000 Subject: [PATCH] 2011-09-15 Kevin Pouget PR Python/12692 Add gdb.selected_inferior() to Python interface. * python/py-inferior.c (GdbMethods): New Python method definition. doc: PR Python/12692 Add gdb.selected_inferior() to Python interface. * gdb.texinfo (Inferiors In Python): Describe new gdb.selected_inferior() function. testsuite: PR Python/12692 Add gdb.selected_inferior() to Python interface. * gdb.python/py-inferior.exp: Add testcase for gdb.selected_inferior(). --- gdb/ChangeLog | 5 +++++ gdb/doc/ChangeLog | 6 ++++++ gdb/doc/gdb.texinfo | 4 ++++ gdb/python/py-inferior.c | 14 ++++++++++++++ gdb/python/python-internal.h | 1 + gdb/python/python.c | 3 +++ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.python/py-inferior.exp | 12 +++++++++++- 8 files changed, 49 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 380f75fd50..c9db20e5a9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-09-15 Kevin Pouget + + PR Python/12692 Add gdb.selected_inferior() to Python interface. + * python/py-inferior.c (GdbMethods): New Python method definition. + 2011-09-15 Kevin Pouget Handle multiple breakpoint hits in Python interface: diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 54dd4e885c..488ba750b2 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,9 @@ +2011-09-15 Kevin Pouget + + PR Python/12692 Add gdb.selected_inferior() to Python interface. + * gdb.texinfo (Inferiors In Python): Describe new + gdb.selected_inferior() function. + 2011-09-15 Kevin Pouget Handle multiple breakpoint hits in Python interface: diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 76c804b9c7..2fecb6a2d4 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -22146,6 +22146,10 @@ module: Return a tuple containing all inferior objects. @end defun +@defun selected_inferior +Return an object representing the current inferior. +@end defun + A @code{gdb.Inferior} object has the following attributes: @table @code diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c index 6add6815eb..8ed3ea5ef5 100644 --- a/gdb/python/py-inferior.c +++ b/gdb/python/py-inferior.c @@ -683,6 +683,20 @@ py_free_inferior (struct inferior *inf, void *datum) do_cleanups (cleanup); } +/* Implementation of gdb.selected_inferior() -> gdb.Inferior. + Returns the current inferior object. */ + +PyObject * +gdbpy_selected_inferior (PyObject *self, PyObject *args) +{ + PyObject *inf_obj; + + inf_obj = inferior_to_inferior_object (current_inferior ()); + Py_INCREF (inf_obj); + + return inf_obj; +} + void gdbpy_initialize_inferior (void) { diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index 4209c28d92..11f1efd5af 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -151,6 +151,7 @@ PyObject *gdbpy_create_lazy_string_object (CORE_ADDR address, long length, struct type *type); PyObject *gdbpy_inferiors (PyObject *unused, PyObject *unused2); PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args); +PyObject *gdbpy_selected_inferior (PyObject *self, PyObject *args); PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args); PyObject *gdbpy_parameter (PyObject *self, PyObject *args); PyObject *gdbpy_parameter_value (enum var_types type, void *var); diff --git a/gdb/python/python.c b/gdb/python/python.c index 0f702a239d..67649c3cd4 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -1423,6 +1423,9 @@ Arguments are separate by spaces and may be quoted." { "selected_thread", gdbpy_selected_thread, METH_NOARGS, "selected_thread () -> gdb.InferiorThread.\n\ Return the selected thread object." }, + { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS, + "selected_inferior () -> gdb.Inferior.\n\ +Return the selected inferior object." }, { "inferiors", gdbpy_inferiors, METH_NOARGS, "inferiors () -> (gdb.Inferior, ...).\n\ Return a tuple containing all inferiors." }, diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c33f55b503..1ff1358285 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-09-15 Kevin Pouget + + PR Python/12692 Add gdb.selected_inferior() to Python interface. + * gdb.python/py-inferior.exp: Add testcase for gdb.selected_inferior(). + 2011-04-30 Kevin Pouget Handle multiple breakpoint hits in Python interface: diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp index b853c791b4..f8e0c4e4f4 100644 --- a/gdb/testsuite/gdb.python/py-inferior.exp +++ b/gdb/testsuite/gdb.python/py-inferior.exp @@ -206,8 +206,18 @@ gdb_test "python print inf_list\[0\].is_valid()" "True" \ "Check inferior validity" gdb_test "python print inf_list\[1\].is_valid()" "True" \ "Check inferior validity" -gdb_test_no_output "remove-inferiors 2" "remove-inferiors 2" +gdb_test_no_output "remove-inferiors 2" "remove-inferiors 3" gdb_test "python print inf_list\[0\].is_valid()" "False" \ "Check inferior validity" gdb_test "python print inf_list\[1\].is_valid()" "True" \ "Check inferior validity" + +# Test gdb.selected_inferior() +gdb_test "inferior 1" ".*" "Switch to first inferior" +gdb_test "py print gdb.selected_inferior().num" "1" "First inferior selected" + +gdb_test "add-inferior" "Added inferior 3" "Create new inferior" +gdb_test "inferior 3" ".*" "Switch to third inferior" +gdb_test "py print gdb.selected_inferior().num" "3" "Third inferior selected" +gdb_test "inferior 1" ".*" "Switch to first inferior" +gdb_test_no_output "remove-inferiors 3" "Remove second inferior" \ No newline at end of file