1e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\documentclass{article} 2e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\usepackage[fancyhdr,pdf]{latex2man} 3e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 4e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\input{common.tex} 5e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 6e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\begin{document} 7e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 8e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\begin{Name}{3}{unw\_get\_proc\_info\_by\_ip}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info\_by\_ip}unw\_get\_proc\_info\_by\_ip -- get procedure info by IP 9e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\end{Name} 10e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 11e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Synopsis} 12e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 13e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\File{\#include $<$libunwind.h$>$}\\ 14e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 15e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\Type{int} \Func{unw\_get\_proc\_info\_by\_ip}(\Type{unw\_addr\_space\_t~}\Var{as}, \Type{unw\_word\_t~}\Var{ip}, \Type{unw\_proc\_info\_t~*}\Var{pip}, \Type{void~*}\Var{arg});\\ 16e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 17e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Description} 18e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 19e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmThe \Func{unw\_get\_proc\_info\_by\_ip}() routine returns the same 20e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmkind of auxiliary information about a procedure as 21e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\Func{unw\_get\_proc\_info}(), except that the info is looked up by 22e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidminstruction-pointer (IP) instead of a cursor. This is more flexible 23e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmbecause it is possible to look up the info for an arbitrary procedure, 24e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmeven if it is not part of the current call-chain. However, since it 25e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmis more flexible, it also tends to run slower (and often much slower) 26e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmthan \Func{unw\_get\_proc\_info}(). 27e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 28e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmThe routine expects the followins arguments: \Var{as} is the 29e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmaddress-space in which the instruction-pointer should be looked up. 30e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmFor a look-up in the local address-space, 31e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\Var{unw\_local\_addr\_space} can be passed for this argument. 32e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmArgument \Var{ip} is the instruction-pointer for which the procedure 33e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidminfo should be looked up and \Var{pip} is a pointer to a structure of 34e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmtype \Type{unw\_proc\_info\_t} which is used to return the info. 35e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmLastly, \Var{arg} is the address-space argument that should be used 36e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmwhen accessing the address-space. It has the same purpose as the 37e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmargument of the same name for \Func{unw\_init\_remote}(). When 38e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmaccessing the local address-space (first argument is 39e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\Var{unw\_local\_addr\_space}), \Const{NULL} must be passed for this 40e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmargument. 41e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 42e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmNote that for the purposes of \Prog{libunwind}, the code of a 43e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmprocedure is assumed to occupy a single, contiguous range of 44e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmaddresses. For this reason, it is alwas possible to describe the 45e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmextent of a procedure with the \Var{start\_ip} and \Var{end\_ip} 46e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmmembers. If a single function/routine is split into multiple, 47e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmdiscontiguous pieces, \Prog{libunwind} will treat each piece as a 48e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmseparate procedure. 49e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 50e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Return Value} 51e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 52e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmOn successful completion, \Func{unw\_get\_proc\_info\_by\_ip}() 53e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmreturns 0. Otherwise the negative value of one of the error-codes 54e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmbelow is returned. 55e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 56e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Thread and Signal Safety} 57e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 5838fe40cb1a7a31338a7c360011446286dd917891mostang.com!davidm\Func{unw\_get\_proc\_info}() is thread-safe. If the local 5938fe40cb1a7a31338a7c360011446286dd917891mostang.com!davidmaddress-space is passed in argument \Var{as}, this routine is also 6038fe40cb1a7a31338a7c360011446286dd917891mostang.com!davidmsafe to use from a signal handler. 61e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 62e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Errors} 63e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 64e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\begin{Description} 65e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\item[\Const{UNW\_EUNSPEC}] An unspecified error occurred. 66e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\item[\Const{UNW\_ENOINFO}] \Prog{Libunwind} was unable to locate 67e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm unwind-info for the procedure. 68e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\item[\Const{UNW\_EBADVERSION}] The unwind-info for the procedure has 69e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm version or format that is not understood by \Prog{libunwind}. 70e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\end{Description} 71e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmIn addition, \Func{unw\_get\_proc\_info}() may return any error 72e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmreturned by the \Func{access\_mem}() call-back (see 73e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\Func{unw\_create\_addr\_space}(3)). 74e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 75e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{See Also} 76e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 77e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\SeeAlso{libunwind(3)}, 78e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\SeeAlso{unw\_create\_addr\_space(3)}, 79e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\SeeAlso{unw\_get\_proc\_name(3)}, 80e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\SeeAlso{unw\_get\_proc\_info(3)}, 81e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\SeeAlso{unw\_init\_remote(3)} 82e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 83e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\section{Author} 84e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 85e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\noindent 86e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidmDavid Mosberger-Tang\\ 8775f34ccb7dcdfd2b96e370824b3fd723b2f22b49David Mosberger-TangEmail: \Email{dmosberger@gmail.com}\\ 8875f34ccb7dcdfd2b96e370824b3fd723b2f22b49David Mosberger-TangWWW: \URL{http://www.nongnu.org/libunwind/}. 89e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\LatexManEnd 90e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm 91e6f6a92db185a79b24660b60e55ef271bbbfd2f5hp.com!davidm\end{document} 92