# Copyright 2022-2023 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Test UTF-8 identifiers.

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

standard_ada_testfile prog

set flags [list debug additional_flags=-gnatW8]
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
    return -1
}

# Restart without an executable so that we can set the encoding early.
clean_restart

gdb_test_no_output "set ada source-charset UTF-8"

gdb_load ${binfile}

set bp_location [gdb_get_line_number "BREAK" ${testdir}/prog.adb]
runto "prog.adb:$bp_location"

gdb_test "print VAR_Ü" " = 23"
gdb_test "print var_ü" " = 23"
gdb_test "print VAR_Ƹ" " = 24"
gdb_test "print var_ƹ" " = 24"
gdb_test "print VAR_𐐁" " = 25"
gdb_test "print var_𐐩" " = 25"
gdb_test "print VAR_Ż" " = 26"
gdb_test "print var_ż" " = 26"

gdb_breakpoint "FUNC_Ü" message
gdb_breakpoint "func_ü" message
gdb_breakpoint "FUNC_Ƹ" message
gdb_breakpoint "func_ƹ" message
gdb_breakpoint "FUNC_Ż" message
gdb_breakpoint "func_ż" message
gdb_breakpoint "FUNC_𐐁" message
