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