/* 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 #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 . */ #else #include #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;