GNU Compiler Collection (GCC) Internals: Target Macros

Next: Host Config, Previous: Machine Desc, Up: Top   [Contents][Index]


17 Target Description Macros and Functions

In addition to the file machine.md, a machine description includes a C header file conventionally given the name machine.h and a C source file named machine.c. The 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. The source file defines a variable targetm, which is a structure containing pointers to functions and data relating to the target machine. machine.c should also contain their definitions, if they are not defined elsewhere in GCC, and other functions called through the macros defined in the .h file.

• Target Structure:    The targetm variable.
• Driver:    Controlling how the driver runs the compilation passes.
• Run-time Target:    Defining ‘-m’ options like -m68000 and -m68020.
• Per-Function Data:    Defining data structures for per-function information.
• 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.
• Anchored Addresses:    Defining how -fsection-anchors should work.
• Condition Code:    Defining how insns update the condition code.
• Costs:    Defining relative costs of different operations.
• Scheduling:    Adjusting the behavior of the instruction scheduler.
• 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.
• Floating Point:    Handling floating point for cross-compilers.
• Mode Switching:    Insertion of mode-switching instructions.
• Target Attributes:    Defining target-specific uses of __attribute__.
• Emulated TLS:    Emulated TLS support.
• MIPS Coprocessors:    MIPS coprocessor support and how to customize it.
• PCH Target:    Validity checking for precompiled headers.
• C++ ABI:    Controlling C++ ABI changes.
• Named Address Spaces:    Adding support for named address spaces
• Misc:    Everything else.

Next: Host Config, Previous: Machine Desc, Up: Top   [Contents][Index]