gdb_test "ptype string_access" "= access array \\(<>\\) of character"
 
-    gdb_test "print pa_ptr.all" \
-       " = \\(10, 20, 30, 40, 50, 60, 62, 63, -23, 42\\)"
+    set kfail_int128support_re \
+       "That operation is not available on integers of more than 8 bytes\\."
+    set kfail_packed_array_range_re \
+       "cannot subscript or call something of type `foo__packed_array_ptr'"
+
+    gdb_test_multiple "print pa_ptr.all" "" {
+       -re -wrap " = \\(10, 20, 30, 40, 50, 60, 62, 63, -23, 42\\)" {
+           pass $gdb_test_name
+       }
+       -re -wrap $kfail_int128support_re {
+           kfail gdb/20991 $gdb_test_name
+       }
+    }
 
-    gdb_test "print pa_ptr(3)" " = 30"
+    gdb_test_multiple "print pa_ptr(3)" "" {
+       -re -wrap " = 30" {
+           pass $gdb_test_name
+       }
+       -re -wrap $kfail_int128support_re {
+           kfail gdb/20991 $gdb_test_name
+       }
+       -re -wrap $kfail_packed_array_range_re {
+           kfail gdb/28115 $gdb_test_name
+       }
+    }
 
-    gdb_test "print pa_ptr.all(3)" " = 30"
+    gdb_test_multiple "print pa_ptr.all(3)" "" {
+       -re -wrap " = 30" {
+           pass $gdb_test_name
+       }
+       -re -wrap $kfail_int128support_re {
+           kfail gdb/20991 $gdb_test_name
+       }
+    }
 }
 
 set bp_location [gdb_get_line_number "START" ${testdir}/p.adb]
 runto "p.adb:$bp_location"
 
-gdb_test "print X ** Y = Z" \
-         "= true" \
-         "Long_Long_Integer ** Y"
+set kfail_int128support_re \
+    "That operation is not available on integers of more than 8 bytes\\."
+
+gdb_test_multiple "print X ** Y = Z" "Long_Long_Integer ** Y" {
+    -re -wrap "= true" {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
 
-gdb_test "print long_float'min (long_float (X), 8.0)" \
-         "= 7.0" \
-         "long_float'min"
+set cmd "print long_float'min (long_float (X), 8.0)"
+gdb_test_multiple $cmd "long_float'min" {
+    -re -wrap "= 7.0" {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
 
-gdb_test "print long_float'max (long_float (X), 8.0)" \
-         "= 8.0" \
-         "long_float'max"
+set cmd "print long_float'max (long_float (X), 8.0)"
+gdb_test_multiple $cmd "long_float'max" {
+    -re -wrap "= 8.0" {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
 
 
 runto "aggregates.run_test"
 
-gdb_test \
-    "print pra := ((packed_array_assign_x => 2, packed_array_assign_y => 0, packed_array_assign_w => 17), pr, (packed_array_assign_x => 7, packed_array_assign_y => 1, packed_array_assign_w => 23))" \
-    " = \\(\\(packed_array_assign_w => 17, packed_array_assign_x => 2, packed_array_assign_y => 0\\), \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\), \\(packed_array_assign_w => 23, packed_array_assign_x => 7, packed_array_assign_y => 1\\)\\)" \
-    "value of pra"
-
-gdb_test "print pra(1) := pr" \
-    " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)"
-gdb_test "print pra(1)" \
-    " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)"
+set kfail_int128support_re \
+    "That operation is not available on integers of more than 8 bytes\\."
+
+set cmd \
+    [list \
+        "print pra := " \
+        "((packed_array_assign_x => 2," \
+        "packed_array_assign_y => 0," \
+        "packed_array_assign_w => 17)," \
+        "pr," \
+        "(packed_array_assign_x => 7," \
+        "packed_array_assign_y => 1," \
+        "packed_array_assign_w => 23))"]
+set cmd [join $cmd]
+set re \
+    [list \
+        " = \\(\\(packed_array_assign_w => 17," \
+        "packed_array_assign_x => 2," \
+        "packed_array_assign_y => 0\\)," \
+        "\\(packed_array_assign_w => 104," \
+        "packed_array_assign_x => 2," \
+        "packed_array_assign_y => 3\\)," \
+        "\\(packed_array_assign_w => 23," \
+        "packed_array_assign_x => 7," \
+        "packed_array_assign_y => 1\\)\\)"]
+set re [join $re]
+gdb_test_multiple $cmd "value of pra" {
+    -re -wrap $re {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
+
+set cmd "print pra(1) := pr"
+set re \
+    [list \
+        " = \\(packed_array_assign_w => 104," \
+        "packed_array_assign_x => 2," \
+        "packed_array_assign_y => 3\\)"]
+set re [join $re]
+gdb_test_multiple $cmd "" {
+    -re -wrap $re {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
+
+set cmd "print pra(1)"
+set re \
+    [list \
+        " = \\(packed_array_assign_w => 104," \
+        "packed_array_assign_x => 2," \
+        "packed_array_assign_y => 3\\)"]
+set re [join $re]
+gdb_test_multiple $cmd "" {
+    -re -wrap $re {
+       pass $gdb_test_name
+    }
+    -re -wrap $kfail_int128support_re {
+       kfail gdb/20991 $gdb_test_name
+    }
+}
 
 gdb_test "print npr := (q000 => 3, r000 => (packed_array_assign_x => 6, packed_array_assign_y => 1, packed_array_assign_w => 117))" \
     " = \\(q000 => 3, r000 => \\(packed_array_assign_w => 117, packed_array_assign_x => 6, packed_array_assign_y => 1\\)\\)" \