CFI directives - Using as

Next: Data, Previous: Comm, Up: Pseudo Ops

### 7.9 `.cfi_startproc`

`.cfi_startproc` is used at the beginning of each function that should have an entry in `.eh_frame`. It initializes some internal data structures and emits architecture dependent initial CFI instructions. Don't forget to close the function by `.cfi_endproc`.

### 7.10 `.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.11 `.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.12 `.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.13 `.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.14 `.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.15 `.cfi_offset` register`,` offset

Previous value of register is saved at offset offset from CFA.

### 7.16 `.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.17 `.cfi_window_save`

SPARC register window has been saved.

### 7.18 `.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.