1 /* Copyright (C) 2001, 2004 Free Software Foundation, Inc. 2 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 2 of the License, or 6 (at your option) any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program; if not, write to the Free Software 15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 17 Please email any bugs, comments, and/or additions to this file to: 18 bug-gdb@prep.ai.mit.edu */ 19 20 21 /* 22 * Initial set of typed variables borrowed from ptype.c 23 */ 24 25 #if !defined (__STDC__) && !defined (_AIX) 26 #define signed /**/ 27 #endif 28 29 char v_char; 30 signed char v_signed_char; 31 unsigned char v_unsigned_char; 32 33 short v_short; 34 signed short v_signed_short; 35 unsigned short v_unsigned_short; 36 37 int v_int; 38 signed int v_signed_int; 39 unsigned int v_unsigned_int; 40 41 long v_long; 42 signed long v_signed_long; 43 unsigned long v_unsigned_long; 44 45 long long v_long_long; 46 signed long long v_signed_long_long; 47 unsigned long long v_unsigned_long_long; 48 49 float v_float; 50 double v_double; 51 52 /* 53 * Now some derived types, which are arrays, functions-returning, 54 * pointers, structures, unions, and enumerations. 55 */ 56 57 /**** arrays *******/ 58 59 char v_char_array[2]; 60 signed char v_signed_char_array[2]; 61 unsigned char v_unsigned_char_array[2]; 62 63 short v_short_array[2]; 64 signed short v_signed_short_array[2]; 65 unsigned short v_unsigned_short_array[2]; 66 67 int v_int_array[2]; 68 signed int v_signed_int_array[2]; 69 unsigned int v_unsigned_int_array[2]; 70 71 long v_long_array[2]; 72 signed long v_signed_long_array[2]; 73 unsigned long v_unsigned_long_array[2]; 74 75 float v_float_array[2]; 76 double v_double_array[2]; 77 78 /* PR 3742 */ 79 typedef char t_char_array[]; 80 81 /**** pointers *******/ 82 83 char *v_char_pointer; 84 signed char *v_signed_char_pointer; 85 unsigned char *v_unsigned_char_pointer; 86 87 short *v_short_pointer; 88 signed short *v_signed_short_pointer; 89 unsigned short *v_unsigned_short_pointer; 90 91 int *v_int_pointer; 92 signed int *v_signed_int_pointer; 93 unsigned int *v_unsigned_int_pointer; 94 95 long *v_long_pointer; 96 signed long *v_signed_long_pointer; 97 unsigned long *v_unsigned_long_pointer; 98 99 float *v_float_pointer; 100 double *v_double_pointer; 101 102 char **v_char_pointer_pointer; 103 signed char **v_signed_char_pointer_pointer; 104 unsigned char **v_unsigned_char_pointer_pointer; 105 106 short **v_short_pointer_pointer; 107 signed short **v_signed_short_pointer_pointer; 108 unsigned short **v_unsigned_short_pointer_pointer; 109 110 int **v_int_pointer_pointer; 111 signed int **v_signed_int_pointer_pointer; 112 unsigned int **v_unsigned_int_pointer_pointer; 113 114 long **v_long_pointer_pointer; 115 signed long **v_signed_long_pointer_pointer; 116 unsigned long **v_unsigned_long_pointer_pointer; 117 118 float **v_float_pointer_pointer; 119 double **v_double_pointer_pointer; 120 121 /**** pointers to arrays, arrays of pointers *******/ 122 123 char *v_char_array_pointer[2]; 124 signed char *v_signed_char_array_pointer[2]; 125 unsigned char *v_unsigned_char_array_pointer[2]; 126 127 short *v_short_array_pointer[2]; 128 signed short *v_signed_short_array_pointer[2]; 129 unsigned short *v_unsigned_short_array_pointer[2]; 130 131 int *v_int_array_pointer[2]; 132 signed int *v_signed_int_array_pointer[2]; 133 unsigned int *v_unsigned_int_array_pointer[2]; 134 135 long *v_long_array_pointer[2]; 136 signed long *v_signed_long_array_pointer[2]; 137 unsigned long *v_unsigned_long_array_pointer[2]; 138 139 float *v_float_array_pointer[2]; 140 double *v_double_array_pointer[2]; 141 142 char (*v_char_pointer_array)[2]; 143 signed char (*v_signed_char_pointer_array)[2]; 144 unsigned char (*v_unsigned_char_pointer_array)[2]; 145 146 short (*v_short_pointer_array)[2]; 147 signed short (*v_signed_short_pointer_array)[2]; 148 unsigned short (*v_unsigned_short_pointer_array)[2]; 149 150 int (*v_int_pointer_array)[2]; 151 signed int (*v_signed_int_pointer_array)[2]; 152 unsigned int (*v_unsigned_int_pointer_array)[2]; 153 154 long (*v_long_pointer_array)[2]; 155 signed long (*v_signed_long_pointer_array)[2]; 156 unsigned long (*v_unsigned_long_pointer_array)[2]; 157 158 float (*v_float_pointer_array)[2]; 159 double (*v_double_pointer_array)[2]; 160 161 162 /**** structs *******/ 163 164 struct t_struct { 165 char v_char_member; 166 short v_short_member; 167 int v_int_member; 168 long v_long_member; 169 float v_float_member; 170 double v_double_member; 171 } v_struct1; 172 173 struct t_struct *v_t_struct_p; 174 175 struct { 176 char v_char_member; 177 short v_short_member; 178 int v_int_member; 179 long v_long_member; 180 float v_float_member; 181 double v_double_member; 182 } v_struct2; 183 184 /* typedef'd struct without a tag. */ 185 typedef struct { 186 double v_double_member; 187 int v_int_member; 188 } t_struct3; 189 /* GCC seems to want a variable of this type, or else it won't put out 190 a symbol. */ 191 t_struct3 v_struct3; 192 193 /**** unions *******/ 194 195 union t_union { 196 char v_char_member; 197 short v_short_member; 198 int v_int_member; 199 long v_long_member; 200 float v_float_member; 201 double v_double_member; 202 } v_union; 203 204 union { 205 char v_char_member; 206 short v_short_member; 207 int v_int_member; 208 long v_long_member; 209 float v_float_member; 210 double v_double_member; 211 } v_union2; 212 213 /* typedef'd union without a tag. */ 214 typedef union { 215 double v_double_member; 216 int v_int_member; 217 } t_union3; 218 /* GCC seems to want a variable of this type, or else it won't put out 219 a symbol. */ 220 t_union3 v_union3; 221 222 /**** Enumerations *******/ 223 224 enum 225 /* Work around the bug for compilers which don't put out the right stabs. */ 226 #if __GNUC__ < 2 && !defined (_AIX) 227 primary1_tag 228 #endif 229 {red1, green1, blue1} primary1; 230 231 enum {red, green, blue} primary; 232 enum colors {yellow, purple, pink} nonprimary; 233 234 enum {chevy, ford} clunker; 235 enum cars {bmw, porsche} sportscar; 236 237 #undef FALSE 238 #undef TRUE 239 typedef enum {FALSE, TRUE} boolean; 240 boolean v_boolean; 241 /*note: aCC has bool type predefined with 'false' and 'true'*/ 242 typedef enum bvals {my_false, my_true} boolean2; 243 boolean2 v_boolean2; 244 245 enum misordered {two = 2, one = 1, zero = 0, three = 3}; 246 247 /* Seems like we need a variable of this type to get the type to be put 248 in the executable, at least for AIX xlc. */ 249 enum misordered v_misordered = three; 250 251 /**** Function pointers *******/ 252 253 char (*v_char_func) (int, int*); 254 signed char (*v_signed_char_func) (int, int*); 255 unsigned char (*v_unsigned_char_func) (int, int*); 256 257 short (*v_short_func) (int, int*); 258 signed short (*v_signed_short_func) (int, int*); 259 unsigned short (*v_unsigned_short_func) (int, int*); 260 261 int (*v_int_func) (int, int*); 262 signed int (*v_signed_int_func) (int, int*); 263 unsigned int (*v_unsigned_int_func) (int, int*); 264 265 long (*v_long_func) (int, int*); 266 signed long (*v_signed_long_func) (int, int*); 267 unsigned long (*v_unsigned_long_func) (int, int*); 268 269 long long (*v_long_long_func) (int, int*); 270 signed long long (*v_signed_long_long_func) (int, int*); 271 unsigned long long (*v_unsigned_long_long_func) (int, int*); 272 273 float (*v_float_func) (int, int*); 274 double (*v_double_func) (int, int*); 275 276 void use (void *p) 277 { 278 } 279 280 int main () 281 { 282 use (&v_char); 283 use (&v_signed_char); 284 use (&v_unsigned_char); 285 286 use (&v_short); 287 use (&v_signed_short); 288 use (&v_unsigned_short); 289 290 use (&v_int); 291 use (&v_signed_int); 292 use (&v_unsigned_int); 293 294 use (&v_long); 295 use (&v_signed_long); 296 use (&v_unsigned_long); 297 298 use (&v_long_long); 299 use (&v_signed_long_long); 300 use (&v_unsigned_long_long); 301 302 use (&v_float); 303 use (&v_double); 304 305 use (v_char_array); 306 use (v_signed_char_array); 307 use (v_unsigned_char_array); 308 309 use (v_short_array); 310 use (v_signed_short_array); 311 use (v_unsigned_short_array); 312 313 use (v_int_array); 314 use (v_signed_int_array); 315 use (v_unsigned_int_array); 316 317 use (v_long_array); 318 use (v_signed_long_array); 319 use (v_unsigned_long_array); 320 321 use (v_float_array); 322 use (v_double_array); 323 324 use (v_char_pointer); 325 use (v_signed_char_pointer); 326 use (v_unsigned_char_pointer); 327 328 use (v_short_pointer); 329 use (v_signed_short_pointer); 330 use (v_unsigned_short_pointer); 331 332 use (v_int_pointer); 333 use (v_signed_int_pointer); 334 use (v_unsigned_int_pointer); 335 336 use (v_long_pointer); 337 use (v_signed_long_pointer); 338 use (v_unsigned_long_pointer); 339 340 use (v_float_pointer); 341 use (v_double_pointer); 342 343 use (v_char_pointer_pointer); 344 use (v_signed_char_pointer_pointer); 345 use (v_unsigned_char_pointer_pointer); 346 347 use (v_short_pointer_pointer); 348 use (v_signed_short_pointer_pointer); 349 use (v_unsigned_short_pointer_pointer); 350 351 use (v_int_pointer_pointer); 352 use (v_signed_int_pointer_pointer); 353 use (v_unsigned_int_pointer_pointer); 354 355 use (v_long_pointer_pointer); 356 use (v_signed_long_pointer_pointer); 357 use (v_unsigned_long_pointer_pointer); 358 359 use (v_float_pointer_pointer); 360 use (v_double_pointer_pointer); 361 362 use (v_char_array_pointer); 363 use (v_signed_char_array_pointer); 364 use (v_unsigned_char_array_pointer); 365 366 use (v_short_array_pointer); 367 use (v_signed_short_array_pointer); 368 use (v_unsigned_short_array_pointer); 369 370 use (v_int_array_pointer); 371 use (v_signed_int_array_pointer); 372 use (v_unsigned_int_array_pointer); 373 374 use (v_long_array_pointer); 375 use (v_signed_long_array_pointer); 376 use (v_unsigned_long_array_pointer); 377 378 use (v_float_array_pointer); 379 use (v_double_array_pointer); 380 381 use (v_char_pointer_array); 382 use (v_signed_char_pointer_array); 383 use (v_unsigned_char_pointer_array); 384 385 use (v_short_pointer_array); 386 use (v_signed_short_pointer_array); 387 use (v_unsigned_short_pointer_array); 388 389 use (v_int_pointer_array); 390 use (v_signed_int_pointer_array); 391 use (v_unsigned_int_pointer_array); 392 393 use (v_long_pointer_array); 394 use (v_signed_long_pointer_array); 395 use (v_unsigned_long_pointer_array); 396 397 use (v_float_pointer_array); 398 use (v_double_pointer_array); 399 400 use (&v_struct1); 401 use (&v_struct2); 402 use (&v_struct3); 403 404 use (&v_union); 405 use (&v_union2); 406 use (&v_union3); 407 408 use (&v_boolean); 409 use (&v_boolean2); 410 use (&v_misordered); 411 412 use (&v_char_func); 413 use (&v_signed_char_func); 414 use (&v_unsigned_char_func); 415 416 use (&v_short_func); 417 use (&v_signed_short_func); 418 use (&v_unsigned_short_func); 419 420 use (&v_int_func); 421 use (&v_signed_int_func); 422 use (&v_unsigned_int_func); 423 424 use (&v_long_func); 425 use (&v_signed_long_func); 426 use (&v_unsigned_long_func); 427 428 use (&v_long_long_func); 429 use (&v_signed_long_long_func); 430 use (&v_unsigned_long_long_func); 431 432 use (&v_float_func); 433 use (&v_double_func); 434 } 435