public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
@ 2021-04-12 15:04 Tankut Baris Aktemur
  2021-04-27  6:44 ` Aktemur, Tankut Baris
  2021-04-27  9:10 ` Andrew Burgess
  0 siblings, 2 replies; 8+ messages in thread
From: Tankut Baris Aktemur @ 2021-04-12 15:04 UTC (permalink / raw)
  To: gdb-patches

Define a 'connection_num' attribute for Inferior objects.  The
read-only attribute is the ID of the process stratum target of an
inferior, as printed by "info inferiors".

gdb/ChangeLog:
2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* python/py-inferior.c (infpy_get_connection_num): New function.
	(inferior_object_getset): Add a new element for 'connection_num'.
	* NEWS: Mention the 'connection_num' attribute of Inferior objects.

gdb/doc/ChangeLog:
2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* python.texi (Inferiors In Python): Mention the 'connection_num'
	attribute.

gdb/testsuite/ChangeLog:
2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* gdb.python/py-inferior.exp: Add test cases for 'connection_num'.
---
 gdb/NEWS                                 |  5 +++++
 gdb/doc/python.texi                      |  5 +++++
 gdb/python/py-inferior.c                 | 16 +++++++++++++++
 gdb/testsuite/gdb.python/py-inferior.exp | 25 +++++++++++++++++++++++-
 4 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/gdb/NEWS b/gdb/NEWS
index 6cf76a14317..bdc0e2c6593 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -138,6 +138,11 @@ QMemTags
   Request the remote to store the specified allocation tags to the requested
   memory range.
 
+* Python API
+
+  ** Inferior objects now contain a read-only 'connection_num' attribute that
+     gives the ID of the Inferior's process stratum target.
+
 *** Changes in GDB 10
 
 * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 9135d415dd1..b459ff245d4 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -2989,6 +2989,11 @@ A @code{gdb.Inferior} object has the following attributes:
 ID of inferior, as assigned by GDB.
 @end defvar
 
+@defvar Inferior.connection_num
+ID of inferior's connection (i.e.@: process target), as assigned by
+@value{GDBN}.
+@end defvar
+
 @defvar Inferior.pid
 Process ID of the inferior, as assigned by the underlying operating
 system.
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index a3d5952a10b..a7fac34f3d6 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -426,6 +426,20 @@ infpy_get_num (PyObject *self, void *closure)
   return gdb_py_object_from_longest (inf->inferior->num).release ();
 }
 
+static PyObject *
+infpy_get_connection_num (PyObject *self, void *closure)
+{
+  inferior_object *inf = (inferior_object *) self;
+
+  INFPY_REQUIRE_VALID (inf);
+
+  process_stratum_target *target = inf->inferior->process_target ();
+  if (target == nullptr)
+    Py_RETURN_NONE;
+
+  return PyLong_FromLong (target->connection_number);
+}
+
 static PyObject *
 infpy_get_pid (PyObject *self, void *closure)
 {
@@ -928,6 +942,8 @@ gdbpy_initialize_inferior (void)
 static gdb_PyGetSetDef inferior_object_getset[] =
 {
   { "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
+  { "connection_num", infpy_get_connection_num, NULL,
+    "ID of inferior's connection, as assigned by GDB.", NULL },
   { "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
     NULL },
   { "was_attached", infpy_get_was_attached, NULL,
diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp
index 9df74e05182..2252215b721 100644
--- a/gdb/testsuite/gdb.python/py-inferior.exp
+++ b/gdb/testsuite/gdb.python/py-inferior.exp
@@ -51,6 +51,7 @@ gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior" 0
 
 gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test equality comparison (true)"
 gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
+gdb_test "python print ('result = %s' % i0.connection_num)" " = \[0-9\]+" "test Inferior.connection_num"
 gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
 gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test Inferior.was_attached"
 gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
@@ -262,6 +263,8 @@ with_test_prefix "is_valid" {
     # correctly.
     gdb_test "python print (inf_list\[1\].num)" \
 	"RuntimeError: Inferior no longer exists.*"
+    gdb_test "python print (inf_list\[1\].connection_num)" \
+	"RuntimeError: Inferior no longer exists.*"
     gdb_test "python print (inf_list\[1\].pid)" \
 	"RuntimeError: Inferior no longer exists.*"
     gdb_test "python print (inf_list\[1\].was_attached)" \
@@ -278,10 +281,30 @@ with_test_prefix "is_valid" {
 with_test_prefix "selected_inferior" {
     gdb_test "inferior 1" ".*" "switch to first inferior"
     gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
+    gdb_test "py print (gdb.selected_inferior().connection_num)" "1" \
+	"first inferior's connection"
+    # Figure out if inf 1 has a native target.
+    set inf_1_is_native [gdb_is_target_native]
 
-    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
+    gdb_test "add-inferior -no-connection" "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 "py print (gdb.selected_inferior().connection_num)" "None" \
+	"third inferior's None connection"
+    gdb_test "target native" "Done.  Use the \"run\" command to start a process." \
+	"target for the third inferior"
+
+    # If inf 1 has a native target, inf 3's target is shared with 1's.
+    # Otherwise, it must have created a new target with a new number.
+    if {$inf_1_is_native} {
+	set expected_connection_num 1
+    } else {
+	set expected_connection_num 2
+    }
+    gdb_test "py print (gdb.selected_inferior().connection_num)" \
+	"$expected_connection_num" \
+	"third inferior's native connection"
+
     gdb_test "inferior 1" ".*" "switch back to first inferior"
     gdb_test_no_output "remove-inferiors 3" "remove second inferior"
 }
-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-04-12 15:04 [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects Tankut Baris Aktemur
@ 2021-04-27  6:44 ` Aktemur, Tankut Baris
  2021-04-27  9:10 ` Andrew Burgess
  1 sibling, 0 replies; 8+ messages in thread
From: Aktemur, Tankut Baris @ 2021-04-27  6:44 UTC (permalink / raw)
  To: gdb-patches

Kindly pinging.

Thanks
-Baris


On Monday, April 12, 2021 5:04 PM, Aktemur, Tankut Baris wrote:
> Define a 'connection_num' attribute for Inferior objects.  The
> read-only attribute is the ID of the process stratum target of an
> inferior, as printed by "info inferiors".
> 
> gdb/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* python/py-inferior.c (infpy_get_connection_num): New function.
> 	(inferior_object_getset): Add a new element for 'connection_num'.
> 	* NEWS: Mention the 'connection_num' attribute of Inferior objects.
> 
> gdb/doc/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* python.texi (Inferiors In Python): Mention the 'connection_num'
> 	attribute.
> 
> gdb/testsuite/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* gdb.python/py-inferior.exp: Add test cases for 'connection_num'.
> ---
>  gdb/NEWS                                 |  5 +++++
>  gdb/doc/python.texi                      |  5 +++++
>  gdb/python/py-inferior.c                 | 16 +++++++++++++++
>  gdb/testsuite/gdb.python/py-inferior.exp | 25 +++++++++++++++++++++++-
>  4 files changed, 50 insertions(+), 1 deletion(-)
> 
> diff --git a/gdb/NEWS b/gdb/NEWS
> index 6cf76a14317..bdc0e2c6593 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -138,6 +138,11 @@ QMemTags
>    Request the remote to store the specified allocation tags to the requested
>    memory range.
> 
> +* Python API
> +
> +  ** Inferior objects now contain a read-only 'connection_num' attribute that
> +     gives the ID of the Inferior's process stratum target.
> +
>  *** Changes in GDB 10
> 
>  * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
> diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
> index 9135d415dd1..b459ff245d4 100644
> --- a/gdb/doc/python.texi
> +++ b/gdb/doc/python.texi
> @@ -2989,6 +2989,11 @@ A @code{gdb.Inferior} object has the following attributes:
>  ID of inferior, as assigned by GDB.
>  @end defvar
> 
> +@defvar Inferior.connection_num
> +ID of inferior's connection (i.e.@: process target), as assigned by
> +@value{GDBN}.
> +@end defvar
> +
>  @defvar Inferior.pid
>  Process ID of the inferior, as assigned by the underlying operating
>  system.
> diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
> index a3d5952a10b..a7fac34f3d6 100644
> --- a/gdb/python/py-inferior.c
> +++ b/gdb/python/py-inferior.c
> @@ -426,6 +426,20 @@ infpy_get_num (PyObject *self, void *closure)
>    return gdb_py_object_from_longest (inf->inferior->num).release ();
>  }
> 
> +static PyObject *
> +infpy_get_connection_num (PyObject *self, void *closure)
> +{
> +  inferior_object *inf = (inferior_object *) self;
> +
> +  INFPY_REQUIRE_VALID (inf);
> +
> +  process_stratum_target *target = inf->inferior->process_target ();
> +  if (target == nullptr)
> +    Py_RETURN_NONE;
> +
> +  return PyLong_FromLong (target->connection_number);
> +}
> +
>  static PyObject *
>  infpy_get_pid (PyObject *self, void *closure)
>  {
> @@ -928,6 +942,8 @@ gdbpy_initialize_inferior (void)
>  static gdb_PyGetSetDef inferior_object_getset[] =
>  {
>    { "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
> +  { "connection_num", infpy_get_connection_num, NULL,
> +    "ID of inferior's connection, as assigned by GDB.", NULL },
>    { "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
>      NULL },
>    { "was_attached", infpy_get_was_attached, NULL,
> diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-
> inferior.exp
> index 9df74e05182..2252215b721 100644
> --- a/gdb/testsuite/gdb.python/py-inferior.exp
> +++ b/gdb/testsuite/gdb.python/py-inferior.exp
> @@ -51,6 +51,7 @@ gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior" 0
> 
>  gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test equality
> comparison (true)"
>  gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
> +gdb_test "python print ('result = %s' % i0.connection_num)" " = \[0-9\]+" "test
> Inferior.connection_num"
>  gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
>  gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test
> Inferior.was_attached"
>  gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at
> 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
> @@ -262,6 +263,8 @@ with_test_prefix "is_valid" {
>      # correctly.
>      gdb_test "python print (inf_list\[1\].num)" \
>  	"RuntimeError: Inferior no longer exists.*"
> +    gdb_test "python print (inf_list\[1\].connection_num)" \
> +	"RuntimeError: Inferior no longer exists.*"
>      gdb_test "python print (inf_list\[1\].pid)" \
>  	"RuntimeError: Inferior no longer exists.*"
>      gdb_test "python print (inf_list\[1\].was_attached)" \
> @@ -278,10 +281,30 @@ with_test_prefix "is_valid" {
>  with_test_prefix "selected_inferior" {
>      gdb_test "inferior 1" ".*" "switch to first inferior"
>      gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
> +    gdb_test "py print (gdb.selected_inferior().connection_num)" "1" \
> +	"first inferior's connection"
> +    # Figure out if inf 1 has a native target.
> +    set inf_1_is_native [gdb_is_target_native]
> 
> -    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
> +    gdb_test "add-inferior -no-connection" "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 "py print (gdb.selected_inferior().connection_num)" "None" \
> +	"third inferior's None connection"
> +    gdb_test "target native" "Done.  Use the \"run\" command to start a process." \
> +	"target for the third inferior"
> +
> +    # If inf 1 has a native target, inf 3's target is shared with 1's.
> +    # Otherwise, it must have created a new target with a new number.
> +    if {$inf_1_is_native} {
> +	set expected_connection_num 1
> +    } else {
> +	set expected_connection_num 2
> +    }
> +    gdb_test "py print (gdb.selected_inferior().connection_num)" \
> +	"$expected_connection_num" \
> +	"third inferior's native connection"
> +
>      gdb_test "inferior 1" ".*" "switch back to first inferior"
>      gdb_test_no_output "remove-inferiors 3" "remove second inferior"
>  }
> --
> 2.17.1


Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-04-12 15:04 [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects Tankut Baris Aktemur
  2021-04-27  6:44 ` Aktemur, Tankut Baris
@ 2021-04-27  9:10 ` Andrew Burgess
  2021-04-27 17:15   ` Aktemur, Tankut Baris
  1 sibling, 1 reply; 8+ messages in thread
From: Andrew Burgess @ 2021-04-27  9:10 UTC (permalink / raw)
  To: Tankut Baris Aktemur; +Cc: gdb-patches

* Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12 17:04:28 +0200]:

> Define a 'connection_num' attribute for Inferior objects.  The
> read-only attribute is the ID of the process stratum target of an
> inferior, as printed by "info inferiors".
> 
> gdb/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* python/py-inferior.c (infpy_get_connection_num): New function.
> 	(inferior_object_getset): Add a new element for 'connection_num'.
> 	* NEWS: Mention the 'connection_num' attribute of Inferior objects.
> 
> gdb/doc/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* python.texi (Inferiors In Python): Mention the 'connection_num'
> 	attribute.
> 
> gdb/testsuite/ChangeLog:
> 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> 
> 	* gdb.python/py-inferior.exp: Add test cases for
> 	* 'connection_num'.

Thanks for looking at this, I had a couple of minor comments.

> ---
>  gdb/NEWS                                 |  5 +++++
>  gdb/doc/python.texi                      |  5 +++++
>  gdb/python/py-inferior.c                 | 16 +++++++++++++++
>  gdb/testsuite/gdb.python/py-inferior.exp | 25 +++++++++++++++++++++++-
>  4 files changed, 50 insertions(+), 1 deletion(-)
> 
> diff --git a/gdb/NEWS b/gdb/NEWS
> index 6cf76a14317..bdc0e2c6593 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -138,6 +138,11 @@ QMemTags
>    Request the remote to store the specified allocation tags to the requested
>    memory range.
>  
> +* Python API
> +
> +  ** Inferior objects now contain a read-only 'connection_num' attribute that
> +     gives the ID of the Inferior's process stratum target.

I don't think you should mention "process stratum" here.  The NEWS
file is for users to read, and "stratum" is not mentioned anywhere in
the GDB manual (or in this NEWS file).

How about:

  ** Inferior objects now contain a read-only 'connection_num' attribute that
     gives the connection number as seen in 'info connections' and
     'info inferiors'.

> +
>  *** Changes in GDB 10
>  
>  * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
> diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
> index 9135d415dd1..b459ff245d4 100644
> --- a/gdb/doc/python.texi
> +++ b/gdb/doc/python.texi
> @@ -2989,6 +2989,11 @@ A @code{gdb.Inferior} object has the following attributes:
>  ID of inferior, as assigned by GDB.
>  @end defvar
>  
> +@defvar Inferior.connection_num
> +ID of inferior's connection (i.e.@: process target), as assigned by
> +@value{GDBN}.
> +@end defvar
> +
>  @defvar Inferior.pid
>  Process ID of the inferior, as assigned by the underlying operating
>  system.
> diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
> index a3d5952a10b..a7fac34f3d6 100644
> --- a/gdb/python/py-inferior.c
> +++ b/gdb/python/py-inferior.c
> @@ -426,6 +426,20 @@ infpy_get_num (PyObject *self, void *closure)
>    return gdb_py_object_from_longest (inf->inferior->num).release ();
>  }
>  
> +static PyObject *
> +infpy_get_connection_num (PyObject *self, void *closure)

This function should have a header comment.

Otherwise, this looks good.

Thanks,
Andrew

> +{
> +  inferior_object *inf = (inferior_object *) self;
> +
> +  INFPY_REQUIRE_VALID (inf);
> +
> +  process_stratum_target *target = inf->inferior->process_target ();
> +  if (target == nullptr)
> +    Py_RETURN_NONE;
> +
> +  return PyLong_FromLong (target->connection_number);
> +}
> +
>  static PyObject *
>  infpy_get_pid (PyObject *self, void *closure)
>  {
> @@ -928,6 +942,8 @@ gdbpy_initialize_inferior (void)
>  static gdb_PyGetSetDef inferior_object_getset[] =
>  {
>    { "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
> +  { "connection_num", infpy_get_connection_num, NULL,
> +    "ID of inferior's connection, as assigned by GDB.", NULL },
>    { "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
>      NULL },
>    { "was_attached", infpy_get_was_attached, NULL,
> diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp
> index 9df74e05182..2252215b721 100644
> --- a/gdb/testsuite/gdb.python/py-inferior.exp
> +++ b/gdb/testsuite/gdb.python/py-inferior.exp
> @@ -51,6 +51,7 @@ gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior" 0
>  
>  gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test equality comparison (true)"
>  gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
> +gdb_test "python print ('result = %s' % i0.connection_num)" " = \[0-9\]+" "test Inferior.connection_num"
>  gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
>  gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test Inferior.was_attached"
>  gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
> @@ -262,6 +263,8 @@ with_test_prefix "is_valid" {
>      # correctly.
>      gdb_test "python print (inf_list\[1\].num)" \
>  	"RuntimeError: Inferior no longer exists.*"
> +    gdb_test "python print (inf_list\[1\].connection_num)" \
> +	"RuntimeError: Inferior no longer exists.*"
>      gdb_test "python print (inf_list\[1\].pid)" \
>  	"RuntimeError: Inferior no longer exists.*"
>      gdb_test "python print (inf_list\[1\].was_attached)" \
> @@ -278,10 +281,30 @@ with_test_prefix "is_valid" {
>  with_test_prefix "selected_inferior" {
>      gdb_test "inferior 1" ".*" "switch to first inferior"
>      gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
> +    gdb_test "py print (gdb.selected_inferior().connection_num)" "1" \
> +	"first inferior's connection"
> +    # Figure out if inf 1 has a native target.
> +    set inf_1_is_native [gdb_is_target_native]
>  
> -    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
> +    gdb_test "add-inferior -no-connection" "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 "py print (gdb.selected_inferior().connection_num)" "None" \
> +	"third inferior's None connection"
> +    gdb_test "target native" "Done.  Use the \"run\" command to start a process." \
> +	"target for the third inferior"
> +
> +    # If inf 1 has a native target, inf 3's target is shared with 1's.
> +    # Otherwise, it must have created a new target with a new number.
> +    if {$inf_1_is_native} {
> +	set expected_connection_num 1
> +    } else {
> +	set expected_connection_num 2
> +    }
> +    gdb_test "py print (gdb.selected_inferior().connection_num)" \
> +	"$expected_connection_num" \
> +	"third inferior's native connection"
> +
>      gdb_test "inferior 1" ".*" "switch back to first inferior"
>      gdb_test_no_output "remove-inferiors 3" "remove second inferior"
>  }
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-04-27  9:10 ` Andrew Burgess
@ 2021-04-27 17:15   ` Aktemur, Tankut Baris
  2021-05-04  8:22     ` Aktemur, Tankut Baris
  0 siblings, 1 reply; 8+ messages in thread
From: Aktemur, Tankut Baris @ 2021-04-27 17:15 UTC (permalink / raw)
  To: Andrew Burgess, Eli Zaretskii; +Cc: gdb-patches

On Tuesday, April 27, 2021 11:10 AM, Andrew Burgess wrote:
> * Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12 17:04:28
> +0200]:
> 
> > Define a 'connection_num' attribute for Inferior objects.  The
> > read-only attribute is the ID of the process stratum target of an
> > inferior, as printed by "info inferiors".
> >
> > gdb/ChangeLog:
> > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> >
> > 	* python/py-inferior.c (infpy_get_connection_num): New function.
> > 	(inferior_object_getset): Add a new element for 'connection_num'.
> > 	* NEWS: Mention the 'connection_num' attribute of Inferior objects.
> >
> > gdb/doc/ChangeLog:
> > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> >
> > 	* python.texi (Inferiors In Python): Mention the 'connection_num'
> > 	attribute.
> >
> > gdb/testsuite/ChangeLog:
> > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> >
> > 	* gdb.python/py-inferior.exp: Add test cases for
> > 	* 'connection_num'.
> 
> Thanks for looking at this, I had a couple of minor comments.
> 
> > ---
> >  gdb/NEWS                                 |  5 +++++
> >  gdb/doc/python.texi                      |  5 +++++
> >  gdb/python/py-inferior.c                 | 16 +++++++++++++++
> >  gdb/testsuite/gdb.python/py-inferior.exp | 25 +++++++++++++++++++++++-
> >  4 files changed, 50 insertions(+), 1 deletion(-)
> >
> > diff --git a/gdb/NEWS b/gdb/NEWS
> > index 6cf76a14317..bdc0e2c6593 100644
> > --- a/gdb/NEWS
> > +++ b/gdb/NEWS
> > @@ -138,6 +138,11 @@ QMemTags
> >    Request the remote to store the specified allocation tags to the requested
> >    memory range.
> >
> > +* Python API
> > +
> > +  ** Inferior objects now contain a read-only 'connection_num' attribute that
> > +     gives the ID of the Inferior's process stratum target.
> 
> I don't think you should mention "process stratum" here.  The NEWS
> file is for users to read, and "stratum" is not mentioned anywhere in
> the GDB manual (or in this NEWS file).
> 
> How about:
> 
>   ** Inferior objects now contain a read-only 'connection_num' attribute that
>      gives the connection number as seen in 'info connections' and
>      'info inferiors'.

Sure, I'll fix the text as above.
 
> > +
> >  *** Changes in GDB 10
> >
> >  * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
> > diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
> > index 9135d415dd1..b459ff245d4 100644
> > --- a/gdb/doc/python.texi
> > +++ b/gdb/doc/python.texi
> > @@ -2989,6 +2989,11 @@ A @code{gdb.Inferior} object has the following attributes:
> >  ID of inferior, as assigned by GDB.
> >  @end defvar
> >
> > +@defvar Inferior.connection_num
> > +ID of inferior's connection (i.e.@: process target), as assigned by
> > +@value{GDBN}.
> > +@end defvar
> > +
> >  @defvar Inferior.pid
> >  Process ID of the inferior, as assigned by the underlying operating
> >  system.
> > diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
> > index a3d5952a10b..a7fac34f3d6 100644
> > --- a/gdb/python/py-inferior.c
> > +++ b/gdb/python/py-inferior.c
> > @@ -426,6 +426,20 @@ infpy_get_num (PyObject *self, void *closure)
> >    return gdb_py_object_from_longest (inf->inferior->num).release ();
> >  }
> >
> > +static PyObject *
> > +infpy_get_connection_num (PyObject *self, void *closure)
> 
> This function should have a header comment.

I'll add the header comment.

> Otherwise, this looks good.
> 
> Thanks,
> Andrew

Thank you.

Eli had commented on the first revision.  Any further comments, Eli?

-Baris


> > +{
> > +  inferior_object *inf = (inferior_object *) self;
> > +
> > +  INFPY_REQUIRE_VALID (inf);
> > +
> > +  process_stratum_target *target = inf->inferior->process_target ();
> > +  if (target == nullptr)
> > +    Py_RETURN_NONE;
> > +
> > +  return PyLong_FromLong (target->connection_number);
> > +}
> > +
> >  static PyObject *
> >  infpy_get_pid (PyObject *self, void *closure)
> >  {
> > @@ -928,6 +942,8 @@ gdbpy_initialize_inferior (void)
> >  static gdb_PyGetSetDef inferior_object_getset[] =
> >  {
> >    { "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
> > +  { "connection_num", infpy_get_connection_num, NULL,
> > +    "ID of inferior's connection, as assigned by GDB.", NULL },
> >    { "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
> >      NULL },
> >    { "was_attached", infpy_get_was_attached, NULL,
> > diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-
> inferior.exp
> > index 9df74e05182..2252215b721 100644
> > --- a/gdb/testsuite/gdb.python/py-inferior.exp
> > +++ b/gdb/testsuite/gdb.python/py-inferior.exp
> > @@ -51,6 +51,7 @@ gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior"
> 0
> >
> >  gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test equality
> comparison (true)"
> >  gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
> > +gdb_test "python print ('result = %s' % i0.connection_num)" " = \[0-9\]+" "test
> Inferior.connection_num"
> >  gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
> >  gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test
> Inferior.was_attached"
> >  gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at
> 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
> > @@ -262,6 +263,8 @@ with_test_prefix "is_valid" {
> >      # correctly.
> >      gdb_test "python print (inf_list\[1\].num)" \
> >  	"RuntimeError: Inferior no longer exists.*"
> > +    gdb_test "python print (inf_list\[1\].connection_num)" \
> > +	"RuntimeError: Inferior no longer exists.*"
> >      gdb_test "python print (inf_list\[1\].pid)" \
> >  	"RuntimeError: Inferior no longer exists.*"
> >      gdb_test "python print (inf_list\[1\].was_attached)" \
> > @@ -278,10 +281,30 @@ with_test_prefix "is_valid" {
> >  with_test_prefix "selected_inferior" {
> >      gdb_test "inferior 1" ".*" "switch to first inferior"
> >      gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
> > +    gdb_test "py print (gdb.selected_inferior().connection_num)" "1" \
> > +	"first inferior's connection"
> > +    # Figure out if inf 1 has a native target.
> > +    set inf_1_is_native [gdb_is_target_native]
> >
> > -    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
> > +    gdb_test "add-inferior -no-connection" "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 "py print (gdb.selected_inferior().connection_num)" "None" \
> > +	"third inferior's None connection"
> > +    gdb_test "target native" "Done.  Use the \"run\" command to start a process." \
> > +	"target for the third inferior"
> > +
> > +    # If inf 1 has a native target, inf 3's target is shared with 1's.
> > +    # Otherwise, it must have created a new target with a new number.
> > +    if {$inf_1_is_native} {
> > +	set expected_connection_num 1
> > +    } else {
> > +	set expected_connection_num 2
> > +    }
> > +    gdb_test "py print (gdb.selected_inferior().connection_num)" \
> > +	"$expected_connection_num" \
> > +	"third inferior's native connection"
> > +
> >      gdb_test "inferior 1" ".*" "switch back to first inferior"
> >      gdb_test_no_output "remove-inferiors 3" "remove second inferior"
> >  }
> > --
> > 2.17.1
> >


Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-04-27 17:15   ` Aktemur, Tankut Baris
@ 2021-05-04  8:22     ` Aktemur, Tankut Baris
  2021-05-11  7:22       ` Aktemur, Tankut Baris
  0 siblings, 1 reply; 8+ messages in thread
From: Aktemur, Tankut Baris @ 2021-05-04  8:22 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Andrew Burgess, gdb-patches

Hi Eli,

On Tuesday, April 27, 2021 7:15 PM, Aktemur, Tankut Baris Wrote:
> On Tuesday, April 27, 2021 11:10 AM, Andrew Burgess wrote:
> > * Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12 17:04:28
> > +0200]:
> >
> > > Define a 'connection_num' attribute for Inferior objects.  The
> > > read-only attribute is the ID of the process stratum target of an
> > > inferior, as printed by "info inferiors".
> > >
> > > gdb/ChangeLog:
> > > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> > >
> > > 	* python/py-inferior.c (infpy_get_connection_num): New function.
> > > 	(inferior_object_getset): Add a new element for 'connection_num'.
> > > 	* NEWS: Mention the 'connection_num' attribute of Inferior objects.
> > >
> > > gdb/doc/ChangeLog:
> > > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> > >
> > > 	* python.texi (Inferiors In Python): Mention the 'connection_num'
> > > 	attribute.
> > >
> > > gdb/testsuite/ChangeLog:
> > > 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
> > >
> > > 	* gdb.python/py-inferior.exp: Add test cases for
> > > 	* 'connection_num'.
> >
> > Thanks for looking at this, I had a couple of minor comments.
> >
> > > ---
> > >  gdb/NEWS                                 |  5 +++++
> > >  gdb/doc/python.texi                      |  5 +++++
> > >  gdb/python/py-inferior.c                 | 16 +++++++++++++++
> > >  gdb/testsuite/gdb.python/py-inferior.exp | 25 +++++++++++++++++++++++-
> > >  4 files changed, 50 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/gdb/NEWS b/gdb/NEWS
> > > index 6cf76a14317..bdc0e2c6593 100644
> > > --- a/gdb/NEWS
> > > +++ b/gdb/NEWS
> > > @@ -138,6 +138,11 @@ QMemTags
> > >    Request the remote to store the specified allocation tags to the requested
> > >    memory range.
> > >
> > > +* Python API
> > > +
> > > +  ** Inferior objects now contain a read-only 'connection_num' attribute that
> > > +     gives the ID of the Inferior's process stratum target.
> >
> > I don't think you should mention "process stratum" here.  The NEWS
> > file is for users to read, and "stratum" is not mentioned anywhere in
> > the GDB manual (or in this NEWS file).
> >
> > How about:
> >
> >   ** Inferior objects now contain a read-only 'connection_num' attribute that
> >      gives the connection number as seen in 'info connections' and
> >      'info inferiors'.
> 
> Sure, I'll fix the text as above.
> 
> > > +
> > >  *** Changes in GDB 10
> > >
> > >  * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
> > > diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
> > > index 9135d415dd1..b459ff245d4 100644
> > > --- a/gdb/doc/python.texi
> > > +++ b/gdb/doc/python.texi
> > > @@ -2989,6 +2989,11 @@ A @code{gdb.Inferior} object has the following attributes:
> > >  ID of inferior, as assigned by GDB.
> > >  @end defvar
> > >
> > > +@defvar Inferior.connection_num
> > > +ID of inferior's connection (i.e.@: process target), as assigned by
> > > +@value{GDBN}.
> > > +@end defvar
> > > +
> > >  @defvar Inferior.pid
> > >  Process ID of the inferior, as assigned by the underlying operating
> > >  system.
> > > diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
> > > index a3d5952a10b..a7fac34f3d6 100644
> > > --- a/gdb/python/py-inferior.c
> > > +++ b/gdb/python/py-inferior.c
> > > @@ -426,6 +426,20 @@ infpy_get_num (PyObject *self, void *closure)
> > >    return gdb_py_object_from_longest (inf->inferior->num).release ();
> > >  }
> > >
> > > +static PyObject *
> > > +infpy_get_connection_num (PyObject *self, void *closure)
> >
> > This function should have a header comment.
> 
> I'll add the header comment.
> 
> > Otherwise, this looks good.
> >
> > Thanks,
> > Andrew
> 
> Thank you.
> 
> Eli had commented on the first revision.  Any further comments, Eli?
> 
> -Baris

Any further comments about the patch?
Is v2 OK from your PoV?

Thanks
-Baris

> > > +{
> > > +  inferior_object *inf = (inferior_object *) self;
> > > +
> > > +  INFPY_REQUIRE_VALID (inf);
> > > +
> > > +  process_stratum_target *target = inf->inferior->process_target ();
> > > +  if (target == nullptr)
> > > +    Py_RETURN_NONE;
> > > +
> > > +  return PyLong_FromLong (target->connection_number);
> > > +}
> > > +
> > >  static PyObject *
> > >  infpy_get_pid (PyObject *self, void *closure)
> > >  {
> > > @@ -928,6 +942,8 @@ gdbpy_initialize_inferior (void)
> > >  static gdb_PyGetSetDef inferior_object_getset[] =
> > >  {
> > >    { "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
> > > +  { "connection_num", infpy_get_connection_num, NULL,
> > > +    "ID of inferior's connection, as assigned by GDB.", NULL },
> > >    { "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
> > >      NULL },
> > >    { "was_attached", infpy_get_was_attached, NULL,
> > > diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-
> > inferior.exp
> > > index 9df74e05182..2252215b721 100644
> > > --- a/gdb/testsuite/gdb.python/py-inferior.exp
> > > +++ b/gdb/testsuite/gdb.python/py-inferior.exp
> > > @@ -51,6 +51,7 @@ gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first
> inferior"
> > 0
> > >
> > >  gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test
> equality
> > comparison (true)"
> > >  gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
> > > +gdb_test "python print ('result = %s' % i0.connection_num)" " = \[0-9\]+" "test
> > Inferior.connection_num"
> > >  gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
> > >  gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test
> > Inferior.was_attached"
> > >  gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at
> > 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
> > > @@ -262,6 +263,8 @@ with_test_prefix "is_valid" {
> > >      # correctly.
> > >      gdb_test "python print (inf_list\[1\].num)" \
> > >  	"RuntimeError: Inferior no longer exists.*"
> > > +    gdb_test "python print (inf_list\[1\].connection_num)" \
> > > +	"RuntimeError: Inferior no longer exists.*"
> > >      gdb_test "python print (inf_list\[1\].pid)" \
> > >  	"RuntimeError: Inferior no longer exists.*"
> > >      gdb_test "python print (inf_list\[1\].was_attached)" \
> > > @@ -278,10 +281,30 @@ with_test_prefix "is_valid" {
> > >  with_test_prefix "selected_inferior" {
> > >      gdb_test "inferior 1" ".*" "switch to first inferior"
> > >      gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
> > > +    gdb_test "py print (gdb.selected_inferior().connection_num)" "1" \
> > > +	"first inferior's connection"
> > > +    # Figure out if inf 1 has a native target.
> > > +    set inf_1_is_native [gdb_is_target_native]
> > >
> > > -    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
> > > +    gdb_test "add-inferior -no-connection" "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 "py print (gdb.selected_inferior().connection_num)" "None" \
> > > +	"third inferior's None connection"
> > > +    gdb_test "target native" "Done.  Use the \"run\" command to start a process." \
> > > +	"target for the third inferior"
> > > +
> > > +    # If inf 1 has a native target, inf 3's target is shared with 1's.
> > > +    # Otherwise, it must have created a new target with a new number.
> > > +    if {$inf_1_is_native} {
> > > +	set expected_connection_num 1
> > > +    } else {
> > > +	set expected_connection_num 2
> > > +    }
> > > +    gdb_test "py print (gdb.selected_inferior().connection_num)" \
> > > +	"$expected_connection_num" \
> > > +	"third inferior's native connection"
> > > +
> > >      gdb_test "inferior 1" ".*" "switch back to first inferior"
> > >      gdb_test_no_output "remove-inferiors 3" "remove second inferior"
> > >  }
> > > --
> > > 2.17.1
> > >

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-05-04  8:22     ` Aktemur, Tankut Baris
@ 2021-05-11  7:22       ` Aktemur, Tankut Baris
  2021-05-13 18:31         ` Simon Marchi
  0 siblings, 1 reply; 8+ messages in thread
From: Aktemur, Tankut Baris @ 2021-05-11  7:22 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Andrew Burgess, gdb-patches

On Tuesday, May 4, 2021 10:23 AM, Aktemur, Tankut Baris wrote:
> Hi Eli,
> 
> On Tuesday, April 27, 2021 7:15 PM, Aktemur, Tankut Baris Wrote:
> > On Tuesday, April 27, 2021 11:10 AM, Andrew Burgess wrote:
> > > * Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12 17:04:28
> > > +0200]:
> > >
> > > > Define a 'connection_num' attribute for Inferior objects.  The
> > > > read-only attribute is the ID of the process stratum target of an
> > > > inferior, as printed by "info inferiors".
...
> > > Otherwise, this looks good.
> > >
> > > Thanks,
> > > Andrew
> >
> > Thank you.
> >
> > Eli had commented on the first revision.  Any further comments, Eli?
> >
> > -Baris
> 
> Any further comments about the patch?
> Is v2 OK from your PoV?

Kindly pinging.

Thanks,
-Baris


Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-05-11  7:22       ` Aktemur, Tankut Baris
@ 2021-05-13 18:31         ` Simon Marchi
  2021-05-14 10:13           ` Aktemur, Tankut Baris
  0 siblings, 1 reply; 8+ messages in thread
From: Simon Marchi @ 2021-05-13 18:31 UTC (permalink / raw)
  To: Aktemur, Tankut Baris, Eli Zaretskii; +Cc: gdb-patches

On 2021-05-11 3:22 a.m., Aktemur, Tankut Baris via Gdb-patches wrote:
> On Tuesday, May 4, 2021 10:23 AM, Aktemur, Tankut Baris wrote:
>> Hi Eli,
>>
>> On Tuesday, April 27, 2021 7:15 PM, Aktemur, Tankut Baris Wrote:
>>> On Tuesday, April 27, 2021 11:10 AM, Andrew Burgess wrote:
>>>> * Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12 17:04:28
>>>> +0200]:
>>>>
>>>>> Define a 'connection_num' attribute for Inferior objects.  The
>>>>> read-only attribute is the ID of the process stratum target of an
>>>>> inferior, as printed by "info inferiors".
> ...
>>>> Otherwise, this looks good.
>>>>
>>>> Thanks,
>>>> Andrew
>>>
>>> Thank you.
>>>
>>> Eli had commented on the first revision.  Any further comments, Eli?
>>>
>>> -Baris
>>
>> Any further comments about the patch?
>> Is v2 OK from your PoV?
> 
> Kindly pinging.
> 
> Thanks,
> -Baris

I would suggest using a cross-refererence to point to where we talk
about connections or the "info connections" command.  Do we talk about
"process target" else where in the doc?  A bit like in NEWS, I don't
think that's a user-facing concept (connections are).  So I would remove
that part.

I would also mention "or None if the inferior is not connected to a
target.

I guess that if we make Python objects to represent connections in the
future (listable with gdb.connections(), for example), then it would
make sense to have a "inferior.connection" read-only property, to get an
inferior's connection?  And then, inferior.connection_num would be
obsoleted by this, since you could then do "inferior.connection.num"?

Ideally, we'd go straight to adding Connection objects, but obviously
that's more work.  So I'm ok with going with connection_num as a
stop-gap.

Simon


^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects
  2021-05-13 18:31         ` Simon Marchi
@ 2021-05-14 10:13           ` Aktemur, Tankut Baris
  0 siblings, 0 replies; 8+ messages in thread
From: Aktemur, Tankut Baris @ 2021-05-14 10:13 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches, Andrew Burgess, Eli Zaretskii

On Thursday, May 13, 2021 8:32 PM, Simon Marchi wrote:
> On 2021-05-11 3:22 a.m., Aktemur, Tankut Baris via Gdb-patches wrote:
> > On Tuesday, May 4, 2021 10:23 AM, Aktemur, Tankut Baris wrote:
> >> Hi Eli,
> >>
> >> On Tuesday, April 27, 2021 7:15 PM, Aktemur, Tankut Baris Wrote:
> >>> On Tuesday, April 27, 2021 11:10 AM, Andrew Burgess wrote:
> >>>> * Tankut Baris Aktemur via Gdb-patches <gdb-patches@sourceware.org> [2021-04-12
> 17:04:28
> >>>> +0200]:
> >>>>
> >>>>> Define a 'connection_num' attribute for Inferior objects.  The
> >>>>> read-only attribute is the ID of the process stratum target of an
> >>>>> inferior, as printed by "info inferiors".
> > ...
> >>>> Otherwise, this looks good.
> >>>>
> >>>> Thanks,
> >>>> Andrew
> >>>
> >>> Thank you.
> >>>
> >>> Eli had commented on the first revision.  Any further comments, Eli?
> >>>
> >>> -Baris
> >>
> >> Any further comments about the patch?
> >> Is v2 OK from your PoV?
> >
> > Kindly pinging.
> >
> > Thanks,
> > -Baris
> 
> I would suggest using a cross-refererence to point to where we talk
> about connections or the "info connections" command.  Do we talk about
> "process target" else where in the doc?  A bit like in NEWS, I don't
> think that's a user-facing concept (connections are).  So I would remove
> that part.
> 
> I would also mention "or None if the inferior is not connected to a
> target.

I made these updates and will send v3 shortly.

> I guess that if we make Python objects to represent connections in the
> future (listable with gdb.connections(), for example), then it would
> make sense to have a "inferior.connection" read-only property, to get an
> inferior's connection?  And then, inferior.connection_num would be
> obsoleted by this, since you could then do "inferior.connection.num"?

Yes.

> Ideally, we'd go straight to adding Connection objects, but obviously
> that's more work.  So I'm ok with going with connection_num as a
> stop-gap.
> 
> Simon

Thanks.

-Baris


Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-05-14 10:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-12 15:04 [PATCH v2] gdb/python: add a 'connection_num' attribute to Inferior objects Tankut Baris Aktemur
2021-04-27  6:44 ` Aktemur, Tankut Baris
2021-04-27  9:10 ` Andrew Burgess
2021-04-27 17:15   ` Aktemur, Tankut Baris
2021-05-04  8:22     ` Aktemur, Tankut Baris
2021-05-11  7:22       ` Aktemur, Tankut Baris
2021-05-13 18:31         ` Simon Marchi
2021-05-14 10:13           ` Aktemur, Tankut Baris

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).