211 lines
5.8 KiB
Groff
211 lines
5.8 KiB
Groff
.\" Copyright (c) 2011 Kai Wang
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $Id: dwarf_get_vars.3 2071 2011-10-27 03:20:00Z jkoshy $
|
|
.\"
|
|
.Dd April 2, 2011
|
|
.Os
|
|
.Dt DWARF_GET_VARS 3
|
|
.Sh NAME
|
|
.Nm dwarf_get_vars ,
|
|
.Nm dwarf_var_cu_offset ,
|
|
.Nm dwarf_var_die_offset ,
|
|
.Nm dwarf_var_name_offsets ,
|
|
.Nm dwarf_varname
|
|
.Nd retrieve information about static variables
|
|
.Sh LIBRARY
|
|
.Lb libdwarf
|
|
.Sh SYNOPSIS
|
|
.In libdwarf.h
|
|
.Ft int
|
|
.Fo dwarf_get_vars
|
|
.Fa "Dwarf_Debug dbg"
|
|
.Fa "Dwarf_Var **vars"
|
|
.Fa "Dwarf_Signed *nvars"
|
|
.Fa "Dwarf_Error *err"
|
|
.Fc
|
|
.Ft int
|
|
.Fo dwarf_var_cu_offset
|
|
.Fa "Dwarf_Var var"
|
|
.Fa "Dwarf_Off *cu_offset"
|
|
.Fa "Dwarf_Error *err"
|
|
.Fc
|
|
.Ft int
|
|
.Fo dwarf_var_die_offset
|
|
.Fa "Dwarf_Var var"
|
|
.Fa "Dwarf_Off *die_offset"
|
|
.Fa "Dwarf_Error *err"
|
|
.Fc
|
|
.Ft int
|
|
.Fo dwarf_var_name_offsets
|
|
.Fa "Dwarf_Var var"
|
|
.Fa "char **name"
|
|
.Fa "Dwarf_Off *die_offset"
|
|
.Fa "Dwarf_Off *cu_die_offset"
|
|
.Fa "Dwarf_Error *err"
|
|
.Fc
|
|
.Ft int
|
|
.Fo dwarf_varname
|
|
.Fa "Dwarf_Var var"
|
|
.Fa "char **name"
|
|
.Fa "Dwarf_Error *err"
|
|
.Fc
|
|
.Sh DESCRIPTION
|
|
These functions retrieve information about the file scope static
|
|
variables associated with a DWARF debug context.
|
|
Information about these static variables is returned using opaque
|
|
descriptors of type
|
|
.Vt Dwarf_Var .
|
|
Applications need to use the functions described below to retrieve
|
|
the name and offset information contained in these descriptors.
|
|
.Pp
|
|
Function
|
|
.Fn dwarf_get_vars
|
|
retrieves descriptors for all the static variables associated with the
|
|
DWARF debug context specified by argument
|
|
.Ar dbg .
|
|
The argument
|
|
.Ar vars
|
|
should point to a location that will be set to a pointer to an array
|
|
of
|
|
.Vt Dwarf_Var
|
|
descriptors.
|
|
The argument
|
|
.Ar nvars
|
|
should point to a location that will be set to the number of
|
|
descriptors returned.
|
|
.Pp
|
|
Function
|
|
.Fn dwarf_var_cu_offset
|
|
returns the section-relative offset, relative to the
|
|
.Dq ".debug_info"
|
|
section, of the compilation unit that
|
|
contains the debugging information entry associated with the argument
|
|
.Ar var .
|
|
Argument
|
|
.Ar cu_offset
|
|
should point to a location that will hold the returned offset.
|
|
.Pp
|
|
Function
|
|
.Fn dwarf_var_die_offset
|
|
retrieves the section-relative offset, relative to the
|
|
.Dq ".debug_info"
|
|
section, of the debugging information
|
|
entry associated with the argument
|
|
.Ar var ,
|
|
and stores it into the location pointed to by the argument
|
|
.Ar die_offset .
|
|
.Pp
|
|
Function
|
|
.Fn dwarf_var_name_offsets
|
|
retrieves both the name and the associated offsets for the debugging
|
|
information entry for argument
|
|
.Ar var .
|
|
Argument
|
|
.Ar name
|
|
should point to a location which will be set to a pointer to a
|
|
NUL-terminated string containing the name of the associated debugging
|
|
information entry.
|
|
Argument
|
|
.Ar die_offset
|
|
should point to a location which will be set to a section-relative
|
|
offset, relative to the
|
|
.Dq ".debug_info"
|
|
section, of the associated debugging information entry.
|
|
Argument
|
|
.Ar cu_die_offset
|
|
should point to a location which will be set to a
|
|
section-relative offset, relative to the
|
|
.Dq ".debug_info"
|
|
section, of the first debugging information entry in
|
|
the compilation unit associated with argument
|
|
.Ar var .
|
|
.Pp
|
|
Function
|
|
.Fn dwarf_varname
|
|
sets the location pointed to by argument
|
|
.Ar name
|
|
to a pointer to a NUL-terminated string holding the name of the
|
|
debugging information entry associated with the argument
|
|
.Ar var .
|
|
.Ss Memory Management
|
|
The memory area used for the array of
|
|
.Vt Dwarf_Var
|
|
descriptors returned in argument
|
|
.Ar vars
|
|
by function
|
|
.Fn dwarf_get_vars
|
|
is owned by the
|
|
.Lb libdwarf .
|
|
Application code should not attempt to directly free this pointer.
|
|
Portable code should instead use the function
|
|
.Xr dwarf_vars_dealloc 3
|
|
to indicate that the memory area may be freed.
|
|
.Pp
|
|
The memory area used for the string returned in the
|
|
.Ar name
|
|
argument to functions
|
|
.Fn dwarf_var_name_offsets
|
|
and
|
|
.Fn dwarf_varname
|
|
is owned by the
|
|
.Lb libdwarf .
|
|
Portable code should indicate that the memory area can
|
|
be freed using the
|
|
.Xr dwarf_dealloc 3
|
|
function.
|
|
.Ss Error Returns
|
|
If argument
|
|
.Ar err
|
|
is not NULL, these functions will use it to store error information,
|
|
in case of an error.
|
|
.Sh RETURN VALUES
|
|
On success, these functions returns
|
|
.Dv DW_DLV_OK .
|
|
In case of an error, they return
|
|
.Dv DW_DLV_ERROR
|
|
and set the argument
|
|
.Ar err .
|
|
.Sh ERRORS
|
|
These functions may fail with the following errors:
|
|
.Bl -tag -width ".Bq Er DW_DLE_ARGUMENT"
|
|
.It Bq Er DW_DLE_ARGUMENT
|
|
One of the arguments
|
|
.Va cu_die_offset ,
|
|
.Va cu_offset ,
|
|
.Va dbg ,
|
|
.Va die_offset ,
|
|
.Va var ,
|
|
.Va vars ,
|
|
.Va name ,
|
|
or
|
|
.Va nvars
|
|
was NULL.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr dwarf 3 ,
|
|
.Xr dwarf_dealloc 3 ,
|
|
.Xr dwarf_get_cu_die_offset_given_cu_header_offset 3 ,
|
|
.Xr dwarf_vars_dealloc 3
|