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