xref: /freebsd/contrib/elftoolchain/libdwarf/dwarf_set_frame_cfa_value.3 (revision 2a58b312b62f908ec92311d1bd8536dbaeb8e55b)
1.\" Copyright (c) 2011 Kai Wang
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $Id: dwarf_set_frame_cfa_value.3 3640 2018-10-14 14:09:13Z jkoshy $
26.\"
27.Dd June 18, 2011
28.Dt DWARF_SET_FRAME_CFA_VALUE 3
29.Os
30.Sh NAME
31.Nm dwarf_set_frame_cfa_value ,
32.Nm dwarf_set_frame_rule_initial_value ,
33.Nm dwarf_set_frame_rule_table_size ,
34.Nm dwarf_set_frame_same_value ,
35.Nm dwarf_set_frame_undefined_value
36.Nd set internal register rule table parameters
37.Sh LIBRARY
38.Lb libdwarf
39.Sh SYNOPSIS
40.In libdwarf.h
41.Ft Dwarf_Half
42.Fo dwarf_set_frame_cfa_value
43.Fa "Dwarf_Debug dbg"
44.Fa "Dwarf_Half value"
45.Fc
46.Ft Dwarf_Half
47.Fo dwarf_set_frame_rule_initial_value
48.Fa "Dwarf_Debug dbg"
49.Fa "Dwarf_Half value"
50.Fc
51.Ft Dwarf_Half
52.Fo dwarf_set_frame_rule_table_size
53.Fa "Dwarf_Debug dbg"
54.Fa "Dwarf_Half value"
55.Fc
56.Ft Dwarf_Half
57.Fo dwarf_set_frame_same_value
58.Fa "Dwarf_Debug dbg"
59.Fa "Dwarf_Half value"
60.Fc
61.Ft Dwarf_Half
62.Fo dwarf_set_frame_undefined_value
63.Fa "Dwarf_Debug dbg"
64.Fa "Dwarf_Half value"
65.Fc
66.Sh DESCRIPTION
67These functions set the parameters of the internal register
68rule table.
69.Pp
70Argument
71.Ar dbg
72should reference a DWARF debug context allocated using
73.Xr dwarf_init 3 .
74.Pp
75Argument
76.Ar value
77should hold the parameter value to set.
78.Pp
79Function
80.Fn dwarf_set_frame_cfa_value
81sets the column number for the CFA register rule in the internal
82register rule table.
83The constant
84.Dv DW_FRAME_CFA_COL
85is the default CFA register column number for DWARF2-only
86interfaces, and the constant
87.Dv DW_FRAME_CFA_COL3
88is the default CFA column number for DWARF3-compatible interfaces.
89.Pp
90Function
91.Fn dwarf_set_frame_rule_initial_value
92sets the initial value of the register rules in the internal register
93rule table.
94The default initial value is the constant
95.Dv DW_FRAME_REG_INITIAL_VALUE ,
96defined in the header file
97.In libdwarf.h .
98.Pp
99Function
100.Fn dwarf_set_frame_rule_table_size
101sets the maxmium number of columns of the internal register rule table.
102Argument
103.Ar value
104should be at least as large as the number of real registers in the ABI.
105.Pp
106Function
107.Fn dwarf_set_frame_same_value
108sets the register number representing the
109.Dq "same value"
110register rule.
111The default register number for the
112.Dq "same value"
113rule is the constant
114.Dv DW_FRAME_SAME_VAL ,
115defined in the header file
116.In libdwarf.h .
117.Pp
118Function
119.Fn dwarf_set_frame_undefined_value
120sets the register number representing the
121.Dq undefined
122register rule.
123The default register number for the
124.Dq undefined
125rule is the constant
126.Dv DW_FRAME_UNDEFINED_VAL ,
127defined in the header file
128.In libdwarf.h .
129.Sh RETURN VALUES
130These functions return the previous value of the parameter being
131set.
132.Sh SEE ALSO
133.Xr dwarf 3 ,
134.Xr dwarf_get_fde_at_pc 3 ,
135.Xr dwarf_get_fde_info_for_all_regs 3 ,
136.Xr dwarf_get_fde_info_for_all_regs3 3 ,
137.Xr dwarf_get_fde_info_for_cfa_reg3 3 ,
138.Xr dwarf_get_fde_info_for_reg 3 ,
139.Xr dwarf_get_fde_info_for_reg3 3 ,
140.Xr dwarf_get_fde_n 3
141