[PATCH] Add gdb.current_language function
Tom Tromey
tromey@adacore.com
Fri May 27 17:36:42 GMT 2022
This adds the gdb.current_language function, which can be used to find
the current language without (1) ever having the value "auto" or (2)
having to parse the output of "show language".
---
gdb/NEWS | 4 ++++
gdb/doc/python.texi | 6 ++++++
gdb/python/python.c | 12 ++++++++++++
gdb/testsuite/gdb.python/py-parameter.exp | 13 +++++++++++++
4 files changed, 35 insertions(+)
diff --git a/gdb/NEWS b/gdb/NEWS
index 52ffdc4c83a..2e87f8d56f3 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -51,6 +51,10 @@ maintenance info line-table
This is the same format that GDB uses when printing address, symbol,
and offset information from the disassembler.
+ ** New function gdb.current_language() that returns the name of the
+ current language. Unlike gdb.parameter('language'), this will
+ never return 'auto'.
+
*** Changes in GDB 12
* DBX mode is deprecated, and will be removed in GDB 13
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index cb5283e03c0..0767e157e4a 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -667,6 +667,12 @@ Here are some examples of the possible string formats:
@end smallexample
@end defun
+@defun gdb.current_language ()
+Return the name of the current language as a string. Note that,
+unlike @code{gdb.parameter(language')}, this function will never
+return @samp{auto}.
+@end defun
+
@node Exception Handling
@subsubsection Exception Handling
@cindex python exceptions
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 11aaa7ae778..9bef2252e88 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1571,6 +1571,14 @@ gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
return list.release ();
}
+/* Return the name of the current language. */
+
+static PyObject *
+gdbpy_current_language (PyObject *unused1, PyObject *unused2)
+{
+ return host_string_to_python_string (current_language->name ()).release ();
+}
+
/* The "current" objfile. This is set when gdb detects that a new
@@ -2534,6 +2542,10 @@ Format ADDRESS, an address within PROG_SPACE, a gdb.Progspace, using\n\
ARCH, a gdb.Architecture to determine the address size. The format of\n\
the returned string is 'ADDRESS <SYMBOL+OFFSET>' without the quotes." },
+ { "current_language", gdbpy_current_language, METH_NOARGS,
+ "current_language () -> string\n\
+Return the name of the currently selected language." },
+
{NULL, NULL, 0, NULL}
};
diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp
index 199d3bc16ec..fcafa7ee717 100644
--- a/gdb/testsuite/gdb.python/py-parameter.exp
+++ b/gdb/testsuite/gdb.python/py-parameter.exp
@@ -370,6 +370,19 @@ proc_with_prefix test_throwing_parameter { } {
"gdb.GdbError does not show Python stack"
}
+proc_with_prefix test_language {} {
+ gdb_test "python print(gdb.parameter('language'))" "auto" \
+ "print language parameter"
+ gdb_test "python print(gdb.current_language())" "c" \
+ "print current language"
+ gdb_test_no_output "set lang rust"
+ gdb_test "python print(gdb.parameter('language'))" "rust" \
+ "print language parameter for rust"
+ gdb_test "python print(gdb.current_language())" "rust" \
+ "print current language for rust"
+ gdb_test_no_output "set lang auto"
+}
+
test_directories
test_data_directory
test_boolean_parameter
--
2.34.1
More information about the Gdb-patches
mailing list