In addition to the file `machine.md', a machine description includes a C header file conventionally given the name `machine.h'. This header file defines numerous macros that convey the information about the target machine that does not fit into the scheme of the `.md' file. The file `tm.h' should be a link to `machine.h'. The header file `config.h' includes `tm.h' and most compiler source files include `config.h'.
| Driver | Controlling how the driver runs the compilation passes. |
| Run-time Target | Defining `-m' options like `-m68000' and `-m68020'. |
| Storage Layout | Defining sizes and alignments of data. |
| Type Layout | Defining sizes and properties of basic user data types. |
| Registers | Naming and describing the hardware registers. |
| Register Classes | Defining the classes of hardware registers. |
| Stack and Calling | Defining which way the stack grows and by how much. |
| Varargs | Defining the varargs macros. |
| Trampolines | Code set up at run time to enter a nested function. |
| Library Calls | Controlling how library routines are implicitly called. |
| Addressing Modes | Defining addressing modes valid for memory operands. |
| Condition Code | Defining how insns update the condition code. |
| Costs | Defining relative costs of different operations. |
| Sections | Dividing storage into text, data, and other sections. |
| PIC | Macros for position independent code. |
| Assembler Format | Defining how to write insns and pseudo-ops to output. |
| Debugging Info | Defining the format of debugging output. |
| Cross-compilation | Handling floating point for cross-compilers. |
| Misc | Everything else. |