OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [doc/] [hostconfig.texi] - Blame information for rev 823

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
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}.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.