mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-16 13:18:12 +01:00
14c48b3d51
init_local, but *not* setting use_prev_instr. This is necessary to correctly unwind using ucontext argument to signal handlers.
80 lines
2.8 KiB
TeX
80 lines
2.8 KiB
TeX
\documentclass{article}
|
|
\usepackage[fancyhdr,pdf]{latex2man}
|
|
|
|
\input{common.tex}
|
|
|
|
\begin{document}
|
|
|
|
\begin{Name}{3}{unw\_init\_local}{David Mosberger-Tang}{Programming Library}{unw\_init\_local}unw\_init\_local -- initialize cursor for local unwinding
|
|
\end{Name}
|
|
|
|
\section{Synopsis}
|
|
|
|
\File{\#include $<$libunwind.h$>$}\\
|
|
|
|
\Type{int} \Func{unw\_init\_local}(\Type{unw\_cursor\_t~*}\Var{c}, \Type{unw\_context\_t~*}\Var{ctxt});\\
|
|
\Type{int} \Func{unw\_init\_local_signal}(\Type{unw\_cursor\_t~*}\Var{c}, \Type{unw\_context\_t~*}\Var{ctxt});\\
|
|
|
|
\section{Description}
|
|
|
|
The \Func{unw\_init\_local}() routine initializes the unwind cursor
|
|
pointed to by \Var{c} with the machine-state in the context structure
|
|
pointed to by \Var{ctxt}. As such, the machine-state pointed to by
|
|
\Var{ctxt} identifies the initial stack frame at which unwinding
|
|
starts. The machine-state is expected to be one provided by a call to
|
|
unw_getcontext; as such, the instruction pointer may point to the
|
|
instruction after the last instruction of a function, and libunwind
|
|
will back-up the instruction pointer before beginning a walk up the
|
|
call stack. The machine-state must remain valid for the duration for
|
|
which the cursor \Var{c} is in use.
|
|
|
|
The \Func{unw\_init\_local}() routine can be used only for unwinding in
|
|
the address space of the current process (i.e., for local unwinding).
|
|
For all other cases, \Func{unw\_init\_remote}() must be used instead.
|
|
However, unwind performance may be better when using
|
|
\Func{unw\_init\_local}(). Also, \Func{unw\_init\_local}() is
|
|
available even when \Const{UNW\_LOCAL\_ONLY} has been defined before
|
|
including \File{$<$libunwind.h$>$}, whereas \Func{unw\_init\_remote}()
|
|
is not.
|
|
|
|
If the unw_context_t is known to be a signal frame (i.e., from the
|
|
third argument in a sigaction handler on linux),
|
|
\Func{unw\_init\_local\_signal}() should be used for correct
|
|
initialization on some platforms.
|
|
|
|
\section{Return Value}
|
|
|
|
On successful completion, \Func{unw\_init\_local}() returns 0.
|
|
Otherwise the negative value of one of the error-codes below is
|
|
returned.
|
|
|
|
\section{Thread and Signal Safety}
|
|
|
|
\Func{unw\_init\_local}() is thread-safe as well as safe to use from a
|
|
signal handler.
|
|
|
|
\section{Errors}
|
|
|
|
\begin{Description}
|
|
\item[\Const{UNW\_EINVAL}] \Func{unw\_init\_local}() was called in a
|
|
version of \Prog{libunwind} which supports remote unwinding only
|
|
(this normally happens when calling \Func{unw\_init\_local}() for a
|
|
cross-platform version of \Prog{libunwind}).
|
|
\item[\Const{UNW\_EUNSPEC}] An unspecified error occurred.
|
|
\item[\Const{UNW\_EBADREG}] A register needed by \Func{unw\_init\_local}()
|
|
wasn't accessible.
|
|
\end{Description}
|
|
|
|
\section{See Also}
|
|
|
|
\SeeAlso{libunwind(3)}, \SeeAlso{unw\_init\_remote(3)}
|
|
|
|
\section{Author}
|
|
|
|
\noindent
|
|
David Mosberger-Tang\\
|
|
Email: \Email{dmosberger@gmail.com}\\
|
|
WWW: \URL{http://www.nongnu.org/libunwind/}.
|
|
\LatexManEnd
|
|
|
|
\end{document}
|