| /* Several of the binary compatibility tests use these macros to |
| allow debugging the test or tracking down a failure by getting an |
| indication of whether each individual check passed or failed. |
| When DBG is defined, each check is shown by a dot (pass) or 'F' |
| (fail) rather than aborting as soon as a failure is detected. */ |
| |
| #ifdef DBG |
| #include <stdio.h> |
| #define DEBUG_INIT setbuf (stdout, NULL); |
| #define DEBUG_FPUTS(x) fputs (x, stdout) |
| #define DEBUG_DOT putc ('.', stdout) |
| #define DEBUG_NL putc ('\n', stdout) |
| #define DEBUG_FAIL putc ('F', stdout); fails++ |
| #define DEBUG_CHECK { DEBUG_FAIL; } else { DEBUG_DOT; } |
| #define DEBUG_FINI if (fails) DEBUG_FPUTS ("failed\n"); \ |
| else DEBUG_FPUTS ("passed\n"); |
| #else |
| #define DEBUG_INIT |
| #define DEBUG_FPUTS(x) |
| #define DEBUG_DOT |
| #define DEBUG_NL |
| #define DEBUG_FAIL abort () |
| #define DEBUG_CHECK abort (); |
| #define DEBUG_FINI |
| #endif |
| |
| #ifdef SKIP_COMPLEX |
| #ifndef SKIP_COMPLEX_INT |
| #define SKIP_COMPLEX_INT |
| #endif |
| #endif |
| |
| #ifndef SKIP_COMPLEX |
| #ifdef __GNUC__ |
| #define CINT(x, y) (x + y * __extension__ 1i) |
| #define CDBL(x, y) (x + y * __extension__ 1.0i) |
| #else |
| #ifdef __SUNPRO_C |
| /* ??? Complex support without <complex.h>. */ |
| #else |
| #include <complex.h> |
| #endif |
| #ifndef SKIP_COMPLEX_INT |
| #define CINT(x, y) ((_Complex int) (x + y * _Complex_I)) |
| #endif |
| #define CDBL(x, y) (x + y * _Complex_I) |
| #endif |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" void abort (void); |
| #else |
| extern void abort (void); |
| #endif |
| extern int fails; |