Files
binutils-gdb/gdb/testsuite/gdb.ada/overload_menu_crash.exp
Tom Tromey b6f3ac06ee Improve choice sorting in ada-lang.c
ada-lang.c has a "sort_choices" function that claims to sort the
symbol choices, but which does not really implement sorting.  This
patch changes this code to really sort the result vector, sorting
first by filename, then line number, and finally by the symbol name.

The filename sorting is done first by comparing basenames.  It turns
out that gnatmake and gprbuild invoke the compiler a bit differently,
so depending on which one you use, the results of a naive sort might
be different (due to the use of absolute or relative paths).
2024-11-20 13:18:40 -07:00

47 lines
1.4 KiB
Plaintext

# Copyright 2022-2024 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/>.
# Regression test for a crash in the overload menu.
load_lib "ada.exp"
require allow_ada_tests
standard_ada_testfile main
if {[gdb_compile_ada "$srcfile" "$binfile" executable {debug}] != ""} {
return -1
}
clean_restart ${testfile}
set bp_location [gdb_get_line_number "BREAK" ${testdir}/main.adb]
runto "main.adb:$bp_location"
set menu [multi_line "Multiple matches for regtest" \
"\\\[0\\\] cancel" \
"\\\[1\\\] pck.regtest .* return boolean at .*pck.adb:\[0-9\]+" \
"\\\[2\\\] pck.inner.regtest at .*pck.ads:\[0-9\]+" \
"> $"]
gdb_test_multiple "whatis &regtest" "menu does not crash" {
-re "$menu" {
pass "$gdb_test_name"
}
default {
fail "$gdb_test_name"
}
}
gdb_test "2" "type = access boolean" "choose from menu"