1#
2# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
3# Use is subject to license terms.
4#
5# CDDL HEADER START
6#
7# The contents of this file are subject to the terms of the
8# Common Development and Distribution License, Version 1.0 only
9# (the "License").  You may not use this file except in compliance
10# with the License.
11#
12# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13# or http://www.opensolaris.org/os/licensing.
14# See the License for the specific language governing permissions
15# and limitations under the License.
16#
17# When distributing Covered Code, include this CDDL HEADER in each
18# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19# If applicable, add the following below this CDDL HEADER, with the
20# fields enclosed by brackets "[]" replaced with your own identifying
21# information: Portions Copyright [yyyy] [name of copyright owner]
22#
23# CDDL HEADER END
24#
25# pragma ident	"%Z%%M%	%I%	%E% SMI"
26#
27
28@ _START_
29
30@ _END_
31
32#
33# Misc. Strings
34#
35@ MSG_STR_NAME		"NAME"
36@ MSG_STR_PATHNAME	"PATHNAME"
37@ MSG_STR_REFNAME	"REFNAME"
38@ MSG_STR_RPATH		"RPATH"
39@ MSG_STR_DASHES	"----------------------------------------------\n"
40@ MSG_STR_LDSO1		"ld.so.1"
41@ MSG_STR_DYNLMLIST	"dynlm_list"
42@ MSG_STR_ALIST		"Alist"
43@ MSG_STR_LISTNODE	"Listnode"
44@ MSG_STR_EMPTY		""
45@ MSG_STR_ORPHANED	"<orphaned>"
46@ MSG_STR_SETENV	"setenv"
47
48#
49# mdb_dcmd_t.dc_usage's
50#
51@ MSG_USG_ADDREQ	":"			# Address required
52@ MSG_USG_ADDREQ_V	":[-v]"			# Address required plus -v
53@ MSG_USG_ADDOPT_V	"?[-v]"			# Address optional plus -v
54@ MSG_USG_SETENV	"name[=value]"		# Setenv argument
55
56#
57# mdb_walker.walk_descr's
58#
59@ MSG_WWD_RTMAP		"Walk a List of Rt_maps"
60@ MSG_WWD_LIST		"Walk a List"
61
62#
63# Flag Strings
64#
65@ MSG_FLG_ISMAIN	"ISMAIN"
66@ MSG_FLG_IMGALLOC	"IMGALLOC"
67@ MSG_FLG_RELOCED	"RELOCED"
68@ MSG_FLG_SETGROUP	"SETGROUP"
69@ MSG_FLG_HWCAP		"HWCAP"
70@ MSG_FLG_OBJECT	"OBJECT"
71@ MSG_FLG_NODUMP	"NODUMP"
72@ MSG_FLG_DELETE	"DELETE"
73@ MSG_FLG_ANALYZED	"ANALYZED"
74@ MSG_FLG_INITDONE	"INITDONE"
75@ MSG_FLG_TRANS		"TRANS"
76@ MSG_FLG_FIXED		"FIXED"
77@ MSG_FLG_PRELOAD	"PRELOAD"
78@ MSG_FLG_ALTER		"ALTER"
79@ MSG_FLG_LOADFLTR	"LOADFLTR"
80@ MSG_FLG_AUDIT		"AUDIT"
81@ MSG_FLG_MODESET	"MODESET"
82@ MSG_FLG_ANALZING	"ANALYZING"
83@ MSG_FLG_INITFRST	"INITFRST"
84@ MSG_FLG_NOOPEN	"NOOPEN"
85@ MSG_FLG_FINICLCT	"FINICLCT"
86@ MSG_FLG_INITCALL	"INITCALL"
87@ MSG_FLG_INTRPOSE	"INTRPOSE"
88@ MSG_FLG_DIRECT	"DIRECT"
89@ MSG_FLG_SUNWBSS	"SUNWBSS"
90@ MSG_FLG_MOVE		"MOVE"
91@ MSG_FLG_DLSYM		"DLSYM"
92@ MSG_FLG_REGSYMS	"REGSYMS"
93@ MSG_FLG_INITCLCT	"INITCLCT"
94@ MSG_FLG_HANDLE	"HANDLE"
95@ MSG_FLG_RELOCING	"RELOCATING"
96
97@ MSG_FL1_COPYTOOK	"COPYTOOK"
98@ MSG_FL1_RELATIVE	"RELATIVE"
99@ MSG_FL1_CONFSET	"CONFSET"
100@ MSG_FL1_NODEFLIB	"NODEFLIB"
101@ MSG_FL1_ENDFILTE	"ENDFILTE"
102@ MSG_FL1_DISPREL	"DISPREL"
103@ MSG_FL1_TEXTREL	"TEXTREL"
104@ MSG_FL1_INITWAIT	"INITWAIT"
105@ MSG_FL1_LDDSTUB	"LDDSTUB"
106@ MSG_FL1_NOINIFIN	"NOINITFINI"
107@ MSG_FL1_USED		"USED"
108@ MSG_FL1_SYMBOLIC	"SYMBOLIC"
109@ MSG_FL1_OBJSFLTR	"OBJSFLTR"
110@ MSG_FL1_OBJAFLTR	"OBJAFLTR"
111@ MSG_FL1_SYMSFLTR	"SYMSFLTR"
112@ MSG_FL1_SYMAFLTR	"SYMAFLTR"
113
114@ MSG_MODE_LAZY		"LAZY"
115@ MSG_MODE_NOW		"NOW"
116@ MSG_MODE_NOLOAD	"NOLOAD"
117@ MSG_MODE_GLOBAL	"GLOBAL"
118@ MSG_MODE_PARENT	"PARENT"
119@ MSG_MODE_GROUP	"GROUP"
120@ MSG_MODE_WORLD	"WORLD"
121@ MSG_MODE_NODELETE	"NODELETE"
122@ MSG_MODE_FIRST	"FIRST"
123@ MSG_MODE_CONFGEN	"CONFGEN"
124
125@ MSG_BFL_NEEDED	"NEEDED"
126@ MSG_BFL_REFER		"REFERENCED"
127@ MSG_BFL_FILTER	"FILTER"
128
129@ MSG_GPH_ZERO		"ZERO"
130@ MSG_GPH_LDSO		"LD.SO.1"
131@ MSG_GPH_FIRST		"FIRST-ONLY"
132@ MSG_GPH_PARENT	"PARENT-REQUIRED"
133@ MSG_GPH_FILTEE	"FILTEE"
134@ MSG_GPH_INITIAL	"INITIALIZED"
135@ MSG_GPH_STICKY	"STICKY"
136
137@ MSG_GPD_AVAIL		"AVAIL-TO-DLSYM"
138@ MSG_GPD_ADDEPS	"ADD-DEPENDENCIES"
139@ MSG_GPD_PARENT	"PARENT"
140@ MSG_GPD_FILTER	"FILTER"
141@ MSG_GPD_REMOVE	"REMOVAL-CANDIDATE"
142
143@ MSG_LFL_BASELM	"BASELM"
144@ MSG_LFL_RTLDLM	"RTLDLM"
145@ MSG_LFL_NOAUDIT	"NOAUDIT"
146@ MSG_LFL_PLTREL	"PLTREL"
147@ MSG_LFL_HOLDLOCK	"HOLDLOCK"
148@ MSG_LFL_ENVIRON	"ENVIRON"
149@ MSG_LFL_INTRPOSE	"INTRPOSE"
150@ MSG_LFL_LOCAUDIT	"LOCAUDIT"
151@ MSG_LFL_LOADAVAIL	"LOADAVAIL"
152@ MSG_LFL_IGNRELERR	"IGNRELERR"
153@ MSG_LFL_DBNOTIF	"DBNOTIF"
154@ MSG_LFL_STARTREL	"STARTREL"
155@ MSG_LFL_ATEXIT	"ATEXIT"
156@ MSG_LFL_OBJADDED	"OBJADDED"
157@ MSG_LFL_OBJDELETED	"OBJDELETED"
158@ MSG_LFL_OBJREEVAL	"OBJREEVAL"
159
160@ MSG_LFL_TRC_LDDSTUB	"TRC_LDDSTUB"
161@ MSG_LFL_TRC_ENABLE	"TRC_ENABLE"
162@ MSG_LFL_TRC_WARN	"TRC_WARN"
163@ MSG_LFL_TRC_VERBOSE	"TRC_VERBOSE"
164@ MSG_LFL_TRC_SEARCH	"TRC_SEARCH"
165@ MSG_LFL_TRC_UNREF	"TRC_UNREF"
166@ MSG_LFL_TRC_UNUSED	"TRC_UNUSED"
167@ MSG_LFL_TRC_INIT	"TRC_INIT"
168
169@ MSG_LTFL_NOLAZYLD	"NOLAZYLD"
170@ MSG_LTFL_NODIRECT	"NODIRECT"
171@ MSG_LTFL_LOADFLTR	"LOADFLTR"
172
173@ MSG_LTFL_AUD_PREINIT		"AUD_PREINIT"
174@ MSG_LTFL_AUD_OBJSEARCH	"AUD_OBJSEARCH"
175@ MSG_LTFL_AUD_OBJOPEN		"AUD_OBJOPEN"
176@ MSG_LTFL_AUD_OBJFILTER	"AUD_OBJFILTER"
177@ MSG_LTFL_AUD_OBJCLOSE		"AUD_OBJCLOSE"
178@ MSG_LTFL_AUD_SYMBIND		"AUD_SYMBIND"
179@ MSG_LTFL_AUD_PLTENTER		"AUD_PLTENTER"
180@ MSG_LTFL_AUD_PLTEXIT		"AUD_PLTEXIT"
181@ MSG_LTFL_AUD_ACTIVITY		"AUD_ACTIVITY"
182
183@ MSG_LMC_ANALYZING		"ANALYZING"
184@ MSG_LMC_RELOCATING		"RELOCATING"
185@ MSG_LMC_REANALYZE		"REANALYZE"
186
187#
188# Error messages
189#
190@ MSG_ERR_NAS		"%s:: no address specified\n"
191@ MSG_ERR_READ		"%s:: failed to read from: 0x%p\n"
192@ MSG_ERR_SYMFAILED	"rtmaps:: lookup of %s`%s failed\n"
193
194#
195# Various generic format strings
196#
197@ MSG_FMT_RT		"[0x%x]\t0x%0?p 0x%0?p %s\n"
198@ MSG_FMT_LN		"0x%0?p 0x%0?p 0x%0?p\n"
199
200#
201# Elf header messages.
202#
203@ MSG_EHDR_STR		"ElfEhdr"
204
205@ MSG_EHDR_DCD		"Display Elf_Ehdr entry"
206
207@ MSG_EHDR_TITLE	"Elf Header located at: 0x%p\n"
208@ MSG_EHDR_LINE1	" ei_magic:    { 0x%x, %c, %c, %c }\n"
209@ MSG_EHDR_LINE2	" ei_class:    %-18s  ei_data:     %s\n"
210@ MSG_EHDR_LINE3	" e_machine:   %-18s  e_version:   %s\n"
211@ MSG_EHDR_LINE4	" e_type:      %s\n"
212@ MSG_EHDR_LINE5	" e_flags:     %s\n"
213@ MSG_EHDR_LINE6	" e_flags:     %18s\n"
214@ MSG_EHDR_LINE7	" e_entry:     %#18lx  e_ehsize:     %2d  \
215			  e_shstrndx:   %2d\n"
216@ MSG_EHDR_LINE8	" e_shoff:     %#18lx  e_shentsize:  %2d  \
217			  e_shnum:      %2d\n"
218@ MSG_EHDR_LINE9	" e_phoff:     %#18lx  e_phentsize:  %2d  \
219			  e_phnum:      %2d\n"
220
221@ MSG_EHDR_HELP		"\
222   Decode an ELF Header (Elf_Ehdr) structure.\n\
223   \n\
224   Example:\n\n\
225   \t> 0x10000::ElfEhdr \n\
226   \tElf Header located at: 0x10000\n\
227   \t ei_magic:    { 0x7f, E, L, F }\n\
228   \t ei_class:    ELFCLASS32          ei_data:     ELFDATA2MSB\n\
229   \t e_machine:   EM_SPARC            e_version:   EV_CURRENT\n\
230   \t e_type:      ET_EXEC\n\
231   \t e_flags:                      0\n\
232   \t e_entry:                0x10640  e_ehsize:     52  e_shstrndx:   27\n\
233   \t e_shoff:                 0x1390  e_shentsize:  40  e_shnum:      29\n\
234   \t e_phoff:                   0x34  e_phentsize:  32  e_phnum:       5\n"
235
236#
237# Elf Program Header messages.
238#
239
240@ MSG_EPHDR_STR		"ElfPhdr"
241
242@ MSG_EPHDR_DCD		"Display Elf_Phdr entry"
243
244@ MSG_EPHDR_TITLE	"Program Header located at: 0x%p\n"
245@ MSG_EPHDR_LINE1	"    p_vaddr:      %#-14lx  p_flags:    %s\n"
246@ MSG_EPHDR_LINE2	"    p_paddr:      %#-14lx  p_type:     %s\n"
247@ MSG_EPHDR_LINE3	"    p_filesz:     %#-14lx  p_memsz:    %#lx\n"
248@ MSG_EPHDR_LINE4	"    p_offset:     %#-14lx  p_align:    %#lx\n"
249
250@ MSG_EPHDR_HELP	"\
251   Decode an ELF Program Header (Elf_Phdr) structure.\n\
252   \n\
253   Example 1 - a single entry:\n\n\
254   \t> 0x10000+0x34::ElfPhdr\n\
255   \tProgram Header located at: 0x10034\n\
256   \t    p_vaddr:      0x10034         p_flags:    [ PF_X  PF_R ]\n\
257   \t    p_paddr:      0               p_type:     [ PT_PHDR ]\n\
258   \t    p_filesz:     0xa0            p_memsz:    0xa0\n\
259   \t    p_offset:     0x34            p_align:    0\n\
260   \n\
261   Example 2 - multiple entries:\n\n\
262   \t> 0x10034,2::ElfPhdr\n\
263   \tProgram Header located at: 0x10034\n\
264   \t    p_vaddr:      0x10034         p_flags:    [ PF_X  PF_R ]\n\
265   \t    p_paddr:      0               p_type:     [ PT_PHDR ]\n\
266   \t    p_filesz:     0xa0            p_memsz:    0xa0\n\
267   \t    p_offset:     0x34            p_align:    0\n\
268   \tProgram Header located at: 0x10054\n\
269   \t    p_vaddr:      0               p_flags:    [ PF_R ]\n\
270   \t    p_paddr:      0               p_type:     [ PT_INTERP ]\n\
271   \t    p_filesz:     0x11            p_memsz:    0\n\
272   \t    p_offset:     0xd4            p_align:    0\n"
273
274
275#
276# Elf_Dyn messages.
277#
278
279@ MSG_ELFDYN_STR	"ElfDyn"
280
281@ MSG_ELFDYN_DCD	"Display Elf_Dyn entry"
282
283@ MSG_ELFDYN_TITLE	"Elf_Dyn located at: 0x%p\n"
284@ MSG_ELFDYN_LINE1	"    %a  %s\t  0x%0?p\n"
285
286@ MSG_ELFDYN_HELP	"\
287   Decode an ELF dynamic section (Elf_Dyn) entry.\n\
288   \n\
289   Example 1 - a single entry:\n\n\
290   \t> 0xff33a478::ElfDyn\n\
291   \tElf_Dyn located at: 0xff33a478\n\
292   \t    0xff33a478  NEEDED  0x00004013\n\
293   \n\
294   Example 2 - multiple entries:\n\n\
295   \t> 0xff33a478,4::ElfDyn\n\
296   \tElf_Dyn located at: 0xff33a478\n\
297   \t    0xff33a478  NEEDED  0x00004013\n\
298   \tElf_Dyn located at: 0xff33a480\n\
299   \t    0xff33a480  INIT    0x0009b484\n\
300   \tElf_Dyn located at: 0xff33a488\n\
301   \t    0xff33a488  FINI    0x0009b4dc\n\
302   \tElf_Dyn located at: 0xff33a490\n\
303   \t    0xff33a490  SONAME  0x00004009\n"
304
305
306#
307# List messages.
308#
309
310@ MSG_LIST_STR		"List"
311
312@ MSG_LIST_DCD		"Display entries in a List"
313
314@ MSG_LIST_TITLE	"Listnode   data       next\n"
315
316@ MSG_LIST_HELP		"\
317   Walk a List structure.  A list consists of a chain of Listnodes.  The head\n\
318   of a List points to the initial node, the tail of the list points to the\n\
319   final node.  A Listnode contains a pointer to a data item and a pointer to\n\
320   the next Listnode.\n\
321   \n\
322   Example:\n\n\
323   \t> ld.so.1`dynlm_list::List\n\
324   \tListnode   data       next\n\
325   \t---------------------------------------------\n\
326   \t0xff3b05ac 0xff3f60c8 0xff3b05c4\n\
327   \t0xff3b05c4 0xff3f60e8 0x00000000\n"
328
329#
330# Lm_list messages.
331#
332
333@ MSG_LMLIST_STR	"Lm_list"
334
335@ MSG_LMLIST_DCD	"Display Lm_list structure"
336
337@ MSG_LMLIST_BASE	"(LM_ID_BASE)"
338@ MSG_LMLIST_LDSO	"(LM_ID_LDSO)"
339@ MSG_LMLIST_NEWLM	"(LM_ID_NEWLM)"
340
341@ MSG_LMLIST_TITLE1	"Link-map lists (%s): 0x%p\n";
342@ MSG_LMLIST_TITLE2	"Lm_list: 0x%p  %s\n"
343
344@ MSG_LMLIST_LINE0	"   lists: 0x%0?p Alist[used %u: total %u]\n"
345
346@ MSG_LMC_LINE1		"Lm_cntl: 0x%p\n"
347@ MSG_LMC_LINE2		"   head: 0x%0?p\t     tail: 0x%0?p\n"
348@ MSG_LMC_LINE3		"  flags: 0x%08x\t      now: 0x%0?p\n"
349@ MSG_LMC_LINE4		"         [ %#b ]\n"
350
351@ MSG_LMLIST_LINE1	"    head: 0x%0?p\t     tail: 0x%0?p\n"
352@ MSG_LMLIST_LINE2	"   audit: 0x%0?p\t  preexec: 0x%0?p\n"
353@ MSG_LMLIST_LINE3	"  handle: 0x%0?p\t      obj: %4d  init: %4d  \
354			 lazy: %4d\n"
355@ MSG_LMLIST_LINE4	"   flags: 0x%08x\n"
356@ MSG_LMLIST_LINE5	"  tflags: 0x%08x\n"
357@ MSG_LMLIST_LINE6	"          [ %#b ]\n"
358
359@ MSG_LMLIST_HELP	"\
360   Display a link-map list header.  If no address is specified, the \
361   dynlm_list\nmaster link-map list is searched and all link-map headers \
362   displayed.\n\
363   \n\
364   A link-map list header points to a family of link-map control lists, \
365   together\nwith other state information. The initial control list represents \
366   those\nobjects that have been completely analyzed and relocated, and are \
367   presently in\nuse.  \
368   Additional control lists may exist as families of objects are processed\nin \
369   preparation for joining the main control list.  These families are created\n\
370   from events such as dlopen(3c), lazy loading, and filtee processing, once\n\
371   the initial process that started the application has been relocated.\n\
372   \n\
373   The -v option walks all link-map control lists displaying each member.\n\
374   \n\
375   Example 1 - a single, verbose entry, starting from a specified address:\n\n\
376   \n\
377   \t> 0xff3ee0f0::Lm_list -v\n\
378   \tLm_list: 0xff3ee0f0  (LM_ID_BASE)\n\
379   \t----------------------------------------------\n\
380   \t   lists: 0xff3f0b00 Alist[used 1: total 4]\n\
381   \t  ----------------------------------------------\n\
382   \t    Lm_cntl: 0xff3f0b0c\n\
383   \t       head: 0xff3f0fdc      tail: 0xff3f13bc\n\
384   \t      flags: 0x00000000       now: 0x00000000\n\
385   \t             [ 0 ]\n\
386   \t    ----------------------------------------------\n\
387   \t    lmco        rtmap       ADDR()     NAME()\n\
388   \t    ----------------------------------------------\n\
389   \t    [0xc]       0xff3f0fdc 0x00010000 main\n\
390   \t    [0xc]       0xff3f13bc 0xff280000 /lib/libc.so.1\n\
391   \t    ----------------------------------------------\n\
392   \t    head: 0xff3f0f84        tail: 0xff3f1794\n\
393   \t   audit: 0x00000000     preexec: 0xff3f1794\n\
394   \t  handle: 0x00000000         obj:    3  init:    0  lazy:    0\n\
395   \t   flags: 0x00008041\n\
396   \t          [ BASELM,ENVIRON,STARTREL ]\n\
397   \t  tflags: 0x00000000\n\
398   \n\
399   Example 2 - all link-map headers:\n\n\
400   \t> ::Lm_list\n\
401   \tLink-map lists (dynlm_list): 0xffbfdbf8\n\
402   \t----------------------------------------------\n\
403   \t  Lm_list: 0xff3ee0f0  (LM_ID_BASE)\n\
404   \t  ----------------------------------------------\n\
405   \t     lists: 0xff3f0b68 Alist[used 1: total 4]\n\
406   \t    ----------------------------------------------\n\
407   \t      head: 0xff3f0f84        tail: 0xff3f1794\n\
408   \t     audit: 0x00000000     preexec: 0xff3f1794\n\
409   \t    handle: 0x00000000         obj:    3  init:    0  lazy:    0\n\
410   \t     flags: 0x00008041\n\
411   \t            [ BASELM,ENVIRON,STARTREL ]\n\
412   \t    tflags: 0x00000000\n\
413   \t  ----------------------------------------------\n\
414   \t  Lm_list: 0xff3ee134  (LM_ID_LDSO)\n\
415   \t  ----------------------------------------------\n\
416   \t     lists: 0xff3f0ba4 Alist[used 1: total 4]\n\
417   \t    ----------------------------------------------\n\
418   \t      head: 0xff3f0c20        tail: 0xff3f0c20\n\
419   \t     audit: 0x00000000     preexec: 0x00000000\n\
420   \t    handle: 0x00000000         obj:    0  init:    0  lazy:    0\n\
421   \t     flags: 0x00000006\n\
422   \t            [ RTLDLM,NOAUDIT ]\n\
423   \t    tflags: 0x00000000\n"
424
425#
426# Rt_maps messages.
427#
428
429@ MSG_RTMAPS_STR	"Rt_maps"
430
431@ MSG_RTMAPS_DCD	"Display list of Rt_map structures"
432
433@ MSG_RTMAPS_TITLE0	"lmco \trtmap       ADDR()     NAME()\n"
434
435@ MSG_RTMAPS_HELP "\
436   Walk a list of Rt_map's starting with a specified Rt_map entry.  If no\n\
437   address is specified, the dynlm_list master Rt_map list is searched and\n\
438   all objects listed.\n\
439   \n\
440   The -v option expands each Rt_map in detail.  See Rt_map.\n\
441   \n\
442   Example 1 - a single entry, starting from a specified address:\n\n\
443   \t> 0xff3b0214::Rt_maps\n\
444   \tlmco    rtmap      ADDR()     NAME()\n\
445   \t---------------------------------------------\n\
446   \t[0xc]   0xff3b0214 0x00010000 prog\n\
447   \t[0xc]   0xff3b065c 0xff3a0000 /lib/libdl.so.1\n\
448   \t[0xc]   0xff3b0a04 0xff280000 /lib/libc.so.1\n\
449   \n\
450   Example 2 - all Rt_map entries:\n\n\
451   \t> ::Rt_maps\n\
452   \tLink-map lists (dynlm_list): 0xffbfe080\n\
453   \t---------------------------------------------\n\
454   \t  Lm_list: 0xff3f60c8  (LM_ID_BASE)\n\
455   \t  ---------------------------------------------\n\
456   \t    lmco    rtmap      ADDR()     NAME()\n\
457   \t    ---------------------------------------------\n\
458   \t    [0xc]   0xff3b0214 0x00010000 prog\n\
459   \t    [0xc]   0xff3b065c 0xff3a0000 /lib/libdl.so.1\n\
460   \t    [0xc]   0xff3b0a04 0xff280000 /lib/libc.so.1\n\
461   \t  ---------------------------------------------\n\
462   \t  Lm_list: 0xff3f60e8  (LM_ID_LDSO)\n\
463   \t  ---------------------------------------------\n\
464   \t    lmco    rtmap      ADDR()     NAME()\n\
465   \t    ---------------------------------------------\n\
466   \t    [0xc]   0xff3f7cc0 0xff3c0000 /lib/ld.so.1\n"
467
468
469#
470# Rt_map messages.
471#
472
473@ MSG_RTMAP_STR		"Rt_map"
474
475@ MSG_RTMAP_DCD		"Display Rt_map structure"
476
477@ MSG_RTMAP_TITLE	"Rt_map located at: 0x%0?p\n"
478@ MSG_RTMAP_LINE1	"     NAME: %s\n"
479@ MSG_RTMAP_LINE2	" PATHNAME: %s\n"
480@ MSG_RTMAP_LINE3	"     ADDR: 0x%0?p\t      DYN: 0x%0?p\n"
481@ MSG_RTMAP_LINE4	"     NEXT: 0x%0?p\t     PREV: 0x%0?p\n"
482@ MSG_RTMAP_LINE5	"      FCT: 0x%0?p\t TLSMODID:   %?ld\n"
483@ MSG_RTMAP_LINE6	"     INIT: 0x%0?p\t     FINI: 0x%0?p\n"
484@ MSG_RTMAP_LINE7	"   GROUPS: 0x%0?p\t  HANDLES: 0x%0?p\n"
485@ MSG_RTMAP_LINE8	"  DEPENDS: 0x%0?p\t  CALLERS: 0x%0?p\n"
486@ MSG_RTMAP_LINE9	"  DYNINFO: 0x%0?p\t  REFNAME: %s\n"
487@ MSG_RTMAP_LINE10	"    RLIST: 0x%0?p\t    RPATH: %s\n"
488@ MSG_RTMAP_LINE11	"     LIST: 0x%0?p [%a]\n"
489@ MSG_RTMAP_LINE12	"    FLAGS: 0x%08x\n"
490@ MSG_RTMAP_LINE13	"   FLAGS1: 0x%08x\n"
491@ MSG_RTMAP_LINE14	"     MODE: 0x%08x\n"
492@ MSG_RTMAP_LINE20	"           [ %#b ]\n"
493
494@ MSG_RTMAP_HELP "\
495   Display the contents of selected fields of an Rt_map structure.\n\
496   \n\
497   Example:\n\n\
498   \t0xff3b0214::Rt_map\n\
499   \tRt_map located at: 0xff3b0214\n\
500   \t      NAME: prog\n\
501   \t  PATHNAME: /home/developer/bin/prog\n\
502   \t      ADDR: 0x00010000         DYN: 0x00020b1\n\
503   \t      NEXT: 0xff3b065c        PREV: 0x0000000\n\
504   \t       FCT: 0xff3f6080    TLSMODID:         0\n\
505   \t      INIT: 0x00010960        FINI: 0x000109b\n\
506   \t      .....\n"
507
508#
509# Bind messages.
510#
511
512@ MSG_BND_STR		"Bind"
513
514@ MSG_BND_DCD		"Display a Binding Descriptor"
515
516@ MSG_BND_TITLE		"Binding descriptor located at: 0x%0?p\n"
517@ MSG_BND_LINE1		"   caller: 0x%0?p    %s\n"
518@ MSG_BND_LINE2		"   depend: 0x%0?p    %s\n"
519@ MSG_BND_LINE3		"    flags: 0x%08x    [ %#b ]\n"
520
521@ MSG_BND_HELP		"\
522   Decode the binding descriptor specified by addr.\n\
523   \n\
524   Relationships between Rt_map objects are maintained by a binding dis-\n\
525   cripter.  The descriptor contains a pointer to the Rt_map of the caller,\n\
526   a pointer to the Rt_map of the dependency, and a flags field indicating\n\
527   the relationship between the two Rt_map objects.\n\
528   \n\
529   The -v option expands each Rt_map.\n\
530   \n\
531   Example:\n\n\
532   \t> 0xff3b0410::Bind\n\
533   \tBinding Descriptor located at: 0xff3b0410\n\
534   \t   caller: 0xff3b0030    main\n\
535   \t   depend: 0xff3b0460    /lib/libelf.so.1\n\
536   \t    flags: 0x00000001    [ NEEDED ]\n"
537
538
539#
540# Depends messages.
541#
542
543@ MSG_DEPENDS_STR	"Depends"
544
545@ MSG_DEPENDS_DCD	"Display Rt_map DEPENDS binding descriptors"
546
547@ MSG_DEPENDS_LINE1	"DEPENDS for %s\n"
548@ MSG_DEPENDS_LINE2	"  Depends: 0x%0?p Alist[used %u: total %u]\n"
549
550@ MSG_DEPENDS_HELP	"\
551   Display the binding descriptor list of DEPENDS() of the Rt_map\n\
552   specified by addr.  A DEPENDS() entry consists of an Alist\n\
553   defining each dependency.\n\
554   \n\
555   The -v option walks the Alist descriptor displaying each dependency.\n\
556   \n\
557   Example:\n\n\
558   \t> 0xff3b0554::Depends -v\n\
559   \tDEPENDS for /lib/libc.so.1\n\
560   \t----------------------------------------------\n\
561   \t  Depends: 0xff3b0bc4 Alist[used 2: total 4]\n\
562   \t    ----------------------------------------------\n\
563   \t    Binding descriptor located at: 0xff3b08f8\n\
564   \t       caller: 0xff3b0554    /lib/libc.so.1\n\
565   \t       depend: 0xff3b0938    /lib/libdl.so.1\n\
566   \t        flags: 0x00000003    [ NEEDED,REFERENCED ]\n\
567   \t    ----------------------------------------------\n\
568   \t    Binding descriptor located at: 0xff3b07a8\n\
569   \t       caller: 0xff3b0554    /lib/libc.so.1\n\
570   \t       depend: 0xff3f7cc0    /lib/ld.so.1\n\
571   \t        flags: 0x00000002    [ REFERENCED ]\n"
572
573#
574# Callers messages.
575#
576
577@ MSG_CALLERS_STR	"Callers"
578
579@ MSG_CALLERS_DCD	"Display Rt_map CALLERS binding descriptors"
580
581@ MSG_CALLERS_LINE1	"CALLERS for %s\n"
582@ MSG_CALLERS_LINE2	"  Callers: 0x%0?p Alist[used %u: total %u]\n"
583
584@ MSG_CALLERS_HELP	"\
585   Display the binding descriptor list of CALLERS() of the Rt_map\n\
586   specified by addr.  A CALLERS() entry consists of an Alist\n\
587   defining each caller.\n\
588   \n\
589   The -v option walks the Alist descriptor displaying each caller.\n\
590   \n\
591   Example:\n\n\
592   \t> 0xff3b0554::Callers -v\n\
593   \tCALLERS for /lib/libc.so.1\n\
594   \t----------------------------------------------\n\
595   \t  Callers: 0xff3b08cc Alist[used 1: total 4]\n\
596   \t    ----------------------------------------------\n\
597   \t    Binding descriptor located at: 0xff3b0514\n\
598   \t       caller: 0xff3b0214    a.out\n\
599   \t       depend: 0xff3b0554    /lib/libc.so.1\n\
600   \t        flags: 0x00000003    [ NEEDED,REFERENCED ]\n"
601
602
603#
604# Handle messages.
605#
606
607@ MSG_HANDLES_STR	"Handles"
608
609@ MSG_HANDLES_DCD	"Display Rt_map HANDLES group descriptors"
610
611@ MSG_HANDLES_LINE1	"HANDLES for %s\n"
612@ MSG_HANDLES_LINE2	"  HANDLE: 0x%0?p Alist[used %u: total %u]\n"
613
614@ MSG_HANDLES_HELP	"\
615   Display the list of HANDLES() that the Rt_map, specified by addr, is the\n\
616   owner of.  A HANDLES() entry consists of an Alist of Grp_hdl descriptors.\n\
617   See GrpHdl.  Each Grp_hdl() consists of an Alist of Grp_desc descriptors\n\
618   that define each caller.  See GrpDesc.\n\
619   \n\
620   The -v option walks all Alists displaying each member of the handle.\n\
621   \n\
622   Example:\n\n\
623   \t> 0xff3b0f6c::Handles -v\n\
624   \tHANDLES for ./sub.so\n\
625   \t----------------------------------------------\n\
626   \t  HANDLE: 0xff3b1310 Alist[used 1: total 1]\n\
627   \t    ----------------------------------------------\n\
628   \t    Group Handle located at: 0xff3b1270\n\
629   \t    ----------------------------------------------\n\
630   \t       owner:               ./sub.so\n\
631   \t       flags: 0x00000000    [ 0 ]\n\
632   \t      refcnt:          1    depends: 0xff3b12c8 Alist[used 3: total 4]\n\
633   \t       ----------------------------------------------\n\
634   \t       Group Descriptor located at: 0xff3b12d4\n\
635   \t          depend: 0xff3b0f6c    ./sub.so\n\
636   \t           flags: 0x00000003    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n\
637   \t       ----------------------------------------------\n\
638   \t       Group Descriptor located at: 0xff3b12dc\n\
639   \t          depend: 0xff3b0a04    /lib/libc.so.1\n\
640   \t           flags: 0x00000003    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n\
641   \t       ----------------------------------------------\n\
642   \t       Group Descriptor located at: 0xff3b12e4\n\
643   \t          depend: 0xff3b065c    /lib/libdl.so.1\n\
644   \t           flags: 0x00000003    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n"
645
646#
647# Group messages.
648#
649
650@ MSG_GROUPS_STR	"Groups"
651
652@ MSG_GROUPS_DCD	"Display Rt_map GROUPS group handles"
653
654@ MSG_GROUPS_LINE1	"GROUPS for %s\n"
655@ MSG_GROUPS_LINE2	"  Groups: 0x%0?p Alist[used %u: total %u]\n"
656
657@ MSG_GROUPS_HELP	"\
658   Display the list of GROUPS() that the Rt_map, specified by addr, is a \
659   member\nof.  A GROUPS() entry consists of an Alist of Grp_hdl entries.  \
660   See GrpHdl.\n\
661   \n\
662   The -v option walks the Alist descriptor displaying each member of the\n\
663   handle.\n\
664   \n\
665   Example:\n\n\
666   \t> 0xff3b0f6c::Groups -v\n\
667   \tGROUPS for ./sub.so\n\
668   \t----------------------------------------------\n\
669   \t  Groups: 0xff3b12a8 Alist[used 1: total 1]\n\
670   \t    ----------------------------------------------\n\
671   \t    Group Handle located at: 0xff3b1270\n\
672   \t    ----------------------------------------------\n\
673   \t        owner:               ./sub.so\n\
674   \t        flags: 0x00000000    [ 0 ]\n\
675   \t       refcnt:          1    depends: 0xff3b12c8 Alist[used 3: total 4]\n\
676   \t        ----------------------------------------------\n\
677   \t        Group Descriptor located at: 0xff3b12d4\n\
678   \t           depend: 0xff3b0f6c    ./sub.so\n\
679   \t            flags: 0x00000003    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n\
680   \t        ----------------------------------------------\n\
681   \t        Group Descriptor located at: 0xff3b12dc\n\
682   \t           depend: 0xff3b0a04    /lib/libc.so.1\n\
683   \t            flags: 0x00000004    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n\
684   \t        ----------------------------------------------\n\
685   \t        Group Descriptor located at: 0xff3b12e4\n\
686   \t           depend: 0xff3b065c    /lib/libdl.so.1\n\
687   \t            flags: 0x00000004    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n"
688
689
690#
691# Group handle and group descriptor messages.
692#
693
694@ MSG_GRPHDL_STR	"GrpHdl"
695
696@ MSG_GRPHDL_DCD	"Display a Group Handle"
697
698@ MSG_GRPHDL_LINE1	"Group Handle located at: 0x%0?p\n"
699@ MSG_GRPHDL_LINE2	"    owner:               %s\n"
700@ MSG_GRPHDL_LINE3	"    flags: 0x%08x    [ %#b ]\n"
701@ MSG_GRPHDL_LINE4	"   refcnt:   %8d    depends: 0\n"
702@ MSG_GRPHDL_LINE5	"   refcnt:   %8d    depends: 0x%0?p \
703			 Alist[used %u: total %u]\n"
704
705@ MSG_GRPHDL_HELP	"\
706   Decode a group handle.  A successful dlopen() of an object returns a\n\
707   handle applicable for subsequent dlsym() requests.  The handle maintains\n\
708   a reference count, flags and a table of group descriptors that define the\n\
709   dependencies associated with this group of objects.\n\
710   \n\
711   The -v option expands each group descriptor.\n\
712   \n\
713   Example:\n\n\
714   \t> 0xff3a0c58::GrpHdl\n\
715   \tGroup Handle located at: 0xff3a0c58\n\
716   \t----------------------------------------------\n\
717   \t   refcnt:          1    main\n\
718   \t    flags: 0x00000001    [ DLOPEN-ZERO ]\n\
719   \t  depends: 0xff3a0c89 Alist[next 1: cnt 2]\n"
720
721
722
723@ MSG_GRPDESC_STR	"GrpDesc"
724
725@ MSG_GRPDESC_DCD	"Display a Group Descriptor"
726
727@ MSG_GRPDESC_LINE1	"Group Descriptor located at: 0x%0?p\n"
728@ MSG_GRPDESC_LINE2	"   depend: 0x%0?p    %s\n"
729@ MSG_GRPDESC_LINE3	"    flags: 0x%08x    [ %#b ]\n"
730
731@ MSG_GRPDESC_HELP	"\
732   Decode a group descriptor.  A GrpHdl created by dlopen() maintains a\n\
733   list of group descriptors for each dependency.  See GrpHdl.\n\
734   \n\
735   Example\n\n\
736   \t> 0xff3b12d4::GrpDesc -v\n\
737   \tGroup Descriptor located at: 0xff3b12d4\n\
738   \t   depend: 0xff3b0f6c    ./sub.so\n\
739   \t    flags: 0x00000003    [ AVAIL-TO-DLSYM,ADD-DEPENDENCIES ]\n"
740
741
742@ MSG_BNDDESC_STR	"BndDesc"
743
744#
745# General purpose environment addition.
746#
747
748@ MSG_SETENV_STR	"Setenv"
749
750@ MSG_SETENV_DCD	"Set an environment variable"
751
752@ MSG_SETENV_HELP	"\
753   Set the associated environment variable.  This can be useful to establish\n\
754   runtime linker environment variables without affecting the debugger itself.\n\
755   \n\
756   Note, newer versions of mdb(1) provide setenv.  The mdb(1) implementation\n\
757   provides the ability to make environment changes at any point during\n\
758   application monitoring.  Where available, Setenv calls through to setenv.\n\
759   On older environments, Setenv only provides for changing the applications\n\
760   environment before it is invoked.\n\
761   \n\
762   Example\n\n\
763   \t> ::Setenv LD_DEBUG=files\n"
764