Use common_val_print in c-valprint.c
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / printcmds.c
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
38 };
39
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
57 };
58
59 /* Single and multidimensional arrays to test access and printing of array
60 members. */
61
62 typedef int ArrayInt [10];
63 ArrayInt a1 = {2,4,6,8,10,12,14,16,18,20};
64
65 typedef char ArrayChar [5];
66 ArrayChar a2 = {'a','b','c','d','\0'};
67
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}}}};
72
73 char *teststring = (char*)"teststring contents";
74
75 typedef char *charptr;
76 charptr teststring2 = "more contents";
77
78 /* Test printing of a struct containing character arrays. */
79
80 struct 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
94 struct some_arrays *parrays = &arrays;
95
96 enum some_volatile_enum { enumvolval1, enumvolval2 };
97
98 /* A volatile enum variable whose name is the same as the enumeration
99 name. See PR11827. */
100 volatile enum some_volatile_enum some_volatile_enum = enumvolval1;
101
102 /* An enum considered as a "flag enum". */
103 enum flag_enum
104 {
105 FE_NONE = 0x00,
106 FE_ONE = 0x01,
107 FE_TWO = 0x02,
108 FE_TWO_LEGACY = 0x02,
109 };
110
111 enum flag_enum three = FE_ONE | FE_TWO;
112
113 /* Another enum considered as a "flag enum", but with no enumerator with value
114 0. */
115 enum flag_enum_without_zero
116 {
117 FEWZ_ONE = 0x01,
118 FEWZ_TWO = 0x02,
119 };
120
121 enum flag_enum_without_zero flag_enum_without_zero = 0;
122
123 /* Not a flag enum, an enumerator value has multiple bits sets. */
124 enum not_flag_enum
125 {
126 NFE_ONE = 0x01,
127 NFE_TWO = 0x02,
128 NFE_F0 = 0xf0,
129 };
130
131 enum not_flag_enum three_not_flag = NFE_ONE | NFE_TWO;
132
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. */
139 struct 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
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). */
166 char invalid_ESE[] = "\240";
167 char invalid_SSE[] = "a\240";
168 char invalid_LSE[] = "abaabbaaabbb\240";
169 char invalid_RSE[] = "aaaaaaaaaaaaaaaaaaaa\240";
170 char invalid_ESS[] = "\240c";
171 char invalid_SSS[] = "a\240c";
172 char invalid_LSS[] = "abaabbaaabbb\240c";
173 char invalid_RSS[] = "aaaaaaaaaaaaaaaaaaaa\240c";
174 char invalid_ESL[] = "\240cdccddcccddd";
175 char invalid_SSL[] = "a\240cdccddcccddd";
176 char invalid_LSL[] = "abaabbaaabbb\240cdccddcccddd";
177 char invalid_RSL[] = "aaaaaaaaaaaaaaaaaaaa\240cdccddcccddd";
178 char invalid_ESR[] = "\240cccccccccccccccccccc";
179 char invalid_SSR[] = "a\240cccccccccccccccccccc";
180 char invalid_LSR[] = "abaabbaaabbb\240cccccccccccccccccccc";
181 char invalid_RSR[] = "aaaaaaaaaaaaaaaaaaaa\240cccccccccccccccccccc";
182 char invalid_ELE[] = "\240\240\240\240";
183 char invalid_SLE[] = "a\240\240\240\240";
184 char invalid_LLE[] = "abaabbaaabbb\240\240\240\240";
185 char invalid_RLE[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240";
186 char invalid_ELS[] = "\240\240\240\240c";
187 char invalid_SLS[] = "a\240\240\240\240c";
188 char invalid_LLS[] = "abaabbaaabbb\240\240\240\240c";
189 char invalid_RLS[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240c";
190 char invalid_ELL[] = "\240\240\240\240cdccddcccddd";
191 char invalid_SLL[] = "a\240\240\240\240cdccddcccddd";
192 char invalid_LLL[] = "abaabbaaabbb\240\240\240\240cdccddcccddd";
193 char invalid_RLL[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cdccddcccddd";
194 char invalid_ELR[] = "\240\240\240\240cccccccccccccccccccc";
195 char invalid_SLR[] = "a\240\240\240\240cccccccccccccccccccc";
196 char invalid_LLR[] = "abaabbaaabbb\240\240\240\240cccccccccccccccccccc";
197 char invalid_RLR[] = "aaaaaaaaaaaaaaaaaaaa\240\240\240\240cccccccccccccccccccc";
198 char invalid_ERE[] = ""
199 "\240\240\240\240\240\240\240\240\240\240"
200 "\240\240\240\240\240\240\240\240\240\240";
201 char 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";
204 char 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";
207 char invalid_ERS[] = ""
208 "\240\240\240\240\240\240\240\240\240\240"
209 "\240\240\240\240\240\240\240\240\240\240c";
210 char invalid_ERL[] = ""
211 "\240\240\240\240\240\240\240\240\240\240"
212 "\240\240\240\240\240\240\240\240\240\240cdccddcccddd";
213 char invalid_ERR[] = ""
214 "\240\240\240\240\240\240\240\240\240\240"
215 "\240\240\240\240\240\240\240\240\240\240cccccccccccccccccccc";
216 char 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";
219 char 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";
222 char 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";
225 char 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";
228 char 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";
231 char 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";
234 char 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";
237 char 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";
240 char 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";
243 char 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
247 /* -- */
248
249 int main ()
250 {
251 void *p = malloc (1);
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] +
256 *parrays -> array1 + a1[0] + a2[0];
257 free (p);
258 }
This page took 0.038289 seconds and 4 git commands to generate.