gccint: Exception Region Output
1
1 18.20.9 Assembler Commands for Exception Regions
1 ------------------------------------------------
1
1 This describes commands marking the start and the end of an exception
1 region.
1
1 -- Macro: EH_FRAME_SECTION_NAME
1 If defined, a C string constant for the name of the section
1 containing exception handling frame unwind information. If not
1 defined, GCC will provide a default definition if the target
1 supports named sections. 'crtstuff.c' uses this macro to switch to
1 the appropriate section.
1
1 You should define this symbol if your target supports DWARF 2 frame
1 unwind information and the default definition does not work.
1
1 -- Macro: EH_FRAME_THROUGH_COLLECT2
1 If defined, DWARF 2 frame unwind information will identified by
1 specially named labels. The collect2 process will locate these
1 labels and generate code to register the frames.
1
1 This might be necessary, for instance, if the system linker will
1 not place the eh_frames in-between the sentinals from 'crtstuff.c',
1 or if the system linker does garbage collection and sections cannot
1 be marked as not to be collected.
1
1 -- Macro: EH_TABLES_CAN_BE_READ_ONLY
1 Define this macro to 1 if your target is such that no frame unwind
1 information encoding used with non-PIC code will ever require a
1 runtime relocation, but the linker may not support merging
1 read-only and read-write sections into a single read-write section.
1
1 -- Macro: MASK_RETURN_ADDR
1 An rtx used to mask the return address found via 'RETURN_ADDR_RTX',
1 so that it does not contain any extraneous set bits in it.
1
1 -- Macro: DWARF2_UNWIND_INFO
1 Define this macro to 0 if your target supports DWARF 2 frame unwind
1 information, but it does not yet work with exception handling.
1 Otherwise, if your target supports this information (if it defines
1 'INCOMING_RETURN_ADDR_RTX' and 'OBJECT_FORMAT_ELF'), GCC will
1 provide a default definition of 1.
1
1 -- Common Target Hook: enum unwind_info_type TARGET_EXCEPT_UNWIND_INFO
1 (struct gcc_options *OPTS)
1 This hook defines the mechanism that will be used for exception
1 handling by the target. If the target has ABI specified unwind
1 tables, the hook should return 'UI_TARGET'. If the target is to
1 use the 'setjmp'/'longjmp'-based exception handling scheme, the
1 hook should return 'UI_SJLJ'. If the target supports DWARF 2 frame
1 unwind information, the hook should return 'UI_DWARF2'.
1
1 A target may, if exceptions are disabled, choose to return
1 'UI_NONE'. This may end up simplifying other parts of
1 target-specific code. The default implementation of this hook
1 never returns 'UI_NONE'.
1
1 Note that the value returned by this hook should be constant. It
1 should not depend on anything except the command-line switches
1 described by OPTS. In particular, the setting 'UI_SJLJ' must be
1 fixed at compiler start-up as C pre-processor macros and builtin
1 functions related to exception handling are set up depending on
1 this setting.
1
1 The default implementation of the hook first honors the
1 '--enable-sjlj-exceptions' configure option, then
1 'DWARF2_UNWIND_INFO', and finally defaults to 'UI_SJLJ'. If
1 'DWARF2_UNWIND_INFO' depends on command-line options, the target
1 must define this hook so that OPTS is used correctly.
1
1 -- Common Target Hook: bool TARGET_UNWIND_TABLES_DEFAULT
1 This variable should be set to 'true' if the target ABI requires
1 unwinding tables even when exceptions are not used. It must not be
1 modified by command-line option processing.
1
1 -- Macro: DONT_USE_BUILTIN_SETJMP
1 Define this macro to 1 if the 'setjmp'/'longjmp'-based scheme
1 should use the 'setjmp'/'longjmp' functions from the C library
1 instead of the '__builtin_setjmp'/'__builtin_longjmp' machinery.
1
1 -- Macro: JMP_BUF_SIZE
1 This macro has no effect unless 'DONT_USE_BUILTIN_SETJMP' is also
1 defined. Define this macro if the default size of 'jmp_buf' buffer
1 for the 'setjmp'/'longjmp'-based exception handling mechanism is
1 not large enough, or if it is much too large. The default size is
1 'FIRST_PSEUDO_REGISTER * sizeof(void *)'.
1
1 -- Macro: DWARF_CIE_DATA_ALIGNMENT
1 This macro need only be defined if the target might save registers
1 in the function prologue at an offset to the stack pointer that is
1 not aligned to 'UNITS_PER_WORD'. The definition should be the
1 negative minimum alignment if 'STACK_GROWS_DOWNWARD' is true, and
1 the positive minimum alignment otherwise. ⇒DWARF. Only
1 applicable if the target supports DWARF 2 frame unwind information.
1
1 -- Target Hook: bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
1 Contains the value true if the target should add a zero word onto
1 the end of a Dwarf-2 frame info section when used for exception
1 handling. Default value is false if 'EH_FRAME_SECTION_NAME' is
1 defined, and true otherwise.
1
1 -- Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx REG)
1 Given a register, this hook should return a parallel of registers
1 to represent where to find the register pieces. Define this hook
1 if the register and its mode are represented in Dwarf in
1 non-contiguous locations, or if the register should be represented
1 in more than one register in Dwarf. Otherwise, this hook should
1 return 'NULL_RTX'. If not defined, the default is to return
1 'NULL_RTX'.
1
1 -- Target Hook: machine_mode TARGET_DWARF_FRAME_REG_MODE (int REGNO)
1 Given a register, this hook should return the mode which the
1 corresponding Dwarf frame register should have. This is normally
1 used to return a smaller mode than the raw mode to prevent call
1 clobbered parts of a register altering the frame register size
1
1 -- Target Hook: void TARGET_INIT_DWARF_REG_SIZES_EXTRA (tree ADDRESS)
1 If some registers are represented in Dwarf-2 unwind information in
1 multiple pieces, define this hook to fill in information about the
1 sizes of those pieces in the table used by the unwinder at runtime.
1 It will be called by 'expand_builtin_init_dwarf_reg_sizes' after
1 filling in a single size corresponding to each hard register;
1 ADDRESS is the address of the table.
1
1 -- Target Hook: bool TARGET_ASM_TTYPE (rtx SYM)
1 This hook is used to output a reference from a frame unwinding
1 table to the type_info object identified by SYM. It should return
1 'true' if the reference was output. Returning 'false' will cause
1 the reference to be output using the normal Dwarf2 routines.
1
1 -- Target Hook: bool TARGET_ARM_EABI_UNWINDER
1 This flag should be set to 'true' on targets that use an ARM EABI
1 based unwinding library, and 'false' on other targets. This
1 effects the format of unwinding tables, and how the unwinder in
1 entered after running a cleanup. The default is 'false'.
1