i386-coff.h revision 18334
1/* Definitions for "naked" Intel 386 using coff object format files
2   and coff debugging info.
3
4   Copyright (C) 1994 Free Software Foundation, Inc.
5
6This file is part of GNU CC.
7
8GNU CC is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2, or (at your option)
11any later version.
12
13GNU CC is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with GNU CC; see the file COPYING.  If not, write to
20the Free Software Foundation, 59 Temple Place - Suite 330,
21Boston, MA 02111-1307, USA.  */
22
23
24#include "i386/gas.h"
25
26/* Specify predefined symbols in preprocessor.  */
27
28#undef CPP_PREDEFINES
29#define CPP_PREDEFINES "-Di386"
30
31#undef DBX_DEBUGGING_INFO
32#define SDB_DEBUGGING_INFO
33
34/* Support the ctors and dtors sections for g++.  */
35
36#define CTORS_SECTION_ASM_OP	".section\t.ctors,\"x\""
37#define DTORS_SECTION_ASM_OP	".section\t.dtors,\"x\""
38
39/* A list of other sections which the compiler might be "in" at any
40   given time.  */
41
42#undef EXTRA_SECTIONS
43#define EXTRA_SECTIONS in_ctors, in_dtors
44
45/* A list of extra section function definitions.  */
46
47#undef EXTRA_SECTION_FUNCTIONS
48#define EXTRA_SECTION_FUNCTIONS						\
49  CTORS_SECTION_FUNCTION						\
50  DTORS_SECTION_FUNCTION
51
52#define CTORS_SECTION_FUNCTION						\
53void									\
54ctors_section ()							\
55{									\
56  if (in_section != in_ctors)						\
57    {									\
58      fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP);		\
59      in_section = in_ctors;						\
60    }									\
61}
62
63#define DTORS_SECTION_FUNCTION						\
64void									\
65dtors_section ()							\
66{									\
67  if (in_section != in_dtors)						\
68    {									\
69      fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP);		\
70      in_section = in_dtors;						\
71    }									\
72}
73
74#define INT_ASM_OP ".long"
75
76/* A C statement (sans semicolon) to output an element in the table of
77   global constructors.  */
78#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)				\
79  do {									\
80    ctors_section ();							\
81    fprintf (FILE, "\t%s\t ", INT_ASM_OP);				\
82    assemble_name (FILE, NAME);						\
83    fprintf (FILE, "\n");						\
84  } while (0)
85
86/* A C statement (sans semicolon) to output an element in the table of
87   global destructors.  */
88#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)       				\
89  do {									\
90    dtors_section ();                   				\
91    fprintf (FILE, "\t%s\t ", INT_ASM_OP);				\
92    assemble_name (FILE, NAME);              				\
93    fprintf (FILE, "\n");						\
94  } while (0)
95
96
97/* end of i386-coff.h */
98