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