forked from Imagelibrary/binutils-gdb
This commit is the result of the following actions:
- Running gdb/copyright.py to update all of the copyright headers to
include 2024,
- Manually updating a few files the copyright.py script told me to
update, these files had copyright headers embedded within the
file,
- Regenerating gdbsupport/Makefile.in to refresh it's copyright
date,
- Using grep to find other files that still mentioned 2023. If
these files were updated last year from 2022 to 2023 then I've
updated them this year to 2024.
I'm sure I've probably missed some dates. Feel free to fix them up as
you spot them.
433 lines
10 KiB
C
433 lines
10 KiB
C
/* Copyright (C) 2001-2024 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
/*
|
|
* Initial set of typed variables borrowed from ptype.c
|
|
*/
|
|
|
|
#if !defined (__STDC__) && !defined (_AIX)
|
|
#define signed /**/
|
|
#endif
|
|
|
|
char v_char;
|
|
signed char v_signed_char;
|
|
unsigned char v_unsigned_char;
|
|
|
|
short v_short;
|
|
signed short v_signed_short;
|
|
unsigned short v_unsigned_short;
|
|
|
|
int v_int;
|
|
signed int v_signed_int;
|
|
unsigned int v_unsigned_int;
|
|
|
|
long v_long;
|
|
signed long v_signed_long;
|
|
unsigned long v_unsigned_long;
|
|
|
|
long long v_long_long;
|
|
signed long long v_signed_long_long;
|
|
unsigned long long v_unsigned_long_long;
|
|
|
|
float v_float;
|
|
double v_double;
|
|
|
|
/*
|
|
* Now some derived types, which are arrays, functions-returning,
|
|
* pointers, structures, unions, and enumerations.
|
|
*/
|
|
|
|
/**** arrays *******/
|
|
|
|
char v_char_array[2];
|
|
signed char v_signed_char_array[2];
|
|
unsigned char v_unsigned_char_array[2];
|
|
|
|
short v_short_array[2];
|
|
signed short v_signed_short_array[2];
|
|
unsigned short v_unsigned_short_array[2];
|
|
|
|
int v_int_array[2];
|
|
signed int v_signed_int_array[2];
|
|
unsigned int v_unsigned_int_array[2];
|
|
|
|
long v_long_array[2];
|
|
signed long v_signed_long_array[2];
|
|
unsigned long v_unsigned_long_array[2];
|
|
|
|
float v_float_array[2];
|
|
double v_double_array[2];
|
|
|
|
/* PR 3742 */
|
|
typedef char t_char_array[];
|
|
|
|
/**** pointers *******/
|
|
|
|
char *v_char_pointer;
|
|
signed char *v_signed_char_pointer;
|
|
unsigned char *v_unsigned_char_pointer;
|
|
|
|
short *v_short_pointer;
|
|
signed short *v_signed_short_pointer;
|
|
unsigned short *v_unsigned_short_pointer;
|
|
|
|
int *v_int_pointer;
|
|
signed int *v_signed_int_pointer;
|
|
unsigned int *v_unsigned_int_pointer;
|
|
|
|
long *v_long_pointer;
|
|
signed long *v_signed_long_pointer;
|
|
unsigned long *v_unsigned_long_pointer;
|
|
|
|
float *v_float_pointer;
|
|
double *v_double_pointer;
|
|
|
|
char **v_char_pointer_pointer;
|
|
signed char **v_signed_char_pointer_pointer;
|
|
unsigned char **v_unsigned_char_pointer_pointer;
|
|
|
|
short **v_short_pointer_pointer;
|
|
signed short **v_signed_short_pointer_pointer;
|
|
unsigned short **v_unsigned_short_pointer_pointer;
|
|
|
|
int **v_int_pointer_pointer;
|
|
signed int **v_signed_int_pointer_pointer;
|
|
unsigned int **v_unsigned_int_pointer_pointer;
|
|
|
|
long **v_long_pointer_pointer;
|
|
signed long **v_signed_long_pointer_pointer;
|
|
unsigned long **v_unsigned_long_pointer_pointer;
|
|
|
|
float **v_float_pointer_pointer;
|
|
double **v_double_pointer_pointer;
|
|
|
|
/**** pointers to arrays, arrays of pointers *******/
|
|
|
|
char *v_char_array_pointer[2];
|
|
signed char *v_signed_char_array_pointer[2];
|
|
unsigned char *v_unsigned_char_array_pointer[2];
|
|
|
|
short *v_short_array_pointer[2];
|
|
signed short *v_signed_short_array_pointer[2];
|
|
unsigned short *v_unsigned_short_array_pointer[2];
|
|
|
|
int *v_int_array_pointer[2];
|
|
signed int *v_signed_int_array_pointer[2];
|
|
unsigned int *v_unsigned_int_array_pointer[2];
|
|
|
|
long *v_long_array_pointer[2];
|
|
signed long *v_signed_long_array_pointer[2];
|
|
unsigned long *v_unsigned_long_array_pointer[2];
|
|
|
|
float *v_float_array_pointer[2];
|
|
double *v_double_array_pointer[2];
|
|
|
|
char (*v_char_pointer_array)[2];
|
|
signed char (*v_signed_char_pointer_array)[2];
|
|
unsigned char (*v_unsigned_char_pointer_array)[2];
|
|
|
|
short (*v_short_pointer_array)[2];
|
|
signed short (*v_signed_short_pointer_array)[2];
|
|
unsigned short (*v_unsigned_short_pointer_array)[2];
|
|
|
|
int (*v_int_pointer_array)[2];
|
|
signed int (*v_signed_int_pointer_array)[2];
|
|
unsigned int (*v_unsigned_int_pointer_array)[2];
|
|
|
|
long (*v_long_pointer_array)[2];
|
|
signed long (*v_signed_long_pointer_array)[2];
|
|
unsigned long (*v_unsigned_long_pointer_array)[2];
|
|
|
|
float (*v_float_pointer_array)[2];
|
|
double (*v_double_pointer_array)[2];
|
|
|
|
|
|
/**** structs *******/
|
|
|
|
struct t_struct {
|
|
char v_char_member;
|
|
short v_short_member;
|
|
int v_int_member;
|
|
long v_long_member;
|
|
float v_float_member;
|
|
double v_double_member;
|
|
} v_struct1;
|
|
|
|
struct t_struct *v_t_struct_p;
|
|
|
|
struct {
|
|
char v_char_member;
|
|
short v_short_member;
|
|
int v_int_member;
|
|
long v_long_member;
|
|
float v_float_member;
|
|
double v_double_member;
|
|
} v_struct2;
|
|
|
|
/* typedef'd struct without a tag. */
|
|
typedef struct {
|
|
double v_double_member;
|
|
int v_int_member;
|
|
} t_struct3;
|
|
/* GCC seems to want a variable of this type, or else it won't put out
|
|
a symbol. */
|
|
t_struct3 v_struct3;
|
|
|
|
/**** unions *******/
|
|
|
|
union t_union {
|
|
char v_char_member;
|
|
short v_short_member;
|
|
int v_int_member;
|
|
long v_long_member;
|
|
float v_float_member;
|
|
double v_double_member;
|
|
} v_union;
|
|
|
|
union {
|
|
char v_char_member;
|
|
short v_short_member;
|
|
int v_int_member;
|
|
long v_long_member;
|
|
float v_float_member;
|
|
double v_double_member;
|
|
} v_union2;
|
|
|
|
/* typedef'd union without a tag. */
|
|
typedef union {
|
|
double v_double_member;
|
|
int v_int_member;
|
|
} t_union3;
|
|
/* GCC seems to want a variable of this type, or else it won't put out
|
|
a symbol. */
|
|
t_union3 v_union3;
|
|
|
|
/**** Enumerations *******/
|
|
|
|
enum
|
|
/* Work around the bug for compilers which don't put out the right stabs. */
|
|
#if __GNUC__ < 2 && !defined (_AIX)
|
|
primary1_tag
|
|
#endif
|
|
{red1, green1, blue1} primary1;
|
|
|
|
enum {red, green, blue} primary;
|
|
enum colors {yellow, purple, pink} nonprimary;
|
|
|
|
enum {chevy, ford} clunker;
|
|
enum cars {bmw, porsche} sportscar;
|
|
|
|
#undef FALSE
|
|
#undef TRUE
|
|
typedef enum {FALSE, TRUE} boolean;
|
|
boolean v_boolean;
|
|
/*note: aCC has bool type predefined with 'false' and 'true'*/
|
|
typedef enum bvals {my_false, my_true} boolean2;
|
|
boolean2 v_boolean2;
|
|
|
|
enum misordered {two = 2, one = 1, zero = 0, three = 3};
|
|
|
|
/* Seems like we need a variable of this type to get the type to be put
|
|
in the executable, at least for AIX xlc. */
|
|
enum misordered v_misordered = three;
|
|
|
|
/**** Function pointers *******/
|
|
|
|
char (*v_char_func) (int, int*);
|
|
signed char (*v_signed_char_func) (int, int*);
|
|
unsigned char (*v_unsigned_char_func) (int, int*);
|
|
|
|
short (*v_short_func) (int, int*);
|
|
signed short (*v_signed_short_func) (int, int*);
|
|
unsigned short (*v_unsigned_short_func) (int, int*);
|
|
|
|
int (*v_int_func) (int, int*);
|
|
signed int (*v_signed_int_func) (int, int*);
|
|
unsigned int (*v_unsigned_int_func) (int, int*);
|
|
|
|
long (*v_long_func) (int, int*);
|
|
signed long (*v_signed_long_func) (int, int*);
|
|
unsigned long (*v_unsigned_long_func) (int, int*);
|
|
|
|
long long (*v_long_long_func) (int, int*);
|
|
signed long long (*v_signed_long_long_func) (int, int*);
|
|
unsigned long long (*v_unsigned_long_long_func) (int, int*);
|
|
|
|
float (*v_float_func) (int, int*);
|
|
double (*v_double_func) (int, int*);
|
|
|
|
void use (void *p)
|
|
{
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
use (&v_char);
|
|
use (&v_signed_char);
|
|
use (&v_unsigned_char);
|
|
|
|
use (&v_short);
|
|
use (&v_signed_short);
|
|
use (&v_unsigned_short);
|
|
|
|
use (&v_int);
|
|
use (&v_signed_int);
|
|
use (&v_unsigned_int);
|
|
|
|
use (&v_long);
|
|
use (&v_signed_long);
|
|
use (&v_unsigned_long);
|
|
|
|
use (&v_long_long);
|
|
use (&v_signed_long_long);
|
|
use (&v_unsigned_long_long);
|
|
|
|
use (&v_float);
|
|
use (&v_double);
|
|
|
|
use (v_char_array);
|
|
use (v_signed_char_array);
|
|
use (v_unsigned_char_array);
|
|
|
|
use (v_short_array);
|
|
use (v_signed_short_array);
|
|
use (v_unsigned_short_array);
|
|
|
|
use (v_int_array);
|
|
use (v_signed_int_array);
|
|
use (v_unsigned_int_array);
|
|
|
|
use (v_long_array);
|
|
use (v_signed_long_array);
|
|
use (v_unsigned_long_array);
|
|
|
|
use (v_float_array);
|
|
use (v_double_array);
|
|
|
|
use (v_char_pointer);
|
|
use (v_signed_char_pointer);
|
|
use (v_unsigned_char_pointer);
|
|
|
|
use (v_short_pointer);
|
|
use (v_signed_short_pointer);
|
|
use (v_unsigned_short_pointer);
|
|
|
|
use (v_int_pointer);
|
|
use (v_signed_int_pointer);
|
|
use (v_unsigned_int_pointer);
|
|
|
|
use (v_long_pointer);
|
|
use (v_signed_long_pointer);
|
|
use (v_unsigned_long_pointer);
|
|
|
|
use (v_float_pointer);
|
|
use (v_double_pointer);
|
|
|
|
use (v_char_pointer_pointer);
|
|
use (v_signed_char_pointer_pointer);
|
|
use (v_unsigned_char_pointer_pointer);
|
|
|
|
use (v_short_pointer_pointer);
|
|
use (v_signed_short_pointer_pointer);
|
|
use (v_unsigned_short_pointer_pointer);
|
|
|
|
use (v_int_pointer_pointer);
|
|
use (v_signed_int_pointer_pointer);
|
|
use (v_unsigned_int_pointer_pointer);
|
|
|
|
use (v_long_pointer_pointer);
|
|
use (v_signed_long_pointer_pointer);
|
|
use (v_unsigned_long_pointer_pointer);
|
|
|
|
use (v_float_pointer_pointer);
|
|
use (v_double_pointer_pointer);
|
|
|
|
use (v_char_array_pointer);
|
|
use (v_signed_char_array_pointer);
|
|
use (v_unsigned_char_array_pointer);
|
|
|
|
use (v_short_array_pointer);
|
|
use (v_signed_short_array_pointer);
|
|
use (v_unsigned_short_array_pointer);
|
|
|
|
use (v_int_array_pointer);
|
|
use (v_signed_int_array_pointer);
|
|
use (v_unsigned_int_array_pointer);
|
|
|
|
use (v_long_array_pointer);
|
|
use (v_signed_long_array_pointer);
|
|
use (v_unsigned_long_array_pointer);
|
|
|
|
use (v_float_array_pointer);
|
|
use (v_double_array_pointer);
|
|
|
|
use (v_char_pointer_array);
|
|
use (v_signed_char_pointer_array);
|
|
use (v_unsigned_char_pointer_array);
|
|
|
|
use (v_short_pointer_array);
|
|
use (v_signed_short_pointer_array);
|
|
use (v_unsigned_short_pointer_array);
|
|
|
|
use (v_int_pointer_array);
|
|
use (v_signed_int_pointer_array);
|
|
use (v_unsigned_int_pointer_array);
|
|
|
|
use (v_long_pointer_array);
|
|
use (v_signed_long_pointer_array);
|
|
use (v_unsigned_long_pointer_array);
|
|
|
|
use (v_float_pointer_array);
|
|
use (v_double_pointer_array);
|
|
|
|
use (&v_struct1);
|
|
use (&v_struct2);
|
|
use (&v_struct3);
|
|
|
|
use (&v_union);
|
|
use (&v_union2);
|
|
use (&v_union3);
|
|
|
|
use (&v_boolean);
|
|
use (&v_boolean2);
|
|
use (&v_misordered);
|
|
|
|
use (&v_char_func);
|
|
use (&v_signed_char_func);
|
|
use (&v_unsigned_char_func);
|
|
|
|
use (&v_short_func);
|
|
use (&v_signed_short_func);
|
|
use (&v_unsigned_short_func);
|
|
|
|
use (&v_int_func);
|
|
use (&v_signed_int_func);
|
|
use (&v_unsigned_int_func);
|
|
|
|
use (&v_long_func);
|
|
use (&v_signed_long_func);
|
|
use (&v_unsigned_long_func);
|
|
|
|
use (&v_long_long_func);
|
|
use (&v_signed_long_long_func);
|
|
use (&v_unsigned_long_long_func);
|
|
|
|
use (&v_float_func);
|
|
use (&v_double_func);
|
|
|
|
return 0;
|
|
}
|