---
name: "dwarf_get_fde_info_for_cfa_reg3"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/dwarf_get_fde_info_for_cfa_reg3"
---

# dwarf\_get\_fde\_info\_for\_cfa\_reg3(3)

retrieve a CFA register rule

## NAME

**dwarf\_get\_fde\_info\_for\_cfa\_regs3** – retrieve a CFA register rule

## LIBRARY

library “libdwarf”

## SYNOPSIS

**#include \<libdwarf.h\>**

*int*\

**dwarf\_get\_fde\_info\_for\_cfa\_regs3**(*Dwarf\_Fde fde*, *Dwarf\_Addr pc*, *Dwarf\_Small \*type*, *Dwarf\_Signed \*offset\_relevant*, *Dwarf\_Signed \*register\_num*, *Dwarf\_Signed \*offset\_or\_block\_len*, *Dwarf\_Ptr \*block\_ptr*, *Dwarf\_Addr \*row\_pc*, *Dwarf\_Error \*err*);

## DESCRIPTION

Function **dwarf\_get\_fde\_info\_for\_cfa\_reg3**() retrieves the CFA register rule for a given program counter address from the register rule table associated with an FDE descriptor.

Argument *fde* should reference a valid DWARF FDE descriptor.

Argument *pc* should hold the program counter address to be used to locate the desired register rule row.

On successful execution, **dwarf\_get\_fde\_info\_for\_cfa\_reg3**() stores information about the CFA register rule found into the locations pointed to by the arguments *type*, *offset\_relevant*, *register\_num*, *offset\_or\_block\_len*, *block\_ptr* and *row\_pc*.

Argument *type* should point to a location which will hold the type code of the register rule found. The returned value is one of the DW\_EXPR\_\* contants defined in the header file ⟨libdwarf.h⟩.

If there is an offset value associated with the CFA register rule, the location pointed to by argument *offset\_relevant* will be set to 1.

Argument *register\_num* should point to a location which will hold the register number associated with the CFA register rule.

If the CFA register rule is of type DW\_EXPR\_OFFSET or DW\_EXPR\_VAL\_OFFSET, the location pointed to by argument *offset\_or\_block\_len* will be set to the offset value associated with the register rule, or to 0 if the register rule does not have an offset value. If the type code is DW\_EXPR\_EXPRESSION or DW\_EXPR\_VAL\_EXPRESSION, the location pointed to by argument *offset\_or\_block\_len* will be set to the length in bytes of the DWARF expression block associated with the register rule.

Argument *block\_ptr* should point to a location which will be set to a pointer to the content of the DWARF expression block associated with the CFA register rule.

Argument *row\_pc* should point to a location which will be set to the lowest program counter address associated with the register rule found.

If argument *err* is not NULL, it will be used to return an error descriptor in case of an error.

## RETURN VALUES

Function **dwarf\_get\_fde\_info\_for\_cfa\_reg3**() returns DW\_DLV\_OK when it succeeds. In case of an error, it returns DW\_DLV\_ERROR and sets the argument *err*.

## ERRORS

Function **dwarf\_get\_fde\_info\_for\_cfa\_reg3**() can fail with:

- \[DW\_DLE\_ARGUMENT\]

  One of the arguments *block\_ptr*, *fde*, *offset\_or\_block\_len*, *offset\_relevant*, *register\_num*, *row\_pc*, or *type* was NULL.

- \[DW\_DLE\_PC\_NOT\_IN\_FDE\_RANGE\]

  The program counter value provided in argument *pc* did not fall in the range covered by argument *fde*.

## SEE ALSO

[dwarf(3)](/dwarf/3.md), [dwarf\_get\_fde\_at\_pc(3)](/dwarf_get_fde_at_pc/3.md), [dwarf\_get\_fde\_info\_for\_all\_regs(3)](/dwarf_get_fde_info_for_all_regs/3.md), [dwarf\_get\_fde\_info\_for\_all\_regs3(3)](/dwarf_get_fde_info_for_all_regs3/3.md), [dwarf\_get\_fde\_info\_for\_reg(3)](/dwarf_get_fde_info_for_reg/3.md), [dwarf\_get\_fde\_info\_for\_reg3(3)](/dwarf_get_fde_info_for_reg3/3.md), [dwarf\_get\_fde\_n(3)](/dwarf_get_fde_n/3.md), [dwarf\_set\_frame\_cfa\_value(3)](/dwarf_set_frame_cfa_value/3.md), [dwarf\_set\_frame\_rule\_initial\_value(3)](/dwarf_set_frame_rule_initial_value/3.md), [dwarf\_set\_frame\_rule\_table\_size(3)](/dwarf_set_frame_rule_table_size/3.md), [dwarf\_set\_frame\_same\_value(3)](/dwarf_set_frame_same_value/3.md), [dwarf\_set\_frame\_undefined\_value(3)](/dwarf_set_frame_undefined_value/3.md)
