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