Fix crash when exiting TUI with gdb -tui
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / printcmds.c
CommitLineData
c906108c
SS
1/* This table is used as a source for every ascii character.
2 It is explicitly unsigned to avoid differences due to native characters
3 being either signed or unsigned. */
085dd6e6 4#include <stdlib.h>
c906108c
SS
5unsigned char ctable1[256] = {
6 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,
7 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,
8 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,
9 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,
10 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,
11 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,
12 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,
13 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,
14 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,
15 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,
16 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,
17 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,
18 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147,
19 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,
20 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,
21 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177,
22 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,
23 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,
24 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,
25 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,
26 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,
27 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,
28 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,
29 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,
30 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,
31 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,
32 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,
33 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,
34 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,
35 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,
36 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,
37 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377
38};
39
40unsigned char ctable2[] = {
41 'a','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
42 'a','a','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
43 'a','a','a','X','X','X','X','X','X','X','X','X','X','X','X','X',
44 'a','a','a','a','X','X','X','X','X','X','X','X','X','X','X','X',
45 'a','a','a','a','a','X','X','X','X','X','X','X','X','X','X','X',
46 'a','a','a','a','a','a','X','X','X','X','X','X','X','X','X','X',
47 'a','a','a','a','a','a','a','X','X','X','X','X','X','X','X','X',
48 'a','a','a','a','a','a','a','a','X','X','X','X','X','X','X','X',
49 'a','a','a','a','a','a','a','a','a','X','X','X','X','X','X','X',
50 'a','a','a','a','a','a','a','a','a','a','X','X','X','X','X','X',
51 'a','a','a','a','a','a','a','a','a','a','a','X','X','X','X','X',
52 'a','a','a','a','a','a','a','a','a','a','a','a','X','X','X','X',
53 'a','a','a','a','a','a','a','a','a','a','a','a','a','X','X','X',
54 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','X','X',
55 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','X',
7a495180 56 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a', 0
c906108c
SS
57};
58
59/* Single and multidimensional arrays to test access and printing of array
60 members. */
61
751a959b
EZ
62typedef int ArrayInt [10];
63ArrayInt a1 = {2,4,6,8,10,12,14,16,18,20};
64
65typedef char ArrayChar [5];
66ArrayChar a2 = {'a','b','c','d','\0'};
67
c906108c
SS
68int int1dim[12] = {0,1,2,3,4,5,6,7,8,9,10,11};
69int int2dim[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
70int int3dim[2][3][2] = {{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
71int int4dim[1][2][3][2] = {{{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}}};
72
085dd6e6 73char *teststring = (char*)"teststring contents";
c906108c 74
a1f6a07c
TT
75typedef char *charptr;
76charptr teststring2 = "more contents";
77
c906108c
SS
78/* Test printing of a struct containing character arrays. */
79
80struct some_arrays {
81 unsigned char array1[4];
82 unsigned char array2[1];
83 unsigned char array3[1];
84 unsigned char array4[2];
85 unsigned char array5[4];
86} arrays = {
87 {'a', 'b', 'c', '\0'},
88 {'d'},
89 {'e'},
90 {'f', 'g' },
91 {'h', 'i', 'j', '\0'}
92};
93
94struct some_arrays *parrays = &arrays;
95
23bd0f7c
PA
96enum some_volatile_enum { enumvolval1, enumvolval2 };
97
98/* A volatile enum variable whose name is the same as the enumeration
99 name. See PR11827. */
100volatile enum some_volatile_enum some_volatile_enum = enumvolval1;
101
edd45eb0
SM
102/* An enum considered as a "flag enum". */
103enum flag_enum
104{
6740f0cc
SM
105 FE_NONE = 0x00,
106 FE_ONE = 0x01,
107 FE_TWO = 0x02,
108 FE_TWO_LEGACY = 0x02,
edd45eb0
SM
109};
110
111enum flag_enum three = FE_ONE | FE_TWO;
112
113/* Another enum considered as a "flag enum", but with no enumerator with value
114 0. */
115enum flag_enum_without_zero
116{
117 FEWZ_ONE = 0x01,
118 FEWZ_TWO = 0x02,
119};
120
121enum flag_enum_without_zero flag_enum_without_zero = 0;
122
123/* Not a flag enum, an enumerator value has multiple bits sets. */
124enum not_flag_enum
125{
126 NFE_ONE = 0x01,
127 NFE_TWO = 0x02,
128 NFE_F0 = 0xf0,
129};
cafec441 130
edd45eb0 131enum not_flag_enum three_not_flag = NFE_ONE | NFE_TWO;
cafec441 132
490f124f
PA
133/* A structure with an embedded array at an offset > 0. The array has
134 all elements with the same repeating value, which must not be the
135 same as the value of the preceding fields in the structure for the
136 test to be effective. This tests whether GDB uses the correct
137 element content offsets (relative to the complete `some_struct'
138 value) when counting value repetitions. */
139struct some_struct
140{
141 int a;
142 int b;
143 unsigned char array[20];
144} some_struct = {
145 0x12345678,
146 0x87654321,
147 {
148 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
149 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
150 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
151 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
152 }
153};
154
0d63ecda
KS
155/* The following variables are used for testing byte repeat sequences.
156 The variable names are encoded: invalid_XYZ where:
157 X = start
158 Y = invalid
159 Z = end
160
161 Each of X and Z can be "E" (empty), "S" (single), "L" (long single),
162 or "R" (repeat).
163
164 Y can be either any of the above except "E" (otherwise there is nothing
165 to test). */
166char invalid_ESE[] = "\240";
167char invalid_SSE[] = "a\240";
168char invalid_LSE[] = "abaabbaaabbb\240";
169char invalid_RSE[] = "aaaaaaaaaaaaaaaaaaaa\240";
170char invalid_ESS[] = "\240c";
171char invalid_SSS[] = "a\240c";
172char invalid_LSS[] = "abaabbaaabbb\240c";
173char invalid_RSS[] = "aaaaaaaaaaaaaaaaaaaa\240c";
174char invalid_ESL[] = "\240cdccddcccddd";
175char invalid_SSL[] = "a\240cdccddcccddd";
176char invalid_LSL[] = "abaabbaaabbb\240cdccddcccddd";
177char invalid_RSL[] = "aaaaaaaaaaaaaaaaaaaa\240cdccddcccddd";
178char invalid_ESR[] = "\240cccccccccccccccccccc";
179char invalid_SSR[] = "a\240cccccccccccccccccccc";
180char invalid_LSR[] = "abaabbaaabbb\240cccccccccccccccccccc";
181char invalid_RSR[] = "aaaaaaaaaaaaaaaaaaaa\240cccccccccccccccccccc";
182char invalid_ELE[] = "\240\240\240\240";
183char invalid_SLE[] = "a\240\240\240\240";
184char invalid_LLE[] = "abaabbaaabbb\240\240\240\240";
185char invalid_RLE[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240";
186char invalid_ELS[] = "\240\240\240\240c";
187char invalid_SLS[] = "a\240\240\240\240c";
188char invalid_LLS[] = "abaabbaaabbb\240\240\240\240c";
189char invalid_RLS[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240c";
190char invalid_ELL[] = "\240\240\240\240cdccddcccddd";
191char invalid_SLL[] = "a\240\240\240\240cdccddcccddd";
192char invalid_LLL[] = "abaabbaaabbb\240\240\240\240cdccddcccddd";
193char invalid_RLL[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cdccddcccddd";
194char invalid_ELR[] = "\240\240\240\240cccccccccccccccccccc";
195char invalid_SLR[] = "a\240\240\240\240cccccccccccccccccccc";
196char invalid_LLR[] = "abaabbaaabbb\240\240\240\240cccccccccccccccccccc";
197char invalid_RLR[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cccccccccccccccccccc";
198char invalid_ERE[] = ""
199 "\240\240\240\240\240\240\240\240\240\240"
200 "\240\240\240\240\240\240\240\240\240\240";
201char invalid_LRE[] = "abaabbaaabbb"
202 "\240\240\240\240\240\240\240\240\240\240"
203 "\240\240\240\240\240\240\240\240\240\240";
204char invalid_RRE[] = "aaaaaaaaaaaaaaaaaaaa"
205 "\240\240\240\240\240\240\240\240\240\240"
206 "\240\240\240\240\240\240\240\240\240\240";
207char invalid_ERS[] = ""
208 "\240\240\240\240\240\240\240\240\240\240"
209 "\240\240\240\240\240\240\240\240\240\240c";
210char invalid_ERL[] = ""
211 "\240\240\240\240\240\240\240\240\240\240"
212 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
213char invalid_ERR[] = ""
214 "\240\240\240\240\240\240\240\240\240\240"
215 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
216char invalid_SRE[] = "a"
217 "\240\240\240\240\240\240\240\240\240\240"
218 "\240\240\240\240\240\240\240\240\240\240";
219char invalid_SRS[] = "a"
220 "\240\240\240\240\240\240\240\240\240\240"
221 "\240\240\240\240\240\240\240\240\240\240c";
222char invalid_SRL[] = "a"
223 "\240\240\240\240\240\240\240\240\240\240"
224 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
225char invalid_SRR[] = "a"
226 "\240\240\240\240\240\240\240\240\240\240"
227 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
228char invalid_LRS[] = "abaabbaaabbb"
229 "\240\240\240\240\240\240\240\240\240\240"
230 "\240\240\240\240\240\240\240\240\240\240c";
231char invalid_LRL[] = "abaabbaaabbb"
232 "\240\240\240\240\240\240\240\240\240\240"
233 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
234char invalid_LRR[] = "abaabbaaabbb"
235 "\240\240\240\240\240\240\240\240\240\240"
236 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
237char invalid_RRS[] = "aaaaaaaaaaaaaaaaaaaa"
238 "\240\240\240\240\240\240\240\240\240\240"
239 "\240\240\240\240\240\240\240\240\240\240c";
240char invalid_RRL[] = "aaaaaaaaaaaaaaaaaaaa"
241 "\240\240\240\240\240\240\240\240\240\240"
242 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
243char invalid_RRR[] = "aaaaaaaaaaaaaaaaaaaa"
244 "\240\240\240\240\240\240\240\240\240\240"
245 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
246
c906108c
SS
247/* -- */
248
085dd6e6 249int main ()
c906108c 250{
0db4ca18 251 void *p = malloc (1);
c906108c
SS
252
253 /* Prevent AIX linker from removing variables. */
254 return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
255 + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
751a959b 256 *parrays -> array1 + a1[0] + a2[0];
0db4ca18 257 free (p);
c906108c 258}
This page took 2.219807 seconds and 4 git commands to generate.