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