1 |
38 |
julius |
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
2 |
|
|
@c 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
3 |
|
|
@c This is part of the GCC manual.
|
4 |
|
|
@c For copying conditions, see the file gccint.texi.
|
5 |
|
|
|
6 |
|
|
@node Host Config
|
7 |
|
|
@chapter Host Configuration
|
8 |
|
|
@cindex host configuration
|
9 |
|
|
|
10 |
|
|
Most details about the machine and system on which the compiler is
|
11 |
|
|
actually running are detected by the @command{configure} script. Some
|
12 |
|
|
things are impossible for @command{configure} to detect; these are
|
13 |
|
|
described in two ways, either by macros defined in a file named
|
14 |
|
|
@file{xm-@var{machine}.h} or by hook functions in the file specified
|
15 |
|
|
by the @var{out_host_hook_obj} variable in @file{config.gcc}. (The
|
16 |
|
|
intention is that very few hosts will need a header file but nearly
|
17 |
|
|
every fully supported host will need to override some hooks.)
|
18 |
|
|
|
19 |
|
|
If you need to define only a few macros, and they have simple
|
20 |
|
|
definitions, consider using the @code{xm_defines} variable in your
|
21 |
|
|
@file{config.gcc} entry instead of creating a host configuration
|
22 |
|
|
header. @xref{System Config}.
|
23 |
|
|
|
24 |
|
|
@menu
|
25 |
|
|
* Host Common:: Things every host probably needs implemented.
|
26 |
|
|
* Filesystem:: Your host can't have the letter `a' in filenames?
|
27 |
|
|
* Host Misc:: Rare configuration options for hosts.
|
28 |
|
|
@end menu
|
29 |
|
|
|
30 |
|
|
@node Host Common
|
31 |
|
|
@section Host Common
|
32 |
|
|
@cindex host hooks
|
33 |
|
|
@cindex host functions
|
34 |
|
|
|
35 |
|
|
Some things are just not portable, even between similar operating systems,
|
36 |
|
|
and are too difficult for autoconf to detect. They get implemented using
|
37 |
|
|
hook functions in the file specified by the @var{host_hook_obj}
|
38 |
|
|
variable in @file{config.gcc}.
|
39 |
|
|
|
40 |
|
|
@deftypefn {Host Hook} void HOST_HOOKS_EXTRA_SIGNALS (void)
|
41 |
|
|
This host hook is used to set up handling for extra signals. The most
|
42 |
|
|
common thing to do in this hook is to detect stack overflow.
|
43 |
|
|
@end deftypefn
|
44 |
|
|
|
45 |
|
|
@deftypefn {Host Hook} void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t @var{size}, int @var{fd})
|
46 |
|
|
This host hook returns the address of some space that is likely to be
|
47 |
|
|
free in some subsequent invocation of the compiler. We intend to load
|
48 |
|
|
the PCH data at this address such that the data need not be relocated.
|
49 |
|
|
The area should be able to hold @var{size} bytes. If the host uses
|
50 |
|
|
@code{mmap}, @var{fd} is an open file descriptor that can be used for
|
51 |
|
|
probing.
|
52 |
|
|
@end deftypefn
|
53 |
|
|
|
54 |
|
|
@deftypefn {Host Hook} int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * @var{address}, size_t @var{size}, int @var{fd}, size_t @var{offset})
|
55 |
|
|
This host hook is called when a PCH file is about to be loaded.
|
56 |
|
|
We want to load @var{size} bytes from @var{fd} at @var{offset}
|
57 |
|
|
into memory at @var{address}. The given address will be the result of
|
58 |
|
|
a previous invocation of @code{HOST_HOOKS_GT_PCH_GET_ADDRESS}.
|
59 |
|
|
Return @minus{}1 if we couldn't allocate @var{size} bytes at @var{address}.
|
60 |
|
|
Return 0 if the memory is allocated but the data is not loaded. Return 1
|
61 |
|
|
if the hook has performed everything.
|
62 |
|
|
|
63 |
|
|
If the implementation uses reserved address space, free any reserved
|
64 |
|
|
space beyond @var{size}, regardless of the return value. If no PCH will
|
65 |
|
|
be loaded, this hook may be called with @var{size} zero, in which case
|
66 |
|
|
all reserved address space should be freed.
|
67 |
|
|
|
68 |
|
|
Do not try to handle values of @var{address} that could not have been
|
69 |
|
|
returned by this executable; just return @minus{}1. Such values usually
|
70 |
|
|
indicate an out-of-date PCH file (built by some other GCC executable),
|
71 |
|
|
and such a PCH file won't work.
|
72 |
|
|
@end deftypefn
|
73 |
|
|
|
74 |
|
|
@deftypefn {Host Hook} size_t HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY (void);
|
75 |
|
|
This host hook returns the alignment required for allocating virtual
|
76 |
|
|
memory. Usually this is the same as getpagesize, but on some hosts the
|
77 |
|
|
alignment for reserving memory differs from the pagesize for committing
|
78 |
|
|
memory.
|
79 |
|
|
@end deftypefn
|
80 |
|
|
|
81 |
|
|
@node Filesystem
|
82 |
|
|
@section Host Filesystem
|
83 |
|
|
@cindex configuration file
|
84 |
|
|
@cindex @file{xm-@var{machine}.h}
|
85 |
|
|
|
86 |
|
|
GCC needs to know a number of things about the semantics of the host
|
87 |
|
|
machine's filesystem. Filesystems with Unix and MS-DOS semantics are
|
88 |
|
|
automatically detected. For other systems, you can define the
|
89 |
|
|
following macros in @file{xm-@var{machine}.h}.
|
90 |
|
|
|
91 |
|
|
@ftable @code
|
92 |
|
|
@item HAVE_DOS_BASED_FILE_SYSTEM
|
93 |
|
|
This macro is automatically defined by @file{system.h} if the host
|
94 |
|
|
file system obeys the semantics defined by MS-DOS instead of Unix.
|
95 |
|
|
DOS file systems are case insensitive, file specifications may begin
|
96 |
|
|
with a drive letter, and both forward slash and backslash (@samp{/}
|
97 |
|
|
and @samp{\}) are directory separators.
|
98 |
|
|
|
99 |
|
|
@item DIR_SEPARATOR
|
100 |
|
|
@itemx DIR_SEPARATOR_2
|
101 |
|
|
If defined, these macros expand to character constants specifying
|
102 |
|
|
separators for directory names within a file specification.
|
103 |
|
|
@file{system.h} will automatically give them appropriate values on
|
104 |
|
|
Unix and MS-DOS file systems. If your file system is neither of
|
105 |
|
|
these, define one or both appropriately in @file{xm-@var{machine}.h}.
|
106 |
|
|
|
107 |
|
|
However, operating systems like VMS, where constructing a pathname is
|
108 |
|
|
more complicated than just stringing together directory names
|
109 |
|
|
separated by a special character, should not define either of these
|
110 |
|
|
macros.
|
111 |
|
|
|
112 |
|
|
@item PATH_SEPARATOR
|
113 |
|
|
If defined, this macro should expand to a character constant
|
114 |
|
|
specifying the separator for elements of search paths. The default
|
115 |
|
|
value is a colon (@samp{:}). DOS-based systems usually, but not
|
116 |
|
|
always, use semicolon (@samp{;}).
|
117 |
|
|
|
118 |
|
|
@item VMS
|
119 |
|
|
Define this macro if the host system is VMS@.
|
120 |
|
|
|
121 |
|
|
@item HOST_OBJECT_SUFFIX
|
122 |
|
|
Define this macro to be a C string representing the suffix for object
|
123 |
|
|
files on your host machine. If you do not define this macro, GCC will
|
124 |
|
|
use @samp{.o} as the suffix for object files.
|
125 |
|
|
|
126 |
|
|
@item HOST_EXECUTABLE_SUFFIX
|
127 |
|
|
Define this macro to be a C string representing the suffix for
|
128 |
|
|
executable files on your host machine. If you do not define this macro,
|
129 |
|
|
GCC will use the null string as the suffix for executable files.
|
130 |
|
|
|
131 |
|
|
@item HOST_BIT_BUCKET
|
132 |
|
|
A pathname defined by the host operating system, which can be opened as
|
133 |
|
|
a file and written to, but all the information written is discarded.
|
134 |
|
|
This is commonly known as a @dfn{bit bucket} or @dfn{null device}. If
|
135 |
|
|
you do not define this macro, GCC will use @samp{/dev/null} as the bit
|
136 |
|
|
bucket. If the host does not support a bit bucket, define this macro to
|
137 |
|
|
an invalid filename.
|
138 |
|
|
|
139 |
|
|
@item UPDATE_PATH_HOST_CANONICALIZE (@var{path})
|
140 |
|
|
If defined, a C statement (sans semicolon) that performs host-dependent
|
141 |
|
|
canonicalization when a path used in a compilation driver or
|
142 |
|
|
preprocessor is canonicalized. @var{path} is a malloc-ed path to be
|
143 |
|
|
canonicalized. If the C statement does canonicalize @var{path} into a
|
144 |
|
|
different buffer, the old path should be freed and the new buffer should
|
145 |
|
|
have been allocated with malloc.
|
146 |
|
|
|
147 |
|
|
@item DUMPFILE_FORMAT
|
148 |
|
|
Define this macro to be a C string representing the format to use for
|
149 |
|
|
constructing the index part of debugging dump file names. The resultant
|
150 |
|
|
string must fit in fifteen bytes. The full filename will be the
|
151 |
|
|
concatenation of: the prefix of the assembler file name, the string
|
152 |
|
|
resulting from applying this format to an index number, and a string
|
153 |
|
|
unique to each dump file kind, e.g.@: @samp{rtl}.
|
154 |
|
|
|
155 |
|
|
If you do not define this macro, GCC will use @samp{.%02d.}. You should
|
156 |
|
|
define this macro if using the default will create an invalid file name.
|
157 |
|
|
|
158 |
|
|
@item DELETE_IF_ORDINARY
|
159 |
|
|
Define this macro to be a C statement (sans semicolon) that performs
|
160 |
|
|
host-dependent removal of ordinary temp files in the compilation driver.
|
161 |
|
|
|
162 |
|
|
If you do not define this macro, GCC will use the default version. You
|
163 |
|
|
should define this macro if the default version does not reliably remove
|
164 |
|
|
the temp file as, for example, on VMS which allows multiple versions
|
165 |
|
|
of a file.
|
166 |
|
|
|
167 |
|
|
@item HOST_LACKS_INODE_NUMBERS
|
168 |
|
|
Define this macro if the host filesystem does not report meaningful inode
|
169 |
|
|
numbers in struct stat.
|
170 |
|
|
@end ftable
|
171 |
|
|
|
172 |
|
|
@node Host Misc
|
173 |
|
|
@section Host Misc
|
174 |
|
|
@cindex configuration file
|
175 |
|
|
@cindex @file{xm-@var{machine}.h}
|
176 |
|
|
|
177 |
|
|
@ftable @code
|
178 |
|
|
@item FATAL_EXIT_CODE
|
179 |
|
|
A C expression for the status code to be returned when the compiler
|
180 |
|
|
exits after serious errors. The default is the system-provided macro
|
181 |
|
|
@samp{EXIT_FAILURE}, or @samp{1} if the system doesn't define that
|
182 |
|
|
macro. Define this macro only if these defaults are incorrect.
|
183 |
|
|
|
184 |
|
|
@item SUCCESS_EXIT_CODE
|
185 |
|
|
A C expression for the status code to be returned when the compiler
|
186 |
|
|
exits without serious errors. (Warnings are not serious errors.) The
|
187 |
|
|
default is the system-provided macro @samp{EXIT_SUCCESS}, or @samp{0} if
|
188 |
|
|
the system doesn't define that macro. Define this macro only if these
|
189 |
|
|
defaults are incorrect.
|
190 |
|
|
|
191 |
|
|
@item USE_C_ALLOCA
|
192 |
|
|
Define this macro if GCC should use the C implementation of @code{alloca}
|
193 |
|
|
provided by @file{libiberty.a}. This only affects how some parts of the
|
194 |
|
|
compiler itself allocate memory. It does not change code generation.
|
195 |
|
|
|
196 |
|
|
When GCC is built with a compiler other than itself, the C @code{alloca}
|
197 |
|
|
is always used. This is because most other implementations have serious
|
198 |
|
|
bugs. You should define this macro only on a system where no
|
199 |
|
|
stack-based @code{alloca} can possibly work. For instance, if a system
|
200 |
|
|
has a small limit on the size of the stack, GCC's builtin @code{alloca}
|
201 |
|
|
will not work reliably.
|
202 |
|
|
|
203 |
|
|
@item COLLECT2_HOST_INITIALIZATION
|
204 |
|
|
If defined, a C statement (sans semicolon) that performs host-dependent
|
205 |
|
|
initialization when @code{collect2} is being initialized.
|
206 |
|
|
|
207 |
|
|
@item GCC_DRIVER_HOST_INITIALIZATION
|
208 |
|
|
If defined, a C statement (sans semicolon) that performs host-dependent
|
209 |
|
|
initialization when a compilation driver is being initialized.
|
210 |
|
|
|
211 |
|
|
@item HOST_LONG_LONG_FORMAT
|
212 |
|
|
If defined, the string used to indicate an argument of type @code{long
|
213 |
|
|
long} to functions like @code{printf}. The default value is
|
214 |
|
|
@code{"ll"}.
|
215 |
|
|
@end ftable
|
216 |
|
|
|
217 |
|
|
In addition, if @command{configure} generates an incorrect definition of
|
218 |
|
|
any of the macros in @file{auto-host.h}, you can override that
|
219 |
|
|
definition in a host configuration header. If you need to do this,
|
220 |
|
|
first see if it is possible to fix @command{configure}.
|