summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-05-11 14:35:49 +0100
committerAndrew Burgess <aburgess@redhat.com>2023-05-16 11:37:43 +0100
commit4473d4f9096d75b24e5dc0225791d7c32fdbec47 (patch)
treeb156e8de2324c77d662b1b10d7554c26bf0c3566
parent0a7dda4f7af1e2911d125726cd3b0ddb42617875 (diff)
downloadbinutils-gdb-4473d4f9096d75b24e5dc0225791d7c32fdbec47.tar.gz
gdb/testsuite: make gdb_supported_languages a caching proc
Rewrite gdb_supported_languages as a caching proc that actually queries GDB for the list of supported languages, rather than just containing a hard-coded list of languages. There's only one test that uses this proc right now, gdb.python/py-function.exp, and that still passes after this change, with no changes in the test names.
-rw-r--r--gdb/testsuite/lib/gdb.exp28
1 files changed, 23 insertions, 5 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index c3579670296..133d914aff8 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -8610,11 +8610,29 @@ proc cd { dir } {
}
# Return a list of all languages supported by GDB, suitable for use in
-# 'set language NAME'. This doesn't include either the 'local' or
-# 'auto' keywords.
-proc gdb_supported_languages {} {
- return [list c objective-c c++ d go fortran modula-2 asm pascal \
- opencl rust minimal ada]
+# 'set language NAME'. This doesn't include the languages auto,
+# local, or unknown.
+gdb_caching_proc gdb_supported_languages {} {
+ # The extra space after 'complete set language ' in the command below is
+ # critical. Only with that space will GDB complete the next level of
+ # the command, i.e. fill in the actual language names.
+ set output [remote_exec host $::GDB "$::INTERNAL_GDBFLAGS -batch -ex \"complete set language \""]
+
+ if {[lindex $output 0] != 0} {
+ error "failed to get list of supported languages"
+ }
+
+ set langs {}
+ foreach line [split [lindex $output 1] \n] {
+ if {[regexp "set language (\[^\r\]+)" $line full_match lang]} {
+ # If LANG is not one of the languages that we ignore, then
+ # add it to our list of languages.
+ if {[lsearch -exact {auto local unknown} $lang] == -1} {
+ lappend langs $lang
+ }
+ }
+ }
+ return $langs
}
# Check if debugging is enabled for gdb.