[gdb/testsuite] Add have_host_locale

With test-case gdb.tui/pr30056.exp, I run into:
...
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)^M
...
and then subsequently into:
...
WARNING: timeout in accept_gdb_output
FAIL: gdb.tui/pr30056.exp: Control-C
...

This is on a CentOS 7 distro for powerpc64le.

Either it has no C.UTF-8 support, or it's not installed:
...
$ locale -a | grep ^C
C
$
...

Fix this by:
- adding a new proc have_host_locale, and
- using it in all test-cases using setenv LC_ALL.

Tested on powerpc64le-linux and x86_64-linux.
This commit is contained in:
Tom de Vries 2023-06-21 16:29:04 +02:00
parent b96cac1607
commit 83aa25512d
7 changed files with 42 additions and 0 deletions

View File

@ -18,6 +18,7 @@
load_lib "ada.exp"
require allow_ada_tests
require {have_host_locale C.UTF-8}
# Enable basic use of UTF-8. LC_ALL gets reset for each testfile. We
# want this despite the program itself using Latin-1, as this test is

View File

@ -18,6 +18,7 @@
load_lib "ada.exp"
require allow_ada_tests
require {have_host_locale C.UTF-8}
# Enable basic use of UTF-8. LC_ALL gets reset for each testfile. We
# want this despite the program itself using Latin-1, as this test is

View File

@ -18,6 +18,7 @@
load_lib "ada.exp"
require allow_ada_tests
require {have_host_locale C.UTF-8}
# Enable basic use of UTF-8. LC_ALL gets reset for each testfile.
setenv LC_ALL C.UTF-8

View File

@ -25,6 +25,7 @@ if { [is_c_compiler_gcc] } {
# Gcc fully supports fextended-identifiers starting GCC 5.
require {expr [gcc_major_version] >= 5}
}
require {have_host_locale C.UTF-8}
standard_testfile

View File

@ -18,6 +18,7 @@
load_lib rust-support.exp
require allow_rust_tests
require {can_compile rust}
require {have_host_locale C.UTF-8}
# Non-ASCII identifiers were allowed starting in 1.53.
require {rust_at_least 1.53}

View File

@ -18,6 +18,7 @@
# This PR is fixed in the in-repo copy of readline. System readline may or
# may not be fixed, so skip this test-case.
require !with_system_readline
require {have_host_locale C.UTF-8}
tuiterm_env

View File

@ -9794,5 +9794,41 @@ proc lappend_include_file { flags file } {
}
}
# Return a list of supported host locales.
gdb_caching_proc host_locales { } {
set result [remote_exec host "locale -a"]
set status [lindex $result 0]
set output [lindex $result 1]
if { $status != 0 } {
return {}
}
# Split into list.
set output [string trim $output]
set l [split $output \n]
# Trim items.
set l [lmap v $l { string trim $v }]
# Normalize items to lower-case.
set l [lmap v $l { string tolower $v }]
return $l
}
# Return 1 if host locale LOCALE is supported.
proc have_host_locale { locale } {
# Normalize to lower-case.
set locale [string tolower $locale]
# Normalize to without dash.
set locale [string map { "-" "" } $locale]
set idx [lsearch [host_locales] $locale]
return [expr $idx != -1]
}
# Always load compatibility stuff.
load_lib future.exp