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