1*7fd79137SRobert Mustacchi.\" 2*7fd79137SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*7fd79137SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*7fd79137SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*7fd79137SRobert Mustacchi.\" 1.0 of the CDDL. 6*7fd79137SRobert Mustacchi.\" 7*7fd79137SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*7fd79137SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*7fd79137SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*7fd79137SRobert Mustacchi.\" 11*7fd79137SRobert Mustacchi.\" 12*7fd79137SRobert Mustacchi.\" Copyright (c) 2015, Joyent, Inc. 13*7fd79137SRobert Mustacchi.\" 14*7fd79137SRobert Mustacchi.Dd Oct 4, 2014 15*7fd79137SRobert Mustacchi.Dt CTFDIFF 1 16*7fd79137SRobert Mustacchi.Os 17*7fd79137SRobert Mustacchi.Sh NAME 18*7fd79137SRobert Mustacchi.Nm ctfdiff 19*7fd79137SRobert Mustacchi.Nd compare two CTF containers 20*7fd79137SRobert Mustacchi.Sh SYNOPSIS 21*7fd79137SRobert Mustacchi.Nm ctfdiff 22*7fd79137SRobert Mustacchi.Op Fl afIloqt 23*7fd79137SRobert Mustacchi.Op Fl F Ar function 24*7fd79137SRobert Mustacchi.Op Fl O Ar object 25*7fd79137SRobert Mustacchi.Op Fl p Ar parent1 26*7fd79137SRobert Mustacchi.Op Fl p Ar parent2 27*7fd79137SRobert Mustacchi.Op Fl T Ar type 28*7fd79137SRobert Mustacchi.Ar file1 file2 29*7fd79137SRobert Mustacchi.Sh DESCRIPTION 30*7fd79137SRobert MustacchiThe 31*7fd79137SRobert Mustacchi.Nm 32*7fd79137SRobert Mustacchiutility identifies differences between the contents of the 33*7fd79137SRobert Mustacchi.Sy CTF 34*7fd79137SRobert Mustacchicontainers found in 35*7fd79137SRobert Mustacchi.Em file1 36*7fd79137SRobert Mustacchiand 37*7fd79137SRobert Mustacchi.Em file2 . 38*7fd79137SRobert Mustacchi.Lp 39*7fd79137SRobert Mustacchi.Nm 40*7fd79137SRobert Mustacchican find differences between two 41*7fd79137SRobert Mustacchi.Sy CTF 42*7fd79137SRobert Mustacchicontainer's 43*7fd79137SRobert Mustacchi.Sy labels , 44*7fd79137SRobert Mustacchi.Sy functions , 45*7fd79137SRobert Mustacchi.Sy objects , 46*7fd79137SRobert Mustacchiand 47*7fd79137SRobert Mustacchi.Sy types . 48*7fd79137SRobert MustacchiWhen no options are specified, 49*7fd79137SRobert Mustacchi.Nm 50*7fd79137SRobert Mustacchiwill only consider 51*7fd79137SRobert Mustacchi.Sy functions , 52*7fd79137SRobert Mustacchi.Sy objects, 53*7fd79137SRobert Mustacchiand 54*7fd79137SRobert Mustacchi.Sy types . 55*7fd79137SRobert Mustacchi.Lp 56*7fd79137SRobert MustacchiTwo 57*7fd79137SRobert Mustacchi.Sy labels 58*7fd79137SRobert Mustacchiare the same if they have the same name. 59*7fd79137SRobert MustacchiTwo 60*7fd79137SRobert Mustacchi.Sy objects 61*7fd79137SRobert Mustacchiare the same if they have the same name and the type of the 62*7fd79137SRobert Mustacchiobject is the same. 63*7fd79137SRobert MustacchiTwo 64*7fd79137SRobert Mustacchi.Sy functions 65*7fd79137SRobert Mustacchiare considered the same if they have the same name, the same return 66*7fd79137SRobert Mustacchitype, the same number of arguments, and the types of their arguments are 67*7fd79137SRobert Mustacchithe same. 68*7fd79137SRobert Mustacchi.Lp 69*7fd79137SRobert MustacchiTwo 70*7fd79137SRobert Mustacchi.Sy types 71*7fd79137SRobert Mustacchiare considered the same if they have the same name, they represent the same 72*7fd79137SRobert Mustacchikind of thing, and the contents of the type are the same. 73*7fd79137SRobert MustacchiThis varies for each specific kind, for example, two structs are the 74*7fd79137SRobert Mustacchisame if they have the same members whose types, offsets, and names are 75*7fd79137SRobert Mustacchiall the same. 76*7fd79137SRobert MustacchiFor more information on the specifics for what we look at 77*7fd79137SRobert Mustacchifor each kind of type, and the kinds themselves, see the information we 78*7fd79137SRobert Mustacchiuse to encode them in 79*7fd79137SRobert Mustacchi.Xr ctf 4 . 80*7fd79137SRobert MustacchiIf the option 81*7fd79137SRobert Mustacchi.Fl I 82*7fd79137SRobert Mustacchiis specified, then the names of basic integer types are ignored. 83*7fd79137SRobert MustacchiFor an example of where this makes sense, see 84*7fd79137SRobert Mustacchi.Sy Example 4 . 85*7fd79137SRobert Mustacchi.Lp 86*7fd79137SRobert MustacchiIf the 87*7fd79137SRobert Mustacchi.Sy CTF 88*7fd79137SRobert Mustacchicontainer found inside of either 89*7fd79137SRobert Mustacchi.Em file1 90*7fd79137SRobert Mustacchior 91*7fd79137SRobert Mustacchi.Em file2 92*7fd79137SRobert Mustacchihas been uniquified (see 93*7fd79137SRobert Mustacchi.Xr ctf 4 94*7fd79137SRobert Mustacchifor more on uniquification), then the parent 95*7fd79137SRobert Mustacchi.Sy CTF 96*7fd79137SRobert Mustacchicontainer is also required for the diff to complete. 97*7fd79137SRobert Mustacchi.Sh OPTIONS 98*7fd79137SRobert MustacchiThe following options are supported: 99*7fd79137SRobert Mustacchi.Bl -hang -width Ds 100*7fd79137SRobert Mustacchi.It Fl a 101*7fd79137SRobert Mustacchi.Bd -filled -compact 102*7fd79137SRobert MustacchiDiff 103*7fd79137SRobert Mustacchi.Sy labels , 104*7fd79137SRobert Mustacchi.Sy types , 105*7fd79137SRobert Mustacchi.Sy objects , 106*7fd79137SRobert Mustacchiand 107*7fd79137SRobert Mustacchi.Sy functions . 108*7fd79137SRobert Mustacchi.Ed 109*7fd79137SRobert Mustacchi.It Fl f 110*7fd79137SRobert Mustacchi.Bd -filled -compact 111*7fd79137SRobert MustacchiDiff 112*7fd79137SRobert Mustacchi.Sy function 113*7fd79137SRobert Mustacchitype argument information. 114*7fd79137SRobert Mustacchi.Ed 115*7fd79137SRobert Mustacchi.It Fl F Ar function 116*7fd79137SRobert Mustacchi.Bd -filled -compact 117*7fd79137SRobert MustacchiWhen diffing 118*7fd79137SRobert Mustacchi.Sy functions , 119*7fd79137SRobert Mustacchionly consider the function 120*7fd79137SRobert Mustacchi.Em function . 121*7fd79137SRobert MustacchiThis option requires that the option 122*7fd79137SRobert Mustacchi.Fl f 123*7fd79137SRobert Mustacchibe specified and can be repeated multiple times. 124*7fd79137SRobert Mustacchi.Ed 125*7fd79137SRobert Mustacchi.It Fl I 126*7fd79137SRobert Mustacchi.Bd -filled -compact 127*7fd79137SRobert MustacchiIgnore the names of integral types. 128*7fd79137SRobert MustacchiThis option is useful when comparing types between two 129*7fd79137SRobert Mustacchi.Sy CTF 130*7fd79137SRobert Mustacchicontainers that have different programming models. 131*7fd79137SRobert MustacchiIn this case, when comparing integers, the name of the type is not 132*7fd79137SRobert Mustacchiconsidered. 133*7fd79137SRobert MustacchiThis means that the ILP32 type long which is a 32-bit wide signed 134*7fd79137SRobert Mustacchiinteger is the same as the LP64 type int which is a 32-bit wide signed 135*7fd79137SRobert Mustacchiinteger, even though they have different names. 136*7fd79137SRobert Mustacchi.Ed 137*7fd79137SRobert Mustacchi.It Fl l 138*7fd79137SRobert Mustacchi.Bd -filled -compact 139*7fd79137SRobert MustacchiDiff the 140*7fd79137SRobert Mustacchi.Sy labels 141*7fd79137SRobert Mustacchicontained inside the 142*7fd79137SRobert Mustacchi.Sy CTF 143*7fd79137SRobert Mustacchicontainers. 144*7fd79137SRobert Mustacchi.Ed 145*7fd79137SRobert Mustacchi.It Fl o 146*7fd79137SRobert Mustacchi.Bd -filled -compact 147*7fd79137SRobert MustacchiDiff type information for 148*7fd79137SRobert Mustacchi.Sy objects . 149*7fd79137SRobert Mustacchi.Ed 150*7fd79137SRobert Mustacchi.It Fl O Ar object 151*7fd79137SRobert Mustacchi.Bd -filled -compact 152*7fd79137SRobert MustacchiWhen diffing type information for 153*7fd79137SRobert Mustacchi.Sy objects , 154*7fd79137SRobert Mustacchionly compare if the object is name 155*7fd79137SRobert Mustacchi.Em object . 156*7fd79137SRobert MustacchiThis option requires 157*7fd79137SRobert Mustacchi.Fl o 158*7fd79137SRobert Mustacchito be specified and can be repeated multiple times. 159*7fd79137SRobert Mustacchi.Ed 160*7fd79137SRobert Mustacchi.It Fl p Ar parent1 161*7fd79137SRobert Mustacchi.Bd -filled -compact 162*7fd79137SRobert MustacchiSpecifies the path of file that is the parent of the 163*7fd79137SRobert Mustacchi.Sy CTF 164*7fd79137SRobert Mustacchicontainer inside of 165*7fd79137SRobert Mustacchi.Em file1 166*7fd79137SRobert Mustacchiis 167*7fd79137SRobert Mustacchi.Em parent1 . 168*7fd79137SRobert MustacchiThis option is required if 169*7fd79137SRobert Mustacchi.Em file1 170*7fd79137SRobert Mustacchihas been uniquified. 171*7fd79137SRobert MustacchiFor more information on uniquification, see 172*7fd79137SRobert Mustacchi.Xr ctf 4 . 173*7fd79137SRobert Mustacchi.Ed 174*7fd79137SRobert Mustacchi.It Fl P Ar parent2 175*7fd79137SRobert Mustacchi.Bd -filled -compact 176*7fd79137SRobert MustacchiSpecifies the path of file that is the parent of the 177*7fd79137SRobert Mustacchi.Sy CTF 178*7fd79137SRobert Mustacchicontainer inside of 179*7fd79137SRobert Mustacchi.Em file2 is 180*7fd79137SRobert Mustacchi.Em parent2 . 181*7fd79137SRobert MustacchiThis option is required if 182*7fd79137SRobert Mustacchi.Em file1 183*7fd79137SRobert Mustacchihas been uniquified. 184*7fd79137SRobert MustacchiFor more information on uniquification, see 185*7fd79137SRobert Mustacchi.Xr ctf 4 . 186*7fd79137SRobert Mustacchi.Ed 187*7fd79137SRobert Mustacchi.It Fl q 188*7fd79137SRobert Mustacchi.Bd -filled -compact 189*7fd79137SRobert MustacchiEnables quiet mode. 190*7fd79137SRobert MustacchiStandard output from the diff will not be emitted. 191*7fd79137SRobert MustacchiHowever, diagnostics messages will still be emitted to standard error. 192*7fd79137SRobert Mustacchi.Ed 193*7fd79137SRobert Mustacchi.It Fl t 194*7fd79137SRobert Mustacchi.Bd -filled -compact 195*7fd79137SRobert MustacchiDiff the 196*7fd79137SRobert Mustacchi.Sy type 197*7fd79137SRobert Mustacchiinformation sections in the 198*7fd79137SRobert Mustacchi.Sy CTF 199*7fd79137SRobert Mustacchicontainers. 200*7fd79137SRobert Mustacchi.Ed 201*7fd79137SRobert Mustacchi.It Fl T Ar type 202*7fd79137SRobert Mustacchi.Bd -filled -compact 203*7fd79137SRobert MustacchiWhen diffing the 204*7fd79137SRobert Mustacchi.Sy types 205*7fd79137SRobert Mustacchisection, only consider it if the type is name 206*7fd79137SRobert Mustacchi.Em type . 207*7fd79137SRobert MustacchiTypes specified here do not impact the diffing of 208*7fd79137SRobert Mustacchi.Sy objects 209*7fd79137SRobert Mustacchior 210*7fd79137SRobert Mustacchi.Sy functions . 211*7fd79137SRobert MustacchiEven with 212*7fd79137SRobert Mustacchi.Fl T 213*7fd79137SRobert Mustacchispecified, other types will be diffed as necessary for the evaluation of 214*7fd79137SRobert Mustacchithe named types; however, the results of those intermediate differences 215*7fd79137SRobert Mustacchiwill not impact the results of 216*7fd79137SRobert Mustacchi.Nm , 217*7fd79137SRobert Mustacchionly named types are considered when evaluating the exit status of 218*7fd79137SRobert Mustacchi.Nm . 219*7fd79137SRobert Mustacchi.Ed 220*7fd79137SRobert Mustacchi.El 221*7fd79137SRobert Mustacchi.Sh EXIT STATUS 222*7fd79137SRobert Mustacchi.Bl -inset 223*7fd79137SRobert Mustacchi.It Sy 0 224*7fd79137SRobert Mustacchi.Bd -filled -offset indent -compact 225*7fd79137SRobert MustacchiExecution completed successfully, no differences were detected 226*7fd79137SRobert Mustacchibetween 227*7fd79137SRobert Mustacchi.Em file1 228*7fd79137SRobert Mustacchiand 229*7fd79137SRobert Mustacchi.Em file2 . 230*7fd79137SRobert Mustacchi.Ed 231*7fd79137SRobert Mustacchi.It Sy 1 232*7fd79137SRobert Mustacchi.Bd -filled -offset indent -compact 233*7fd79137SRobert MustacchiExecution completed successfully, but differences were detected 234*7fd79137SRobert Mustacchibetween 235*7fd79137SRobert Mustacchi.Em file1 236*7fd79137SRobert Mustacchiand 237*7fd79137SRobert Mustacchi.Em file2 . 238*7fd79137SRobert Mustacchi.Ed 239*7fd79137SRobert Mustacchi.It Sy 2 240*7fd79137SRobert Mustacchi.D1 Invalid command line options were specified. 241*7fd79137SRobert Mustacchi.It Sy 3 242*7fd79137SRobert Mustacchi.D1 A fatal error occurred. 243*7fd79137SRobert Mustacchi.El 244*7fd79137SRobert Mustacchi.Sh EXAMPLES 245*7fd79137SRobert Mustacchi.Sy Example 1 246*7fd79137SRobert MustacchiDiffing Two 247*7fd79137SRobert Mustacchi.Sy CTF 248*7fd79137SRobert MustacchiContainers 249*7fd79137SRobert Mustacchi.Lp 250*7fd79137SRobert MustacchiThe following example compares two 251*7fd79137SRobert Mustacchi.Sy CTF 252*7fd79137SRobert Mustacchicontainers using the default set 253*7fd79137SRobert Mustacchiof comparisons: 254*7fd79137SRobert Mustacchi.Sy objects , 255*7fd79137SRobert Mustacchi.Sy functions , 256*7fd79137SRobert Mustacchiand 257*7fd79137SRobert Mustacchi.Sy types . 258*7fd79137SRobert Mustacchi.Bd -literal -offset 6n 259*7fd79137SRobert Mustacchi$ ctfdiff /usr/lib/libc.so.1 /usr/lib/libdtrace.so.1 260*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 37 is different 261*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 38 is different 262*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 39 is different 263*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 40 is different 264*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 41 is different 265*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 42 is different 266*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 43 is different 267*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 47 is different 268*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 48 is different 269*7fd79137SRobert Mustacchictf container /usr/lib/libc.so.1 type 49 is different 270*7fd79137SRobert Mustacchi\&... 271*7fd79137SRobert Mustacchi.Ed 272*7fd79137SRobert Mustacchi.Sy Example 2 273*7fd79137SRobert MustacchiDiffing Types Between Two 274*7fd79137SRobert Mustacchi.Sy CTF 275*7fd79137SRobert MustacchiContainers with Parents 276*7fd79137SRobert Mustacchi.Lp 277*7fd79137SRobert MustacchiThe following example compares two 278*7fd79137SRobert Mustacchi.Sy CTF 279*7fd79137SRobert Mustacchicontainers 280*7fd79137SRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/drv/amd64/vnd 281*7fd79137SRobert Mustacchiand 282*7fd79137SRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/drv/amd64/overlay 283*7fd79137SRobert Mustacchithat have been uniquified against the same container 284*7fd79137SRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/amd64/genunix . 285*7fd79137SRobert Mustacchi.Bd -literal -offset 6n 286*7fd79137SRobert Mustacchi$ ctfdiff -t -p /ws/rm/zlan/proto/kernel/amd64/genunix \\ 287*7fd79137SRobert Mustacchi -P /ws/rm/zlan/proto/kernel/amd64/genunix \\ 288*7fd79137SRobert Mustacchi /ws/rm/zlan/proto/kernel/drv/amd64/vnd \\ 289*7fd79137SRobert Mustacchi /ws/rm/zlan/proto/kernel/drv/amd64/overlay 290*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32769 is different 291*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32770 is different 292*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32771 is different 293*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32772 is different 294*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32774 is different 295*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32775 is different 296*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32776 is different 297*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32777 is different 298*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32778 is different 299*7fd79137SRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32779 is different 300*7fd79137SRobert Mustacchi\&... 301*7fd79137SRobert Mustacchi.Ed 302*7fd79137SRobert Mustacchi.Lp 303*7fd79137SRobert Mustacchi.Sy Example 3 304*7fd79137SRobert MustacchiDiffing a Specific Function in Two 305*7fd79137SRobert Mustacchi.Sy CTF 306*7fd79137SRobert MustacchiContainers 307*7fd79137SRobert Mustacchi.Lp 308*7fd79137SRobert MustacchiThis example shows us looking for differences in the function 309*7fd79137SRobert Mustacchi.Sy libzfs_core_init 310*7fd79137SRobert Mustacchiin two different version of the library 311*7fd79137SRobert Mustacchi.Sy libzfs_core.so.1 . 312*7fd79137SRobert Mustacchi.Bd -literal -offset 6n 313*7fd79137SRobert Mustacchi$ ctfdiff -f -F libzfs_core_init /usr/lib/libzfs_core.so.1 \\ 314*7fd79137SRobert Mustacchi /ws/rm/ctf/proto/usr/lib/libzfs_core.so.1 315*7fd79137SRobert Mustacchi$ echo $? 316*7fd79137SRobert Mustacchi.Ed 317*7fd79137SRobert Mustacchi.Lp 318*7fd79137SRobert Mustacchi.Sy Example 4 319*7fd79137SRobert MustacchiDiffing Types to Find Differences Between Different Data Models. 320*7fd79137SRobert Mustacchi.Lp 321*7fd79137SRobert MustacchiThis example looks for differences between structures used in an ioctl 322*7fd79137SRobert Mustacchithat the kernel wants to be bitness neutral by comparing a 32-bit and 323*7fd79137SRobert Mustacchi64-bit library that consumes it. 324*7fd79137SRobert MustacchiIn this example, we'll use the library 325*7fd79137SRobert Mustacchi.Sy libvnd.so.1 326*7fd79137SRobert Mustacchiand the types 327*7fd79137SRobert Mustacchi.Sy vnd_ioc_attach_t , 328*7fd79137SRobert Mustacchi.Sy vnd_ioc_link_t , 329*7fd79137SRobert Mustacchi.Sy vnd_ioc_unlink_t , 330*7fd79137SRobert Mustacchi.Sy vnd_ioc_buf_t , 331*7fd79137SRobert Mustacchiand 332*7fd79137SRobert Mustacchi.Sy vnd_ioc_info_t . 333*7fd79137SRobert Mustacchi.Bd -literal -offset 6n 334*7fd79137SRobert Mustacchi$ ctfdiff -t -I -T vnd_ioc_attach_t -T vnd_ioc_link_t \\ 335*7fd79137SRobert Mustacchi -T vnd_ioc_unlink_t -T vnd_ioc_buf_t -T vnd_ioc_info_t \\ 336*7fd79137SRobert Mustacchi i386/libvnd.so.1 amd64/libvnd.so.1 337*7fd79137SRobert Mustacchi$ echo $? 338*7fd79137SRobert Mustacchi0 339*7fd79137SRobert Mustacchi.Ed 340*7fd79137SRobert Mustacchi.Sh INTERFACE STABILITY 341*7fd79137SRobert MustacchiThe command syntax is 342*7fd79137SRobert Mustacchi.Sy Committed . 343*7fd79137SRobert MustacchiThe output format is 344*7fd79137SRobert Mustacchi.Sy Uncommitted . 345*7fd79137SRobert Mustacchi.Sh SEE ALSO 346*7fd79137SRobert Mustacchi.Xr ctfdump 1 , 347*7fd79137SRobert Mustacchi.Xr diff 1 , 348*7fd79137SRobert Mustacchi.Xr ctf 4 349