(as) CFI directives

Info Catalog (as) Byte (as) Pseudo Ops (as) Comm
 
 7.9 `.cfi_sections SECTION_LIST'
 ================================
 
 `.cfi_sections' may be used to specify whether CFI directives should
 emit `.eh_frame' section and/or `.debug_frame' section.  If
 SECTION_LIST is `.eh_frame', `.eh_frame' is emitted, if SECTION_LIST is
 `.debug_frame', `.debug_frame' is emitted.  To emit both use
 `.eh_frame, .debug_frame'.  The default if this directive is not used
 is `.cfi_sections .eh_frame'.
 
 7.10 `.cfi_startproc [simple]'
 ==============================
 
 `.cfi_startproc' is used at the beginning of each function that should
 have an entry in `.eh_frame'. It initializes some internal data
 structures. Don't forget to close the function by `.cfi_endproc'.
 
    Unless `.cfi_startproc' is used along with parameter `simple' it
 also emits some architecture dependent initial CFI instructions.
 
 7.11 `.cfi_endproc'
 ===================
 
 `.cfi_endproc' is used at the end of a function where it closes its
 unwind entry previously opened by `.cfi_startproc', and emits it to
 `.eh_frame'.
 
 7.12 `.cfi_personality ENCODING [, EXP]'
 ========================================
 
 `.cfi_personality' defines personality routine and its encoding.
 ENCODING must be a constant determining how the personality should be
 encoded.  If it is 255 (`DW_EH_PE_omit'), second argument is not
 present, otherwise second argument should be a constant or a symbol
 name.  When using indirect encodings, the symbol provided should be the
 location where personality can be loaded from, not the personality
 routine itself.  The default after `.cfi_startproc' is
 `.cfi_personality 0xff', no personality routine.
 
 7.13 `.cfi_lsda ENCODING [, EXP]'
 =================================
 
 `.cfi_lsda' defines LSDA and its encoding.  ENCODING must be a constant
 determining how the LSDA should be encoded.  If it is 255
 (`DW_EH_PE_omit'), second argument is not present, otherwise second
 argument should be a constant or a symbol name.  The default after
 `.cfi_startproc' is `.cfi_lsda 0xff', no LSDA.
 
 7.14 `.cfi_def_cfa REGISTER, OFFSET'
 ====================================
 
 `.cfi_def_cfa' defines a rule for computing CFA as: take address from
 REGISTER and add OFFSET to it.
 
 7.15 `.cfi_def_cfa_register REGISTER'
 =====================================
 
 `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
 REGISTER will be used instead of the old one. Offset remains the same.
 
 7.16 `.cfi_def_cfa_offset OFFSET'
 =================================
 
 `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
 remains the same, but OFFSET is new. Note that it is the absolute
 offset that will be added to a defined register to compute CFA address.
 
 7.17 `.cfi_adjust_cfa_offset OFFSET'
 ====================================
 
 Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
 added/substracted from the previous offset.
 
 7.18 `.cfi_offset REGISTER, OFFSET'
 ===================================
 
 Previous value of REGISTER is saved at offset OFFSET from CFA.
 
 7.19 `.cfi_rel_offset REGISTER, OFFSET'
 =======================================
 
 Previous value of REGISTER is saved at offset OFFSET from the current
 CFA register.  This is transformed to `.cfi_offset' using the known
 displacement of the CFA register from the CFA.  This is often easier to
 use, because the number will match the code it's annotating.
 
 7.20 `.cfi_register REGISTER1, REGISTER2'
 =========================================
 
 Previous value of REGISTER1 is saved in register REGISTER2.
 
 7.21 `.cfi_restore REGISTER'
 ============================
 
 `.cfi_restore' says that the rule for REGISTER is now the same as it
 was at the beginning of the function, after all initial instruction
 added by `.cfi_startproc' were executed.
 
 7.22 `.cfi_undefined REGISTER'
 ==============================
 
 From now on the previous value of REGISTER can't be restored anymore.
 
 7.23 `.cfi_same_value REGISTER'
 ===============================
 
 Current value of REGISTER is the same like in the previous frame, i.e.
 no restoration needed.
 
 7.24 `.cfi_remember_state',
 ===========================
 
 First save all current rules for all registers by `.cfi_remember_state',
 then totally screw them up by subsequent `.cfi_*' directives and when
 everything is hopelessly bad, use `.cfi_restore_state' to restore the
 previous saved state.
 
 7.25 `.cfi_return_column REGISTER'
 ==================================
 
 Change return column REGISTER, i.e. the return address is either
 directly in REGISTER or can be accessed by rules for REGISTER.
 
 7.26 `.cfi_signal_frame'
 ========================
 
 Mark current function as signal trampoline.
 
 7.27 `.cfi_window_save'
 =======================
 
 SPARC register window has been saved.
 
 7.28 `.cfi_escape' EXPRESSION[, ...]
 ====================================
 
 Allows the user to add arbitrary bytes to the unwind info.  One might
 use this to add OS-specific CFI opcodes, or generic CFI opcodes that
 GAS does not yet support.
 
 7.29 `.cfi_val_encoded_addr REGISTER, ENCODING, LABEL'
 ======================================================
 
 The current value of REGISTER is LABEL.  The value of LABEL will be
 encoded in the output file according to ENCODING; see the description
 of `.cfi_personality' for details on this encoding.
 
    The usefulness of equating a register to a fixed label is probably
 limited to the return address register.  Here, it can be useful to mark
 a code segment that has only one return address which is reached by a
 direct branch and no copy of the return address exists in memory or
 another register.
 
Info Catalog (as) Byte (as) Pseudo Ops (as) Comm
automatically generated by info2html