OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.base/] [ptype.c] - Diff between revs 227 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 227 Rev 816
/*
/*
 *      Test file with lots of different types, for testing the
 *      Test file with lots of different types, for testing the
 *      "ptype" command.
 *      "ptype" command.
 */
 */
 
 
/*
/*
 *      First the basic C types.
 *      First the basic C types.
 */
 */
#include <stdlib.h>
#include <stdlib.h>
 
 
#if !defined (__STDC__) && !defined (_AIX)
#if !defined (__STDC__) && !defined (_AIX)
#define signed  /**/
#define signed  /**/
#endif
#endif
 
 
char            v_char;
char            v_char;
signed char     v_signed_char;
signed char     v_signed_char;
unsigned char   v_unsigned_char;
unsigned char   v_unsigned_char;
 
 
short           v_short;
short           v_short;
signed short    v_signed_short;
signed short    v_signed_short;
unsigned short  v_unsigned_short;
unsigned short  v_unsigned_short;
 
 
int             v_int;
int             v_int;
signed int      v_signed_int;
signed int      v_signed_int;
unsigned int    v_unsigned_int;
unsigned int    v_unsigned_int;
 
 
long            v_long;
long            v_long;
signed long     v_signed_long;
signed long     v_signed_long;
unsigned long   v_unsigned_long;
unsigned long   v_unsigned_long;
 
 
float           v_float;
float           v_float;
double          v_double;
double          v_double;
 
 
/*
/*
 *      Now some derived types, which are arrays, functions-returning,
 *      Now some derived types, which are arrays, functions-returning,
 *      pointers, structures, unions, and enumerations.
 *      pointers, structures, unions, and enumerations.
 */
 */
 
 
/**** arrays *******/
/**** arrays *******/
 
 
char            v_char_array[2];
char            v_char_array[2];
signed char     v_signed_char_array[2];
signed char     v_signed_char_array[2];
unsigned char   v_unsigned_char_array[2];
unsigned char   v_unsigned_char_array[2];
 
 
short           v_short_array[2];
short           v_short_array[2];
signed short    v_signed_short_array[2];
signed short    v_signed_short_array[2];
unsigned short  v_unsigned_short_array[2];
unsigned short  v_unsigned_short_array[2];
 
 
int             v_int_array[2];
int             v_int_array[2];
signed int      v_signed_int_array[2];
signed int      v_signed_int_array[2];
unsigned int    v_unsigned_int_array[2];
unsigned int    v_unsigned_int_array[2];
 
 
long            v_long_array[2];
long            v_long_array[2];
signed long     v_signed_long_array[2];
signed long     v_signed_long_array[2];
unsigned long   v_unsigned_long_array[2];
unsigned long   v_unsigned_long_array[2];
 
 
float           v_float_array[2];
float           v_float_array[2];
double          v_double_array[2];
double          v_double_array[2];
 
 
/* PR 3742 */
/* PR 3742 */
typedef char t_char_array[];
typedef char t_char_array[];
t_char_array *pv_char_array;
t_char_array *pv_char_array;
 
 
/**** pointers *******/
/**** pointers *******/
 
 
char            *v_char_pointer;
char            *v_char_pointer;
signed char     *v_signed_char_pointer;
signed char     *v_signed_char_pointer;
unsigned char   *v_unsigned_char_pointer;
unsigned char   *v_unsigned_char_pointer;
 
 
short           *v_short_pointer;
short           *v_short_pointer;
signed short    *v_signed_short_pointer;
signed short    *v_signed_short_pointer;
unsigned short  *v_unsigned_short_pointer;
unsigned short  *v_unsigned_short_pointer;
 
 
int             *v_int_pointer;
int             *v_int_pointer;
signed int      *v_signed_int_pointer;
signed int      *v_signed_int_pointer;
unsigned int    *v_unsigned_int_pointer;
unsigned int    *v_unsigned_int_pointer;
 
 
long            *v_long_pointer;
long            *v_long_pointer;
signed long     *v_signed_long_pointer;
signed long     *v_signed_long_pointer;
unsigned long   *v_unsigned_long_pointer;
unsigned long   *v_unsigned_long_pointer;
 
 
float           *v_float_pointer;
float           *v_float_pointer;
double          *v_double_pointer;
double          *v_double_pointer;
 
 
/**** structs *******/
/**** structs *******/
 
 
struct t_struct {
struct t_struct {
    char        v_char_member;
    char        v_char_member;
    short       v_short_member;
    short       v_short_member;
    int         v_int_member;
    int         v_int_member;
    long        v_long_member;
    long        v_long_member;
    float       v_float_member;
    float       v_float_member;
    double      v_double_member;
    double      v_double_member;
} v_struct1;
} v_struct1;
 
 
struct t_struct *v_t_struct_p;
struct t_struct *v_t_struct_p;
 
 
struct {
struct {
    char        v_char_member;
    char        v_char_member;
    short       v_short_member;
    short       v_short_member;
    int         v_int_member;
    int         v_int_member;
    long        v_long_member;
    long        v_long_member;
    float       v_float_member;
    float       v_float_member;
    double      v_double_member;
    double      v_double_member;
} v_struct2;
} v_struct2;
 
 
/* typedef'd struct without a tag.  */
/* typedef'd struct without a tag.  */
typedef struct {
typedef struct {
  double v_double_member;
  double v_double_member;
  int v_int_member;
  int v_int_member;
} t_struct3;
} t_struct3;
/* GCC seems to want a variable of this type, or else it won't put out
/* GCC seems to want a variable of this type, or else it won't put out
   a symbol.  */
   a symbol.  */
t_struct3 v_struct3;
t_struct3 v_struct3;
 
 
/**** unions *******/
/**** unions *******/
 
 
union t_union {
union t_union {
    char        v_char_member;
    char        v_char_member;
    short       v_short_member;
    short       v_short_member;
    int         v_int_member;
    int         v_int_member;
    long        v_long_member;
    long        v_long_member;
    float       v_float_member;
    float       v_float_member;
    double      v_double_member;
    double      v_double_member;
} v_union;
} v_union;
 
 
union {
union {
    char        v_char_member;
    char        v_char_member;
    short       v_short_member;
    short       v_short_member;
    int         v_int_member;
    int         v_int_member;
    long        v_long_member;
    long        v_long_member;
    float       v_float_member;
    float       v_float_member;
    double      v_double_member;
    double      v_double_member;
} v_union2;
} v_union2;
 
 
/* typedef'd union without a tag.  */
/* typedef'd union without a tag.  */
typedef union {
typedef union {
  double v_double_member;
  double v_double_member;
  int v_int_member;
  int v_int_member;
} t_union3;
} t_union3;
/* GCC seems to want a variable of this type, or else it won't put out
/* GCC seems to want a variable of this type, or else it won't put out
   a symbol.  */
   a symbol.  */
t_union3 v_union3;
t_union3 v_union3;
 
 
/*** Functions returning type ********/
/*** Functions returning type ********/
 
 
char            v_char_func () { return(0); }
char            v_char_func () { return(0); }
signed char     v_signed_char_func () { return (0); }
signed char     v_signed_char_func () { return (0); }
unsigned char   v_unsigned_char_func () { return (0); }
unsigned char   v_unsigned_char_func () { return (0); }
 
 
short           v_short_func () { return (0); }
short           v_short_func () { return (0); }
signed short    v_signed_short_func () { return (0); }
signed short    v_signed_short_func () { return (0); }
unsigned short  v_unsigned_short_func () { return (0); }
unsigned short  v_unsigned_short_func () { return (0); }
 
 
int             v_int_func () { return (0); }
int             v_int_func () { return (0); }
signed int      v_signed_int_func () { return (0); }
signed int      v_signed_int_func () { return (0); }
unsigned int    v_unsigned_int_func () { return (0); }
unsigned int    v_unsigned_int_func () { return (0); }
 
 
long            v_long_func () { return (0); }
long            v_long_func () { return (0); }
signed long     v_signed_long_func () { return (0); }
signed long     v_signed_long_func () { return (0); }
unsigned long   v_unsigned_long_func () { return (0); }
unsigned long   v_unsigned_long_func () { return (0); }
 
 
float           v_float_func () { return (0.0); }
float           v_float_func () { return (0.0); }
double          v_double_func () { return (0.0); }
double          v_double_func () { return (0.0); }
 
 
/**** Some misc more complicated things *******/
/**** Some misc more complicated things *******/
 
 
struct link {
struct link {
        struct link *next;
        struct link *next;
#ifdef __STDC__
#ifdef __STDC__
        struct link *(*linkfunc) (struct link *this, int flags);
        struct link *(*linkfunc) (struct link *this, int flags);
#else
#else
        struct link *(*linkfunc) ();
        struct link *(*linkfunc) ();
#endif
#endif
        struct t_struct stuff[1][2][3];
        struct t_struct stuff[1][2][3];
} *s_link;
} *s_link;
 
 
union tu_link {
union tu_link {
        struct link *next;
        struct link *next;
#ifdef __STDC__
#ifdef __STDC__
        struct link *(*linkfunc) (struct link *this, int flags);
        struct link *(*linkfunc) (struct link *this, int flags);
#else
#else
        struct link *(*linkfunc) ();
        struct link *(*linkfunc) ();
#endif
#endif
        struct t_struct stuff[1][2][3];
        struct t_struct stuff[1][2][3];
} u_link;
} u_link;
 
 
struct outer_struct {
struct outer_struct {
        int outer_int;
        int outer_int;
        struct inner_struct {
        struct inner_struct {
                int inner_int;
                int inner_int;
                long inner_long;
                long inner_long;
        }inner_struct_instance;
        }inner_struct_instance;
        union inner_union {
        union inner_union {
                int inner_union_int;
                int inner_union_int;
                long inner_union_long;
                long inner_union_long;
        }inner_union_instance;
        }inner_union_instance;
        long outer_long;
        long outer_long;
} nested_su;
} nested_su;
 
 
struct highest
struct highest
{
{
  int a;
  int a;
  struct
  struct
  {
  {
    int b;
    int b;
    struct { int c; } anonymous_level_2;
    struct { int c; } anonymous_level_2;
  } anonymous_level_1;
  } anonymous_level_1;
} the_highest;
} the_highest;
 
 
/**** Enumerations *******/
/**** Enumerations *******/
 
 
enum
enum
/* Work around the bug for compilers which don't put out the right stabs.  */
/* Work around the bug for compilers which don't put out the right stabs.  */
#if __GNUC__ < 2 && !defined (_AIX)
#if __GNUC__ < 2 && !defined (_AIX)
primary1_tag
primary1_tag
#endif
#endif
{red1, green1, blue1} primary1;
{red1, green1, blue1} primary1;
 
 
enum {red, green, blue} primary;
enum {red, green, blue} primary;
enum colors {yellow, purple, pink} nonprimary;
enum colors {yellow, purple, pink} nonprimary;
 
 
enum {chevy, ford} clunker;
enum {chevy, ford} clunker;
enum cars {bmw, porsche} sportscar;
enum cars {bmw, porsche} sportscar;
 
 
#undef FALSE
#undef FALSE
#undef TRUE
#undef TRUE
typedef enum {FALSE, TRUE} boolean;
typedef enum {FALSE, TRUE} boolean;
boolean v_boolean;
boolean v_boolean;
/*note: aCC has bool type predefined with 'false' and 'true'*/
/*note: aCC has bool type predefined with 'false' and 'true'*/
typedef enum bvals {my_false, my_true} boolean2;
typedef enum bvals {my_false, my_true} boolean2;
boolean2 v_boolean2;
boolean2 v_boolean2;
 
 
enum misordered {two = 2, one = 1, zero = 0, three = 3};
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
/* Seems like we need a variable of this type to get the type to be put
   in the executable, at least for AIX xlc.  */
   in the executable, at least for AIX xlc.  */
enum misordered v_misordered = three;
enum misordered v_misordered = three;
 
 
/**** Pointers to functions *******/
/**** Pointers to functions *******/
 
 
typedef int (*func_type) (int (*) (int, float), float);
typedef int (*func_type) (int (*) (int, float), float);
double (*old_fptr) ();
double (*old_fptr) ();
double (*new_fptr) (void);
double (*new_fptr) (void);
int (*fptr) (int, float);
int (*fptr) (int, float);
int *(*fptr2) (int (*) (int, float), float);
int *(*fptr2) (int (*) (int, float), float);
int (*xptr) (int (*) (), int (*) (void), int);
int (*xptr) (int (*) (), int (*) (void), int);
int (*(*ffptr) (char)) (short);
int (*(*ffptr) (char)) (short);
int (*(*(*fffptr) (char)) (short)) (long);
int (*(*(*fffptr) (char)) (short)) (long);
 
 
func_type v_func_type;
func_type v_func_type;
 
 
/* Here are the sort of stabs we expect to see for the above:
/* Here are the sort of stabs we expect to see for the above:
 
 
   .stabs "func_type:t(0,100)=*(0,101)=g(0,1)(0,102)=*(0,103)=g(0,1)(0,1)(0,14)#(0,14)#",128,0,234,0
   .stabs "func_type:t(0,100)=*(0,101)=g(0,1)(0,102)=*(0,103)=g(0,1)(0,1)(0,14)#(0,14)#",128,0,234,0
   .stabs "old_fptr:G(0,110)=*(0,111)=f(0,15)",32,0,231,0
   .stabs "old_fptr:G(0,110)=*(0,111)=f(0,15)",32,0,231,0
   .stabs "new_fptr:G(0,120)=*(0,121)=g(0,15)(0,122)=(0,122)#",32,0,232,0
   .stabs "new_fptr:G(0,120)=*(0,121)=g(0,15)(0,122)=(0,122)#",32,0,232,0
   .stabs "fptr:G(0,130)=*(0,103)#",32,0,233,0
   .stabs "fptr:G(0,130)=*(0,103)#",32,0,233,0
   .stabs "fptr2:G(0,140)=*(0,141)=g(0,142)=*(0,1)(0,102)(0,14)#",32,0,235,0
   .stabs "fptr2:G(0,140)=*(0,141)=g(0,142)=*(0,1)(0,102)(0,14)#",32,0,235,0
   .stabs "xptr:G(0,150)=*(0,151)=g(0,1)(0,152)=*(0,153)=f(0,1)(0,154)=*(0,155)=g(0,1)(0,122)#(0,1)#",32,0,236,0
   .stabs "xptr:G(0,150)=*(0,151)=g(0,1)(0,152)=*(0,153)=f(0,1)(0,154)=*(0,155)=g(0,1)(0,122)#(0,1)#",32,0,236,0
   .stabs "ffptr:G(0,160)=*(0,161)=g(0,162)=*(0,163)=g(0,1)(0,8)#(0,2)#",32,0,237,0\
   .stabs "ffptr:G(0,160)=*(0,161)=g(0,162)=*(0,163)=g(0,1)(0,8)#(0,2)#",32,0,237,0\
   .stabs "fffptr:G(0,170)=*(0,171)=g(0,172)=*(0,173)=g(0,174)=*(0,175)=g(0,1)(0,3)#(0,8)#(0,2)#",32,0,237,0
   .stabs "fffptr:G(0,170)=*(0,171)=g(0,172)=*(0,173)=g(0,174)=*(0,175)=g(0,1)(0,3)#(0,8)#(0,2)#",32,0,237,0
 
 
   Most of these use Sun's extension for prototyped function types ---
   Most of these use Sun's extension for prototyped function types ---
   the 'g' type descriptor.  As of around 9 Feb 2002, GCC didn't emit
   the 'g' type descriptor.  As of around 9 Feb 2002, GCC didn't emit
   those, but GDB can read them, so the related tests in ptype.exp
   those, but GDB can read them, so the related tests in ptype.exp
   will all xfail.  */
   will all xfail.  */
 
 
 
 
/***********/
/***********/
 
 
extern char charfoo ();
extern char charfoo ();
 
 
typedef int foo;
typedef int foo;
 
 
foo intfoo (afoo)
foo intfoo (afoo)
{
{
  charfoo (afoo);
  charfoo (afoo);
  return (afoo * 2);
  return (afoo * 2);
}
}
 
 
/***********/
/***********/
 
 
int main ()
int main ()
{
{
  /* Ensure that malloc is a pointer type; avoid use of "void" and any include files. */
  /* Ensure that malloc is a pointer type; avoid use of "void" and any include files. */
/*  extern char *malloc();*/
/*  extern char *malloc();*/
 
 
  /* Some of the tests in ptype.exp require invoking malloc, so make
  /* Some of the tests in ptype.exp require invoking malloc, so make
     sure it is linked in to this program.  */
     sure it is linked in to this program.  */
  v_char_pointer = (char *) malloc (1);
  v_char_pointer = (char *) malloc (1);
 
 
#ifdef usestubs
#ifdef usestubs
  set_debug_traps();
  set_debug_traps();
  breakpoint();
  breakpoint();
#endif
#endif
  /* Some linkers (e.g. on AIX) remove unreferenced variables,
  /* Some linkers (e.g. on AIX) remove unreferenced variables,
     so make sure to reference them. */
     so make sure to reference them. */
  primary = blue;
  primary = blue;
  primary1 = blue1;
  primary1 = blue1;
  nonprimary = pink;
  nonprimary = pink;
  sportscar = porsche;
  sportscar = porsche;
  clunker = ford;
  clunker = ford;
  v_struct1.v_int_member = 5;
  v_struct1.v_int_member = 5;
  v_struct2.v_int_member = 6;
  v_struct2.v_int_member = 6;
  v_struct3.v_int_member = 7;
  v_struct3.v_int_member = 7;
 
 
  v_char = 0;
  v_char = 0;
  v_signed_char = 0;
  v_signed_char = 0;
  v_unsigned_char = 0;
  v_unsigned_char = 0;
 
 
  v_short = 0;
  v_short = 0;
  v_signed_short = 0;
  v_signed_short = 0;
  v_unsigned_short = 0;
  v_unsigned_short = 0;
 
 
  v_int = 0;
  v_int = 0;
  v_signed_int = 0;
  v_signed_int = 0;
  v_unsigned_int = 0;
  v_unsigned_int = 0;
 
 
  v_long = 0;
  v_long = 0;
  v_signed_long = 0;
  v_signed_long = 0;
  v_unsigned_long = 0;
  v_unsigned_long = 0;
 
 
  v_float = 0;
  v_float = 0;
  v_double = 0;
  v_double = 0;
 
 
  v_char_array[0] = 0;
  v_char_array[0] = 0;
  v_signed_char_array[0] = 0;
  v_signed_char_array[0] = 0;
  v_unsigned_char_array[0] = 0;
  v_unsigned_char_array[0] = 0;
 
 
  v_short_array[0] = 0;
  v_short_array[0] = 0;
  v_signed_short_array[0] = 0;
  v_signed_short_array[0] = 0;
  v_unsigned_short_array[0] = 0;
  v_unsigned_short_array[0] = 0;
 
 
  v_int_array[0] = 0;
  v_int_array[0] = 0;
  v_signed_int_array[0] = 0;
  v_signed_int_array[0] = 0;
  v_unsigned_int_array[0] = 0;
  v_unsigned_int_array[0] = 0;
 
 
  v_long_array[0] = 0;
  v_long_array[0] = 0;
  v_signed_long_array[0] = 0;
  v_signed_long_array[0] = 0;
  v_unsigned_long_array[0] = 0;
  v_unsigned_long_array[0] = 0;
 
 
  v_float_array[0] = 0;
  v_float_array[0] = 0;
  v_double_array[0] = 0;
  v_double_array[0] = 0;
 
 
  v_char_pointer = 0;
  v_char_pointer = 0;
  v_signed_char_pointer = 0;
  v_signed_char_pointer = 0;
  v_unsigned_char_pointer = 0;
  v_unsigned_char_pointer = 0;
 
 
  v_short_pointer = 0;
  v_short_pointer = 0;
  v_signed_short_pointer = 0;
  v_signed_short_pointer = 0;
  v_unsigned_short_pointer = 0;
  v_unsigned_short_pointer = 0;
 
 
  v_int_pointer = 0;
  v_int_pointer = 0;
  v_signed_int_pointer = 0;
  v_signed_int_pointer = 0;
  v_unsigned_int_pointer = 0;
  v_unsigned_int_pointer = 0;
 
 
  v_long_pointer = 0;
  v_long_pointer = 0;
  v_signed_long_pointer = 0;
  v_signed_long_pointer = 0;
  v_unsigned_long_pointer = 0;
  v_unsigned_long_pointer = 0;
 
 
  v_float_pointer = 0;
  v_float_pointer = 0;
  v_double_pointer = 0;
  v_double_pointer = 0;
 
 
  nested_su.outer_int = 0;
  nested_su.outer_int = 0;
  v_t_struct_p = 0;
  v_t_struct_p = 0;
 
 
  the_highest.a = 0;
  the_highest.a = 0;
 
 
  v_boolean = FALSE;
  v_boolean = FALSE;
  v_boolean2 = my_false;
  v_boolean2 = my_false;
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.