Mercurial > hg > CbC > CbC_gcc
comparison gcc/doc/hostconfig.texi @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | |
2 @c 2000, 2001, 2002, 2003, 2004, 2005, 2008 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}. |