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