|
|
1.1 root 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:
6: This file is part of GNU CC.
7:
8: GNU CC is free software; you can redistribute it and/or modify
9: it under the terms of the GNU General Public License as published by
10: the Free Software Foundation; either version 2, or (at your option)
11: any later version.
12:
13: GNU CC is distributed in the hope that it will be useful,
14: but WITHOUT ANY WARRANTY; without even the implied warranty of
15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16: GNU General Public License for more details.
17:
18: You should have received a copy of the GNU General Public License
19: along with GNU CC; see the file COPYING. If not, write to
20: the Free Software Foundation, 59 Temple Place - Suite 330,
21: Boston, 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 \
53: void \
54: ctors_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 \
64: void \
65: dtors_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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.