Re: [PATCH 2/5] gdb/python: move PyLong_From* calls into py-utils.c

Andrew Burgess
2021-06-21T19:42:35Z

* Tom Tromey <tom@tromey.com> [2021-06-07 08:53:52 -0600]:

> >>>>> "Andrew" == Andrew Burgess <andrew.burgess@embecosm.com> writes:
>
> Andrew> gdb/ChangeLog:
>
> Andrew> * python/py-inferior.c (infpy_get_connection_num): Call new
> Andrew> function gdb_py_object_from_int.
> Andrew> * python/py-utils.c (gdb_py_object_from_int): New function.
> Andrew> * python/python-internal.h (gdb_py_object_from_int): Declare.
>
> This seems fine to me.
>
> It would also probably be ok to just rely on promotion and always use
> gdb_py_object_from_longest.

I took this advice and pushed the patch below.

Thanks,
Andrew

---

commit 8b9c48b287d42d1c816f441e4273dcb8c7af1876
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date: Wed May 26 21:28:11 2021 +0100

gdb/python: move PyLong_From* calls into py-utils.c

We already have two helper functions in py-utils.c:

gdb_py_object_from_longest (LONGEST l)
gdb_py_object_from_ulongest (ULONGEST l)

these wrap around calls to either PyLong_FromLongLong,
PyLong_FromLong, or PyInt_From_Long (if Python 2 is being used).

There is one place in gdb/python/* where a call to PyLong_FromLong was
added outside of the above utility functions, this was done in the
recent commit:

commit 55789354fcbaf879f3ca8475b647b2747dec486e
Date: Fri May 14 11:56:31 2021 +0200

gdb/python: add a 'connection_num' attribute to Inferior objects

In this commit I replace the direct use of PyLong_FromLong with a call
to gdb_py_object_from_longest. The only real change with this commit,
is that, for Python 2, we will now end up calling PyInt_FromLong
instead of PyLong_FromLong, but this should be invisible to the user.
For Python 3 there should be absolutely no change.

gdb/ChangeLog:

* python/py-inferior.c (infpy_get_connection_num): Call
gdb_py_object_from_longest instead of PyLong_FromLong directly.

diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 336c6426b8c..39efa804d80 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -441,7 +441,7 @@ infpy_get_connection_num (PyObject *self, void *closure)
if (target == nullptr)
Py_RETURN_NONE;

- return PyLong_FromLong (target->connection_number);
+ return gdb_py_object_from_longest (target->connection_number).release ();
}

static PyObject *