1*b725ae77Skettenis #include <stdlib.h>
2*b725ae77Skettenis
3*b725ae77Skettenis #ifdef PROTOTYPES
main(int argc,char ** argv,char ** envp)4*b725ae77Skettenis int main (int argc, char **argv, char **envp)
5*b725ae77Skettenis #else
6e93f7393Sniklas main (argc, argv, envp)
7e93f7393Sniklas int argc;
8e93f7393Sniklas char **argv;
9e93f7393Sniklas char **envp;
10*b725ae77Skettenis #endif
11e93f7393Sniklas {
12e93f7393Sniklas extern void dummy();
13e93f7393Sniklas #ifdef usestubs
14e93f7393Sniklas set_debug_traps();
15e93f7393Sniklas breakpoint();
16e93f7393Sniklas #endif
17e93f7393Sniklas dummy();
18*b725ae77Skettenis return 0;
19e93f7393Sniklas }
20e93f7393Sniklas
21e93f7393Sniklas /* We put main() right up front so its line number doesn't keep changing. */
22e93f7393Sniklas
23e93f7393Sniklas /*
24e93f7393Sniklas * Test file with lots of different types, for testing the
25e93f7393Sniklas * "whatis" command.
26e93f7393Sniklas */
27e93f7393Sniklas
28e93f7393Sniklas /*
29e93f7393Sniklas * First the basic C types.
30e93f7393Sniklas */
31e93f7393Sniklas
32e93f7393Sniklas #if !defined (__STDC__) && !defined (_AIX)
33e93f7393Sniklas #define signed /**/
34e93f7393Sniklas #endif
35e93f7393Sniklas
36e93f7393Sniklas char v_char;
37e93f7393Sniklas signed char v_signed_char;
38e93f7393Sniklas unsigned char v_unsigned_char;
39e93f7393Sniklas
40e93f7393Sniklas short v_short;
41e93f7393Sniklas signed short v_signed_short;
42e93f7393Sniklas unsigned short v_unsigned_short;
43e93f7393Sniklas
44e93f7393Sniklas int v_int;
45e93f7393Sniklas signed int v_signed_int;
46e93f7393Sniklas unsigned int v_unsigned_int;
47e93f7393Sniklas
48e93f7393Sniklas long v_long;
49e93f7393Sniklas signed long v_signed_long;
50e93f7393Sniklas unsigned long v_unsigned_long;
51e93f7393Sniklas
52e93f7393Sniklas float v_float;
53e93f7393Sniklas double v_double;
54e93f7393Sniklas
55e93f7393Sniklas /*
56e93f7393Sniklas * Now some derived types, which are arrays, functions-returning,
57e93f7393Sniklas * pointers, structures, unions, and enumerations.
58e93f7393Sniklas */
59e93f7393Sniklas
60e93f7393Sniklas /**** arrays *******/
61e93f7393Sniklas
62e93f7393Sniklas char v_char_array[2];
63e93f7393Sniklas signed char v_signed_char_array[2];
64e93f7393Sniklas unsigned char v_unsigned_char_array[2];
65e93f7393Sniklas
66e93f7393Sniklas short v_short_array[2];
67e93f7393Sniklas signed short v_signed_short_array[2];
68e93f7393Sniklas unsigned short v_unsigned_short_array[2];
69e93f7393Sniklas
70e93f7393Sniklas int v_int_array[2];
71e93f7393Sniklas signed int v_signed_int_array[2];
72e93f7393Sniklas unsigned int v_unsigned_int_array[2];
73e93f7393Sniklas
74e93f7393Sniklas long v_long_array[2];
75e93f7393Sniklas signed long v_signed_long_array[2];
76e93f7393Sniklas unsigned long v_unsigned_long_array[2];
77e93f7393Sniklas
78e93f7393Sniklas float v_float_array[2];
79e93f7393Sniklas double v_double_array[2];
80e93f7393Sniklas
81e93f7393Sniklas /**** pointers *******/
82e93f7393Sniklas
83e93f7393Sniklas char *v_char_pointer;
84e93f7393Sniklas signed char *v_signed_char_pointer;
85e93f7393Sniklas unsigned char *v_unsigned_char_pointer;
86e93f7393Sniklas
87e93f7393Sniklas short *v_short_pointer;
88e93f7393Sniklas signed short *v_signed_short_pointer;
89e93f7393Sniklas unsigned short *v_unsigned_short_pointer;
90e93f7393Sniklas
91e93f7393Sniklas int *v_int_pointer;
92e93f7393Sniklas signed int *v_signed_int_pointer;
93e93f7393Sniklas unsigned int *v_unsigned_int_pointer;
94e93f7393Sniklas
95e93f7393Sniklas long *v_long_pointer;
96e93f7393Sniklas signed long *v_signed_long_pointer;
97e93f7393Sniklas unsigned long *v_unsigned_long_pointer;
98e93f7393Sniklas
99e93f7393Sniklas float *v_float_pointer;
100e93f7393Sniklas double *v_double_pointer;
101e93f7393Sniklas
102e93f7393Sniklas /**** structs *******/
103e93f7393Sniklas
104e93f7393Sniklas struct t_struct {
105e93f7393Sniklas char v_char_member;
106e93f7393Sniklas short v_short_member;
107e93f7393Sniklas int v_int_member;
108e93f7393Sniklas long v_long_member;
109e93f7393Sniklas float v_float_member;
110e93f7393Sniklas double v_double_member;
111e93f7393Sniklas } v_struct1;
112e93f7393Sniklas
113e93f7393Sniklas struct {
114e93f7393Sniklas char v_char_member;
115e93f7393Sniklas short v_short_member;
116e93f7393Sniklas int v_int_member;
117e93f7393Sniklas long v_long_member;
118e93f7393Sniklas float v_float_member;
119e93f7393Sniklas double v_double_member;
120e93f7393Sniklas } v_struct2;
121e93f7393Sniklas
122e93f7393Sniklas /**** unions *******/
123e93f7393Sniklas
124e93f7393Sniklas union t_union {
125e93f7393Sniklas char v_char_member;
126e93f7393Sniklas short v_short_member;
127e93f7393Sniklas int v_int_member;
128e93f7393Sniklas long v_long_member;
129e93f7393Sniklas float v_float_member;
130e93f7393Sniklas double v_double_member;
131e93f7393Sniklas } v_union;
132e93f7393Sniklas
133e93f7393Sniklas union {
134e93f7393Sniklas char v_char_member;
135e93f7393Sniklas short v_short_member;
136e93f7393Sniklas int v_int_member;
137e93f7393Sniklas long v_long_member;
138e93f7393Sniklas float v_float_member;
139e93f7393Sniklas double v_double_member;
140e93f7393Sniklas } v_union2;
141e93f7393Sniklas
142e93f7393Sniklas /*** Functions returning type ********/
143e93f7393Sniklas
v_char_func()144e93f7393Sniklas char v_char_func () { return(0); }
v_signed_char_func()145e93f7393Sniklas signed char v_signed_char_func () { return (0); }
v_unsigned_char_func()146e93f7393Sniklas unsigned char v_unsigned_char_func () { return (0); }
147e93f7393Sniklas
v_short_func()148e93f7393Sniklas short v_short_func () { return (0); }
v_signed_short_func()149e93f7393Sniklas signed short v_signed_short_func () { return (0); }
v_unsigned_short_func()150e93f7393Sniklas unsigned short v_unsigned_short_func () { return (0); }
151e93f7393Sniklas
v_int_func()152e93f7393Sniklas int v_int_func () { return (0); }
v_signed_int_func()153e93f7393Sniklas signed int v_signed_int_func () { return (0); }
v_unsigned_int_func()154e93f7393Sniklas unsigned int v_unsigned_int_func () { return (0); }
155e93f7393Sniklas
v_long_func()156e93f7393Sniklas long v_long_func () { return (0); }
v_signed_long_func()157e93f7393Sniklas signed long v_signed_long_func () { return (0); }
v_unsigned_long_func()158e93f7393Sniklas unsigned long v_unsigned_long_func () { return (0); }
159e93f7393Sniklas
v_float_func()160e93f7393Sniklas float v_float_func () { return (0.0); }
v_double_func()161e93f7393Sniklas double v_double_func () { return (0.0); }
162e93f7393Sniklas
163e93f7393Sniklas /**** Some misc more complicated things *******/
164e93f7393Sniklas
165e93f7393Sniklas struct link {
166e93f7393Sniklas struct link *next;
167e93f7393Sniklas #ifdef __STDC__
168e93f7393Sniklas struct link *(*linkfunc) (struct link *this, int flags);
169e93f7393Sniklas #else
170e93f7393Sniklas struct link *(*linkfunc) ();
171e93f7393Sniklas #endif
172e93f7393Sniklas struct t_struct stuff[1][2][3];
173e93f7393Sniklas } *s_link;
174e93f7393Sniklas
175e93f7393Sniklas union tu_link {
176e93f7393Sniklas struct link *next;
177e93f7393Sniklas #ifdef __STDC__
178e93f7393Sniklas struct link *(*linkfunc) (struct link *this, int flags);
179e93f7393Sniklas #else
180e93f7393Sniklas struct link *(*linkfunc) ();
181e93f7393Sniklas #endif
182e93f7393Sniklas struct t_struct stuff[1][2][3];
183e93f7393Sniklas } u_link;
184e93f7393Sniklas
185e93f7393Sniklas /**** Enumerations *******/
186e93f7393Sniklas
187e93f7393Sniklas enum colors {red, green, blue} color;
188e93f7393Sniklas enum cars {chevy, ford, porsche} clunker;
189e93f7393Sniklas
190e93f7393Sniklas /**** Enumeration bitfields, supported by GNU C *******/
191e93f7393Sniklas
192e93f7393Sniklas #ifdef __GNUC__
193e93f7393Sniklas enum senum {sm1 = -1, s1 = 1};
194e93f7393Sniklas struct senum_field {enum senum field:2; } sef;
195e93f7393Sniklas enum uenum {u1 = 1, u2 = 2};
196e93f7393Sniklas struct uenum_field {enum uenum field:2; } uef;
197e93f7393Sniklas #endif
198e93f7393Sniklas
199e93f7393Sniklas void
dummy()200e93f7393Sniklas dummy ()
201e93f7393Sniklas {
202e93f7393Sniklas /* setvar.exp wants to allocate memory for constants. So make sure malloc
203e93f7393Sniklas gets linked into the program. */
204e93f7393Sniklas malloc (1);
205e93f7393Sniklas
206e93f7393Sniklas /* Some linkers (e.g. on AIX) remove unreferenced variables,
207e93f7393Sniklas so make sure to reference them. */
208e93f7393Sniklas v_char = 0;
209e93f7393Sniklas v_signed_char = 1;
210e93f7393Sniklas v_unsigned_char = 2;
211e93f7393Sniklas
212e93f7393Sniklas v_short = 3;
213e93f7393Sniklas v_signed_short = 4;
214e93f7393Sniklas v_unsigned_short = 5;
215e93f7393Sniklas
216e93f7393Sniklas v_int = 6;
217e93f7393Sniklas v_signed_int = 7;
218e93f7393Sniklas v_unsigned_int = 8;
219e93f7393Sniklas
220e93f7393Sniklas v_long = 9;
221e93f7393Sniklas v_signed_long = 10;
222e93f7393Sniklas v_unsigned_long = 11;
223e93f7393Sniklas
224e93f7393Sniklas v_float = 100.0;
225e93f7393Sniklas v_double = 200.0;
226e93f7393Sniklas
227e93f7393Sniklas
228e93f7393Sniklas v_char_array[0] = v_char;
229e93f7393Sniklas v_signed_char_array[0] = v_signed_char;
230e93f7393Sniklas v_unsigned_char_array[0] = v_unsigned_char;
231e93f7393Sniklas
232e93f7393Sniklas v_short_array[0] = v_short;
233e93f7393Sniklas v_signed_short_array[0] = v_signed_short;
234e93f7393Sniklas v_unsigned_short_array[0] = v_unsigned_short;
235e93f7393Sniklas
236e93f7393Sniklas v_int_array[0] = v_int;
237e93f7393Sniklas v_signed_int_array[0] = v_signed_int;
238e93f7393Sniklas v_unsigned_int_array[0] = v_unsigned_int;
239e93f7393Sniklas
240e93f7393Sniklas v_long_array[0] = v_long;
241e93f7393Sniklas v_signed_long_array[0] = v_signed_long;
242e93f7393Sniklas v_unsigned_long_array[0] = v_unsigned_long;
243e93f7393Sniklas
244e93f7393Sniklas v_float_array[0] = v_float;
245e93f7393Sniklas v_double_array[0] = v_double;
246e93f7393Sniklas
247e93f7393Sniklas v_char_pointer = &v_char;
248e93f7393Sniklas v_signed_char_pointer = &v_signed_char;
249e93f7393Sniklas v_unsigned_char_pointer = &v_unsigned_char;
250e93f7393Sniklas
251e93f7393Sniklas v_short_pointer = &v_short;
252e93f7393Sniklas v_signed_short_pointer = &v_signed_short;
253e93f7393Sniklas v_unsigned_short_pointer = &v_unsigned_short;
254e93f7393Sniklas
255e93f7393Sniklas v_int_pointer = &v_int;
256e93f7393Sniklas v_signed_int_pointer = &v_signed_int;
257e93f7393Sniklas v_unsigned_int_pointer = &v_unsigned_int;
258e93f7393Sniklas
259e93f7393Sniklas v_long_pointer = &v_long;
260e93f7393Sniklas v_signed_long_pointer = &v_signed_long;
261e93f7393Sniklas v_unsigned_long_pointer = &v_unsigned_long;
262e93f7393Sniklas
263e93f7393Sniklas v_float_pointer = &v_float;
264e93f7393Sniklas v_double_pointer = &v_double;
265e93f7393Sniklas
266e93f7393Sniklas color = red;
267e93f7393Sniklas clunker = porsche;
268e93f7393Sniklas
269e93f7393Sniklas u_link.next = s_link;
270e93f7393Sniklas
271e93f7393Sniklas v_struct2.v_int_member = v_struct1.v_int_member;
272e93f7393Sniklas v_union2.v_short_member = v_union.v_short_member;
273e93f7393Sniklas
274e93f7393Sniklas #ifdef __GNUC__
275e93f7393Sniklas sef.field = s1;
276e93f7393Sniklas uef.field = u1;
277e93f7393Sniklas #endif
278e93f7393Sniklas }
279