1# Copyright 2005-2023 Free Software Foundation, Inc. 2# 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib "ada.exp" 17 18if { [skip_ada_tests] } { return -1 } 19 20standard_ada_testfile p 21 22if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} { 23 return -1 24} 25 26set old_gcc [expr [test_compiler_info {gcc-[0-3]-*}] \ 27 || [test_compiler_info {gcc-4-[0-6]-*}]] 28 29clean_restart ${testfile} 30 31set bp_location [gdb_get_line_number "START" ${testdir}/p.adb] 32runto "p.adb:$bp_location" 33 34# First, print all the arrays without indexes 35 36gdb_test_no_output "set print array-indexes off" 37 38if $old_gcc { 39 setup_xfail "*-*-*" 40} 41gdb_test "print one_two_three" \ 42 "= \\(1, 2, 3\\)" \ 43 "print one_two_three, indexes off" 44 45gdb_test "print e_one_two_three" \ 46 "= \\(1, 2, 3\\)" \ 47 "print e_one_two_three, indexes off" 48 49gdb_test "print r_two_three" \ 50 "= \\(two => 2, 3\\)" \ 51 "print r_two_three, indexes off" 52 53gdb_test "print u_one_two_three" \ 54 "= \\(1, 2, 3\\)" \ 55 "print u_one_two_three, indexes off" 56 57gdb_test "print p_one_two_three" \ 58 "= \\(false, true, true\\)" \ 59 "print p_one_two_three, indexes off" 60 61if $old_gcc { 62 setup_xfail "*-*-*" 63} 64gdb_test "print few_reps" \ 65 "= \\(1, 2, 3, 3, 3, 3, 3, 4, 5\\)" \ 66 "print few_reps, indexes off" 67 68if $old_gcc { 69 setup_xfail "*-*-*" 70} 71gdb_test "print many_reps" \ 72 "= \\(1, 2, 3 <repeats 12 times>, 4, 5\\)" \ 73 "print many_reps, indexes off" 74 75if $old_gcc { 76 setup_xfail "*-*-*" 77} 78gdb_test "print empty" \ 79 "= \\(\\)" \ 80 "print empty, indexes off" 81 82# Next, print all the arrays with the indexes 83 84gdb_test_no_output "set print array-indexes on" 85 86if $old_gcc { 87 setup_xfail "*-*-*" 88} 89gdb_test "print one_two_three" \ 90 "= \\(1 => 1, 2 => 2, 3 => 3\\)" 91 92gdb_test "print e_one_two_three" \ 93 "= \\(one => 1, two => 2, three => 3\\)" 94 95gdb_test "print r_two_three" \ 96 "= \\(two => 2, three => 3\\)" 97 98gdb_test "print u_one_two_three" \ 99 "= \\(1 => 1, 2 => 2, 3 => 3\\)" 100 101gdb_test "print p_one_two_three" \ 102 "= \\(one => false, two => true, three => true\\)" 103 104if $old_gcc { 105 setup_xfail "*-*-*" 106} 107gdb_test "print few_reps" \ 108 "= \\(1 => 1, 2 => 2, 3 => 3, 4 => 3, 5 => 3, 6 => 3, 7 => 3, 8 => 4, 9 => 5\\)" 109 110if $old_gcc { 111 setup_xfail "*-*-*" 112} 113gdb_test "print many_reps" \ 114 "= \\(1 => 1, 2 => 2, 3 => 3 <repeats 12 times>, 15 => 4, 16 => 5\\)" 115 116if $old_gcc { 117 setup_xfail "*-*-*" 118} 119gdb_test "print empty" \ 120 "= \\(\\)" 121