PREV UP NEXT Using and Porting GNU CC

Chapter 17: The Configuration File

The configuration file `xm-machine.h' contains macro definitions that describe the machine and system on which the compiler is running, unlike the definitions in `machine.h', which describe the machine for which the compiler is producing output. Most of the values in `xm-machine.h' are actually the same on all machines that GNU CC runs on, so large parts of all configuration files are identical. But there are some macros that vary:

USG
Define this macro if the host system is System V.
VMS
Define this macro if the host system is VMS.
FAILURE_EXIT_CODE
A C expression for the status code to be returned when the compiler exits after serious errors.
SUCCESS_EXIT_CODE
A C expression for the status code to be returned when the compiler exits without serious errors.
HOST_WORDS_BIG_ENDIAN
Defined if the host machine stores words of multi-word values in big-endian order. (GNU CC does not depend on the host byte ordering within a word.)
HOST_FLOAT_WORDS_BIG_ENDIAN
Define this macro to be 1 if the host machine stores DFmode, XFmode or TFmode floating point numbers in memory with the word containing the sign bit at the lowest address; otherwise, define it to be zero.

This macro need not be defined if the ordering is the same as for multi-word integers.

HOST_FLOAT_FORMAT
A numeric code distinguishing the floating point format for the host machine. See TARGET_FLOAT_FORMAT in Storage Layout for the alternatives and default.
HOST_BITS_PER_CHAR
A C expression for the number of bits in char on the host machine.
HOST_BITS_PER_SHORT
A C expression for the number of bits in short on the host machine.
HOST_BITS_PER_INT
A C expression for the number of bits in int on the host machine.
HOST_BITS_PER_LONG
A C expression for the number of bits in long on the host machine.
ONLY_INT_FIELDS
Define this macro to indicate that the host compiler only supports int bit fields, rather than other integral types, including enum, as do most C compilers.
EXECUTABLE_SUFFIX
Define this macro if the host system uses a naming convention for executable files that involves a common suffix (such as, in some systems, `.exe') that must be mentioned explicitly when you run the program.
OBSTACK_CHUNK_SIZE
A C expression for the size of ordinary obstack chunks. If you don't define this, a usually-reasonable default is used.
OBSTACK_CHUNK_ALLOC
The function used to allocate obstack chunks. If you don't define this, xmalloc is used.
OBSTACK_CHUNK_FREE
The function used to free obstack chunks. If you don't define this, free is used.
USE_C_ALLOCA
Define this macro to indicate that the compiler is running with the alloca implemented in C. This version of alloca can be found in the file `alloca.c'; to use it, you must also alter the `Makefile' variable ALLOCA. (This is done automatically for the systems on which we know it is needed.)

If you do define this macro, you should probably do it as follows:

#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif

so that when the compiler is compiled with GNU CC it uses the more efficient built-in alloca function.

FUNCTION_CONVERSION_BUG
Define this macro to indicate that the host compiler does not properly handle converting a function value to a pointer-to-function when it is used in an expression.
HAVE_VPRINTF
Define this if the library function vprintf is available on your system.
MULTIBYTE_CHARS
Define this macro to enable support for multibyte characters in the input to GNU CC. This requires that the host system support the ANSI C library functions for converting multibyte characters to wide characters.
HAVE_PUTENV
Define this if the library function putenv is available on your system.
NO_SYS_SIGLIST
Define this if your system does not provide the variable sys_siglist.
DONT_DECLARE_SYS_SIGLIST
Define this if your system has the variable sys_siglist, and there is already a declaration of it in the system header files.
USE_PROTOTYPES
Define this to be 1 if you know that the host compiler supports prototypes, even if it doesn't define __STDC__, or define it to be 0 if you do not want any prototypes used in compiling GNU CC. If `USE_PROTOTYPES' is not defined, it will be determined automatically whether your compiler supports prototypes by checking if `__STDC__' is defined.
NO_MD_PROTOTYPES
Define this if you wish suppression of prototypes generated from the machine description file, but to use other prototypes within GNU CC. If `USE_PROTOTYPES' is defined to be 0, or the host compiler does not support prototypes, this macro has no effect.
MD_CALL_PROTOTYPES
Define this if you wish to generate prototypes for the gen_call or gen_call_value functions generated from the machine description file. If `USE_PROTOTYPES' is defined to be 0, or the host compiler does not support prototypes, or `NO_MD_PROTOTYPES' is defined, this macro has no effect. As soon as all of the machine descriptions are modified to have the appropriate number of arguments, this macro will be removed.

Some systems do provide this variable, but with a different name such as _sys_siglist. On these systems, you can define sys_siglist as a macro which expands into the name actually provided.

NO_STAB_H
Define this if your system does not have the include file `stab.h'. If `USG' is defined, `NO_STAB_H' is assumed.

In addition, configuration files for system V define bcopy, bzero and bcmp as aliases. Some files define alloca as a macro when compiled with GNU CC, in order to take advantage of the benefit of GNU CC's built-in alloca.