Host Configuration Headers
**************************

Host configuration headers contain macro definitions that describe the machine and system on which the compiler is running.  They are usually unnecessary.  Most of the things GCC needs to know about the host system can be deduced by the configure script.

If your host does need a special configuration header, it should be named xm-MACHINE.h, where MACHINE is a short mnemonic for the machine.  Here are some macros which this header can define.

VMS
     Define this macro if the host system is VMS.

FATAL_EXIT_CODE
     A C expression for the status code to be returned when the compiler exits after serious errors.  The default is the system-provided macro EXIT_FAILURE, or 1 if the system doesn't define that macro.  Define this macro only if these defaults are incorrect.

SUCCESS_EXIT_CODE
     A C expression for the status code to be returned when the compiler exits without serious errors.  (Warnings are not serious errors.)  The default is the system-provided macro EXIT_SUCCESS, or 0 if the system doesn't define that macro.  Define this macro only if these defaults are incorrect.

USE_C_ALLOCA
     Define this macro if GCC should use the C implementation of alloca provided by libiberty.a.  This only affects how some parts of the compiler itself allocate memory.  It does not change code generation.

     When GCC is built with a compiler other than itself, the C alloca is always used.  This is because most other implementations have serious bugs.  You should define this macro only on a system where no stack-based alloca can possibly work.  For instance, if a system has a small limit on the size of the stack, GCC's builtin alloca will not work reliably.

HAVE_DOS_BASED_FILE_SYSTEM
     Define this macro if the host file system obeys the semantics defined by MS-DOS instead of Unix.  DOS file systems are case insensitive, file specifications may begin with a drive letter, and both forward slash and backslash (/ and \) are directory separators.  If you define this macro, you probably need to define the next three macros too.

PATH_SEPARATOR
     If defined, this macro should expand to a character constant specifying the separator for elements of search paths.  The default value is a colon (:).  DOS-based systems usually use semicolon (;).

DIR_SEPARATOR
DIR_SEPARATOR_2
     If defined, these macros expand to character constants specifying separators for directory names within a file specification.  They are used somewhat inconsistently throughout the compiler.  If your system behaves like Unix (only forward slash separates pathnames), define neither of them.  If your system behaves like DOS (both forward and backward slash can be used), define DIR_SEPARATOR to / and DIR_SEPARATOR_2 to \.

HOST_OBJECT_SUFFIX
     Define this macro to be a C string representing the suffix for object files on your host machine.  If you do not define this macro, GCC will use .o as the suffix for object files.

HOST_EXECUTABLE_SUFFIX
     Define this macro to be a C string representing the suffix for executable files on your host machine.  If you do not define this macro, GCC will use the null string as the suffix for executable files.

HOST_BIT_BUCKET
     A pathname defined by the host operating system, which can be opened as a file and written to, but all the information written is discarded. This is commonly known as a bit bucket or null device.  If you do not define this macro, GCC will use /dev/null as the bit bucket.  If the host does not support a bit bucket, define this macro to an invalid filename.

COLLECT2_HOST_INITIALIZATION
     If defined, a C statement (sans semicolon) that performs host-dependent initialization when collect2 is being initialized.

GCC_DRIVER_HOST_INITIALIZATION
     If defined, a C statement (sans semicolon) that performs host-dependent initialization when a compilation driver is being initialized.

UPDATE_PATH_HOST_CANONICALIZE (PATH)
     If defined, a C statement (sans semicolon) that performs host-dependent canonicalization when a path used in a compilation driver or preprocessor is canonicalized.  PATH is a malloc-ed path to be canonicalized.  If the C statement does canonicalize PATH into a different buffer, the old path should be freed and the new buffer should have been allocated with malloc.

DUMPFILE_FORMAT
     Define this macro to be a C string representing the format to use for constructing the index part of debugging dump file names.  The resultant string must fit in fifteen bytes.  The full filename will be the concatenation of: the prefix of the assembler file name, the string resulting from applying this format to an index number, and a string unique to each dump file kind, e.g. rtl.

     If you do not define this macro, GCC will use .%02d..  You should define this macro if using the default will create an invalid file name.

SMALL_ARG_MAX
     Define this macro if the host system has a small limit on the total size of an argument vector.  This causes the driver to take more care not to pass unnecessary arguments to subprocesses.

In addition, if configure generates an incorrect definition of any of the macros in auto-host.h, you can override that definition in a host configuration header.  If you need to do this, first see if it is possible to fix configure.

If you need to define only a few of these macros, and they have simple definitions, consider using the xm_defines variable in your config.gcc entry instead of creating a host configuration header. See System Config.