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