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