GNU Compiler Collection (GCC) Internals: Dispatch Tables |
---|
Next: Exception Region Output, Previous: Instruction Output, Up: Assembler Format [Contents][Index]
This concerns dispatch tables.
A C statement to output to the stdio stream stream an assembler
pseudo-instruction to generate a difference between two labels.
value and rel are the numbers of two internal labels. The
definitions of these labels are output using
(*targetm.asm_out.internal_label)
, and they must be printed in the same
way here. For example,
fprintf (stream, "\t.word L%d-L%d\n", value, rel)
You must provide this macro on machines where the addresses in a
dispatch table are relative to the table’s own address. If defined, GCC
will also use this macro on all machines when producing PIC.
body is the body of the ADDR_DIFF_VEC
; it is provided so that the
mode and flags can be read.
This macro should be provided on machines where the addresses in a dispatch table are absolute.
The definition should be a C statement to output to the stdio stream
stream an assembler pseudo-instruction to generate a reference to
a label. value is the number of an internal label whose
definition is output using (*targetm.asm_out.internal_label)
.
For example,
fprintf (stream, "\t.word L%d\n", value)
Define this if the label before a jump-table needs to be output
specially. The first three arguments are the same as for
(*targetm.asm_out.internal_label)
; the fourth argument is the
jump-table which follows (a jump_table_data
containing an
addr_vec
or addr_diff_vec
).
This feature is used on system V to output a swbeg
statement
for the table.
If this macro is not defined, these labels are output with
(*targetm.asm_out.internal_label)
.
Define this if something special must be output at the end of a jump-table. The definition should be a C statement to be executed after the assembler code for the table is written. It should write the appropriate code to stdio stream stream. The argument table is the jump-table insn, and num is the label-number of the preceding label.
If this macro is not defined, nothing special is output at the end of the jump-table.
This target hook emits a label at the beginning of each FDE. It should be defined on targets where FDEs need special labels, and it should write the appropriate label, for the FDE associated with the function declaration decl, to the stdio stream stream. The third argument, for_eh, is a boolean: true if this is for an exception table. The fourth argument, empty, is a boolean: true if this is a placeholder label for an omitted FDE.
The default is that FDEs are not given nonlocal labels.
This target hook emits a label at the beginning of the exception table. It should be defined on targets where it is desirable for the table to be broken up according to function.
The default is that no label is emitted.
If the target implements TARGET_ASM_UNWIND_EMIT
, this hook may be used to emit a directive to install a personality hook into the unwind info. This hook should not be used if dwarf2 unwind info is used.
This target hook emits assembly directives required to unwind the
given instruction. This is only used when TARGET_EXCEPT_UNWIND_INFO
returns UI_TARGET
.
True if the TARGET_ASM_UNWIND_EMIT
hook should be called before the assembly for insn has been emitted, false if the hook should be called afterward.
Next: Exception Region Output, Previous: Instruction Output, Up: Assembler Format [Contents][Index]