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