1 /* Several of the binary compatibility tests use these macros to 2 allow debugging the test or tracking down a failure by getting an 3 indication of whether each individual check passed or failed. 4 When DBG is defined, each check is shown by a dot (pass) or 'F' 5 (fail) rather than aborting as soon as a failure is detected. */ 6 7 #ifdef DBG 8 #include <stdio.h> 9 #define DEBUG_INIT setbuf (stdout, NULL); 10 #define DEBUG_FPUTS(x) fputs (x, stdout); 11 #define DEBUG_DOT putc ('.', stdout); 12 #define DEBUG_NL putc ('\n', stdout); 13 #define DEBUG_FAIL putc ('F', stdout); fails++; 14 #define DEBUG_CHECK { DEBUG_FAIL } else { DEBUG_DOT } 15 #define DEBUG_FINI if (fails) DEBUG_FPUTS ("failed\n") \ 16 else DEBUG_FPUTS ("passed\n") 17 #else 18 #define DEBUG_INIT 19 #define DEBUG_FPUTS(x) 20 #define DEBUG_DOT 21 #define DEBUG_NL 22 #define DEBUG_FAIL abort (); 23 #define DEBUG_CHECK abort (); 24 #define DEBUG_FINI 25 #endif 26 27 #ifdef SKIP_COMPLEX 28 #ifndef SKIP_COMPLEX_INT 29 #define SKIP_COMPLEX_INT 30 #endif 31 #endif 32 33 #ifndef SKIP_COMPLEX 34 #ifdef __GNUC__ 35 #define CINT(x, y) (x + y * __extension__ 1i) 36 #define CDBL(x, y) (x + y * __extension__ 1i) 37 #else 38 #ifdef __SUNPRO_C 39 /* ??? Complex support without <complex.h>. */ 40 #else 41 #include <complex.h> 42 #endif 43 #ifndef SKIP_COMPLEX_INT 44 #define CINT(x, y) ((_Complex int) (x + y * _Complex_I)) 45 #endif 46 #define CDBL(x, y) (x + y * _Complex_I) 47 #endif 48 #endif 49 50 #ifdef __cplusplus 51 extern "C" void abort (void); 52 #else 53 extern void abort (void); 54 #endif 55 extern int fails; 56