diff options
author | Tom Tromey <tromey@adacore.com> | 2023-03-23 11:54:46 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-05-23 10:09:27 -0600 |
commit | d5ad08d77c92e50f24798f357dd688b9060c6f68 (patch) | |
tree | ea717a62e9f5589444451867ca963f8a488c1ac2 /gdb/python | |
parent | 6aebb6e100fb3c5e2acf19f8b0432b3b4fd750e0 (diff) | |
download | fsf-binutils-gdb-d5ad08d77c92e50f24798f357dd688b9060c6f68.zip fsf-binutils-gdb-d5ad08d77c92e50f24798f357dd688b9060c6f68.tar.gz fsf-binutils-gdb-d5ad08d77c92e50f24798f357dd688b9060c6f68.tar.bz2 |
Use field_signed from Python MI commands
If an MI command written in Python includes a number in its output,
currently that is simply emitted as a string. However, it's
convenient for a later patch if these are emitted using field_signed.
This does not make a difference to ordinary MI clients.
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-micmd.c | 15 | ||||
-rw-r--r-- | gdb/python/python-internal.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gdb/python/py-micmd.c b/gdb/python/py-micmd.c index e86807d..d7d9591 100644 --- a/gdb/python/py-micmd.c +++ b/gdb/python/py-micmd.c @@ -293,6 +293,21 @@ serialize_mi_result_1 (PyObject *result, const char *field_name) } else { + if (PyLong_Check (result)) + { + int overflow = 0; + gdb_py_longest val = gdb_py_long_as_long_and_overflow (result, + &overflow); + if (PyErr_Occurred () != nullptr) + gdbpy_handle_exception (); + if (overflow == 0) + { + uiout->field_signed (field_name, val); + return; + } + /* Fall through to the string case on overflow. */ + } + gdb::unique_xmalloc_ptr<char> string (gdbpy_obj_to_string (result)); if (string == nullptr) gdbpy_handle_exception (); diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index dbd3357..1142e0e 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -110,6 +110,7 @@ typedef PY_LONG_LONG gdb_py_longest; typedef unsigned PY_LONG_LONG gdb_py_ulongest; #define gdb_py_long_as_ulongest PyLong_AsUnsignedLongLong +#define gdb_py_long_as_long_and_overflow PyLong_AsLongLongAndOverflow #else /* HAVE_LONG_LONG */ @@ -118,6 +119,7 @@ typedef unsigned PY_LONG_LONG gdb_py_ulongest; typedef long gdb_py_longest; typedef unsigned long gdb_py_ulongest; #define gdb_py_long_as_ulongest PyLong_AsUnsignedLong +#define gdb_py_long_as_long_and_overflow PyLong_AsLongAndOverflow #endif /* HAVE_LONG_LONG */ |