standard_ada_testfile foo
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} {
- return -1
-}
+foreach_with_prefix scenario {all minimal} {
+ set flags [list debug additional_flags=-fgnat-encodings=$scenario]
-clean_restart ${testfile}
+ if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+ return -1
+ }
-set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
-runto "foo.adb:$bp_location"
+ clean_restart ${testfile}
-gdb_test "ptype full" \
- "type = array \\(black \\.\\. white\\) of boolean <packed: 1-bit elements>"
+ # GNAT >= 11.0 has the needed fix here.
+ if {$scenario == "minimal" && ![test_compiler_info {gcc-1[1-9]-*}]} {
+ set old_compiler 1
+ } else {
+ set old_compiler 0
+ }
-gdb_test "print full" " = \\(false, true, false, true, false\\)"
+ set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
+ runto "foo.adb:$bp_location"
-gdb_test "print full'first" " = black"
+ gdb_test "ptype full" \
+ "type = array \\(black \\.\\. white\\) of boolean <packed: 1-bit elements>"
-gdb_test "ptype primary" \
- "type = array \\(red \\.\\. blue\\) of boolean <packed: 1-bit elements>"
+ gdb_test "print full" " = \\(false, true, false, true, false\\)"
-gdb_test "print primary" " = \\(red => false, true, false\\)"
+ gdb_test "print full'first" " = black"
-gdb_test "print primary'first" " = red"
+ gdb_test "ptype primary" \
+ "type = array \\(red \\.\\. blue\\) of boolean <packed: 1-bit elements>"
-gdb_test "ptype cold" \
- "type = array \\(green \\.\\. blue\\) of boolean <packed: 1-bit elements>"
+ gdb_test "print primary" " = \\(red => false, true, false\\)"
-gdb_test "print cold" " = \\(green => false, true\\)"
+ gdb_test "print primary'first" " = red"
-gdb_test "print cold'first" " = green"
+ gdb_test "ptype cold" \
+ "type = array \\(green \\.\\. blue\\) of boolean <packed: 1-bit elements>"
-# Note the bounds values are still not correctly displayed. So we get
-# the enum equivalent of "1 .. 0" (empty range) as the array ranges.
-# Accept that for now.
-gdb_test "ptype small" \
- "array \\(red \\.\\. green\\) of boolean <packed: 1-bit elements>"
+ gdb_test "print cold" " = \\(green => false, true\\)"
-gdb_test "print small" " = \\(red => false, true\\)"
+ gdb_test "print cold'first" " = green"
-gdb_test "print small'first" " = red"
+ # Note the bounds values are still not correctly displayed. So we get
+ # the enum equivalent of "1 .. 0" (empty range) as the array ranges.
+ # Accept that for now.
+ # GNAT >= 11.0 has the needed fix here.
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "ptype small" \
+ "array \\(red \\.\\. green\\) of boolean <packed: 1-bit elements>"
-gdb_test "ptype multi" \
- "array \\(red \\.\\. green, low .. medium\\) of boolean <packed: 1-bit elements>"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print small" " = \\(red => false, true\\)"
-gdb_test "print multi" \
- " = \\(red => \\(low => true, false\\), \\(low => true, false\\)\\)"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print small'first" " = red"
-gdb_test "print multi'first" " = red"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "ptype multi" \
+ "array \\(red \\.\\. green, low .. medium\\) of boolean <packed: 1-bit elements>"
-set base "\\(true, false, true, false, true, false, true, false, true, false\\)"
-set matrix "\\("
-foreach x {1 2 3 4 5 6 7} {
- if {$x > 1} {
- append matrix ", "
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
}
- append matrix $base
-}
-append matrix "\\)"
+ gdb_test "print multi" \
+ " = \\(red => \\(low => true, false\\), \\(low => true, false\\)\\)"
-gdb_test "print multi_multi" " = \\($matrix, $matrix\\)"
-gdb_test "print multi_multi(1,3)" " = $base"
-gdb_test "print multi_multi(2)" " = $matrix"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print multi'first" " = red"
+
+ set base "\\(true, false, true, false, true, false, true, false, true, false\\)"
+ set matrix "\\("
+ foreach x {1 2 3 4 5 6 7} {
+ if {$x > 1} {
+ append matrix ", "
+ }
+ append matrix $base
+ }
+ append matrix "\\)"
+
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print multi_multi" " = \\($matrix, $matrix\\)"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print multi_multi(1,3)" " = $base"
+ if {$old_compiler} {
+ setup_kfail "minimal encodings" *-*-*
+ }
+ gdb_test "print multi_multi(2)" " = $matrix"
+}