summaryrefslogtreecommitdiff
path: root/doc/unw_get_proc_name.man
blob: 8b2bd06eaf084a0dccdd8f671faee000a1bbb7a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
'\" t
.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007
.\" NOTE: This file is generated, DO NOT EDIT.
.de Vb
.ft CW
.nf
..
.de Ve
.ft R

.fi
..
.TH "UNW\\_GET\\_PROC\\_NAME" "3" "16 August 2007" "Programming Library " "Programming Library "
.SH NAME
unw_get_proc_name
\-\- get name of current procedure 
.PP
.SH SYNOPSIS

.PP
#include <libunwind.h>
.br
.PP
int
unw_get_proc_name(unw_cursor_t *cp,
char *bufp,
size_t
len,
unw_word_t *offp);
.br
.PP
.SH DESCRIPTION

.PP
The unw_get_proc_name()
routine returns the name of the 
procedure that created the stack frame identified by argument 
cp\&.
The bufp
argument is a pointer to a character buffer 
that is at least len
bytes long. This buffer is used to return 
the name of the procedure. The offp
argument is a pointer to a 
word that is used to return the byte\-offset of the instruction\-pointer 
saved in the stack frame identified by cp,
relative to the start 
of the procedure. For example, if procedure foo()
starts at 
address 0x40003000, then invoking unw_get_proc_name()
on a 
stack frame with an instruction\-pointer value of 0x40003080 would 
return a value of 0x80 in the word pointed to by offp
(assuming 
the procedure is at least 0x80 bytes long). 
.PP
Note that on some platforms there is no reliable way to distinguish 
between procedure names and ordinary labels. Furthermore, if symbol 
information has been stripped from a program, procedure names may be 
completely unavailable or may be limited to those exported via a 
dynamic symbol table. In such cases, unw_get_proc_name()
may return the name of a label or a preceeding (nearby) procedure. 
However, the offset returned through offp
is always relative to 
the returned name, which ensures that the value (address) of the 
returned name plus the returned offset will always be equal to the 
instruction\-pointer of the stack frame identified by cp\&.
.PP
.SH RETURN VALUE

.PP
On successful completion, unw_get_proc_name()
returns 0. 
Otherwise the negative value of one of the error\-codes below is 
returned. 
.PP
.SH THREAD AND SIGNAL SAFETY

.PP
unw_get_proc_name()
is thread\-safe. If cursor cp
is 
in the local address\-space, this routine is also safe to use from a 
signal handler. 
.PP
.SH ERRORS

.PP
.TP
UNW_EUNSPEC
 An unspecified error occurred. 
.TP
UNW_ENOINFO
 Libunwind
was unable to determine 
the name of the procedure. 
.TP
UNW_ENOMEM
 The procedure name is too long to fit 
in the buffer provided. A truncated version of the name has been 
returned. 
.PP
In addition, unw_get_proc_name()
may return any error 
returned by the access_mem()
call\-back (see 
unw_create_addr_space(3)).
.PP
.SH SEE ALSO

.PP
libunwind(3),
unw_get_proc_info(3)
.PP
.SH AUTHOR

.PP
David Mosberger\-Tang
.br
Email: \fBdmosberger@gmail.com\fP
.br
WWW: \fBhttp://www.nongnu.org/libunwind/\fP\&.
.\" NOTE: This file is generated, DO NOT EDIT.