diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-05-11 14:35:49 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-05-16 11:37:43 +0100 |
commit | 4473d4f9096d75b24e5dc0225791d7c32fdbec47 (patch) | |
tree | b156e8de2324c77d662b1b10d7554c26bf0c3566 /gdb/testsuite/lib/gdb.exp | |
parent | 0a7dda4f7af1e2911d125726cd3b0ddb42617875 (diff) | |
download | gdb-4473d4f9096d75b24e5dc0225791d7c32fdbec47.zip gdb-4473d4f9096d75b24e5dc0225791d7c32fdbec47.tar.gz gdb-4473d4f9096d75b24e5dc0225791d7c32fdbec47.tar.bz2 |
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.
Diffstat (limited to 'gdb/testsuite/lib/gdb.exp')
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index c357967..133d914 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. |