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>
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',
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
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
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
73char *teststring = (char*)"teststring contents";
74
75/* Test printing of a struct containing character arrays. */
76
77struct some_arrays {
78    unsigned char array1[4];
79    unsigned char array2[1];
80    unsigned char array3[1];
81    unsigned char array4[2];
82    unsigned char array5[4];
83} arrays = {
84  {'a', 'b', 'c', '\0'},
85  {'d'},
86  {'e'},
87  {'f', 'g' },
88  {'h', 'i', 'j', '\0'}
89};
90
91struct some_arrays *parrays = &arrays;
92
93enum some_volatile_enum { enumvolval1, enumvolval2 };
94
95/* A volatile enum variable whose name is the same as the enumeration
96   name.  See PR11827.  */
97volatile enum some_volatile_enum some_volatile_enum = enumvolval1;
98
99/* A structure with an embedded array at an offset > 0.  The array has
100   all elements with the same repeating value, which must not be the
101   same as the value of the preceding fields in the structure for the
102   test to be effective.  This tests whether GDB uses the correct
103   element content offsets (relative to the complete `some_struct'
104   value) when counting value repetitions.  */
105struct some_struct
106{
107  int a;
108  int b;
109  unsigned char array[20];
110} some_struct = {
111  0x12345678,
112  0x87654321,
113  {
114    0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
115    0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
116    0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
117    0xaa, 0xaa, 0xaa, 0xaa, 0xaa
118  }
119};
120
121/* -- */
122
123int main ()
124{
125#ifdef usestubs
126  set_debug_traps();
127  breakpoint();
128#endif
129  malloc(1);
130
131  /* Prevent AIX linker from removing variables.  */
132  return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
133    + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
134      *parrays -> array1 + a1[0] + a2[0];
135}
136