Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DWARF_GET_FDE_INFO_... FreeBSD Library Functions Manual	DWARF_GET_FDE_INFO_...

     dwarf_get_fde_info_for_all_regs3 -- retrieve register rule	row

     DWARF Access Library (libdwarf, -ldwarf)

     #include <libdwarf.h>

     dwarf_get_fde_info_for_all_regs3(Dwarf_Fde	fde, Dwarf_Addr	pc,
	 Dwarf_Regtable3 *reg_table, Dwarf_Addr	*row_pc, Dwarf_Error *err);

     Function dwarf_get_fde_info_for_all_regs3() retrieves a row from the reg-
     ister rule	table associated with the given	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 table row.

     Argument reg_table	should point to	a Dwarf_Regtable3 descriptor which
     will hold the returned table row of register rules.  The Dwarf_Regtable3
     descriptor	is defined in the header file <libdwarf.h>:

	   typedef struct {
		   Dwarf_Small	   dw_offset_relevant;
		   Dwarf_Small	   dw_value_type;
		   Dwarf_Half	   dw_regnum;
		   Dwarf_Unsigned  dw_offset_or_block_len;
		   Dwarf_Ptr	   dw_block_ptr;
	   } Dwarf_Regtable_Entry3;

	   typedef struct {
		   Dwarf_Regtable_Entry3   rt3_cfa_rule;
		   Dwarf_Half		   rt3_reg_table_size;
		   Dwarf_Regtable_Entry3   *rt3_rules;
	   } Dwarf_Regtable3;

     The rt3_reg_table_size field specifies the	maximum	number of register
     rule columns to be	returned, and should be	set by the application before
     calling the function.  The	rt3_rules field	should point to	a memory arena
     allocated by the application with space for at least rt3_reg_table_size
     descriptors of type Dwarf_Regtable_Entry3.

     On	a successful execution of this function, the rt3_cfa_rule field	will
     be	set to the CFA register	rule associated	with the table row, and	the
     rt3_rules array will hold the returned register rules contained in	the
     table row.

     For each register rule descriptor returned, the dw_offset_relevant	field
     will be set to 1 if the register rule has a offset	value, the
     dw_value_type field will be set to	the type code of the register rule and
     the dw_regnum field will be set to	the register number associated with
     the register rule.	 If the	register rule is of type DW_EXPR_OFFSET	or
     DW_EXPR_VAL_OFFSET, the dw_offset_or_block_len field will be set to the
     offset value associated with the register rule.  If the type is
     DW_EXPR_EXPRESSION	or DW_EXPR_VAL_EXPRESSION, the dw_offset_or_block_len
     field will	be set to the length in	bytes of the DWARF expression block
     associated	with the register rule.	 The dw_block_ptr field	will be	set to
     a pointer to the content of the DWARF expression block associated with
     the register rule.

     Argument row_pc should point to a location	which will be set to the low-
     est program counter address associated with the table row.

     If	argument err is	not NULL, it will be used to store error information
     in	case of	an error.

     Function dwarf_get_fde_info_for_all_regs3() returns DW_DLV_OK when	it
     succeeds.	In case	of an error, it	returns	DW_DLV_ERROR and sets the ar-
     gument err.

     Function dwarf_get_fde_info_for_all_regs3() can fail with:

     [DW_DLE_ARGUMENT]		   One of the arguments	fde, reg_table or
				   row_pc was NULL.

     [DW_DLE_PC_NOT_IN_FDE_RANGE]  The program counter value provided in argu-
				   ment	pc did not fall	in the range covered
				   by argument fde.

     dwarf(3), dwarf_get_fde_at_pc(3), dwarf_get_fde_info_for_all_regs(3),
     dwarf_get_fde_info_for_cfa_reg3(3), dwarf_get_fde_info_for_reg(3),
     dwarf_get_fde_info_for_reg3(3), dwarf_get_fde_n(3),
     dwarf_set_frame_cfa_value(3), dwarf_set_frame_rule_initial_value(3),
     dwarf_set_frame_rule_table_size(3), dwarf_set_frame_same_value(3),

FreeBSD	13.0			 June 26, 2011			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help