xref: /freebsd/contrib/elftoolchain/libdwarf/dwarf_formexprloc.3 (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1.\" Copyright (c) 2010 Joseph Koshy
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_formexprloc.3 3640 2018-10-14 14:09:13Z jkoshy $
26.\"
27.Dd July 25, 2010
28.Dt DWARF_FORMEXPRLOC 3
29.Os
30.Sh NAME
31.Nm dwarf_formexprloc
32.Nd return information about a location expression
33.Sh LIBRARY
34.Lb libdwarf
35.Sh SYNOPSIS
36.In libdwarf.h
37.Ft int
38.Fo dwarf_formexprloc
39.Fa "Dwarf_Attribute attr"
40.Fa "Dwarf_Unsigned *retlen"
41.Fa "Dwarf_Ptr *retexpr"
42.Fa "Dwarf_Error *err"
43.Fc
44.Sh DESCRIPTION
45Function
46.Fn dwarf_formexprloc
47allows an application to retrieve the length and the bytes of a
48DWARF location expression.
49.Pp
50Argument
51.Ar attr
52should reference a DWARF attribute of the form
53.Dv DW_FORM_exprloc .
54Argument
55.Ar retlen
56should point to a location that will be set to the length of the
57location expression.
58Argument
59.Ar retexpr
60should point to a location that will be set to a pointer to the
61content of the location expression itself.
62.Pp
63If argument
64.Ar err
65is not NULL, it will be used to return an error descriptor in case
66of an error.
67.Ss Memory Management
68The application should not attempt to free the memory
69area referenced by the pointer returned in argument
70.Ar retexpr .
71.Sh RETURN VALUES
72Function
73.Fn dwarf_formexprloc
74returns
75.Dv DW_DLV_OK
76on success.
77In case of an error, it returns
78.Dv DW_DLV_ERROR
79and sets argument
80.Ar err .
81.Sh ERRORS
82Function
83.Fn dwarf_formexprloc
84may fail with the following errors:
85.Bl -tag -width ".Bq Er DW_DLE_ATTR_FORM_BAD"
86.It Bq Er DW_DLE_ARGUMENT
87One of arguments
88.Ar attr ,
89.Ar retlen
90or
91.Ar retexpr
92was NULL.
93.It Bq Er DW_DLE_ATTR_FORM_BAD
94The attribute referenced by argument
95.Ar attr
96was not of form
97.Dv DW_FORM_exprloc .
98.El
99.Sh SEE ALSO
100.Xr dwarf 3 ,
101.Xr dwarf_attr 3 ,
102.Xr dwarf_formblock 3 ,
103.Xr dwarf_formflag 3 ,
104.Xr dwarf_formref 3 ,
105.Xr dwarf_formsdata 3 ,
106.Xr dwarf_formsig8 3 ,
107.Xr dwarf_formstring 3 ,
108.Xr dwarf_formudata 3 ,
109.Xr dwarf_hasattr 3
110