aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/python/py-type.c9
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.ada/py_range.exp5
4 files changed, 22 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9d56f1c..c973f43 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
2021-06-25 Tom Tromey <tromey@adacore.com>
+ * python/py-type.c (typy_get_name): Decode an Ada type name.
+
+2021-06-25 Tom Tromey <tromey@adacore.com>
+
* ada-lang.c (ada_decode): Add wrap parameter.
* ada-lang.h (ada_decode): Add wrap parameter.
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 4f5f425..04d1c7a 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -27,6 +27,7 @@
#include "objfiles.h"
#include "language.h"
#include "typeprint.h"
+#include "ada-lang.h"
struct type_object
{
@@ -393,6 +394,14 @@ typy_get_name (PyObject *self, void *closure)
if (type->name () == NULL)
Py_RETURN_NONE;
+ /* Ada type names are encoded, but it is better for users to see the
+ decoded form. */
+ if (ADA_TYPE_P (type))
+ {
+ std::string name = ada_decode (type->name (), false);
+ if (!name.empty ())
+ return PyString_FromString (name.c_str ());
+ }
return PyString_FromString (type->name ());
}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d12aba9..e5164c7 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-25 Tom Tromey <tromey@adacore.com>
+
+ * gdb.ada/py_range.exp: Add type name test cases.
+
2021-06-24 Tom de Vries <tdevries@suse.de>
* gdb.base/info-macros.exp: Add <EOL> after trailing whitespace in
diff --git a/gdb/testsuite/gdb.ada/py_range.exp b/gdb/testsuite/gdb.ada/py_range.exp
index 1a619b7..3e6efa3 100644
--- a/gdb/testsuite/gdb.ada/py_range.exp
+++ b/gdb/testsuite/gdb.ada/py_range.exp
@@ -40,3 +40,8 @@ gdb_test "python print(int(gdb.parse_and_eval('si')))" \
gdb_test "python print(int(gdb.parse_and_eval('ir')))" \
"974"
+
+gdb_test "python print(gdb.parse_and_eval('si').type)" \
+ "foo\\.small_integer" "print type"
+gdb_test "python print(gdb.parse_and_eval('si').type.name)" \
+ "foo\\.small_integer" "print type name"