8158 Want named threads API
[unleashed.git] / usr / src / man / man3proc / Plookup_by_addr.3proc
blobd1b1593326d6db577d824f3047206319eb96eb95
1 .\"
2 .\" This file and its contents are supplied under the terms of the
3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
4 .\" You may only use this file in accordance with the terms of version
5 .\" 1.0 of the CDDL.
6 .\"
7 .\" A full copy of the text of the CDDL should have accompanied this
8 .\" source.  A copy of the CDDL is also available via the Internet at
9 .\" http://www.illumos.org/license/CDDL.
10 .\"
11 .\"
12 .\" Copyright 2015 Joyent, Inc.
13 .\"
14 .Dd May 11, 2016
15 .Dt PLOOKUP_BY_ADDR 3PROC
16 .Os
17 .Sh NAME
18 .Nm Plookup_by_addr ,
19 .Nm Pxlookup_by_addr ,
20 .Nm Pxlookup_by_addr_resolved ,
21 .Nm Plookup_by_name ,
22 .Nm Pxlookup_by_name
23 .Nd lookup symbols in a process
24 .Sh LIBRARY
25 .Lb libproc
26 .Sh SYNOPSIS
27 .In libproc.h
28 .Ft int
29 .Fo Plookup_by_addr
30 .Fa "struct ps_prochandle *P"
31 .Fa "uintptr_t addr"
32 .Fa "char *buf"
33 .Fa "size_t size"
34 .Fa "Gelf_Sym *symp"
35 .Fc
36 .Ft int
37 .Fo Pxlookup_by_addr
38 .Fa "struct ps_prochandle *P"
39 .Fa "uintptr_t addr"
40 .Fa "char *buf"
41 .Fa "size_t size"
42 .Fa "Gelf_Sym *symp"
43 .Fa "prsyminfo_t *sip"
44 .Fc
45 .Ft int
46 .Fo Pxlookup_by_addr_resolved
47 .Fa "struct ps_prochandle *P"
48 .Fa "uintptr_t addr"
49 .Fa "char *buf"
50 .Fa "size_t size"
51 .Fa "Gelf_Sym *symp"
52 .Fa "prsyminfo_t *sip"
53 .Fc
54 .Ft int
55 .Fo Plookup_by_name
56 .Fa "struct ps_prochandle *P"
57 .Fa "const char *object"
58 .Fa "const char *symbol"
59 .Fa "GElf_Sym *symp"
60 .Fc
61 .Ft int
62 .Fo Pxlookup_by_name
63 .Fa "struct ps_prochandle *P"
64 .Fa "Lmid_t lmid"
65 .Fa "const char *object"
66 .Fa "const char *symbol"
67 .Fa "GElf_Sym *symp"
68 .Fa "prsyminfo_t *sip"
69 .Fc
70 .Sh DESCRIPTION
71 The
72 .Fn Plookup_by_addr ,
73 .Fn Pxlookup_by_addr ,
74 .Fn Pxlookup_by_addr_resolved ,
75 .Fn Plookup_by_name ,
76 and
77 .Fn Pxlookup_by_name
78 functions look up symbol information in the process handle
79 .Fa P
80 and fill in the ELF symbol information in
81 .Fa symp
82 with the found symbol.
83 Symbols may be looked up both by address and name.
84 .Pp
85 The
86 .Fn Plookup_by_addr
87 function looks up symbol information corresponding to the address
88 .Fa addr .
89 If found, up to
90 .Fa size
91 bytes of the symbol's name, including the null terminator will be filled
92 in to the buffer
93 .Fa buf .
94 .Pp
95 The
96 .Fn Pxlookup_by_addr
97 function is identical to the
98 .Fn Plookup_by_addr
99 function, except that it also fills in the structure
100 .Fa sip
101 with additional information.
102 The definition of the
103 .Sy prsyminfo_t
104 is found in
105 .Xr libproc 3LIB .
108 .Fn Pxlookup_by_addr_resolved
109 function is similar to the
110 .Fn Pxlookup_by_addr
111 function; however, it attempts to resolve the paths present in the
112 .Sy prsyminfo_t
113 to an absolute path on the file system.
116 .Fn Plookup_by_name
117 function attempts to look up a symbol based on its name.
119 .Fa object
120 argument allows the caller to specify a specific object that was mapped
121 in by the run-time link-editor to search for
122 .Fa symbol
124 The system provides three special values which may be passed in for
125 .Fa object .
126 The value
127 .Dv PR_OBJ_EXEC
128 refers to the executable's object (a.out).
129 The value
130 .Dv PR_OBJ_LDSO
131 refers to the object
132 .Sy ld.so.1 .
133 The value
134 .Dv PR_OBJ_EVERY
135 indicates that every object should be searched.
138 .Fn Pxlookup_by_name
139 function is similar to the
140 .Fn Plookup_by_name
141 function; however, it allows a link-map identifier,
142 .Fa lmid ,
143 to be specified and also provides additional information about the
144 symbol in the form of the
145 .Sy prsyminfo_t
146 .Fa sip .
147 The specification of
148 .Fa lmid
149 restricts the search for the object named
150 .Fa object
151 and symbol named
152 .Fa symbol
153 to the specified link-map.
155 There are three special link-map identifiers that may be passed in.
156 The symbol
157 .Dv PR_LMID_EVERY
158 indicates that every link-map should be searched.
159 The symbol
160 .Dv LM_ID_BASE
161 indicates that the base link-map, the one that is used for the
162 executable should be searched.
163 Finally, the symbol
164 .Dv LM_ID_LDSO
165 refers to the link-map that is used by the run-time link editor, ld.so.1.
167 .Fn Plookup_by_name
168 function behaves like
169 .Fn Pxlookup_by_name
170 when the
171 .Dv PR_LMID_EVERY
172 argument is passed to
173 .Fa lmid ,
174 indicating that every link-map should be searched.
175 .Sh RETURN VALUES
176 Upon successful completion, the
177 .Fn Plookup_by_addr ,
178 .Fn Pxlookup_by_addr ,
179 .Fn Pxlookup_by_addr_resolved ,
180 .Fn Plookup_by_name ,
182 .Fn Pxlookup_by_name
183 functions return
184 .Sy 0
185 and fill in the symbol information.
186 Otherwise,
187 .Sy -1
188 is returned to indicate that the symbol could not be found.
189 .Sh INTERFACE STABILITY
190 .Sy Uncommitted
191 .Sh MT-LEVEL
193 .Sy LOCKING
195 .Xr libproc 3LIB .
196 .Sh SEE ALSO
197 .Xr elf 3ELF ,
198 .Xr gelf 3ELF ,
199 .Xr libproc 3LIB ,
200 .Xr proc 4