5618a0dd0fba293ed3b982c92300e1c604ea5624
[fw/sdcc] / support / cpp / i386 / go32.h
1 /* Configuration for an i386 running MS-DOS with djgpp/go32.  */
2
3 /* Don't assume anything about the header files. */
4 #define NO_IMPLICIT_EXTERN_C
5
6 #define HANDLE_SYSV_PRAGMA
7
8 #define YES_UNDERSCORES
9
10 #include "i386/gas.h"
11
12 #ifdef CPP_PREDEFINES
13 #undef CPP_PREDEFINES
14 #endif
15 #define CPP_PREDEFINES "-Dunix -Di386 -DGO32 -DMSDOS \
16   -Asystem(unix) -Asystem(msdos) -Acpu(i386) -Amachine(i386)"
17
18 #undef EXTRA_SECTIONS
19 #define EXTRA_SECTIONS in_ctor, in_dtor
20
21 #undef EXTRA_SECTION_FUNCTIONS
22 #define EXTRA_SECTION_FUNCTIONS                                 \
23   CTOR_SECTION_FUNCTION                                         \
24   DTOR_SECTION_FUNCTION
25
26 #define CTOR_SECTION_FUNCTION                                   \
27 void                                                            \
28 ctor_section ()                                                 \
29 {                                                               \
30   if (in_section != in_ctor)                                    \
31     {                                                           \
32       fprintf (asm_out_file, "\t.section .ctor\n");             \
33       in_section = in_ctor;                                     \
34     }                                                           \
35 }
36
37 #define DTOR_SECTION_FUNCTION                                   \
38 void                                                            \
39 dtor_section ()                                                 \
40 {                                                               \
41   if (in_section != in_dtor)                                    \
42     {                                                           \
43       fprintf (asm_out_file, "\t.section .dtor\n");             \
44       in_section = in_dtor;                                     \
45     }                                                           \
46 }
47
48 #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)       \
49   do {                                          \
50     ctor_section ();                            \
51     fprintf (FILE, "%s\t", ASM_LONG);           \
52     assemble_name (FILE, NAME);                 \
53     fprintf (FILE, "\n");                       \
54   } while (0)
55
56 #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)        \
57   do {                                          \
58     dtor_section ();                            \
59     fprintf (FILE, "%s\t", ASM_LONG);           \
60     assemble_name (FILE, NAME);                 \
61     fprintf (FILE, "\n");                       \
62   } while (0)
63
64