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