# Copyright 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 . # This file tests GDB's limited length array printing. load_lib "fortran.exp" require allow_fortran_tests standard_testfile .f90 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { return -1 } if {![fortran_runto_main]} { perror "Could not run to main." continue } gdb_breakpoint [gdb_get_line_number "Break Here"] gdb_continue_to_breakpoint "stop-here" ".*Break Here.*" with_test_prefix "with standard max-value size" { gdb_test "print large_4d_array" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, 51\\) \\(52, 53, 54\\)\\)\\)\ \\(\\(\\(55, 56, 57\\) \\(58, 59, 60\\) \\(61, 62, 63\\)\\)\ \\(\\(64, 65, 66\\) \\(67, 68, 69\\) \\(70, 71, 72\\)\\)\ \\(\\(73, 74, 75\\) \\(76, 77, 78\\)\ \\(79, 80, 81\\)\\)\\)\\)" gdb_test -nonl "output large_4d_array" \ "\\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, 51\\) \\(52, 53, 54\\)\\)\\)\ \\(\\(\\(55, 56, 57\\) \\(58, 59, 60\\) \\(61, 62, 63\\)\\)\ \\(\\(64, 65, 66\\) \\(67, 68, 69\\) \\(70, 71, 72\\)\\)\ \\(\\(73, 74, 75\\) \\(76, 77, 78\\) \\(79, 80, 81\\)\\)\\)\\)" gdb_test "print large_1d_array" \ " = \\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, 51, 52, 53, 54,\ 55, 56, 57, 58, 59, 60, 61, 62, 63,\ 64, 65, 66, 67, 68, 69, 70, 71, 72,\ 73, 74, 75, 76, 77, 78, 79, 80, 81\\)" gdb_test -nonl "output large_1d_array" \ "\\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, 51, 52, 53, 54,\ 55, 56, 57, 58, 59, 60, 61, 62, 63,\ 64, 65, 66, 67, 68, 69, 70, 71, 72,\ 73, 74, 75, 76, 77, 78, 79, 80, 81\\)" } # Set the max-value-size so we can only print 50 elements. set elements 50 set elem_size [get_valueof "/d" "sizeof(large_1d_array(1))" "*unknown*"] gdb_test_no_output "set max-value-size [expr $elem_size * $elements]" with_test_prefix "with reduced max-value size" { gdb_test "print large_4d_array" \ "value requires $decimal bytes, which is more than max-value-size" gdb_test "output large_4d_array" \ "value requires $decimal bytes, which is more than max-value-size" gdb_test "print large_1d_array" \ "value requires $decimal bytes, which is more than max-value-size" gdb_test "output large_1d_array" \ "value requires $decimal bytes, which is more than max-value-size" } with_test_prefix "with reduced print -elements flag" { gdb_test "print -elements 5 -- large_4d_array" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, \\.\\.\\.\\)\ \\.\\.\\.\\) \\.\\.\\.\\) \\.\\.\\.\\)" gdb_test "print -elements 5 -- large_1d_array" \ " = \\(1, 2, 3, 4, 5, \\.\\.\\.\\)" } gdb_test_no_output "set print elements 5" with_test_prefix "with reduced print elements" { gdb_test "print large_4d_array" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, \\.\\.\\.\\)\ \\.\\.\\.\\) \\.\\.\\.\\) \\.\\.\\.\\)" gdb_test -nonl "output large_4d_array" \ "\\(\\(\\(\\(1, 2, 3\\) \\(4, 5, \\.\\.\\.\\)\ \\.\\.\\.\\) \\.\\.\\.\\) \\.\\.\\.\\)" gdb_test "print \$" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, \\.\\.\\.\\)\ \\.\\.\\.\\) \\.\\.\\.\\) \\.\\.\\.\\)" \ "print large_4d_array from history" gdb_test -nonl "output \$\$" \ "\\(\\(\\(\\(1, 2, 3\\) \\(4, 5, \\.\\.\\.\\)\ \\.\\.\\.\\) \\.\\.\\.\\) \\.\\.\\.\\)" \ "output large_4d_array from history" gdb_test "print large_1d_array" \ " = \\(1, 2, 3, 4, 5, \\.\\.\\.\\)" gdb_test -nonl "output large_1d_array" \ "\\(1, 2, 3, 4, 5, \\.\\.\\.\\)" gdb_test "print \$" \ " = \\(1, 2, 3, 4, 5, \\.\\.\\.\\)" \ "print large_1d_array from history" gdb_test -nonl "output \$\$" \ "\\(1, 2, 3, 4, 5, \\.\\.\\.\\)" \ "output large_1d_array from history" } gdb_test_no_output "set print elements $elements" with_test_prefix "with print elements matching max-value size" { gdb_test "print \$\$2" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, \\.\\.\\.\\) \\.\\.\\.\\)\\)\ \\.\\.\\.\\)" \ "print large_4d_array from history" gdb_test -nonl "output \$\$3" \ "\\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, \\.\\.\\.\\) \\.\\.\\.\\)\\)\ \\.\\.\\.\\)" \ "output large_4d_array from history" gdb_test "print \$\$2" \ " = \\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, \\.\\.\\.\\)" \ "print large_1d_array from history" gdb_test -nonl "output \$\$2" \ "\\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, \\.\\.\\.\\)" \ "output large_1d_array from history" } gdb_test_no_output "set max-value-size unlimited" gdb_test_no_output "set print elements unlimited" gdb_test_no_output "set print repeats 2" with_test_prefix "with unlimited print elements" { gdb_test "print \$\$" \ " = \\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, \\)\ \\(, \\)\\)\\)\ \\(\\(\\(, \\)\ \\) \\)\\)" \ "print large_4d_array from history" gdb_test -nonl "output \$\$2" \ "\\(\\(\\(\\(1, 2, 3\\) \\(4, 5, 6\\) \\(7, 8, 9\\)\\)\ \\(\\(10, 11, 12\\) \\(13, 14, 15\\) \\(16, 17, 18\\)\\)\ \\(\\(19, 20, 21\\) \\(22, 23, 24\\) \\(25, 26, 27\\)\\)\\)\ \\(\\(\\(28, 29, 30\\) \\(31, 32, 33\\) \\(34, 35, 36\\)\\)\ \\(\\(37, 38, 39\\) \\(40, 41, 42\\) \\(43, 44, 45\\)\\)\ \\(\\(46, 47, 48\\) \\(49, 50, \\)\ \\(, \\)\\)\\)\ \\(\\(\\(, \\)\ \\) \\)\\)" \ "output large_4d_array from history" gdb_test "print \$\$" \ " = \\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, , \\)" \ "print large_1d_array from history" gdb_test -nonl "output \$\$2" \ "\\(1, 2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13, 14, 15, 16, 17, 18,\ 19, 20, 21, 22, 23, 24, 25, 26, 27,\ 28, 29, 30, 31, 32, 33, 34, 35, 36,\ 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, , \\)" \ "output large_1d_array from history" }