FreeBSD manual
download PDF document: unw_get_proc_info.3libunwind.pdf
UNW_GET_PROC_INFO(3libunwind) Programming Library
NAME
unw_get_proc_info -- get info on current procedure
SYNOPSIS
#include <libunwind.h>
int unw_get_proc_info(unw_cursor_t *cp, unw_proc_info_t *pip);
DESCRIPTION
The unw_get_proc_info() routine returns auxiliary information about the
procedure that created the stack frame identified by argument cp. The
pip argument is a pointer to a structure of type unw_proc_info_t which
is used to return the information. The unw_proc_info_t has the
following members:
unw_word_t start_ip
The address of the first instruction of the procedure. If this
address cannot be determined (e.g., due to lack of unwind
information), the start_ip member is cleared to 0.
unw_word_t end_ip
The address of the first instruction beyond the end of the
procedure. If this address cannot be determined (e.g., due to
lack of unwind information), the end_ip member is cleared to 0.
unw_word_t lsda
The address of the language-specific data area (LSDA). This
area normally contains language-specific information needed
during exception handling. If the procedure has no such area,
this member is cleared to 0.
unw_word_t handler
The address of the exception handler routine. This is sometimes
called the personality routine. If the procedure does not define
a personality routine, the handler member is cleared to 0.
unw_word_t gp
The global pointer of the procedure. On platforms that do not
use a global pointer, this member may contain an undefined
value. On all other platforms, it must be set either to the
correct global pointer value of the procedure or to 0 if the
proper global pointer cannot be obtained for some reason.
unw_word_t flags
A set of flags. There are currently no target-independent
flags. For the IA-64 target, the flag
UNW_PI_FLAG_IA64_RBS_SWITCH is set if the procedure may switch
the register backing store.
int format
The format of the unwind info for this procedure. If the unwind
info consists of dynamic procedure info, format is equal to
UNW_INFO_FORMAT_DYNAMIC. If the unwind info consists of a
(target-specific) unwind table, it is equal to
UNW_INFO_FORMAT_TABLE. All other values are reserved for future
use by libunwind. This member exists for use by the
find_proc_info() callback (see
routine may return an undefined value in this member.
void *unwind_info
The pointer to the unwind info. If no unwind info is
available, this member must be set to NULL. This member exists
for use by the find_proc_info() callback (see
unw_create_addr_space(3libunwind)). The unw_get_proc_info()
routine may return an undefined value in this member.
Note that for the purposes of libunwind, the code of a procedure is
assumed to occupy a single, contiguous range of addresses. For this
reason, it is always possible to describe the extent of a procedure
with the start_ip and end_ip members. If a single function/routine is
split into multiple, discontiguous pieces, libunwind will treat each
piece as a separate procedure.
RETURN VALUE
On successful completion, unw_get_proc_info() returns 0. Otherwise the
negative value of one of the error codes below is returned.
THREAD AND SIGNAL SAFETY
unw_get_proc_info() is thread safe. If cursor cp is in the local
address space, this routine is also safe to use from a signal handler.
ERRORS
UNW_EUNSPEC
An unspecified error occurred.
UNW_ENOINFO
Libunwind was unable to locate unwind info for the procedure.
UNW_EBADVERSION
The unwind info for the procedure has version or format that is
not understood by libunwind.
In addition, unw_get_proc_info() may return any error returned by the
access_mem() callback (see unw_create_addr_space(3libunwind)).
SEE ALSO
libunwind(3libunwind), unw_create_addr_space(3libunwind),
unw_get_proc_name(3libunwind)
AUTHOR
David Mosberger-Tang
Email: dmosberger@gmail.com
WWW: http://www.nongnu.org/libunwind/.
Programming Library 29 August 2023 UNW_GET_PROC_INFO(3libunwind)