xref: /titanic_52/usr/src/man/man1/ctfdiff.1 (revision 7fd791373689a6af05e27efec3b1ab556e02aa23)
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