OSDN Git Service

2001-05-03 David O'Brien <obrien@FreeBSD.org>
[pf3gnuchains/gcc-fork.git] / gcc / config / netware.h
1 /* netware.h -- operating system specific defines to be used when 
2    targeting GCC for some generic NetWare 4 system.
3    Copyright (C) 1993, 1994, 2000 Free Software Foundation, Inc.
4
5    Written by David V. Henkel-Wallace (gumby@cygnus.com)
6
7 This file is part of GNU CC.
8
9 GNU CC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 GNU CC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with GNU CC; see the file COPYING.  If not, write to
21 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
22
23 /* We don't actually need any of these; the MD_ vars are ignored
24    anyway for cross-compilers, and the other specs won't get picked up
25    'coz the user is supposed to do ld -r (hmm, perhaps that should be
26    the default).  In any case, setting them thus will catch some
27    common user errors. */
28
29 #undef MD_EXEC_PREFIX
30 #undef MD_STARTFILE_PREFIX
31
32 #undef  LIB_SPEC
33 #define LIB_SPEC ""
34
35 /* Kinda useless, but what the hell */
36 #undef  LINK_SPEC
37 #define LINK_SPEC "%{h*} %{V} %{v:%{!V:-V}} \
38                    %{b} %{Wl,*:%*} \
39                    %{Qy:} %{!Qn:-Qy}"
40
41 #undef  STARTFILE_SPEC
42 #define STARTFILE_SPEC ""
43
44 #undef  ENDFILE_SPEC
45 #define ENDFILE_SPEC ""
46
47 #undef  RELATIVE_PREFIX_NOT_LINKDIR
48 #undef  LIBGCC_SPEC
49
50 /* set debugging info */
51 #define DBX_DEBUGGING_INFO
52 #undef  SDB_DEBUGGING_INFO
53 #undef  DWARF_DEBUGGING_INFO
54 #undef  XCOFF_DEBUGGING_INFO
55 #undef  PREFERRED_DEBUGGING_TYPE
56 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
57
58 /* Support const sections and the ctors and dtors sections for g++.
59    Note that there appears to be two different ways to support const
60    sections at the moment.  You can either #define the symbol
61    READONLY_DATA_SECTION (giving it some code which switches to the
62    readonly data section) or else you can #define the symbols
63    EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and
64    SELECT_RTX_SECTION.  We do both here just to be on the safe side.  */
65
66 #undef  HAS_INIT_SECTION
67 #undef  INIT_SECTION_ASM_OP
68
69 #undef  READONLY_DATA_SECTION
70 #define READONLY_DATA_SECTION   const_section 
71
72 #undef  CONST_SECTION_ASM_OP
73 #define CONST_SECTION_ASM_OP    ".section\t.rodata"
74 #undef  CTORS_SECTION_ASM_OP
75 #define CTORS_SECTION_ASM_OP    ".section\t.ctors,\"x\""
76 #undef  DTORS_SECTION_ASM_OP
77 #define DTORS_SECTION_ASM_OP    ".section\t.dtors,\"x\""
78
79 /* A list of other sections which the compiler might be "in" at any
80    given time.  */
81
82 #undef EXTRA_SECTIONS
83 #define EXTRA_SECTIONS in_const, in_ctors, in_dtors
84
85 /* A list of extra section function definitions.  */
86
87 #undef  EXTRA_SECTION_FUNCTIONS
88 #define EXTRA_SECTION_FUNCTIONS                                         \
89   CONST_SECTION_FUNCTION                                                \
90   CTORS_SECTION_FUNCTION                                                \
91   DTORS_SECTION_FUNCTION
92
93 #undef  CONST_SECTION_FUNCTION
94 #define CONST_SECTION_FUNCTION                                          \
95 void                                                                    \
96 const_section ()                                                        \
97 {                                                                       \
98   if (in_section != in_const)                                           \
99     {                                                                   \
100       fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP);             \
101       in_section = in_const;                                            \
102     }                                                                   \
103 }
104
105 #undef  CTORS_SECTION_FUNCTION
106 #define CTORS_SECTION_FUNCTION                                          \
107 void                                                                    \
108 ctors_section ()                                                        \
109 {                                                                       \
110   if (in_section != in_ctors)                                           \
111     {                                                                   \
112       fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP);             \
113       in_section = in_ctors;                                            \
114     }                                                                   \
115 }
116
117 #undef  DTORS_SECTION_FUNCTION
118 #define DTORS_SECTION_FUNCTION                                          \
119 void                                                                    \
120 dtors_section ()                                                        \
121 {                                                                       \
122   if (in_section != in_dtors)                                           \
123     {                                                                   \
124       fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP);             \
125       in_section = in_dtors;                                            \
126     }                                                                   \
127 }
128
129 #define INT_ASM_OP ".long"
130
131 /* A C statement (sans semicolon) to output an element in the table of
132    global constructors.  */
133 #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)                               \
134   do {                                                                  \
135     ctors_section ();                                                   \
136     fprintf (FILE, "\t%s\t ", INT_ASM_OP);                              \
137     assemble_name (FILE, NAME);                                         \
138     fprintf (FILE, "\n");                                               \
139   } while (0)
140
141 /* A C statement (sans semicolon) to output an element in the table of
142    global destructors.  */
143 #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)                                \
144   do {                                                                  \
145     dtors_section ();                                                   \
146     fprintf (FILE, "\t%s\t ", INT_ASM_OP);                              \
147     assemble_name (FILE, NAME);                                         \
148     fprintf (FILE, "\n");                                               \
149   } while (0)