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 51extern "C" void abort (void); 52#else 53extern void abort (void); 54#endif 55extern int fails; 56