Previous: Front End, Up: gcc Directory

#### 6.3.9 Anatomy of a Target Back End

A back end for a target architecture in GCC has the following parts:

- A directory machine under gcc/config, containing a machine description machine.md file (see Machine Descriptions), header files machine.h and machine-protos.h and a source file machine.c (see Target Description Macros and Functions), possibly a target Makefile fragment t-machine (see The Target Makefile Fragment), and maybe some other files. The names of these files may be changed from the defaults given by explicit specifications in config.gcc.
- If necessary, a file machine-modes.def in the machine directory, containing additional machine modes to represent condition codes. See Condition Code, for further details.
- An optional machine.opt file in the machine directory, containing a list of target-specific options. You can also add other option files using the `extra_options` variable in config.gcc. See Options.
- Entries in config.gcc (see The config.gcc File) for the systems with this target architecture.
- Documentation in gcc/doc/invoke.texi for any command-line options supported by this target (see Run-time Target Specification). This means both entries in the summary table of options and details of the individual options.
- Documentation in gcc/doc/extend.texi for any target-specific attributes supported (see Defining target-specific uses of `__attribute__`), including where the same attribute is already supported on some targets, which are enumerated in the manual.
- Documentation in gcc/doc/extend.texi for any target-specific pragmas supported.
- Documentation in gcc/doc/extend.texi of any target-specific built-in functions supported.
- Documentation in gcc/doc/extend.texi of any target-specific format checking styles supported.
- Documentation in gcc/doc/md.texi of any target-specific constraint letters (see Constraints for Particular Machines).
- A note in gcc/doc/contrib.texi under the person or people who contributed the target support.
- Entries in gcc/doc/install.texi for all target triplets supported with this target architecture, giving details of any special notes about installation for this target, or saying that there are no special notes if there are none.
- Possibly other support outside the gcc directory for runtime libraries. FIXME: reference docs for this. The libstdc++ porting manual needs to be installed as info for this to work, or to be a chapter of this manual.

If the back end is added to the official GCC source repository, the following are also necessary:

- An entry for the target architecture in readings.html on the GCC web site, with any relevant links.
- Details of the properties of the back end and target architecture in backends.html on the GCC web site.
- A news item about the contribution of support for that target architecture, in index.html on the GCC web site.
- Normally, one or more maintainers of that target listed in MAINTAINERS. Some existing architectures may be unmaintained, but it would be unusual to add support for a target that does not have a maintainer when support is added.