1 #ifndef DEFINED_DEFINES_H
2 #define DEFINED_DEFINES_H
3 
4 typedef unsigned long long ulonglong;
5 typedef long double ldouble;
6 
7 /* These defines determines what part of the test should be run.  When
8    GCC implements these parts, the defines should be uncommented to
9    enable testing.  */
10 
11 /* Scalar type long double.  */
12 #define CHECK_LONG_DOUBLE
13 
14 /* Scalar type __float128.  */
15 #define CHECK_FLOAT128
16 
17 /* Returning of complex type.  */
18 #define CHECK_COMPLEX
19 
20 /* Structs with size > 8.  */
21 #define CHECK_LARGER_STRUCTS
22 
23 /* Checks for passing floats and doubles.  */
24 #define CHECK_FLOAT_DOUBLE_PASSING
25 
26 /* Union passing with not-extremely-simple unions.  */
27 #define CHECK_LARGER_UNION_PASSING
28 
29 /* Variable args.  */
30 #define CHECK_VARARGS
31 
32 /* Check argument passing and returning for scalar types with sizeof > 8.  */
33 #define CHECK_LARGE_SCALAR_PASSING
34 
35 /* Defines for sizing and alignment.  */
36 
37 #define TYPE_SIZE_CHAR         1
38 #define TYPE_SIZE_SHORT        2
39 #define TYPE_SIZE_INT          4
40 #define TYPE_SIZE_LONG         4
41 #define TYPE_SIZE_LONG_LONG    8
42 #define TYPE_SIZE_FLOAT        4
43 #define TYPE_SIZE_DOUBLE       8
44 #define TYPE_SIZE_LONG_DOUBLE  8
45 #define TYPE_SIZE_FLOAT128     16
46 #define TYPE_SIZE_ENUM         4
47 #define TYPE_SIZE_POINTER      4
48 
49 #define TYPE_ALIGN_CHAR        1
50 #define TYPE_ALIGN_SHORT       2
51 #define TYPE_ALIGN_INT         4
52 #define TYPE_ALIGN_LONG        4
53 #define TYPE_ALIGN_LONG_LONG   4
54 #define TYPE_ALIGN_FLOAT       4
55 #define TYPE_ALIGN_DOUBLE      4
56 #define TYPE_ALIGN_LONG_DOUBLE 4
57 #define TYPE_ALIGN_FLOAT128    4
58 #define TYPE_ALIGN_ENUM        4
59 #define TYPE_ALIGN_POINTER     4
60 
61 /* These defines control the building of the list of types to check. There
62    is a string identifying the type (with a comma after), a size of the type
63    (also with a comma and an integer for adding to the total amount of types)
64    and an alignment of the type (which is currently not really needed since
65    the abi specifies that alignof == sizeof for all scalar types).  */
66 #ifdef CHECK_LONG_DOUBLE
67 #define CLD_STR "long double",
68 #define CLD_SIZ TYPE_SIZE_LONG_DOUBLE,
69 #define CLD_ALI TYPE_ALIGN_LONG_DOUBLE,
70 #define CLD_RET "???",
71 #else
72 #define CLD_STR
73 #define CLD_SIZ
74 #define CLD_ALI
75 #define CLD_RET
76 #endif
77 #ifdef CHECK_FLOAT128
78 #define CF128_STR "__float128",
79 #define CF128_SIZ TYPE_SIZE_FLOAT128,
80 #define CF128_ALI TYPE_ALIGN_FLOAT128,
81 #define CF128_RET "???",
82 #else
83 #define CF128_STR
84 #define CF128_SIZ
85 #define CF128_ALI
86 #define CF128_RET
87 #endif
88 
89 /* Used in size and alignment tests.  */
90 enum dummytype { enumtype };
91 
92 extern void abort (void);
93 
94 /* Assertion macro.  */
95 #define assert(test) if (!(test)) abort()
96 
97 #ifdef __GNUC__
98 #define ATTRIBUTE_UNUSED __attribute__((__unused__))
99 #else
100 #define ATTRIBUTE_UNUSED
101 #endif
102 
103 #ifdef __GNUC__
104 #define PACKED __attribute__((__packed__))
105 #else
106 #warning Some tests will fail due to missing __packed__ support
107 #define PACKED
108 #endif
109 
110 #endif /* DEFINED_DEFINES_H */
111