fragments.texi, [...]: Update to reflect current (lack of) need for host configuration by hand.

* doc/fragments.texi, doc/hostconfig.texi: Update to reflect
	current (lack of) need for host configuration by hand.

	* doc/gccint.texi, doc/rtl.texi, doc/tm.texi: Adjust cross
	references.  Documentation of some target macros moved from
	hostconfig.texi to tm.texi.

From-SVN: r49142
This commit is contained in:
Zack Weinberg 2002-01-23 17:30:28 +00:00 committed by Zack Weinberg
parent d419f1cdf0
commit 807633e5a3
6 changed files with 163 additions and 221 deletions

View File

@ -1,3 +1,12 @@
2002-01-23 Zack Weinberg <zack@codesourcery.com>
* doc/fragments.texi, doc/hostconfig.texi: Update to reflect
current (lack of) need for host configuration by hand.
* doc/gccint.texi, doc/rtl.texi, doc/tm.texi: Adjust cross
references. Documentation of some target macros moved from
hostconfig.texi to tm.texi.
2002-01-23 Will Cohen <wcohen@redhat.com> 2002-01-23 Will Cohen <wcohen@redhat.com>
* config/arm/arm.h (THUMB_FUNCTION_PROFILER): Define if not currently * config/arm/arm.h (THUMB_FUNCTION_PROFILER): Define if not currently

View File

@ -7,26 +7,36 @@
@chapter Makefile Fragments @chapter Makefile Fragments
@cindex makefile fragment @cindex makefile fragment
When you configure GCC using the @file{configure} script, When you configure GCC using the @file{configure} script, it will
it will construct the file @file{Makefile} from construct the file @file{Makefile} from the template file
the template file @file{Makefile.in}. When it does this, it will @file{Makefile.in}. When it does this, it can incorporate makefile
incorporate makefile fragment files from the @file{config} directory, fragments from the @file{config} directory. These are used to set
named @file{t-@var{target}} and @file{x-@var{host}}. If these files do Makefile parameters that are not amenable to being calculated by
not exist, it means nothing needs to be added for a given target or autoconf. The list of fragments to incorporate is set by
host. @file{config.gcc}; @xref{System Config}.
Fragments are named either @file{t-@var{target}} or @file{x-@var{host}},
depending on whether they are relevant to configuring GCC to produce
code for a particular target, or to configuring GCC to run on a
particular host. Here @var{target} and @var{host} are mnemonics
which usually have some relationship to the canonical system name, but
no formal connection.
If these files do not exist, it means nothing needs to be added for a
given target or host. Most targets need a few @file{t-@var{target}}
fragments, but needing @file{x-@var{host}} fragments is rare.
@menu @menu
* Target Fragment:: Writing the @file{t-@var{target}} file. * Target Fragment:: Writing @file{t-@var{target}} files.
* Host Fragment:: Writing the @file{x-@var{host}} file. * Host Fragment:: Writing @file{x-@var{host}} files.
@end menu @end menu
@node Target Fragment @node Target Fragment
@section The Target Makefile Fragment @section Target Makefile Fragments
@cindex target makefile fragment @cindex target makefile fragment
@cindex @file{t-@var{target}} @cindex @file{t-@var{target}}
The target makefile fragment, @file{t-@var{target}}, defines special Target makefile fragments can set these Makefile variables.
target dependent variables and targets used in the @file{Makefile}:
@table @code @table @code
@findex LIBGCC2_CFLAGS @findex LIBGCC2_CFLAGS
@ -141,19 +151,40 @@ of options to be used for all builds.
@end table @end table
@node Host Fragment @node Host Fragment
@section The Host Makefile Fragment @section Host Makefile Fragments
@cindex host makefile fragment @cindex host makefile fragment
@cindex @file{x-@var{host}} @cindex @file{x-@var{host}}
The host makefile fragment, @file{x-@var{host}}, defines special host The use of @file{x-@var{host}} fragments is discouraged. You should do
dependent variables and targets used in the @file{Makefile}: so only if there is no other mechanism to get the behavior desired.
Host fragments should never forcibly override variables set by the
configure script, as they may have been adjusted by the user.
Variables provided for host fragments to set include:
@table @code @table @code
@findex CC
@item CC
The compiler to use when building the first stage.
@findex INSTALL @item X_CFLAGS
@item INSTALL @itemx X_CPPFLAGS
The install program to use. These are extra flags to pass to the C compiler and preprocessor,
respectively. They are used both when building GCC, and when compiling
things with the just-built GCC.
@item XCFLAGS
These are extra flags to use when building the compiler. They are not
used when compiling @file{libgcc.a}. However, they @emph{are} used when
recompiling the compiler with itself in later stages of a bootstrap.
@item BOOT_LDFLAGS
Flags to be passed to the linker when recompiling the compiler with
itself in later stages of a bootstrap. You might need to use this if,
for instance, one of the front ends needs more text space than the
linker provides by default.
@item EXTRA_PROGRAMS
A list of additional programs required to use the compiler on this host,
which should be compiled with GCC and installed alongside the front
ends. If you set this variable, you must also provide rules to build
the extra programs.
@end table @end table

View File

@ -165,7 +165,7 @@ Additional tutorial information is linked to from
* RTL:: The intermediate representation that most passes work on. * RTL:: The intermediate representation that most passes work on.
* Machine Desc:: How to write machine description instruction patterns. * Machine Desc:: How to write machine description instruction patterns.
* Target Macros:: How to write the machine description C macros and functions. * Target Macros:: How to write the machine description C macros and functions.
* Config:: Writing the @file{xm-@var{machine}.h} file. * Host Config:: Writing the @file{xm-@var{machine}.h} file.
* Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. * Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files.
* Collect2:: How @code{collect2} works; how it finds @code{ld}. * Collect2:: How @code{collect2} works; how it finds @code{ld}.
* Header Dirs:: Understanding the standard header file directories. * Header Dirs:: Understanding the standard header file directories.

View File

@ -1,38 +1,32 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
@c 1999, 2000, 2001 Free Software Foundation, Inc. @c 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
@c This is part of the GCC manual. @c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi. @c For copying conditions, see the file gcc.texi.
@node Config @node Host Config
@chapter The Configuration File @chapter Host Configuration Headers
@cindex configuration file @cindex configuration file
@cindex @file{xm-@var{machine}.h} @cindex @file{xm-@var{machine}.h}
The configuration file @file{xm-@var{machine}.h} contains macro Host configuration headers contain macro definitions that describe the
definitions that describe the machine and system on which the compiler machine and system on which the compiler is running. They are usually
is running, unlike the definitions in @file{@var{machine}.h}, which unnecessary. Most of the things GCC needs to know about the host
describe the machine for which the compiler is producing output. Most system can be deduced by the @command{configure} script.
of the values in @file{xm-@var{machine}.h} are actually the same on all
machines that GCC runs on, so large parts of all configuration files
are identical. But there are some macros that vary:
@table @code If your host does need a special configuration header, it should be
@findex USG named @file{xm-@var{machine}.h}, where @var{machine} is a short mnemonic
@item USG for the machine. Here are some macros which this header can define.
Define this macro if the host system is System V@.
@findex VMS @ftable @code
@item VMS @item VMS
Define this macro if the host system is VMS@. Define this macro if the host system is VMS@.
@findex FATAL_EXIT_CODE
@item FATAL_EXIT_CODE @item FATAL_EXIT_CODE
A C expression for the status code to be returned when the compiler A C expression for the status code to be returned when the compiler
exits after serious errors. The default is the system-provided macro exits after serious errors. The default is the system-provided macro
@samp{EXIT_FAILURE}, or @samp{1} if the system doesn't define that @samp{EXIT_FAILURE}, or @samp{1} if the system doesn't define that
macro. Define this macro only if these defaults are incorrect. macro. Define this macro only if these defaults are incorrect.
@findex SUCCESS_EXIT_CODE
@item SUCCESS_EXIT_CODE @item SUCCESS_EXIT_CODE
A C expression for the status code to be returned when the compiler A C expression for the status code to be returned when the compiler
exits without serious errors. (Warnings are not serious errors.) The exits without serious errors. (Warnings are not serious errors.) The
@ -40,189 +34,66 @@ default is the system-provided macro @samp{EXIT_SUCCESS}, or @samp{0} if
the system doesn't define that macro. Define this macro only if these the system doesn't define that macro. Define this macro only if these
defaults are incorrect. defaults are incorrect.
@findex HOST_WORDS_BIG_ENDIAN
@item HOST_WORDS_BIG_ENDIAN
Defined if the host machine stores words of multi-word values in
big-endian order. (GCC does not depend on the host byte ordering
within a word.)
@findex HOST_FLOAT_WORDS_BIG_ENDIAN
@item HOST_FLOAT_WORDS_BIG_ENDIAN
Define this macro to be 1 if the host machine stores @code{DFmode},
@code{XFmode} or @code{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.
@findex HOST_FLOAT_FORMAT
@item HOST_FLOAT_FORMAT
A numeric code distinguishing the floating point format for the host
machine. See @code{TARGET_FLOAT_FORMAT} in @ref{Storage Layout} for the
alternatives and default.
@findex HOST_BITS_PER_CHAR
@item HOST_BITS_PER_CHAR
A C expression for the number of bits in @code{char} on the host
machine.
@findex HOST_BITS_PER_SHORT
@item HOST_BITS_PER_SHORT
A C expression for the number of bits in @code{short} on the host
machine.
@findex HOST_BITS_PER_INT
@item HOST_BITS_PER_INT
A C expression for the number of bits in @code{int} on the host
machine.
@findex HOST_BITS_PER_LONG
@item HOST_BITS_PER_LONG
A C expression for the number of bits in @code{long} on the host
machine.
@findex HOST_BITS_PER_LONGLONG
@item HOST_BITS_PER_LONGLONG
A C expression for the number of bits in @code{long long} on the host
machine.
@findex ONLY_INT_FIELDS
@item ONLY_INT_FIELDS
Define this macro to indicate that the host compiler only supports
@code{int} bit-fields, rather than other integral types, including
@code{enum}, as do most C compilers.
@findex OBSTACK_CHUNK_SIZE
@item 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.
@findex OBSTACK_CHUNK_ALLOC
@item OBSTACK_CHUNK_ALLOC
The function used to allocate obstack chunks.
If you don't define this, @code{xmalloc} is used.
@findex OBSTACK_CHUNK_FREE
@item OBSTACK_CHUNK_FREE
The function used to free obstack chunks.
If you don't define this, @code{free} is used.
@findex USE_C_ALLOCA
@item USE_C_ALLOCA @item USE_C_ALLOCA
Define this macro to indicate that the compiler is running with the Define this macro if GCC should use the C implementation of @code{alloca}
@code{alloca} implemented in C@. This version of @code{alloca} can be provided by @file{libiberty.a}. This only affects how some parts of the
found in the file @file{alloca.c}; to use it, you must also alter the compiler itself allocate memory. It does not change code generation.
@file{Makefile} variable @code{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: When GCC is built with a compiler other than itself, the C @code{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 @code{alloca} can possibly work. For instance, if a system
has a small limit on the size of the stack, GCC's builtin @code{alloca}
will not work reliably.
@example @item HAVE_DOS_BASED_FILE_SYSTEM
#ifndef __GNUC__ Define this macro if the host file system obeys the semantics defined by
#define USE_C_ALLOCA MS-DOS instead of Unix. DOS file systems are case insensitive, file
#else specifications may begin with a drive letter, and both forward slash and
#define alloca __builtin_alloca backslash (@samp{/} and @samp{\}) are directory separators. If you
#endif define this macro, you probably need to define the next three macros too.
@end example
@noindent
so that when the compiler is compiled with GCC it uses the more
efficient built-in @code{alloca} function.
@item FUNCTION_CONVERSION_BUG
@findex 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.
@findex MULTIBYTE_CHARS
@item MULTIBYTE_CHARS
Define this macro to enable support for multibyte characters in the
input to GCC@. This requires that the host system support the ISO C
library functions for converting multibyte characters to wide
characters.
@findex POSIX
@item POSIX
Define this if your system is POSIX.1 compliant.
@findex PATH_SEPARATOR
@item PATH_SEPARATOR @item PATH_SEPARATOR
Define this macro to be a C character constant representing the If defined, this macro should expand to a character constant specifying
character used to separate components in paths. The default value is the separator for elements of search paths. The default value is a
the colon character colon (@samp{:}). DOS-based systems usually use semicolon (@samp{;}).
@findex DIR_SEPARATOR
@item DIR_SEPARATOR @item DIR_SEPARATOR
If your system uses some character other than slash to separate @itemx DIR_SEPARATOR_2
directory names within a file specification, define this macro to be a C If defined, these macros expand to character constants specifying
character constant specifying that character. When GCC displays file separators for directory names within a file specification. They are
names, the character you specify will be used. GCC will test for used somewhat inconsistently throughout the compiler. If your system
both slash and the character you specify when parsing filenames. 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 @code{DIR_SEPARATOR} to @samp{/}
and @code{DIR_SEPARATOR_2} to @samp{\}.
@findex DIR_SEPARATOR_2
@item DIR_SEPARATOR_2
If your system uses an alternative character other than
@samp{DIR_SEPARATOR} to separate directory names within a file
specification, define this macro to be a C character constant specifying
that character. If you define this macro, GCC will test for slash,
@samp{DIR_SEPARATOR}, and @samp{DIR_SEPARATOR_2} when parsing filenames.
@findex TARGET_OBJECT_SUFFIX
@item TARGET_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for object
files on your target machine. If you do not define this macro, GCC will
use @samp{.o} as the suffix for object files.
@findex TARGET_EXECUTABLE_SUFFIX
@item TARGET_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix to be
automatically added to executable files on your target machine. If you
do not define this macro, GCC will use the null string as the suffix for
executable files.
@findex HOST_OBJECT_SUFFIX
@item HOST_OBJECT_SUFFIX @item HOST_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for object Define this macro to be a C string representing the suffix for object
files on your host machine (@samp{xm-*.h}). If you do not define this files on your host machine. If you do not define this macro, GCC will
macro, GCC will use @samp{.o} as the suffix for object files. use @samp{.o} as the suffix for object files.
@findex HOST_EXECUTABLE_SUFFIX
@item HOST_EXECUTABLE_SUFFIX @item HOST_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix for Define this macro to be a C string representing the suffix for
executable files on your host machine (@samp{xm-*.h}). If you do not executable files on your host machine. If you do not define this macro,
define this macro, GCC will use the null string as the suffix for GCC will use the null string as the suffix for executable files.
executable files.
@findex HOST_BIT_BUCKET
@item HOST_BIT_BUCKET @item HOST_BIT_BUCKET
The name of a file or file-like object on the host system which acts as A pathname defined by the host operating system, which can be opened as
a ``bit bucket''. If you do not define this macro, GCC will use a file and written to, but all the information written is discarded.
@samp{/dev/null} as the bit bucket. If the target does not support a This is commonly known as a @dfn{bit bucket} or @dfn{null device}. If
bit bucket, this should be defined to the null string, or some other you do not define this macro, GCC will use @samp{/dev/null} as the bit
invalid filename. If the bit bucket is not writable, GCC will use a bucket. If the host does not support a bit bucket, define this macro to
temporary file instead. an invalid filename.
@findex COLLECT_EXPORT_LIST
@item COLLECT_EXPORT_LIST
If defined, @code{collect2} will scan the individual object files
specified on its command line and create an export list for the linker.
Define this macro for systems like AIX, where the linker discards
object files that are not referenced from @code{main} and uses export
lists.
@findex COLLECT2_HOST_INITIALIZATION
@item COLLECT2_HOST_INITIALIZATION @item COLLECT2_HOST_INITIALIZATION
If defined, a C statement (sans semicolon) that performs host-dependent If defined, a C statement (sans semicolon) that performs host-dependent
initialization when @code{collect2} is being initialized. initialization when @code{collect2} is being initialized.
@findex GCC_DRIVER_HOST_INITIALIZATION
@item GCC_DRIVER_HOST_INITIALIZATION @item GCC_DRIVER_HOST_INITIALIZATION
If defined, a C statement (sans semicolon) that performs host-dependent If defined, a C statement (sans semicolon) that performs host-dependent
initialization when a compilation driver is being initialized. initialization when a compilation driver is being initialized.
@findex UPDATE_PATH_HOST_CANONICALIZE
@item UPDATE_PATH_HOST_CANONICALIZE (@var{path}) @item UPDATE_PATH_HOST_CANONICALIZE (@var{path})
If defined, a C statement (sans semicolon) that performs host-dependent If defined, a C statement (sans semicolon) that performs host-dependent
canonicalization when a path used in a compilation driver or canonicalization when a path used in a compilation driver or
@ -231,19 +102,29 @@ canonicalized. If the C statement does canonicalize @var{path} into a
different buffer, the old path should be freed and the new buffer should different buffer, the old path should be freed and the new buffer should
have been allocated with malloc. have been allocated with malloc.
@findex DUMPFILE_FORMAT
@item DUMPFILE_FORMAT @item DUMPFILE_FORMAT
Define this macro to be a C string representing the format to use Define this macro to be a C string representing the format to use for
for constructing the index part of the dump file name on your host machine. constructing the index part of debugging dump file names. The resultant
If you do not define this macro, GCC will use @samp{.%02d.}. The full string must fit in fifteen bytes. The full filename will be the
filename will be the prefix of the assembler file name concatenated with concatenation of: the prefix of the assembler file name, the string
the string resulting from applying this format concatenated with a string resulting from applying this format to an index number, and a string
unique to each dump file kind, e.g. @samp{rtl}. unique to each dump file kind, e.g. @samp{rtl}.
@end table
@findex bzero If you do not define this macro, GCC will use @samp{.%02d.}. You should
@findex bcmp define this macro if using the default will create an invalid file name.
In addition, configuration files for system V define @code{bcopy},
@code{bzero} and @code{bcmp} as aliases. Some files define @code{alloca} @item SMALL_ARG_MAX
as a macro when compiled with GCC, in order to take advantage of the Define this macro if the host system has a small limit on the total
benefit of GCC's built-in @code{alloca}. size of an argument vector. This causes the driver to take more care
not to pass unnecessary arguments to subprocesses.
@end ftable
In addition, if @command{configure} generates an incorrect definition of
any of the macros in @file{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 @command{configure}.
If you need to define only a few of these macros, and they have simple
definitions, consider using the @code{xm_defines} variable in your
@file{config.gcc} entry instead of creating a host configuration header.
@xref{System Config}.

View File

@ -57,9 +57,9 @@ expression (``RTX'', for short) is a C structure, but it is usually
referred to with a pointer; a type that is given the typedef name referred to with a pointer; a type that is given the typedef name
@code{rtx}. @code{rtx}.
An integer is simply an @code{int}; their written form uses decimal digits. An integer is simply an @code{int}; their written form uses decimal
A wide integer is an integral object whose type is @code{HOST_WIDE_INT} digits. A wide integer is an integral object whose type is
(@pxref{Config}); their written form uses decimal digits. @code{HOST_WIDE_INT}; their written form uses decimal digits.
A string is a sequence of characters. In core it is represented as a A string is a sequence of characters. In core it is represented as a
@code{char *} in usual C fashion, and it is written in C syntax as well. @code{char *} in usual C fashion, and it is written in C syntax as well.

View File

@ -1313,7 +1313,7 @@ need to define this macro when the format is IEEE@.
@findex VAX_FLOAT_FORMAT @findex VAX_FLOAT_FORMAT
@item VAX_FLOAT_FORMAT @item VAX_FLOAT_FORMAT
This code indicates the peculiar format used on the VAX. This code indicates the ``D float'' format used on the VAX@.
@findex IBM_FLOAT_FORMAT @findex IBM_FLOAT_FORMAT
@item IBM_FLOAT_FORMAT @item IBM_FLOAT_FORMAT
@ -1328,14 +1328,14 @@ This code indicates the format used on the TMS320C3x/C4x.
This code indicates any other format. This code indicates any other format.
@end table @end table
The value of this macro is compared with @code{HOST_FLOAT_FORMAT} The value of this macro is compared with @code{HOST_FLOAT_FORMAT}, which
(@pxref{Config}) to determine whether the target machine has the same is defined by the @command{configure} script, to determine whether the
format as the host machine. If any other formats are actually in use on target machine has the same format as the host machine. If any other
supported machines, new codes should be defined for them. formats are actually in use on supported machines, new codes should be
defined for them.
The ordering of the component words of floating point values stored in The ordering of the component words of floating point values stored in
memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN} for the target memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN}.
machine and @code{HOST_FLOAT_WORDS_BIG_ENDIAN} for the host.
@end table @end table
@ -8600,4 +8600,25 @@ You may use @code{current_function_leaf_function} in the definition of the
macro, functions that use @code{REG_N_SETS}, to determine if the hard macro, functions that use @code{REG_N_SETS}, to determine if the hard
register in question will not be clobbered. register in question will not be clobbered.
@findex TARGET_OBJECT_SUFFIX
@item TARGET_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for object
files on your target machine. If you do not define this macro, GCC will
use @samp{.o} as the suffix for object files.
@findex TARGET_EXECUTABLE_SUFFIX
@item TARGET_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix to be
automatically added to executable files on your target machine. If you
do not define this macro, GCC will use the null string as the suffix for
executable files.
@findex COLLECT_EXPORT_LIST
@item COLLECT_EXPORT_LIST
If defined, @code{collect2} will scan the individual object files
specified on its command line and create an export list for the linker.
Define this macro for systems like AIX, where the linker discards
object files that are not referenced from @code{main} and uses export
lists.
@end table @end table