xref: /illumos-gate/usr/src/man/man1/ctfdump.1 (revision bc1f688b4872ace323eaddbb1a6365d054e7bf56)
1*bc1f688bSRobert Mustacchi.\"
2*bc1f688bSRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3*bc1f688bSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4*bc1f688bSRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5*bc1f688bSRobert Mustacchi.\" 1.0 of the CDDL.
6*bc1f688bSRobert Mustacchi.\"
7*bc1f688bSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8*bc1f688bSRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9*bc1f688bSRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10*bc1f688bSRobert Mustacchi.\"
11*bc1f688bSRobert Mustacchi.\"
12*bc1f688bSRobert Mustacchi.\" Copyright 2018, Joyent, Inc.
13*bc1f688bSRobert Mustacchi.\"
14*bc1f688bSRobert Mustacchi.Dd Oct 2, 2018
15*bc1f688bSRobert Mustacchi.Dt CTFDUMP 1
16*bc1f688bSRobert Mustacchi.Os
17*bc1f688bSRobert Mustacchi.Sh NAME
18*bc1f688bSRobert Mustacchi.Nm ctfdump
19*bc1f688bSRobert Mustacchi.Nd dump parts of ctf data from files
20*bc1f688bSRobert Mustacchi.Sh SYNOPSIS
21*bc1f688bSRobert Mustacchi.Nm ctfdump
22*bc1f688bSRobert Mustacchi.Op Fl cdfhlsSt
23*bc1f688bSRobert Mustacchi.Op Fl p Ar parent
24*bc1f688bSRobert Mustacchi.Op Fl u Ar outfile
25*bc1f688bSRobert Mustacchi.Ar file
26*bc1f688bSRobert Mustacchi.Sh DESCRIPTION
27*bc1f688bSRobert MustacchiThe
28*bc1f688bSRobert Mustacchi.Nm
29*bc1f688bSRobert Mustacchiutility dumps and decodes the
30*bc1f688bSRobert Mustacchi.Sy CTF
31*bc1f688bSRobert Mustacchidata contained inside of
32*bc1f688bSRobert Mustacchi.Sy ELF
33*bc1f688bSRobert Mustacchiobjects and raw
34*bc1f688bSRobert Mustacchi.Sy CTF
35*bc1f688bSRobert Mustacchifiles.
36*bc1f688bSRobert Mustacchi.Lp
37*bc1f688bSRobert Mustacchi.Nm
38*bc1f688bSRobert Mustacchican dump information about the
39*bc1f688bSRobert Mustacchi.Sy CTF header ,
40*bc1f688bSRobert Mustacchithe
41*bc1f688bSRobert Mustacchi.Sy labels
42*bc1f688bSRobert Mustacchiencoded in the
43*bc1f688bSRobert Mustacchi.Sy CTF
44*bc1f688bSRobert Mustacchicontainer,
45*bc1f688bSRobert Mustacchithe types of
46*bc1f688bSRobert Mustacchi.Sy data objects ,
47*bc1f688bSRobert Mustacchithe internal
48*bc1f688bSRobert Mustacchi.Sy string
49*bc1f688bSRobert Mustacchitable,
50*bc1f688bSRobert Mustacchithe types of the return function and the arguments for
51*bc1f688bSRobert Mustacchi.Sy functions ,
52*bc1f688bSRobert Mustacchiand of course, it displays information about the
53*bc1f688bSRobert Mustacchi.Sy types
54*bc1f688bSRobert Mustacchidefined in the
55*bc1f688bSRobert Mustacchi.Sy CTF
56*bc1f688bSRobert Mustacchicontainer.
57*bc1f688bSRobert Mustacchi.Lp
58*bc1f688bSRobert Mustacchi.Nm
59*bc1f688bSRobert Mustacchican also be used to dump out the raw
60*bc1f688bSRobert Mustacchi.Sy CTF
61*bc1f688bSRobert Mustacchidata and send it to another file.
62*bc1f688bSRobert MustacchiWhen writing out data, it always ensures that the
63*bc1f688bSRobert Mustacchi.Sy CTF
64*bc1f688bSRobert Mustacchidata is decompressed.
65*bc1f688bSRobert MustacchiIn this form, the
66*bc1f688bSRobert Mustacchi.Sy CTF
67*bc1f688bSRobert Mustacchidata can be inspected using
68*bc1f688bSRobert Mustacchi.Nm
69*bc1f688bSRobert Mustacchiand other tools such as
70*bc1f688bSRobert Mustacchi.Xr mdb 1 .
71*bc1f688bSRobert Mustacchi.Lp
72*bc1f688bSRobert Mustacchi.Nm
73*bc1f688bSRobert Mustacchiin
74*bc1f688bSRobert Mustacchi.Fl c
75*bc1f688bSRobert Mustacchimode will generate C-style output, which can be used for comparison.
76*bc1f688bSRobert MustacchiNote that this output is not directly compilable.
77*bc1f688bSRobert Mustacchi.Lp
78*bc1f688bSRobert MustacchiWhen no options are specified,
79*bc1f688bSRobert Mustacchi.Nm
80*bc1f688bSRobert Mustacchidisplays all information, except the C-style output.
81*bc1f688bSRobert MustacchiHowever, when the
82*bc1f688bSRobert Mustacchi.Fl u
83*bc1f688bSRobert Mustacchioption is used, then no information is displayed by default, unless
84*bc1f688bSRobert Mustacchirequested through the appropriate option.
85*bc1f688bSRobert Mustacchi.Sh OPTIONS
86*bc1f688bSRobert MustacchiThe following options are supported:
87*bc1f688bSRobert Mustacchi.Bl -hang -width Ds
88*bc1f688bSRobert Mustacchi.It Fl c
89*bc1f688bSRobert Mustacchi.Bd -filled -compact
90*bc1f688bSRobert MustacchiGenerate C-style output.
91*bc1f688bSRobert Mustacchi.Ed
92*bc1f688bSRobert Mustacchi.It Fl d
93*bc1f688bSRobert Mustacchi.Bd -filled -compact
94*bc1f688bSRobert MustacchiDump the types of symbols that correspond to objects.
95*bc1f688bSRobert Mustacchi.Ed
96*bc1f688bSRobert Mustacchi.It Fl f
97*bc1f688bSRobert Mustacchi.Bd -filled -compact
98*bc1f688bSRobert MustacchiDump the types of the return values and arguments of the functions.
99*bc1f688bSRobert Mustacchi.Ed
100*bc1f688bSRobert Mustacchi.It Fl h
101*bc1f688bSRobert Mustacchi.Bd -filled -compact
102*bc1f688bSRobert MustacchiDump the
103*bc1f688bSRobert Mustacchi.Sy CTF
104*bc1f688bSRobert Mustacchiheader
105*bc1f688bSRobert Mustacchi.Ed
106*bc1f688bSRobert Mustacchi.It Fl l
107*bc1f688bSRobert Mustacchi.Bd -filled -compact
108*bc1f688bSRobert MustacchiDump all
109*bc1f688bSRobert Mustacchi.Sy CTF
110*bc1f688bSRobert Mustacchilabels associated with the file.
111*bc1f688bSRobert Mustacchi.Ed
112*bc1f688bSRobert Mustacchi.It Fl p Ar parent
113*bc1f688bSRobert Mustacchi.Bd -filled -compact
114*bc1f688bSRobert MustacchiUse the type information in
115*bc1f688bSRobert Mustacchi.Em parent
116*bc1f688bSRobert Mustacchito supplement output.
117*bc1f688bSRobert MustacchiThis is useful when a
118*bc1f688bSRobert Mustacchi.Nm CTF
119*bc1f688bSRobert Mustacchicontainer has been
120*bc1f688bSRobert Mustacchi.Sy uniquified
121*bc1f688bSRobert Mustacchiagainst
122*bc1f688bSRobert Mustacchi.Em parent .
123*bc1f688bSRobert MustacchiThis allows
124*bc1f688bSRobert Mustacchi.Nm
125*bc1f688bSRobert Mustacchito use the names of types when used with
126*bc1f688bSRobert Mustacchi.Fl t .
127*bc1f688bSRobert Mustacchi.Ed
128*bc1f688bSRobert Mustacchi.It Fl s
129*bc1f688bSRobert Mustacchi.Bd -filled -compact
130*bc1f688bSRobert MustacchiDump the internal
131*bc1f688bSRobert Mustacchi.Sy CTF
132*bc1f688bSRobert Mustacchistring table
133*bc1f688bSRobert Mustacchi.Ed
134*bc1f688bSRobert Mustacchi.It Fl S
135*bc1f688bSRobert Mustacchi.Bd -filled -compact
136*bc1f688bSRobert MustacchiDisplays statistics about the
137*bc1f688bSRobert Mustacchi.Sy CTF
138*bc1f688bSRobert Mustacchicontainer.
139*bc1f688bSRobert Mustacchi.Ed
140*bc1f688bSRobert Mustacchi.It Fl t
141*bc1f688bSRobert Mustacchi.Bd -filled -compact
142*bc1f688bSRobert MustacchiDump the type information contained in the
143*bc1f688bSRobert Mustacchi.Sy CTF
144*bc1f688bSRobert Mustacchiconatiner.
145*bc1f688bSRobert Mustacchi.Ed
146*bc1f688bSRobert Mustacchi.It Fl u Ar outfile
147*bc1f688bSRobert Mustacchi.Bd -filled -compact
148*bc1f688bSRobert MustacchiCopies the uncompressed
149*bc1f688bSRobert Mustacchi.Sy CTF
150*bc1f688bSRobert Mustacchidata to the file specified by
151*bc1f688bSRobert Mustacchi.Em outfile .
152*bc1f688bSRobert MustacchiThis can be used to make it easier to inspect the raw
153*bc1f688bSRobert Mustacchi.Sy CTF
154*bc1f688bSRobert Mustacchidata.
155*bc1f688bSRobert Mustacchi.Ed
156*bc1f688bSRobert Mustacchi.El
157*bc1f688bSRobert Mustacchi.Sh OUTPUT
158*bc1f688bSRobert MustacchiWhen the
159*bc1f688bSRobert Mustacchi.Nm
160*bc1f688bSRobert Mustacchiutility is executed with its default options, it prints out a textual
161*bc1f688bSRobert Mustacchirepresentation of the
162*bc1f688bSRobert Mustacchi.Sy CTF
163*bc1f688bSRobert Mustacchiinformation.
164*bc1f688bSRobert MustacchiNote, the output format of
165*bc1f688bSRobert Mustacchi.Nm
166*bc1f688bSRobert Mustacchiis subject to change at any time and should not be relied upon as a
167*bc1f688bSRobert Mustacchistable format to be used for parsing.
168*bc1f688bSRobert Mustacchi.Ss CTF Header
169*bc1f688bSRobert MustacchiThis section describes the values in the
170*bc1f688bSRobert Mustacchi.Sy CTF
171*bc1f688bSRobert Mustacchiheader.
172*bc1f688bSRobert MustacchiEach line in the section describes the value of one of the
173*bc1f688bSRobert Mustacchimembers of the header.
174*bc1f688bSRobert MustacchiFor more information on the meaning and interpretation of these members,
175*bc1f688bSRobert Mustacchisee
176*bc1f688bSRobert Mustacchi.Xr ctf 4 .
177*bc1f688bSRobert Mustacchi.Ss Label Table
178*bc1f688bSRobert MustacchiThis section describes information about the labels present in the
179*bc1f688bSRobert Mustacchi.Sy CTF
180*bc1f688bSRobert Mustacchiinformation.
181*bc1f688bSRobert MustacchiEach entry in this section, if present, starts with a
182*bc1f688bSRobert Mustacchinumber and is followed by a string.
183*bc1f688bSRobert MustacchiAn example entry in the label section might look like:
184*bc1f688bSRobert Mustacchi.Bd -literal
185*bc1f688bSRobert Mustacchi\&...
186*bc1f688bSRobert Mustacchi   2270 joyent_20151001T070028Z
187*bc1f688bSRobert Mustacchi\&...
188*bc1f688bSRobert Mustacchi.Ed
189*bc1f688bSRobert Mustacchi.Pp
190*bc1f688bSRobert MustacchiThe number,
191*bc1f688bSRobert Mustacchi.Em 2270 ,
192*bc1f688bSRobert Mustacchirepresents the last type that the label applies to.
193*bc1f688bSRobert MustacchiThe string,
194*bc1f688bSRobert Mustacchi.Em joyent_20151001T070028Z ,
195*bc1f688bSRobert Mustacchiis the name of the label.
196*bc1f688bSRobert MustacchiIn this case, if there were no other labels,
197*bc1f688bSRobert Mustacchiit would indicate that the label applied to all types up to, and
198*bc1f688bSRobert Mustacchiincluding, the type number 2270.
199*bc1f688bSRobert MustacchiFor more information on how labels are used with
200*bc1f688bSRobert Mustacchi.Sy CTF
201*bc1f688bSRobert Mustacchiinformation, see the section
202*bc1f688bSRobert Mustacchi.Em The Label Section
203*bc1f688bSRobert Mustacchiin
204*bc1f688bSRobert Mustacchi.Xr ctf 4 .
205*bc1f688bSRobert Mustacchi.Ss Data Objects
206*bc1f688bSRobert MustacchiThis section describes the type information relating to data objects
207*bc1f688bSRobert Mustacchifrom the symbol table.
208*bc1f688bSRobert MustacchiAn entry for a data object consists of four columns.
209*bc1f688bSRobert MustacchiThe first column is just a monotonic ID.
210*bc1f688bSRobert MustacchiThe second number is the type id of the object.
211*bc1f688bSRobert MustacchiThe third column is the name of the symbol and the fourth column is the
212*bc1f688bSRobert Mustacchicorresponding index from the symbol table.
213*bc1f688bSRobert Mustacchi.Pp
214*bc1f688bSRobert MustacchiTake for example, the following couple of entries:
215*bc1f688bSRobert Mustacchi.Bd -literal
216*bc1f688bSRobert Mustacchi\&...
217*bc1f688bSRobert Mustacchi  [0] 13        hz (48)
218*bc1f688bSRobert Mustacchi  [1] 78        _nd (49)
219*bc1f688bSRobert Mustacchi  [2] 1656      __pfmt_label (56)
220*bc1f688bSRobert Mustacchi  [3] 926       _aio_hash (68)
221*bc1f688bSRobert Mustacchi  [4] 13        _lio_free (70)
222*bc1f688bSRobert Mustacchi  [5] 1321      u8_number_of_bytes (73)
223*bc1f688bSRobert Mustacchi\&...
224*bc1f688bSRobert Mustacchi.Ed
225*bc1f688bSRobert Mustacchi.Pp
226*bc1f688bSRobert MustacchiLet's take the first entry in the list above.
227*bc1f688bSRobert MustacchiThe symbol is named
228*bc1f688bSRobert Mustacchi.Sy hz .
229*bc1f688bSRobert MustacchiIt is the first data object, as indicated by the number zero in
230*bc1f688bSRobert Mustacchibrackets.
231*bc1f688bSRobert MustacchiIt has a type id of 13 and in this case, it has a symbol table index of
232*bc1f688bSRobert Mustacchi48.
233*bc1f688bSRobert Mustacchi.Ss Functions
234*bc1f688bSRobert MustacchiThis section describes the type information for functions.
235*bc1f688bSRobert MustacchiFor each function present in the symbol table with type information, the
236*bc1f688bSRobert Mustacchifunction's entry into the function section, the function's name, the
237*bc1f688bSRobert Mustacchifunction's symbol table index, the function's return type, and the types
238*bc1f688bSRobert Mustacchiof the function's arguments are printed.
239*bc1f688bSRobert MustacchiIf a function is a variadic function, then the variadic argument is
240*bc1f688bSRobert Mustacchiprinted as the string
241*bc1f688bSRobert Mustacchi.Sy '...' .
242*bc1f688bSRobert Mustacchi.Pp
243*bc1f688bSRobert MustacchiTake for example, the following couple of entries:
244*bc1f688bSRobert Mustacchi.Bd -literal
245*bc1f688bSRobert Mustacchi\&...
246*bc1f688bSRobert Mustacchi  [687] pfprint_stack (3110) returns: 11 args: (385, 115, 29, 1704, 223, 116, 2)
247*bc1f688bSRobert Mustacchi  [688] pfprint_stddev (3111) returns: 11 args: (385, 115, 29, 1704, 223, 116, 2)
248*bc1f688bSRobert Mustacchi  [689] pfprint_quantize (3112) returns: 11 args: (385, 115, 29, 1704, 223, 116, 2)
249*bc1f688bSRobert Mustacchi  [690] pfprint_lquantize (3113) returns: 11 args: (385, 115, 29, 1704, 223, 116, 2)
250*bc1f688bSRobert Mustacchi  [691] pfprint_llquantize (3114) returns: 11 args: (385, 115, 29, 1704, 223, 116, 2)
251*bc1f688bSRobert Mustacchi\&...
252*bc1f688bSRobert Mustacchi.Ed
253*bc1f688bSRobert Mustacchi.Pp
254*bc1f688bSRobert MustacchiThe first column is the function's entry number in the function type
255*bc1f688bSRobert Mustacchiinformation section.
256*bc1f688bSRobert MustacchiIt is enclosed in brackets.
257*bc1f688bSRobert MustacchiThe next column is the function's name and it is followed in parenthesis
258*bc1f688bSRobert Mustacchiby the its index in the
259*bc1f688bSRobert Mustacchisymbol table.
260*bc1f688bSRobert MustacchiThe following portions of this entry describe the return
261*bc1f688bSRobert Mustacchitype and then all of the arguments, in positional order.
262*bc1f688bSRobert Mustacchi.Ss Types
263*bc1f688bSRobert MustacchiThe types section gives information about each type in the
264*bc1f688bSRobert Mustacchi.Sy CTF
265*bc1f688bSRobert Mustacchicontainer.
266*bc1f688bSRobert MustacchiEach entry begins with its type identifier.
267*bc1f688bSRobert MustacchiThe type identifier may either be in square brackets or in angle
268*bc1f688bSRobert Mustacchibrackets.
269*bc1f688bSRobert MustacchiIf the type identifier is enclosed in angle brackets, then that
270*bc1f688bSRobert Mustacchirepresents that it is a root type or top-level type.
271*bc1f688bSRobert MustacchiIf it is square brackets, then it is not.
272*bc1f688bSRobert MustacchiFor more information on root types, see
273*bc1f688bSRobert Mustacchi.Xr ctf 4 .
274*bc1f688bSRobert Mustacchi.Pp
275*bc1f688bSRobert MustacchiNext, the type will have its name and kind.
276*bc1f688bSRobert MustacchiIf it is an array, it will be followed with a subscript that describes
277*bc1f688bSRobert Mustacchithe number of entries in the array.
278*bc1f688bSRobert MustacchiIf it is a pointer, it will followed by the
279*bc1f688bSRobert Mustacchi.Sy *
280*bc1f688bSRobert Mustacchisymbol to indicate that it is a pointer.
281*bc1f688bSRobert MustacchiIf the type has the
282*bc1f688bSRobert Mustacchi.Sy const ,
283*bc1f688bSRobert Mustacchi.Sy volatile ,
284*bc1f688bSRobert Mustacchi.Sy typedef ,
285*bc1f688bSRobert Mustacchior
286*bc1f688bSRobert Mustacchi.Sy restrict
287*bc1f688bSRobert Mustacchikeyword applied to it, that will precede the name.
288*bc1f688bSRobert MustacchiAll of these reference types, including pointer, will then be followed
289*bc1f688bSRobert Mustacchiwith an example of the type that they refer to.
290*bc1f688bSRobert Mustacchi.Pp
291*bc1f688bSRobert MustacchiTypes which are an integral or floating point value will be followed by
292*bc1f688bSRobert Mustacchiinformation about their encoding and the number of bits represented in
293*bc1f688bSRobert Mustacchithe type.
294*bc1f688bSRobert Mustacchi.Pp
295*bc1f688bSRobert MustacchiArrays will be followed by two different entries, the contents and
296*bc1f688bSRobert Mustacchiindex.
297*bc1f688bSRobert MustacchiThe contents member contains the type id of the array's contents
298*bc1f688bSRobert Mustacchiand the index member describes a type which can represent the array's
299*bc1f688bSRobert Mustacchiindex.
300*bc1f688bSRobert Mustacchi.Pp
301*bc1f688bSRobert MustacchiStructures and unions will be preceded with the corresponding C keyword,
302*bc1f688bSRobert Mustacchi.Sy struct
303*bc1f688bSRobert Mustacchior
304*bc1f688bSRobert Mustacchi.Sy union .
305*bc1f688bSRobert MustacchiAfter that, the size in bytes of the structure will be indicated.
306*bc1f688bSRobert MustacchiON each subsequent line, a single member will be listed.
307*bc1f688bSRobert MustacchiThat line will contain the member's name, it's type identifier, and the
308*bc1f688bSRobert Mustacchioffset into the structure that it can be found in, in bits.
309*bc1f688bSRobert Mustacchi.Pp
310*bc1f688bSRobert MustacchiThe following show examples of type information for all of these
311*bc1f688bSRobert Mustacchidifferent types:
312*bc1f688bSRobert Mustacchi.Bd -literal
313*bc1f688bSRobert Mustacchi\&...
314*bc1f688bSRobert Mustacchi  [5] char [12] contents: 1, index: 2
315*bc1f688bSRobert Mustacchi  [6] short encoding=SIGNED offset=0 bits=16
316*bc1f688bSRobert Mustacchi  <7> struct exit_status (4 bytes)
317*bc1f688bSRobert Mustacchi        e_termination type=6 off=0
318*bc1f688bSRobert Mustacchi        e_exit type=6 off=16
319*bc1f688bSRobert Mustacchi
320*bc1f688bSRobert Mustacchi  <8> typedef time_t refers to 2
321*bc1f688bSRobert Mustacchi  <9> struct utmp (36 bytes)
322*bc1f688bSRobert Mustacchi        ut_user type=3 off=0
323*bc1f688bSRobert Mustacchi        ut_id type=4 off=64
324*bc1f688bSRobert Mustacchi        ut_line type=5 off=96
325*bc1f688bSRobert Mustacchi        ut_pid type=6 off=192
326*bc1f688bSRobert Mustacchi        ut_type type=6 off=208
327*bc1f688bSRobert Mustacchi        ut_exit type=7 off=224
328*bc1f688bSRobert Mustacchi        ut_time type=8 off=256
329*bc1f688bSRobert Mustacchi
330*bc1f688bSRobert Mustacchi  <10> struct utmp * refers to 9
331*bc1f688bSRobert Mustacchi  [11] const struct utmp refers to 9
332*bc1f688bSRobert Mustacchi  [12] const struct utmp * refers to 11
333*bc1f688bSRobert Mustacchi  <13> int encoding=SIGNED offset=0 bits=32
334*bc1f688bSRobert Mustacchi  <14> typedef int32_t refers to 13
335*bc1f688bSRobert Mustacchi\&...
336*bc1f688bSRobert Mustacchi.Ed
337*bc1f688bSRobert Mustacchi.Ss String Table
338*bc1f688bSRobert MustacchiThis section describes all of the strings that are present in the
339*bc1f688bSRobert Mustacchi.Sy CTF
340*bc1f688bSRobert Mustacchicontainer.
341*bc1f688bSRobert MustacchiEach line represents an entry in the string table.
342*bc1f688bSRobert MustacchiFirst the byte offset into the string table is shown in brackets and
343*bc1f688bSRobert Mustacchithen the
344*bc1f688bSRobert Mustacchistring's value is displayed.
345*bc1f688bSRobert MustacchiNote the following examples:
346*bc1f688bSRobert Mustacchi.Bd -literal
347*bc1f688bSRobert Mustacchi  [0] \0
348*bc1f688bSRobert Mustacchi  [1] joyent_20151001T070028Z
349*bc1f688bSRobert Mustacchi  [25] char
350*bc1f688bSRobert Mustacchi  [30] long
351*bc1f688bSRobert Mustacchi  [35] short
352*bc1f688bSRobert Mustacchi.Ed
353*bc1f688bSRobert Mustacchi.Ss Statistics
354*bc1f688bSRobert MustacchiThis section contains miscellaneous statistics about the
355*bc1f688bSRobert Mustacchi.Sy CTF
356*bc1f688bSRobert Mustacchidata present.
357*bc1f688bSRobert MustacchiEach line contains a single statistic.
358*bc1f688bSRobert MustacchiA brief explanation of the statistic is placed first, followed by an
359*bc1f688bSRobert Mustacchiequals sign, and then finally the value.
360*bc1f688bSRobert Mustacchi.Sh EXIT STATUS
361*bc1f688bSRobert Mustacchi.Bl -inset
362*bc1f688bSRobert Mustacchi.It Sy 0
363*bc1f688bSRobert Mustacchi.Dl Execution completed successfully.
364*bc1f688bSRobert Mustacchi.It Sy 1
365*bc1f688bSRobert Mustacchi.Dl A fatal error occurred.
366*bc1f688bSRobert Mustacchi.It Sy 2
367*bc1f688bSRobert Mustacchi.Dl Invalid command line options were specified.
368*bc1f688bSRobert Mustacchi.El
369*bc1f688bSRobert Mustacchi.Sh EXAMPLES
370*bc1f688bSRobert Mustacchi.Sy Example 1
371*bc1f688bSRobert MustacchiDisplaying the Type Section of a Single File
372*bc1f688bSRobert Mustacchi.Lp
373*bc1f688bSRobert MustacchiThe following example dumps the type section of the file
374*bc1f688bSRobert Mustacchi.Sy /usr/lib/libc.so.1 .
375*bc1f688bSRobert Mustacchi.Bd -literal -offset 6n
376*bc1f688bSRobert Mustacchi$ ctfdump -t /usr/lib/libc.so.1
377*bc1f688bSRobert Mustacchi- Types ----------------------------------------------------
378*bc1f688bSRobert Mustacchi
379*bc1f688bSRobert Mustacchi  <1> int encoding=SIGNED offset=0 bits=32
380*bc1f688bSRobert Mustacchi  <2> long encoding=SIGNED offset=0 bits=32
381*bc1f688bSRobert Mustacchi  <3> typedef pid_t refers to 2
382*bc1f688bSRobert Mustacchi  <4> unsigned int encoding=0x0 offset=0 bits=32
383*bc1f688bSRobert Mustacchi  <5> typedef uid_t refers to 4
384*bc1f688bSRobert Mustacchi  <6> typedef gid_t refers to 5
385*bc1f688bSRobert Mustacchi  <7> typedef uintptr_t refers to 4
386*bc1f688bSRobert Mustacchi\&...
387*bc1f688bSRobert Mustacchi.Ed
388*bc1f688bSRobert Mustacchi.Lp
389*bc1f688bSRobert Mustacchi.Sy Example 2
390*bc1f688bSRobert MustacchiDumping the CTF data to Another File
391*bc1f688bSRobert Mustacchi.Lp
392*bc1f688bSRobert MustacchiThe following example dumps the entire CTF data from the file
393*bc1f688bSRobert Mustacchi.Sy /usr/lib/libc.so.1
394*bc1f688bSRobert Mustacchiand places it into the file
395*bc1f688bSRobert Mustacchi.Sy ctf.out .
396*bc1f688bSRobert MustacchiThis then shows how you can use the
397*bc1f688bSRobert Mustacchi.Xr mdb 1
398*bc1f688bSRobert Mustacchito inspect its contents.
399*bc1f688bSRobert Mustacchi.Bd -literal -offset 6n
400*bc1f688bSRobert Mustacchi$ ctfdump -u ctf.out /usr/lib/libc.so.1
401*bc1f688bSRobert Mustacchi$ mdb ./ctf.out
402*bc1f688bSRobert Mustacchi> ::typedef -r /usr/lib/libctf.so.1
403*bc1f688bSRobert Mustacchi> 0::print ctf_header_t
404*bc1f688bSRobert Mustacchi{
405*bc1f688bSRobert Mustacchi    cth_preamble = {
406*bc1f688bSRobert Mustacchi        ctp_magic = 0xcff1
407*bc1f688bSRobert Mustacchi        ctp_version = 0x2
408*bc1f688bSRobert Mustacchi        ctp_flags = 0
409*bc1f688bSRobert Mustacchi    }
410*bc1f688bSRobert Mustacchi    cth_parlabel = 0
411*bc1f688bSRobert Mustacchi    cth_parname = 0
412*bc1f688bSRobert Mustacchi    cth_lbloff = 0
413*bc1f688bSRobert Mustacchi    cth_objtoff = 0x8
414*bc1f688bSRobert Mustacchi    cth_funcoff = 0x5e0
415*bc1f688bSRobert Mustacchi    cth_typeoff = 0x7178
416*bc1f688bSRobert Mustacchi    cth_stroff = 0x12964
417*bc1f688bSRobert Mustacchi    cth_strlen = 0x7c9c
418*bc1f688bSRobert Mustacchi}
419*bc1f688bSRobert Mustacchi.Ed
420*bc1f688bSRobert Mustacchi.Lp
421*bc1f688bSRobert Mustacchi.Sy Example 3
422*bc1f688bSRobert MustacchiDumping C-style output
423*bc1f688bSRobert Mustacchi.Bd -literal -offset 6n
424*bc1f688bSRobert Mustacchi$ ctfdump -c ./genunix | more
425*bc1f688bSRobert Mustacchi/* Types */
426*bc1f688bSRobert Mustacchi
427*bc1f688bSRobert Mustacchitypedef Elf64_Addr Addr;
428*bc1f688bSRobert Mustacchi
429*bc1f688bSRobert Mustacchitypedef unsigned char Bool;
430*bc1f688bSRobert Mustacchi
431*bc1f688bSRobert Mustacchitypedef struct CK_AES_CCM_PARAMS CK_AES_CCM_PARAMS;
432*bc1f688bSRobert Mustacchi
433*bc1f688bSRobert Mustacchitypedef struct CK_AES_GCM_PARAMS CK_AES_GCM_PARAMS;
434*bc1f688bSRobert Mustacchi\&...
435*bc1f688bSRobert Mustacchi.Ed
436*bc1f688bSRobert Mustacchi.Sh INTERFACE STABILITY
437*bc1f688bSRobert MustacchiThe command syntax is
438*bc1f688bSRobert Mustacchi.Sy Committed .
439*bc1f688bSRobert MustacchiThe output format is
440*bc1f688bSRobert Mustacchi.Sy Uncommitted .
441*bc1f688bSRobert Mustacchi.Sh SEE ALSO
442*bc1f688bSRobert Mustacchi.Xr ctfdiff 1 ,
443*bc1f688bSRobert Mustacchi.Xr dump 1 ,
444*bc1f688bSRobert Mustacchi.Xr elfdump 1 ,
445*bc1f688bSRobert Mustacchi.Xr mdb 1 ,
446*bc1f688bSRobert Mustacchi.Xr ctf 4
447