Function: unsigned accum __satfractdiusa (long A) -- Runtime Function: unsigned long accum __satfractdiuda (long A) -- Runtime Function: unsigned long long accum __satfractdiuta (long A) -- Runtime Function: short fract __satfracttiqq (long long A) -- Runtime Function: fract __satfracttihq (long long A) -- Runtime Function: long fract __satfracttisq (long long A) -- Runtime Function: long long fract __satfracttidq (long long A) -- Runtime Function: short accum __satfracttiha (long long A) -- Runtime Function: accum __satfracttisa (long long A) -- Runtime Function: long accum __satfracttida (long long A) -- Runtime Function: long long accum __satfracttita (long long A) -- Runtime Function: unsigned short fract __satfracttiuqq (long long A) -- Runtime Function: unsigned fract __satfracttiuhq (long long A) -- Runtime Function: unsigned long fract __satfracttiusq (long long A) -- Runtime Function: unsigned long long fract __satfracttiudq (long long A) -- Runtime Function: unsigned short accum __satfracttiuha (long long A) -- Runtime Function: unsigned accum __satfracttiusa (long long A) -- Runtime Function: unsigned long accum __satfracttiuda (long long A) -- Runtime Function: unsigned long long accum __satfracttiuta (long long A) -- Runtime Function: short fract __satfractsfqq (float A) -- Runtime Function: fract __satfractsfhq (float A) -- Runtime Function: long fract __satfractsfsq (float A) -- Runtime Function: long long fract __satfractsfdq (float A) -- Runtime Function: short accum __satfractsfha (float A) -- Runtime Function: accum __satfractsfsa (float A) -- Runtime Function: long accum __satfractsfda (float A) -- Runtime Function: long long accum __satfractsfta (float A) -- Runtime Function: unsigned short fract __satfractsfuqq (float A) -- Runtime Function: unsigned fract __satfractsfuhq (float A) -- Runtime Function: unsigned long fract __satfractsfusq (float A) -- Runtime Function: unsigned long long fract __satfractsfudq (float A) -- Runtime Function: unsigned short accum __satfractsfuha (float A) -- Runtime Function: unsigned accum __satfractsfusa (float A) -- Runtime Function: unsigned long accum __satfractsfuda (float A) -- Runtime Function: unsigned long long accum __satfractsfuta (float A) -- Runtime Function: short fract __satfractdfqq (double A) -- Runtime Function: fract __satfractdfhq (double A) -- Runtime Function: long fract __satfractdfsq (double A) -- Runtime Function: long long fract __satfractdfdq (double A) -- Runtime Function: short accum __satfractdfha (double A) -- Runtime Function: accum __satfractdfsa (double A) -- Runtime Function: long accum __satfractdfda (double A) -- Runtime Function: long long accum __satfractdfta (double A) -- Runtime Function: unsigned short fract __satfractdfuqq (double A) -- Runtime Function: unsigned fract __satfractdfuhq (double A) -- Runtime Function: unsigned long fract __satfractdfusq (double A) -- Runtime Function: unsigned long long fract __satfractdfudq (double A) -- Runtime Function: unsigned short accum __satfractdfuha (double A) -- Runtime Function: unsigned accum __satfractdfusa (double A) -- Runtime Function: unsigned long accum __satfractdfuda (double A) -- Runtime Function: unsigned long long accum __satfractdfuta (double A) The functions convert from fractional and signed non-fractionals to fractionals, with saturation. -- Runtime Function: unsigned char __fractunsqqqi (short fract A) -- Runtime Function: unsigned short __fractunsqqhi (short fract A) -- Runtime Function: unsigned int __fractunsqqsi (short fract A) -- Runtime Function: unsigned long __fractunsqqdi (short fract A) -- Runtime Function: unsigned long long __fractunsqqti (short fract A) -- Runtime Function: unsigned char __fractunshqqi (fract A) -- Runtime Function: unsigned short __fractunshqhi (fract A) -- Runtime Function: unsigned int __fractunshqsi (fract A) -- Runtime Function: unsigned long __fractunshqdi (fract A) -- Runtime Function: unsigned long long __fractunshqti (fract A) -- Runtime Function: unsigned char __fractunssqqi (long fract A) -- Runtime Function: unsigned short __fractunssqhi (long fract A) -- Runtime Function: unsigned int __fractunssqsi (long fract A) -- Runtime Function: unsigned long __fractunssqdi (long fract A) -- Runtime Function: unsigned long long __fractunssqti (long fract A) -- Runtime Function: unsigned char __fractunsdqqi (long long fract A) -- Runtime Function: unsigned short __fractunsdqhi (long long fract A) -- Runtime Function: unsigned int __fractunsdqsi (long long fract A) -- Runtime Function: unsigned long __fractunsdqdi (long long fract A) -- Runtime Function: unsigned long long __fractunsdqti (long long fract A) -- Runtime Function: unsigned char __fractunshaqi (short accum A) -- Runtime Function: unsigned short __fractunshahi (short accum A) -- Runtime Function: unsigned int __fractunshasi (short accum A) -- Runtime Function: unsigned long __fractunshadi (short accum A) -- Runtime Function: unsigned long long __fractunshati (short accum A) -- Runtime Function: unsigned char __fractunssaqi (accum A) -- Runtime Function: unsigned short __fractunssahi (accum A) -- Runtime Function: unsigned int __fractunssasi (accum A) -- Runtime Function: unsigned long __fractunssadi (accum A) -- Runtime Function: unsigned long long __fractunssati (accum A) -- Runtime Function: unsigned char __fractunsdaqi (long accum A) -- Runtime Function: unsigned short __fractunsdahi (long accum A) -- Runtime Function: unsigned int __fractunsdasi (long accum A) -- Runtime Function: unsigned long __fractunsdadi (long accum A) -- Runtime Function: unsigned long long __fractunsdati (long accum A) -- Runtime Function: unsigned char __fractunstaqi (long long accum A) -- Runtime Function: unsigned short __fractunstahi (long long accum A) -- Runtime Function: unsigned int __fractunstasi (long long accum A) -- Runtime Function: unsigned long __fractunstadi (long long accum A) -- Runtime Function: unsigned long long __fractunstati (long long accum A) -- Runtime Function: unsigned char __fractunsuqqqi (unsigned short fract A) -- Runtime Function: unsigned short __fractunsuqqhi (unsigned short fract A) -- Runtime Function: unsigned int __fractunsuqqsi (unsigned short fract A) -- Runtime Function: unsigned long __fractunsuqqdi (unsigned short fract A) -- Runtime Function: unsigned long long __fractunsuqqti (unsigned short fract A) -- Runtime Function: unsigned char __fractunsuhqqi (unsigned fract A) -- Runtime Function: unsigned short __fractunsuhqhi (unsigned fract A) -- Runtime Function: unsigned int __fractunsuhqsi (unsigned fract A) -- Runtime Function: unsigned long __fractunsuhqdi (unsigned fract A) -- Runtime Function: unsigned long long __fractunsuhqti (unsigned fract A) -- Runtime Function: unsigned char __fractunsusqqi (unsigned long fract A) -- Runtime Function: unsigned short __fractunsusqhi (unsigned long fract A) -- Runtime Function: unsigned int __fractunsusqsi (unsigned long fract A) -- Runtime Function: unsigned long __fractunsusqdi (unsigned long fract A) -- Runtime Function: unsigned long long __fractunsusqti (unsigned long fract A) -- Runtime Function: unsigned char __fractunsudqqi (unsigned long long fract A) -- Runtime Function: unsigned short __fractunsudqhi (unsigned long long fract A) -- Runtime Function: unsigned int __fractunsudqsi (unsigned long long fract A) -- Runtime Function: unsigned long __fractunsudqdi (unsigned long long fract A) -- Runtime Function: unsigned long long __fractunsudqti (unsigned long long fract A) -- Runtime Function: unsigned char __fractunsuhaqi (unsigned short accum A) -- Runtime Function: unsigned short __fractunsuhahi (unsigned short accum A) -- Runtime Function: unsigned int __fractunsuhasi (unsigned short accum A) -- Runtime Function: unsigned long __fractunsuhadi (unsigned short accum A) -- Runtime Function: unsigned long long __fractunsuhati (unsigned short accum A) -- Runtime Function: unsigned char __fractunsusaqi (unsigned accum A) -- Runtime Function: unsigned short __fractunsusahi (unsigned accum A) -- Runtime Function: unsigned int __fractunsusasi (unsigned accum A) -- Runtime Function: unsigned long __fractunsusadi (unsigned accum A) -- Runtime Function: unsigned long long __fractunsusati (unsigned accum A) -- Runtime Function: unsigned char __fractunsudaqi (unsigned long accum A) -- Runtime Function: unsigned short __fractunsudahi (unsigned long accum A) -- Runtime Function: unsigned int __fractunsudasi (unsigned long accum A) -- Runtime Function: unsigned long __fractunsudadi (unsigned long accum A) -- Runtime Function: unsigned long long __fractunsudati (unsigned long accum A) -- Runtime Function: unsigned char __fractunsutaqi (unsigned long long accum A) -- Runtime Function: unsigned short __fractunsutahi (unsigned long long accum A) -- Runtime Function: unsigned int __fractunsutasi (unsigned long long accum A) -- Runtime Function: unsigned long __fractunsutadi (unsigned long long accum A) -- Runtime Function: unsigned long long __fractunsutati (unsigned long long accum A) -- Runtime Function: short fract __fractunsqiqq (unsigned char A) -- Runtime Function: fract __fractunsqihq (unsigned char A) -- Runtime Function: long fract __fractunsqisq (unsigned char A) -- Runtime Function: long long fract __fractunsqidq (unsigned char A) -- Runtime Function: short accum __fractunsqiha (unsigned char A) -- Runtime Function: accum __fractunsqisa (unsigned char A) -- Runtime Function: long accum __fractunsqida (unsigned char A) -- Runtime Function: long long accum __fractunsqita (unsigned char A) -- Runtime Function: unsigned short fract __fractunsqiuqq (unsigned char A) -- Runtime Function: unsigned fract __fractunsqiuhq (unsigned char A) -- Runtime Function: unsigned long fract __fractunsqiusq (unsigned char A) -- Runtime Function: unsigned long long fract __fractunsqiudq (unsigned char A) -- Runtime Function: unsigned short accum __fractunsqiuha (unsigned char A) -- Runtime Function: unsigned accum __fractunsqiusa (unsigned char A) -- Runtime Function: unsigned long accum __fractunsqiuda (unsigned char A) -- Runtime Function: unsigned long long accum __fractunsqiuta (unsigned char A) -- Runtime Function: short fract __fractunshiqq (unsigned short A) -- Runtime Function: fract __fractunshihq (unsigned short A) -- Runtime Function: long fract __fractunshisq (unsigned short A) -- Runtime Function: long long fract __fractunshidq (unsigned short A) -- Runtime Function: short accum __fractunshiha (unsigned short A) -- Runtime Function: accum __fractunshisa (unsigned short A) -- Runtime Function: long accum __fractunshida (unsigned short A) -- Runtime Function: long long accum __fractunshita (unsigned short A) -- Runtime Function: unsigned short fract __fractunshiuqq (unsigned short A) -- Runtime Function: unsigned fract __fractunshiuhq (unsigned short A) -- Runtime Function: unsigned long fract __fractunshiusq (unsigned short A) -- Runtime Function: unsigned long long fract __fractunshiudq (unsigned short A) -- Runtime Function: unsigned short accum __fractunshiuha (unsigned short A) -- Runtime Function: unsigned accum __fractunshiusa (unsigned short A) -- Runtime Function: unsigned long accum __fractunshiuda (unsigned short A) -- Runtime Function: unsigned long long accum __fractunshiuta (unsigned short A) -- Runtime Function: short fract __fractunssiqq (unsigned int A) -- Runtime Function: fract __fractunssihq (unsigned int A) -- Runtime Function: long fract __fractunssisq (unsigned int A) -- Runtime Function: long long fract __fractunssidq (unsigned int A) -- Runtime Function: short accum __fractunssiha (unsigned int A) -- Runtime Function: accum __fractunssisa (unsigned int A) -- Runtime Function: long accum __fractunssida (unsigned int A) -- Runtime Function: long long accum __fractunssita (unsigned int A) -- Runtime Function: unsigned short fract __fractunssiuqq (unsigned int A) -- Runtime Function: unsigned fract __fractunssiuhq (unsigned int A) -- Runtime Function: unsigned long fract __fractunssiusq (unsigned int A) -- Runtime Function: unsigned long long fract __fractunssiudq (unsigned int A) -- Runtime Function: unsigned short accum __fractunssiuha (unsigned int A) -- Runtime Function: unsigned accum __fractunssiusa (unsigned int A) -- Runtime Function: unsigned long accum __fractunssiuda (unsigned int A) -- Runtime Function: unsigned long long accum __fractunssiuta (unsigned int A) -- Runtime Function: short fract __fractunsdiqq (unsigned long A) -- Runtime Function: fract __fractunsdihq (unsigned long A) -- Runtime Function: long fract __fractunsdisq (unsigned long A) -- Runtime Function: long long fract __fractunsdidq (unsigned long A) -- Runtime Function: short accum __fractunsdiha (unsigned long A) -- Runtime Function: accum __fractunsdisa (unsigned long A) -- Runtime Function: long accum __fractunsdida (unsigned long A) -- Runtime Function: long long accum __fractunsdita (unsigned long A) -- Runtime Function: unsigned short fract __fractunsdiuqq (unsigned long A) -- Runtime Function: unsigned fract __fractunsdiuhq (unsigned long A) -- Runtime Function: unsigned long fract __fractunsdiusq (unsigned long A) -- Runtime Function: unsigned long long fract __fractunsdiudq (unsigned long A) -- Runtime Function: unsigned short accum __fractunsdiuha (unsigned long A) -- Runtime Function: unsigned accum __fractunsdiusa (unsigned long A) -- Runtime Function: unsigned long accum __fractunsdiuda (unsigned long A) -- Runtime Function: unsigned long long accum __fractunsdiuta (unsigned long A) -- Runtime Function: short fract __fractunstiqq (unsigned long long A) -- Runtime Function: fract __fractunstihq (unsigned long long A) -- Runtime Function: long fract __fractunstisq (unsigned long long A) -- Runtime Function: long long fract __fractunstidq (unsigned long long A) -- Runtime Function: short accum __fractunstiha (unsigned long long A) -- Runtime Function: accum __fractunstisa (unsigned long long A) -- Runtime Function: long accum __fractunstida (unsigned long long A) -- Runtime Function: long long accum __fractunstita (unsigned long long A) -- Runtime Function: unsigned short fract __fractunstiuqq (unsigned long long A) -- Runtime Function: unsigned fract __fractunstiuhq (unsigned long long A) -- Runtime Function: unsigned long fract __fractunstiusq (unsigned long long A) -- Runtime Function: unsigned long long fract __fractunstiudq (unsigned long long A) -- Runtime Function: unsigned short accum __fractunstiuha (unsigned long long A) -- Runtime Function: unsigned accum __fractunstiusa (unsigned long long A) -- Runtime Function: unsigned long accum __fractunstiuda (unsigned long long A) -- Runtime Function: unsigned long long accum __fractunstiuta (unsigned long long A) These functions convert from fractionals to unsigned non-fractionals; and from unsigned non-fractionals to fractionals, without saturation. -- Runtime Function: short fract __satfractunsqiqq (unsigned char A) -- Runtime Function: fract __satfractunsqihq (unsigned char A) -- Runtime Function: long fract __satfractunsqisq (unsigned char A) -- Runtime Function: long long fract __satfractunsqidq (unsigned char A) -- Runtime Function: short accum __satfractunsqiha (unsigned char A) -- Runtime Function: accum __satfractunsqisa (unsigned char A) -- Runtime Function: long accum __satfractunsqida (unsigned char A) -- Runtime Function: long long accum __satfractunsqita (unsigned char A) -- Runtime Function: unsigned short fract __satfractunsqiuqq (unsigned char A) -- Runtime Function: unsigned fract __satfractunsqiuhq (unsigned char A) -- Runtime Function: unsigned long fract __satfractunsqiusq (unsigned char A) -- Runtime Function: unsigned long long fract __satfractunsqiudq (unsigned char A) -- Runtime Function: unsigned short accum __satfractunsqiuha (unsigned char A) -- Runtime Function: unsigned accum __satfractunsqiusa (unsigned char A) -- Runtime Function: unsigned long accum __satfractunsqiuda (unsigned char A) -- Runtime Function: unsigned long long accum __satfractunsqiuta (unsigned char A) -- Runtime Function: short fract __satfractunshiqq (unsigned short A) -- Runtime Function: fract __satfractunshihq (unsigned short A) -- Runtime Function: long fract __satfractunshisq (unsigned short A) -- Runtime Function: long long fract __satfractunshidq (unsigned short A) -- Runtime Function: short accum __satfractunshiha (unsigned short A) -- Runtime Function: accum __satfractunshisa (unsigned short A) -- Runtime Function: long accum __satfractunshida (unsigned short A) -- Runtime Function: long long accum __satfractunshita (unsigned short A) -- Runtime Function: unsigned short fract __satfractunshiuqq (unsigned short A) -- Runtime Function: unsigned fract __satfractunshiuhq (unsigned short A) -- Runtime Function: unsigned long fract __satfractunshiusq (unsigned short A) -- Runtime Function: unsigned long long fract __satfractunshiudq (unsigned short A) -- Runtime Function: unsigned short accum __satfractunshiuha (unsigned short A) -- Runtime Function: unsigned accum __satfractunshiusa (unsigned short A) -- Runtime Function: unsigned long accum __satfractunshiuda (unsigned short A) -- Runtime Function: unsigned long long accum __satfractunshiuta (unsigned short A) -- Runtime Function: short fract __satfractunssiqq (unsigned int A) -- Runtime Function: fract __satfractunssihq (unsigned int A) -- Runtime Function: long fract __satfractunssisq (unsigned int A) -- Runtime Function: long long fract __satfractunssidq (unsigned int A) -- Runtime Function: short accum __satfractunssiha (unsigned int A) -- Runtime Function: accum __satfractunssisa (unsigned int A) -- Runtime Function: long accum __satfractunssida (unsigned int A) -- Runtime Function: long long accum __satfractunssita (unsigned int A) -- Runtime Function: unsigned short fract __satfractunssiuqq (unsigned int A) -- Runtime Function: unsigned fract __satfractunssiuhq (unsigned int A) -- Runtime Function: unsigned long fract __satfractunssiusq (unsigned int A) -- Runtime Function: unsigned long long fract __satfractunssiudq (unsigned int A) -- Runtime Function: unsigned short accum __satfractunssiuha (unsigned int A) -- Runtime Function: unsigned accum __satfractunssiusa (unsigned int A) -- Runtime Function: unsigned long accum __satfractunssiuda (unsigned int A) -- Runtime Function: unsigned long long accum __satfractunssiuta (unsigned int A) -- Runtime Function: short fract __satfractunsdiqq (unsigned long A) -- Runtime Function: fract __satfractunsdihq (unsigned long A) -- Runtime Function: long fract __satfractunsdisq (unsigned long A) -- Runtime Function: long long fract __satfractunsdidq (unsigned long A) -- Runtime Function: short accum __satfractunsdiha (unsigned long A) -- Runtime Function: accum __satfractunsdisa (unsigned long A) -- Runtime Function: long accum __satfractunsdida (unsigned long A) -- Runtime Function: long long accum __satfractunsdita (unsigned long A) -- Runtime Function: unsigned short fract __satfractunsdiuqq (unsigned long A) -- Runtime Function: unsigned fract __satfractunsdiuhq (unsigned long A) -- Runtime Function: unsigned long fract __satfractunsdiusq (unsigned long A) -- Runtime Function: unsigned long long fract __satfractunsdiudq (unsigned long A) -- Runtime Function: unsigned short accum __satfractunsdiuha (unsigned long A) -- Runtime Function: unsigned accum __satfractunsdiusa (unsigned long A) -- Runtime Function: unsigned long accum __satfractunsdiuda (unsigned long A) -- Runtime Function: unsigned long long accum __satfractunsdiuta (unsigned long A) -- Runtime Function: short fract __satfractunstiqq (unsigned long long A) -- Runtime Function: fract __satfractunstihq (unsigned long long A) -- Runtime Function: long fract __satfractunstisq (unsigned long long A) -- Runtime Function: long long fract __satfractunstidq (unsigned long long A) -- Runtime Function: short accum __satfractunstiha (unsigned long long A) -- Runtime Function: accum __satfractunstisa (unsigned long long A) -- Runtime Function: long accum __satfractunstida (unsigned long long A) -- Runtime Function: long long accum __satfractunstita (unsigned long long A) -- Runtime Function: unsigned short fract __satfractunstiuqq (unsigned long long A) -- Runtime Function: unsigned fract __satfractunstiuhq (unsigned long long A) -- Runtime Function: unsigned long fract __satfractunstiusq (unsigned long long A) -- Runtime Function: unsigned long long fract __satfractunstiudq (unsigned long long A) -- Runtime Function: unsigned short accum __satfractunstiuha (unsigned long long A) -- Runtime Function: unsigned accum __satfractunstiusa (unsigned long long A) -- Runtime Function: unsigned long accum __satfractunstiuda (unsigned long long A) -- Runtime Function: unsigned long long accum __satfractunstiuta (unsigned long long A) These functions convert from unsigned non-fractionals to fractionals, with saturation.  File: gccint.info, Node: Exception handling routines, Next: Miscellaneous routines, Prev: Fixed-point fractional library routines, Up: Libgcc 4.5 Language-independent routines for exception handling ======================================================== document me! _Unwind_DeleteException _Unwind_Find_FDE _Unwind_ForcedUnwind _Unwind_GetGR _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_GetRegionStart _Unwind_GetTextRelBase _Unwind_GetDataRelBase _Unwind_RaiseException _Unwind_Resume _Unwind_SetGR _Unwind_SetIP _Unwind_FindEnclosingFunction _Unwind_SjLj_Register _Unwind_SjLj_Unregister _Unwind_SjLj_RaiseException _Unwind_SjLj_ForcedUnwind _Unwind_SjLj_Resume __deregister_frame __deregister_frame_info __deregister_frame_info_bases __register_frame __register_frame_info __register_frame_info_bases __register_frame_info_table __register_frame_info_table_bases __register_frame_table  File: gccint.info, Node: Miscellaneous routines, Prev: Exception handling routines, Up: Libgcc 4.6 Miscellaneous runtime library routines ========================================== 4.6.1 Cache control functions ----------------------------- -- Runtime Function: void __clear_cache (char *BEG, char *END) This function clears the instruction cache between BEG and END.  File: gccint.info, Node: Languages, Next: Source Tree, Prev: Libgcc, Up: Top 5 Language Front Ends in GCC **************************** The interface to front ends for languages in GCC, and in particular the `tree' structure (*note Trees::), was initially designed for C, and many aspects of it are still somewhat biased towards C and C-like languages. It is, however, reasonably well suited to other procedural languages, and front ends for many such languages have been written for GCC. Writing a compiler as a front end for GCC, rather than compiling directly to assembler or generating C code which is then compiled by GCC, has several advantages: * GCC front ends benefit from the support for many different target machines already present in GCC. * GCC front ends benefit from all the optimizations in GCC. Some of these, such as alias analysis, may work better when GCC is compiling directly from source code then when it is compiling from generated C code. * Better debugging information is generated when compiling directly from source code than when going via intermediate generated C code. Because of the advantages of writing a compiler as a GCC front end, GCC front ends have also been created for languages very different from those for which GCC was designed, such as the declarative logic/functional language Mercury. For these reasons, it may also be useful to implement compilers created for specialized purposes (for example, as part of a research project) as GCC front ends.  File: gccint.info, Node: Source Tree, Next: Options, Prev: Languages, Up: Top 6 Source Tree Structure and Build System **************************************** This chapter describes the structure of the GCC source tree, and how GCC is built. The user documentation for building and installing GCC is in a separate manual (`http://gcc.gnu.org/install/'), with which it is presumed that you are familiar. * Menu: * Configure Terms:: Configuration terminology and history. * Top Level:: The top level source directory. * gcc Directory:: The `gcc' subdirectory. * Testsuites:: The GCC testsuites.  File: gccint.info, Node: Configure Terms, Next: Top Level, Up: Source Tree 6.1 Configure Terms and History =============================== The configure and build process has a long and colorful history, and can be confusing to anyone who doesn't know why things are the way they are. While there are other documents which describe the configuration process in detail, here are a few things that everyone working on GCC should know. There are three system names that the build knows about: the machine you are building on ("build"), the machine that you are building for ("host"), and the machine that GCC will produce code for ("target"). When you configure GCC, you specify these with `--build=', `--host=', and `--target='. Specifying the host without specifying the build should be avoided, as `configure' may (and once did) assume that the host you specify is also the build, which may not be true. If build, host, and target are all the same, this is called a "native". If build and host are the same but target is different, this is called a "cross". If build, host, and target are all different this is called a "canadian" (for obscure reasons dealing with Canada's political party and the background of the person working on the build at that time). If host and target are the same, but build is different, you are using a cross-compiler to build a native for a different system. Some people call this a "host-x-host", "crossed native", or "cross-built native". If build and target are the same, but host is different, you are using a cross compiler to build a cross compiler that produces code for the machine you're building on. This is rare, so there is no common way of describing it. There is a proposal to call this a "crossback". If build and host are the same, the GCC you are building will also be used to build the target libraries (like `libstdc++'). If build and host are different, you must have already built and installed a cross compiler that will be used to build the target libraries (if you configured with `--target=foo-bar', this compiler will be called `foo-bar-gcc'). In the case of target libraries, the machine you're building for is the machine you specified with `--target'. So, build is the machine you're building on (no change there), host is the machine you're building for (the target libraries are built for the target, so host is the target you specified), and target doesn't apply (because you're not building a compiler, you're building libraries). The configure/make process will adjust these variables as needed. It also sets `$with_cross_host' to the original `--host' value in case you need it. The `libiberty' support library is built up to three times: once for the host, once for the target (even if they are the same), and once for the build if build and host are different. This allows it to be used by all programs which are generated in the course of the build process.  File: gccint.info, Node: Top Level, Next: gcc Directory, Prev: Configure Terms, Up: Source Tree 6.2 Top Level Source Directory ============================== The top level source directory in a GCC distribution contains several files and directories that are shared with other software distributions such as that of GNU Binutils. It also contains several subdirectories that contain parts of GCC and its runtime libraries: `boehm-gc' The Boehm conservative garbage collector, used as part of the Java runtime library. `contrib' Contributed scripts that may be found useful in conjunction with GCC. One of these, `contrib/texi2pod.pl', is used to generate man pages from Texinfo manuals as part of the GCC build process. `fastjar' An implementation of the `jar' command, used with the Java front end. `gcc' The main sources of GCC itself (except for runtime libraries), including optimizers, support for different target architectures, language front ends, and testsuites. *Note The `gcc' Subdirectory: gcc Directory, for details. `include' Headers for the `libiberty' library. `libada' The Ada runtime library. `libcpp' The C preprocessor library. `libgfortran' The Fortran runtime library. `libffi' The `libffi' library, used as part of the Java runtime library. `libiberty' The `libiberty' library, used for portability and for some generally useful data structures and algorithms. *Note Introduction: (libiberty)Top, for more information about this library. `libjava' The Java runtime library. `libmudflap' The `libmudflap' library, used for instrumenting pointer and array dereferencing operations. `libobjc' The Objective-C and Objective-C++ runtime library. `libstdc++-v3' The C++ runtime library. `maintainer-scripts' Scripts used by the `gccadmin' account on `gcc.gnu.org'. `zlib' The `zlib' compression library, used by the Java front end and as part of the Java runtime library. The build system in the top level directory, including how recursion into subdirectories works and how building runtime libraries for multilibs is handled, is documented in a separate manual, included with GNU Binutils. *Note GNU configure and build system: (configure)Top, for details.  File: gccint.info, Node: gcc Directory, Next: Testsuites, Prev: Top Level, Up: Source Tree 6.3 The `gcc' Subdirectory ========================== The `gcc' directory contains many files that are part of the C sources of GCC, other files used as part of the configuration and build process, and subdirectories including documentation and a testsuite. The files that are sources of GCC are documented in a separate chapter. *Note Passes and Files of the Compiler: Passes. * Menu: * Subdirectories:: Subdirectories of `gcc'. * Configuration:: The configuration process, and the files it uses. * Build:: The build system in the `gcc' directory. * Makefile:: Targets in `gcc/Makefile'. * Library Files:: Library source files and headers under `gcc/'. * Headers:: Headers installed by GCC. * Documentation:: Building documentation in GCC. * Front End:: Anatomy of a language front end. * Back End:: Anatomy of a target back end.  File: gccint.info, Node: Subdirectories, Next: Configuration, Up: gcc Directory 6.3.1 Subdirectories of `gcc' ----------------------------- The `gcc' directory contains the following subdirectories: `LANGUAGE' Subdirectories for various languages. Directories containing a file `config-lang.in' are language subdirectories. The contents of the subdirectories `cp' (for C++), `objc' (for Objective-C) and `objcp' (for Objective-C++) are documented in this manual (*note Passes and Files of the Compiler: Passes.); those for other languages are not. *Note Anatomy of a Language Front End: Front End, for details of the files in these directories. `config' Configuration files for supported architectures and operating systems. *Note Anatomy of a Target Back End: Back End, for details of the files in this directory. `doc' Texinfo documentation for GCC, together with automatically generated man pages and support for converting the installation manual to HTML. *Note Documentation::. `fixinc' The support for fixing system headers to work with GCC. See `fixinc/README' for more information. The headers fixed by this mechanism are installed in `LIBSUBDIR/include'. Along with those headers, `README-fixinc' is also installed, as `LIBSUBDIR/include/README'. `ginclude' System headers installed by GCC, mainly those required by the C standard of freestanding implementations. *Note Headers Installed by GCC: Headers, for details of when these and other headers are installed. `intl' GNU `libintl', from GNU `gettext', for systems which do not include it in libc. Properly, this directory should be at top level, parallel to the `gcc' directory. `po' Message catalogs with translations of messages produced by GCC into various languages, `LANGUAGE.po'. This directory also contains `gcc.pot', the template for these message catalogues, `exgettext', a wrapper around `gettext' to extract the messages from the GCC sources and create `gcc.pot', which is run by `make gcc.pot', and `EXCLUDES', a list of files from which messages should not be extracted. `testsuite' The GCC testsuites (except for those for runtime libraries). *Note Testsuites::.  File: gccint.info, Node: Configuration, Next: Build, Prev: Subdirectories, Up: gcc Directory 6.3.2 Configuration in the `gcc' Directory ------------------------------------------ The `gcc' directory is configured with an Autoconf-generated script `configure'. The `configure' script is generated from `configure.ac' and `aclocal.m4'. From the files `configure.ac' and `acconfig.h', Autoheader generates the file `config.in'. The file `cstamp-h.in' is used as a timestamp. * Menu: * Config Fragments:: Scripts used by `configure'. * System Config:: The `config.build', `config.host', and `config.gcc' files. * Configuration Files:: Files created by running `configure'.  File: gccint.info, Node: Config Fragments, Next: System Config, Up: Configuration 6.3.2.1 Scripts Used by `configure' ................................... `configure' uses some other scripts to help in its work: * The standard GNU `config.sub' and `config.guess' files, kept in the top level directory, are used. FIXME: when is the `config.guess' file in the `gcc' directory (that just calls the top level one) used? * The file `config.gcc' is used to handle configuration specific to the particular target machine. The file `config.build' is used to handle configuration specific to the particular build machine. The file `config.host' is used to handle configuration specific to the particular host machine. (In general, these should only be used for features that cannot reasonably be tested in Autoconf feature tests.) *Note The `config.build'; `config.host'; and `config.gcc' Files: System Config, for details of the contents of these files. * Each language subdirectory has a file `LANGUAGE/config-lang.in' that is used for front-end-specific configuration. *Note The Front End `config-lang.in' File: Front End Config, for details of this file. * A helper script `configure.frag' is used as part of creating the output of `configure'.  File: gccint.info, Node: System Config, Next: Configuration Files, Prev: Config Fragments, Up: Configuration 6.3.2.2 The `config.build'; `config.host'; and `config.gcc' Files ................................................................. The `config.build' file contains specific rules for particular systems which GCC is built on. This should be used as rarely as possible, as the behavior of the build system can always be detected by autoconf. The `config.host' file contains specific rules for particular systems which GCC will run on. This is rarely needed. The `config.gcc' file contains specific rules for particular systems which GCC will generate code for. This is usually needed. Each file has a list of the shell variables it sets, with descriptions, at the top of the file. FIXME: document the contents of these files, and what variables should be set to control build, host and target configuration.  File: gccint.info, Node: Configuration Files, Prev: System Config, Up: Configuration 6.3.2.3 Files Created by `configure' .................................... Here we spell out what files will be set up by `configure' in the `gcc' directory. Some other files are created as temporary files in the configuration process, and are not used in the subsequent build; these are not documented. * `Makefile' is constructed from `Makefile.in', together with the host and target fragments (*note Makefile Fragments: Fragments.) `t-TARGET' and `x-HOST' from `config', if any, and language Makefile fragments `LANGUAGE/Make-lang.in'. * `auto-host.h' contains information about the host machine determined by `configure'. If the host machine is different from the build machine, then `auto-build.h' is also created, containing such information about the build machine. * `config.status' is a script that may be run to recreate the current configuration. * `configargs.h' is a header containing details of the arguments passed to `configure' to configure GCC, and of the thread model used. * `cstamp-h' is used as a timestamp. * `fixinc/Makefile' is constructed from `fixinc/Makefile.in'. * `gccbug', a script for reporting bugs in GCC, is constructed from `gccbug.in'. * `intl/Makefile' is constructed from `intl/Makefile.in'. * If a language `config-lang.in' file (*note The Front End `config-lang.in' File: Front End Config.) sets `outputs', then the files listed in `outputs' there are also generated. The following configuration headers are created from the Makefile, using `mkconfig.sh', rather than directly by `configure'. `config.h', `bconfig.h' and `tconfig.h' all contain the `xm-MACHINE.h' header, if any, appropriate to the host, build and target machines respectively, the configuration headers for the target, and some definitions; for the host and build machines, these include the autoconfigured headers generated by `configure'. The other configuration headers are determined by `config.gcc'. They also contain the typedefs for `rtx', `rtvec' and `tree'. * `config.h', for use in programs that run on the host machine. * `bconfig.h', for use in programs that run on the build machine. * `tconfig.h', for use in programs and libraries for the target machine. * `tm_p.h', which includes the header `MACHINE-protos.h' that contains prototypes for functions in the target `.c' file. FIXME: why is such a separate header necessary?  File: gccint.info, Node: Build, Next: Makefile, Prev: Configuration, Up: gcc Directory 6.3.3 Build System in the `gcc' Directory ----------------------------------------- FIXME: describe the build system, including what is built in what stages. Also list the various source files that are used in the build process but aren't source files of GCC itself and so aren't documented below (*note Passes::).  File: gccint.info, Node: Makefile, Next: Library Files, Prev: Build, Up: gcc Directory 6.3.4 Makefile Targets ---------------------- These targets are available from the `gcc' directory: `all' This is the default target. Depending on what your build/host/target configuration is, it coordinates all the things that need to be built. `doc' Produce info-formatted documentation and man pages. Essentially it calls `make man' and `make info'. `dvi' Produce DVI-formatted documentation. `pdf' Produce PDF-formatted documentation. `html' Produce HTML-formatted documentation. `man' Generate man pages. `info' Generate info-formatted pages. `mostlyclean' Delete the files made while building the compiler. `clean' That, and all the other files built by `make all'. `distclean' That, and all the files created by `configure'. `maintainer-clean' Distclean plus any file that can be generated from other files. Note that additional tools may be required beyond what is normally needed to build gcc. `srcextra' Generates files in the source directory that do not exist in CVS but should go into a release tarball. One example is `gcc/java/parse.c' which is generated from the CVS source file `gcc/java/parse.y'. `srcinfo' `srcman' Copies the info-formatted and manpage documentation into the source directory usually for the purpose of generating a release tarball. `install' Installs gcc. `uninstall' Deletes installed files. `check' Run the testsuite. This creates a `testsuite' subdirectory that has various `.sum' and `.log' files containing the results of the testing. You can run subsets with, for example, `make check-gcc'. You can specify specific tests by setting RUNTESTFLAGS to be the name of the `.exp' file, optionally followed by (for some tests) an equals and a file wildcard, like: make check-gcc RUNTESTFLAGS="execute.exp=19980413-*" Note that running the testsuite may require additional tools be installed, such as TCL or dejagnu. The toplevel tree from which you start GCC compilation is not the GCC directory, but rather a complex Makefile that coordinates the various steps of the build, including bootstrapping the compiler and using the new compiler to build target libraries. When GCC is configured for a native configuration, the default action for `make' is to do a full three-stage bootstrap. This means that GCC is built three times--once with the native compiler, once with the native-built compiler it just built, and once with the compiler it built the second time. In theory, the last two should produce the same results, which `make compare' can check. Each stage is configured separately and compiled into a separate directory, to minimize problems due to ABI incompatibilities between the native compiler and GCC. If you do a change, rebuilding will also start from the first stage and "bubble" up the change through the three stages. Each stage is taken from its build directory (if it had been built previously), rebuilt, and copied to its subdirectory. This will allow you to, for example, continue a bootstrap after fixing a bug which causes the stage2 build to crash. It does not provide as good coverage of the compiler as bootstrapping from scratch, but it ensures that the new code is syntactically correct (e.g., that you did not use GCC extensions by mistake), and avoids spurious bootstrap comparison failures(1). Other targets available from the top level include: `bootstrap-lean' Like `bootstrap', except that the various stages are removed once they're no longer needed. This saves disk space. `bootstrap2' `bootstrap2-lean' Performs only the first two stages of bootstrap. Unlike a three-stage bootstrap, this does not perform a comparison to test that the compiler is running properly. Note that the disk space required by a "lean" bootstrap is approximately independent of the number of stages. `stageN-bubble (N = 1...4)' Rebuild all the stages up to N, with the appropriate flags, "bubbling" the changes as described above. `all-stageN (N = 1...4)' Assuming that stage N has already been built, rebuild it with the appropriate flags. This is rarely needed. `cleanstrap' Remove everything (`make clean') and rebuilds (`make bootstrap'). `compare' Compares the results of stages 2 and 3. This ensures that the compiler is running properly, since it should produce the same object files regardless of how it itself was compiled. `profiledbootstrap' Builds a compiler with profiling feedback information. For more information, see *note Building with profile feedback: (gccinstall)Building. `restrap' Restart a bootstrap, so that everything that was not built with the system compiler is rebuilt. `stageN-start (N = 1...4)' For each package that is bootstrapped, rename directories so that, for example, `gcc' points to the stageN GCC, compiled with the stageN-1 GCC(2). You will invoke this target if you need to test or debug the stageN GCC. If you only need to execute GCC (but you need not run `make' either to rebuild it or to run test suites), you should be able to work directly in the `stageN-gcc' directory. This makes it easier to debug multiple stages in parallel. `stage' For each package that is bootstrapped, relocate its build directory to indicate its stage. For example, if the `gcc' directory points to the stage2 GCC, after invoking this target it will be renamed to `stage2-gcc'. If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set `BOOT_CFLAGS' on the command line when doing `make'. Usually, the first stage only builds the languages that the compiler is written in: typically, C and maybe Ada. If you are debugging a miscompilation of a different stage2 front-end (for example, of the Fortran front-end), you may want to have front-ends for other languages in the first stage as well. To do so, set `STAGE1_LANGUAGES' on the command line when doing `make'. For example, in the aforementioned scenario of debugging a Fortran front-end miscompilation caused by the stage1 compiler, you may need a command like make stage2-bubble STAGE1_LANGUAGES=c,fortran Alternatively, you can use per-language targets to build and test languages that are not enabled by default in stage1. For example, `make f951' will build a Fortran compiler even in the stage1 build directory. ---------- Footnotes ---------- (1) Except if the compiler was buggy and miscompiled some of the files that were not modified. In this case, it's best to use `make restrap'. (2) Customarily, the system compiler is also termed the `stage0' GCC.  File: gccint.info, Node: Library Files, Next: Headers, Prev: Makefile, Up: gcc Directory 6.3.5 Library Source Files and Headers under the `gcc' Directory ---------------------------------------------------------------- FIXME: list here, with explanation, all the C source files and headers under the `gcc' directory that aren't built into the GCC executable but rather are part of runtime libraries and object files, such as `crtstuff.c' and `unwind-dw2.c'. *Note Headers Installed by GCC: Headers, for more information about the `ginclude' directory.  File: gccint.info, Node: Headers, Next: Documentation, Prev: Library Files, Up: gcc Directory 6.3.6 Headers Installed by GCC ------------------------------ In general, GCC expects the system C library to provide most of the headers to be used with it. However, GCC will fix those headers if necessary to make them work with GCC, and will install some headers required of freestanding implementations. These headers are installed in `LIBSUBDIR/include'. Headers for non-C runtime libraries are also installed by GCC; these are not documented here. (FIXME: document them somewhere.) Several of the headers GCC installs are in the `ginclude' directory. These headers, `iso646.h', `stdarg.h', `stdbool.h', and `stddef.h', are installed in `LIBSUBDIR/include', unless the target Makefile fragment (*note Target Fragment::) overrides this by setting `USER_H'. In addition to these headers and those generated by fixing system headers to work with GCC, some other headers may also be installed in `LIBSUBDIR/include'. `config.gcc' may set `extra_headers'; this specifies additional headers under `config' to be installed on some systems. GCC installs its own version of `', from `ginclude/float.h'. This is done to cope with command-line options that change the representation of floating point numbers. GCC also installs its own version of `'; this is generated from `glimits.h', together with `limitx.h' and `limity.h' if the system also has its own version of `'. (GCC provides its own header because it is required of ISO C freestanding implementations, but needs to include the system header from its own header as well because other standards such as POSIX specify additional values to be defined in `'.) The system's `' header is used via `LIBSUBDIR/include/syslimits.h', which is copied from `gsyslimits.h' if it does not need fixing to work with GCC; if it needs fixing, `syslimits.h' is the fixed copy. GCC can also install `'. It will do this when `config.gcc' sets `use_gcc_tgmath' to `yes'.  File: gccint.info, Node: Documentation, Next: Front End, Prev: Headers, Up: gcc Directory 6.3.7 Building Documentation ---------------------------- The main GCC documentation is in the form of manuals in Texinfo format. These are installed in Info format; DVI versions may be generated by `make dvi', PDF versions by `make pdf', and HTML versions by `make html'. In addition, some man pages are generated from the Texinfo manuals, there are some other text files with miscellaneous documentation, and runtime libraries have their own documentation outside the `gcc' directory. FIXME: document the documentation for runtime libraries somewhere. * Menu: * Texinfo Manuals:: GCC manuals in Texinfo format. * Man Page Generation:: Generating man pages from Texinfo manuals. * Miscellaneous Docs:: Miscellaneous text files with documentation.  File: gccint.info, Node: Texinfo Manuals, Next: Man Page Generation, Up: Documentation 6.3.7.1 Texinfo Manuals ....................... The manuals for GCC as a whole, and the C and C++ front ends, are in files `doc/*.texi'. Other front ends have their own manuals in files `LANGUAGE/*.texi'. Common files `doc/include/*.texi' are provided which may be included in multiple manuals; the following files are in `doc/include': `fdl.texi' The GNU Free Documentation License. `funding.texi' The section "Funding Free Software". `gcc-common.texi' Common definitions for manuals. `gpl.texi' `gpl_v3.texi' The GNU General Public License. `texinfo.tex' A copy of `texinfo.tex' known to work with the GCC manuals. DVI-formatted manuals are generated by `make dvi', which uses `texi2dvi' (via the Makefile macro `$(TEXI2DVI)'). PDF-formatted manuals are generated by `make pdf', which uses `texi2pdf' (via the Makefile macro `$(TEXI2PDF)'). HTML formatted manuals are generated by `make html'. Info manuals are generated by `make info' (which is run as part of a bootstrap); this generates the manuals in the source directory, using `makeinfo' via the Makefile macro `$(MAKEINFO)', and they are included in release distributions. Manuals are also provided on the GCC web site, in both HTML and PostScript forms. This is done via the script `maintainer-scripts/update_web_docs'. Each manual to be provided online must be listed in the definition of `MANUALS' in that file; a file `NAME.texi' must only appear once in the source tree, and the output manual must have the same name as the source file. (However, other Texinfo files, included in manuals but not themselves the root files of manuals, may have names that appear more than once in the source tree.) The manual file `NAME.texi' should only include other files in its own directory or in `doc/include'. HTML manuals will be generated by `makeinfo --html', PostScript manuals by `texi2dvi' and `dvips', and PDF manuals by `texi2pdf'. All Texinfo files that are parts of manuals must be checked into SVN, even if they are generated files, for the generation of online manuals to work. The installation manual, `doc/install.texi', is also provided on the GCC web site. The HTML version is generated by the script `doc/install.texi2html'.  File: gccint.info, Node: Man Page Generation, Next: Miscellaneous Docs, Prev: Texinfo Manuals, Up: Documentation 6.3.7.2 Man Page Generation ........................... Because of user demand, in addition to full Texinfo manuals, man pages are provided which contain extracts from those manuals. These man pages are generated from the Texinfo manuals using `contrib/texi2pod.pl' and `pod2man'. (The man page for `g++', `cp/g++.1', just contains a `.so' reference to `gcc.1', but all the other man pages are generated from Texinfo manuals.) Because many systems may not have the necessary tools installed to generate the man pages, they are only generated if the `configure' script detects that recent enough tools are installed, and the Makefiles allow generating man pages to fail without aborting the build. Man pages are also included in release distributions. They are generated in the source directory. Magic comments in Texinfo files starting `@c man' control what parts of a Texinfo file go into a man page. Only a subset of Texinfo is supported by `texi2pod.pl', and it may be necessary to add support for more Texinfo features to this script when generating new man pages. To improve the man page output, some special Texinfo macros are provided in `doc/include/gcc-common.texi' which `texi2pod.pl' understands: `@gcctabopt' Use in the form `@table @gcctabopt' for tables of options, where for printed output the effect of `@code' is better than that of `@option' but for man page output a different effect is wanted. `@gccoptlist' Use for summary lists of options in manuals. `@gol' Use at the end of each line inside `@gccoptlist'. This is necessary to avoid problems with differences in how the `@gccoptlist' macro is handled by different Texinfo formatters. FIXME: describe the `texi2pod.pl' input language and magic comments in more detail.  File: gccint.info, Node: Miscellaneous Docs, Prev: Man Page Generation, Up: Documentation 6.3.7.3 Miscellaneous Documentation ................................... In addition to the formal documentation that is installed by GCC, there are several other text files with miscellaneous documentation: `ABOUT-GCC-NLS' Notes on GCC's Native Language Support. FIXME: this should be part of this manual rather than a separate file. `ABOUT-NLS' Notes on the Free Translation Project. `COPYING' The GNU General Public License. `COPYING.LIB' The GNU Lesser General Public License. `*ChangeLog*' `*/ChangeLog*' Change log files for various parts of GCC. `LANGUAGES' Details of a few changes to the GCC front-end interface. FIXME: the information in this file should be part of general documentation of the front-end interface in this manual. `ONEWS' Information about new features in old versions of GCC. (For recent versions, the information is on the GCC web site.) `README.Portability' Information about portability issues when writing code in GCC. FIXME: why isn't this part of this manual or of the GCC Coding Conventions? FIXME: document such files in subdirectories, at least `config', `cp', `objc', `testsuite'.  File: gccint.info, Node: Front End, Next: Back End, Prev: Documentation, Up: gcc Directory 6.3.8 Anatomy of a Language Front End ------------------------------------- A front end for a language in GCC has the following parts: * A directory `LANGUAGE' under `gcc' containing source files for that front end. *Note The Front End `LANGUAGE' Directory: Front End Directory, for details. * A mention of the language in the list of supported languages in `gcc/doc/install.texi'. * A mention of the name under which the language's runtime library is recognized by `--enable-shared=PACKAGE' in the documentation of that option in `gcc/doc/install.texi'. * A mention of any special prerequisites for building the front end in the documentation of prerequisites in `gcc/doc/install.texi'. * Details of contributors to that front end in `gcc/doc/contrib.texi'. If the details are in that front end's own manual then there should be a link to that manual's list in `contrib.texi'. * Information about support for that language in `gcc/doc/frontends.texi'. * Information about standards for that language, and the front end's support for them, in `gcc/doc/standards.texi'. This may be a link to such information in the front end's own manual. * Details of source file suffixes for that language and `-x LANG' options supported, in `gcc/doc/invoke.texi'. * Entries in `default_compilers' in `gcc.c' for source file suffixes for that language. * Preferably testsuites, which may be under `gcc/testsuite' or runtime library directories. FIXME: document somewhere how to write testsuite harnesses. * Probably a runtime library for the language, outside the `gcc' directory. FIXME: document this further. * Details of the directories of any runtime libraries in `gcc/doc/sourcebuild.texi'. If the front end is added to the official GCC source repository, the following are also necessary: * At least one Bugzilla component for bugs in that front end and runtime libraries. This category needs to be mentioned in `gcc/gccbug.in', as well as being added to the Bugzilla database. * Normally, one or more maintainers of that front end listed in `MAINTAINERS'. * Mentions on the GCC web site in `index.html' and `frontends.html', with any relevant links on `readings.html'. (Front ends that are not an official part of GCC may also be listed on `frontends.html', with relevant links.) * A news item on `index.html', and possibly an announcement on the mailing list. * The front end's manuals should be mentioned in `maintainer-scripts/update_web_docs' (*note Texinfo Manuals::) and the online manuals should be linked to from `onlinedocs/index.html'. * Any old releases or CVS repositories of the front end, before its inclusion in GCC, should be made available on the GCC FTP site `ftp://gcc.gnu.org/pub/gcc/old-releases/'. * The release and snapshot script `maintainer-scripts/gcc_release' should be updated to generate appropriate tarballs for this front end. The associated `maintainer-scripts/snapshot-README' and `maintainer-scripts/snapshot-index.html' files should be updated to list the tarballs and diffs for this front end. * If this front end includes its own version files that include the current date, `maintainer-scripts/update_version' should be updated accordingly. * Menu: * Front End Directory:: The front end `LANGUAGE' directory. * Front End Config:: The front end `config-lang.in' file.  File: gccint.info, Node: Front End Directory, Next: Front End Config, Up: Front End 6.3.8.1 The Front End `LANGUAGE' Directory .......................................... A front end `LANGUAGE' directory contains the source files of that front end (but not of any runtime libraries, which should be outside the `gcc' directory). This includes documentation, and possibly some subsidiary programs build alongside the front end. Certain files are special and other parts of the compiler depend on their names: `config-lang.in' This file is required in all language subdirectories. *Note The Front End `config-lang.in' File: Front End Config, for details of its contents `Make-lang.in' This file is required in all language subdirectories. It contains targets `LANG.HOOK' (where `LANG' is the setting of `language' in `config-lang.in') for the following values of `HOOK', and any other Makefile rules required to build those targets (which may if necessary use other Makefiles specified in `outputs' in `config-lang.in', although this is deprecated). It also adds any testsuite targets that can use the standard rule in `gcc/Makefile.in' to the variable `lang_checks'. `all.cross' `start.encap' `rest.encap' FIXME: exactly what goes in each of these targets? `tags' Build an `etags' `TAGS' file in the language subdirectory in the source tree. `info' Build info documentation for the front end, in the build directory. This target is only called by `make bootstrap' if a suitable version of `makeinfo' is available, so does not need to check for this, and should fail if an error occurs. `dvi' Build DVI documentation for the front end, in the build directory. This should be done using `$(TEXI2DVI)', with appropriate `-I' arguments pointing to directories of included files. `pdf' Build PDF documentation for the front end, in the build directory. This should be done using `$(TEXI2PDF)', with appropriate `-I' arguments pointing to directories of included files. `html' Build HTML documentation for the front end, in the build directory. `man' Build generated man pages for the front end from Texinfo manuals (*note Man Page Generation::), in the build directory. This target is only called if the necessary tools are available, but should ignore errors so as not to stop the build if errors occur; man pages are optional and the tools involved may be installed in a broken way. `install-common' Install everything that is part of the front end, apart from the compiler executables listed in `compilers' in `config-lang.in'. `install-info' Install info documentation for the front end, if it is present in the source directory. This target should have dependencies on info files that should be installed. `install-man' Install man pages for the front end. This target should ignore errors. `srcextra' Copies its dependencies into the source directory. This generally should be used for generated files such as Bison output files which are not present in CVS, but should be included in any release tarballs. This target will be executed during a bootstrap if `--enable-generated-files-in-srcdir' was specified as a `configure' option. `srcinfo' `srcman' Copies its dependencies into the source directory. These targets will be executed during a bootstrap if `--enable-generated-files-in-srcdir' was specified as a `configure' option. `uninstall' Uninstall files installed by installing the compiler. This is currently documented not to be supported, so the hook need not do anything. `mostlyclean' `clean' `distclean' `maintainer-clean' The language parts of the standard GNU `*clean' targets. *Note Standard Targets for Users: (standards)Standard Targets, for details of the standard targets. For GCC, `maintainer-clean' should delete all generated files in the source directory that are not checked into CVS, but should not delete anything checked into CVS. `lang.opt' This file registers the set of switches that the front end accepts on the command line, and their `--help' text. *Note Options::. `lang-specs.h' This file provides entries for `default_compilers' in `gcc.c' which override the default of giving an error that a compiler for that language is not installed. `LANGUAGE-tree.def' This file, which need not exist, defines any language-specific tree codes.  File: gccint.info, Node: Front End Config, Prev: Front End Directory, Up: Front End 6.3.8.2 The Front End `config-l