Fix C++ template function matching in cooked index
[binutils-gdb.git] / gdb / testsuite / gdb.base / printcmds.c
blob8445fcc1aa2a67768c9e022a12e219b787bdc5d0
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. */
4 #include <stdlib.h>
5 unsigned 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
40 unsigned 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',
56 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a', 0
59 /* Single and multidimensional arrays to test access and printing of array
60 members. */
62 typedef int ArrayInt [10];
63 ArrayInt a1 = {2,4,6,8,10,12,14,16,18,20};
65 typedef char ArrayChar [5];
66 ArrayChar a2 = {'a','b','c','d','\0'};
68 int int1dim[12] = {0,1,2,3,4,5,6,7,8,9,10,11};
69 int int2dim[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
70 int int3dim[2][3][2] = {{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
71 int int4dim[1][2][3][2] = {{{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}}};
73 char *teststring = (char*)"teststring contents";
75 typedef char *charptr;
76 charptr teststring2 = "more contents";
78 const char *teststring3 = "this is a longer test string that we can use";
80 /* Test printing of a struct containing character arrays. */
82 struct some_arrays {
83 unsigned char array1[4];
84 unsigned char array2[1];
85 unsigned char array3[1];
86 unsigned char array4[2];
87 unsigned char array5[4];
88 } arrays = {
89 {'a', 'b', 'c', '\0'},
90 {'d'},
91 {'e'},
92 {'f', 'g' },
93 {'h', 'i', 'j', '\0'}
96 struct some_arrays *parrays = &arrays;
98 enum some_volatile_enum { enumvolval1, enumvolval2 };
100 /* A volatile enum variable whose name is the same as the enumeration
101 name. See PR11827. */
102 volatile enum some_volatile_enum some_volatile_enum = enumvolval1;
104 /* An enum considered as a "flag enum". */
105 enum flag_enum
107 FE_NONE = 0x00,
108 FE_ONE = 0x01,
109 FE_TWO = 0x02,
110 FE_TWO_LEGACY = 0x02,
113 enum flag_enum one = FE_ONE;
114 enum flag_enum three = (enum flag_enum) (FE_ONE | FE_TWO);
116 /* Another enum considered as a "flag enum", but with no enumerator with value
117 0. */
118 enum flag_enum_without_zero
120 FEWZ_ONE = 0x01,
121 FEWZ_TWO = 0x02,
124 enum flag_enum_without_zero flag_enum_without_zero = (enum flag_enum_without_zero) 0;
126 /* Not a flag enum, an enumerator value has multiple bits sets. */
127 enum not_flag_enum
129 NFE_ONE = 0x01,
130 NFE_TWO = 0x02,
131 NFE_F0 = 0xf0,
134 enum not_flag_enum three_not_flag = (enum not_flag_enum) (NFE_ONE | NFE_TWO);
136 /* A structure with an embedded array at an offset > 0. The array has
137 all elements with the same repeating value, which must not be the
138 same as the value of the preceding fields in the structure for the
139 test to be effective. This tests whether GDB uses the correct
140 element content offsets (relative to the complete `some_struct'
141 value) when counting value repetitions. */
142 struct some_struct
144 int a;
145 int b;
146 unsigned char array[20];
147 } some_struct = {
148 0x12345678,
149 0x87654321,
151 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
152 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
153 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
154 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
158 /* This is used in the printf test. */
159 struct small_struct
161 int a;
162 int b;
163 int c;
164 } a_small_struct = {
170 /* The following variables are used for testing byte repeat sequences.
171 The variable names are encoded: invalid_XYZ where:
172 X = start
173 Y = invalid
174 Z = end
176 Each of X and Z can be "E" (empty), "S" (single), "L" (long single),
177 or "R" (repeat).
179 Y can be either any of the above except "E" (otherwise there is nothing
180 to test). */
181 char invalid_ESE[] = "\240";
182 char invalid_SSE[] = "a\240";
183 char invalid_LSE[] = "abaabbaaabbb\240";
184 char invalid_RSE[] = "aaaaaaaaaaaaaaaaaaaa\240";
185 char invalid_ESS[] = "\240c";
186 char invalid_SSS[] = "a\240c";
187 char invalid_LSS[] = "abaabbaaabbb\240c";
188 char invalid_RSS[] = "aaaaaaaaaaaaaaaaaaaa\240c";
189 char invalid_ESL[] = "\240cdccddcccddd";
190 char invalid_SSL[] = "a\240cdccddcccddd";
191 char invalid_LSL[] = "abaabbaaabbb\240cdccddcccddd";
192 char invalid_RSL[] = "aaaaaaaaaaaaaaaaaaaa\240cdccddcccddd";
193 char invalid_ESR[] = "\240cccccccccccccccccccc";
194 char invalid_SSR[] = "a\240cccccccccccccccccccc";
195 char invalid_LSR[] = "abaabbaaabbb\240cccccccccccccccccccc";
196 char invalid_RSR[] = "aaaaaaaaaaaaaaaaaaaa\240cccccccccccccccccccc";
197 char invalid_ELE[] = "\240\240\240\240";
198 char invalid_SLE[] = "a\240\240\240\240";
199 char invalid_LLE[] = "abaabbaaabbb\240\240\240\240";
200 char invalid_RLE[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240";
201 char invalid_ELS[] = "\240\240\240\240c";
202 char invalid_SLS[] = "a\240\240\240\240c";
203 char invalid_LLS[] = "abaabbaaabbb\240\240\240\240c";
204 char invalid_RLS[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240c";
205 char invalid_ELL[] = "\240\240\240\240cdccddcccddd";
206 char invalid_SLL[] = "a\240\240\240\240cdccddcccddd";
207 char invalid_LLL[] = "abaabbaaabbb\240\240\240\240cdccddcccddd";
208 char invalid_RLL[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cdccddcccddd";
209 char invalid_ELR[] = "\240\240\240\240cccccccccccccccccccc";
210 char invalid_SLR[] = "a\240\240\240\240cccccccccccccccccccc";
211 char invalid_LLR[] = "abaabbaaabbb\240\240\240\240cccccccccccccccccccc";
212 char invalid_RLR[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cccccccccccccccccccc";
213 char invalid_ERE[] = ""
214 "\240\240\240\240\240\240\240\240\240\240"
215 "\240\240\240\240\240\240\240\240\240\240";
216 char invalid_LRE[] = "abaabbaaabbb"
217 "\240\240\240\240\240\240\240\240\240\240"
218 "\240\240\240\240\240\240\240\240\240\240";
219 char invalid_RRE[] = "aaaaaaaaaaaaaaaaaaaa"
220 "\240\240\240\240\240\240\240\240\240\240"
221 "\240\240\240\240\240\240\240\240\240\240";
222 char invalid_ERS[] = ""
223 "\240\240\240\240\240\240\240\240\240\240"
224 "\240\240\240\240\240\240\240\240\240\240c";
225 char invalid_ERL[] = ""
226 "\240\240\240\240\240\240\240\240\240\240"
227 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
228 char invalid_ERR[] = ""
229 "\240\240\240\240\240\240\240\240\240\240"
230 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
231 char invalid_SRE[] = "a"
232 "\240\240\240\240\240\240\240\240\240\240"
233 "\240\240\240\240\240\240\240\240\240\240";
234 char invalid_SRS[] = "a"
235 "\240\240\240\240\240\240\240\240\240\240"
236 "\240\240\240\240\240\240\240\240\240\240c";
237 char invalid_SRL[] = "a"
238 "\240\240\240\240\240\240\240\240\240\240"
239 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
240 char invalid_SRR[] = "a"
241 "\240\240\240\240\240\240\240\240\240\240"
242 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
243 char invalid_LRS[] = "abaabbaaabbb"
244 "\240\240\240\240\240\240\240\240\240\240"
245 "\240\240\240\240\240\240\240\240\240\240c";
246 char invalid_LRL[] = "abaabbaaabbb"
247 "\240\240\240\240\240\240\240\240\240\240"
248 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
249 char invalid_LRR[] = "abaabbaaabbb"
250 "\240\240\240\240\240\240\240\240\240\240"
251 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
252 char invalid_RRS[] = "aaaaaaaaaaaaaaaaaaaa"
253 "\240\240\240\240\240\240\240\240\240\240"
254 "\240\240\240\240\240\240\240\240\240\240c";
255 char invalid_RRL[] = "aaaaaaaaaaaaaaaaaaaa"
256 "\240\240\240\240\240\240\240\240\240\240"
257 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
258 char invalid_RRR[] = "aaaaaaaaaaaaaaaaaaaa"
259 "\240\240\240\240\240\240\240\240\240\240"
260 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
262 /* -- */
264 float f_var = 65.0f;
266 int main ()
268 void *p = malloc (1);
270 /* Prevent AIX linker from removing variables. */
271 return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
272 + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
273 *parrays -> array1 + a1[0] + a2[0];
274 free (p);