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