[gdb/syscalls] Sync with strace v6.13
[binutils-gdb.git] / gdb / testsuite / gdb.base / limited-length.exp
blob2d160e128ae1e1ccf6d0582fcbf849e66b8705cc
1 # Copyright 2023-2024 Free Software Foundation, Inc.
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.
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.
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/>.
16 # Test GDB's limited array printing.
18 standard_testfile
20 if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
21     return -1
24 if {![runto_main]} {
25     perror "couldn't run to breakpoint"
26     continue
29 with_test_prefix "with standard max-value size" {
30     gdb_test "print large_1d_array" \
31         " = \\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
32                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
33                 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
34                 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
35                 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\
36                 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,\
37                 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,\
38                 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,\
39                 96, 97, 98, 99\\\}"
40     gdb_test -nonl "output large_1d_array" \
41         "\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
42              12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
43              24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
44              36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
45              48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\
46              60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,\
47              72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,\
48              84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,\
49              96, 97, 98, 99\\\}"
50     gdb_test "print large_2d_array" \
51         " = \\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
52                 \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
53                 \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
54                 \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
55                 \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
56                 \\\{50, 51, 52, 53, 54, 55, 56, 57, 58, 59\\\},\
57                 \\\{60, 61, 62, 63, 64, 65, 66, 67, 68, 69\\\},\
58                 \\\{70, 71, 72, 73, 74, 75, 76, 77, 78, 79\\\},\
59                 \\\{80, 81, 82, 83, 84, 85, 86, 87, 88, 89\\\},\
60                 \\\{90, 91, 92, 93, 94, 95, 96, 97, 98, 99\\\}\\\}"
61     gdb_test -nonl "output large_2d_array" \
62         "\\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
63              \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
64              \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
65              \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
66              \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
67              \\\{50, 51, 52, 53, 54, 55, 56, 57, 58, 59\\\},\
68              \\\{60, 61, 62, 63, 64, 65, 66, 67, 68, 69\\\},\
69              \\\{70, 71, 72, 73, 74, 75, 76, 77, 78, 79\\\},\
70              \\\{80, 81, 82, 83, 84, 85, 86, 87, 88, 89\\\},\
71              \\\{90, 91, 92, 93, 94, 95, 96, 97, 98, 99\\\}\\\}"
74 # Set the max-value-size so we can only print 51 elements.
75 set elements 51
76 set int_size [get_valueof "/d" "sizeof(large_1d_array\[0\])" "*unknown*"]
77 gdb_test_no_output "set max-value-size [expr $int_size * $elements]"
79 with_test_prefix "with reduced max-value size" {
80     gdb_test "print large_1d_array" \
81         "\r\nvalue requires $decimal bytes, which is more than max-value-size"
82     gdb_test "output large_1d_array" \
83         "\r\nvalue requires $decimal bytes, which is more than max-value-size"
84     gdb_test "print large_2d_array" \
85         "\r\nvalue requires $decimal bytes, which is more than max-value-size"
86     gdb_test "output large_2d_array" \
87         "\r\nvalue requires $decimal bytes, which is more than max-value-size"
90 gdb_test_no_output "set print elements 3"
92 with_test_prefix "with reduced print elements" {
93     gdb_test "print large_1d_array" \
94         " = \\\{0, 1, 2\\.\\.\\.\\\}"
95     gdb_test -nonl "output large_1d_array" \
96         "\\\{0, 1, 2\\.\\.\\.\\\}"
98     gdb_test "print \$" \
99         " = \\\{0, 1, 2\\.\\.\\.\\\}" \
100         "print large_1d_array from history"
101     gdb_test -nonl "output \$\$" \
102         "\\\{0, 1, 2\\.\\.\\.\\\}" \
103         "output large_1d_array from history"
105     gdb_test "print large_2d_array" \
106         " = \\\{\\\{0, 1, 2\\.\\.\\.\\\}, \\\{10, 11, 12\\.\\.\\.\\\},\
107             \\\{20, 21, 22\\.\\.\\.\\\}\\.\\.\\.\\\}"
108     gdb_test -nonl "output large_2d_array" \
109         "\\\{\\\{0, 1, 2\\.\\.\\.\\\}, \\\{10, 11, 12\\.\\.\\.\\\},\
110          \\\{20, 21, 22\\.\\.\\.\\\}\\.\\.\\.\\\}"
112     gdb_test "print \$" \
113         " = \\\{\\\{0, 1, 2\\.\\.\\.\\\}, \\\{10, 11, 12\\.\\.\\.\\\},\
114             \\\{20, 21, 22\\.\\.\\.\\\}\\.\\.\\.\\\}" \
115         "print large_2d_array from history"
116     gdb_test -nonl "output \$\$" \
117         "\\\{\\\{0, 1, 2\\.\\.\\.\\\}, \\\{10, 11, 12\\.\\.\\.\\\},\
118          \\\{20, 21, 22\\.\\.\\.\\\}\\.\\.\\.\\\}" \
119         "output large_2d_array from history"
122 gdb_test_no_output "set print elements $elements"
124 with_test_prefix "with print elements matching max-value size" {
125     gdb_test "print \$\$2" \
126         " = \\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
127                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
128                 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
129                 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
130                 48, 49, 50\\.\\.\\.\\\}" \
131         "print large_1d_array from history"
132     gdb_test -nonl "output \$\$3" \
133         "\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
134              12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
135              24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
136              36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
137              48, 49, 50\\.\\.\\.\\\}" \
138         "output large_1d_array from history"
140     gdb_test "print \$\$2" \
141         " = \\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
142                 \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
143                 \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
144                 \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
145                 \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
146                 \\\{50(?:, <unavailable>)\{9\}\\\}(?:,\
147                 \\\{<unavailable>(?:, <unavailable>)\{9\}\\\})\{4\}\\\}" \
148         "print large_2d_array from history"
149     gdb_test -nonl "output \$\$3" \
150         "\\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
151              \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
152              \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
153              \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
154              \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
155              \\\{50(?:, <unavailable>)\{9\}\\\}(?:,\
156              \\\{<unavailable>(?:, <unavailable>)\{9\}\\\})\{4\}\\\}" \
157         "output large_2d_array from history"
160 gdb_test_no_output "set max-value-size unlimited"
161 gdb_test_no_output "set print elements unlimited"
162 gdb_test_no_output "set print repeats 3"
164 with_test_prefix "with unlimited print elements" {
165     gdb_test "print \$\$" \
166         " = \\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
167                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
168                 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
169                 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
170                 48, 49, 50, <unavailable> <repeats 49 times>\\\}" \
171         "print large_1d_array from history"
172     gdb_test -nonl "output \$\$2" \
173         "\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\
174              12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\
175              24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\
176              36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\
177              48, 49, 50, <unavailable> <repeats 49 times>\\\}" \
178         "output large_1d_array from history"
180     gdb_test "print \$\$" \
181         " = \\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
182                 \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
183                 \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
184                 \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
185                 \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
186                 \\\{50, <unavailable> <repeats 9 times>\\\},\
187                 \\\{<unavailable> <repeats 10 times>\\\}\
188                 <repeats 4 times>\\\}" \
189         "print large_2d_array from history"
190     gdb_test -nonl "output \$\$2" \
191         "\\\{\\\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\\\},\
192              \\\{10, 11, 12, 13, 14, 15, 16, 17, 18, 19\\\},\
193              \\\{20, 21, 22, 23, 24, 25, 26, 27, 28, 29\\\},\
194              \\\{30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\\},\
195              \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\},\
196              \\\{50, <unavailable> <repeats 9 times>\\\},\
197              \\\{<unavailable> <repeats 10 times>\\\}\
198              <repeats 4 times>\\\}" \
199         "output large_2d_array from history"
201     gdb_test "print \$\[4\]" \
202         " = \\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\}" \
203         "print available large_2d_array row from history"
204     gdb_test -nonl "output \$\$\[4\]" \
205         "\\\{40, 41, 42, 43, 44, 45, 46, 47, 48, 49\\\}" \
206         "output available large_2d_array row from history"
208     gdb_test "print \$\$\[5\]" \
209         " = \\\{50, <unavailable> <repeats 9 times>\\\}" \
210         "print partially available large_2d_array row from history"
211     gdb_test -nonl "output \$\$2\[5\]" \
212         "\\\{50, <unavailable> <repeats 9 times>\\\}" \
213         "output partially available large_2d_array row from history"
215     gdb_test "print \$\$2\[6\]" \
216         " = <unavailable>" \
217         "print unavailable large_2d_array row from history"
218     gdb_test -nonl "output \$\$3\[6\]" \
219         "<unavailable>" \
220         "output unavailable large_2d_array row from history"
222     gdb_test "print \$\$3\[5\]\[0\]" \
223         " = 50" \
224         "print available large_2d_array element from history"
225     gdb_test -nonl "output \$\$4\[5\]\[0\]" \
226         "50" \
227         "output available large_2d_array element from history"
229     gdb_test "print \$\$4\[5\]\[1\]" \
230         " = <unavailable>" \
231         "print unavailable large_2d_array element from history"
232     gdb_test -nonl "output \$\$5\[5\]\[1\]" \
233         "<unavailable>" \
234         "output unavailable large_2d_array element from history"
236     gdb_test "print \$\$5\[5\]\[0\] + \$\$5\[5\]\[1\]" \
237         "value is not available" \
238         "print expression referring unavailable element from history"
239     gdb_test "output \$\$5\[5\]\[0\] + \$\$5\[5\]\[1\]" \
240         "value is not available" \
241         "output expression referring unavailable element from history"
244 gdb_test_no_output "set max-value-size 10000"
245 gdb_test_no_output "set print elements 200"
247 gdb_test "print large_empty_string" \
248     " = \\\{0 '\\\\000' <repeats 10000 times>, <unavailable> <repeats 90000 times>\\\}" \
249     "print large empty string which is not fully available"
250 gdb_test -nonl "output large_empty_string" \
251     "\\\{0 '\\\\000' <repeats 10000 times>, <unavailable> <repeats 90000 times>\\\}" \
252     "output large empty string which is not fully available"