Makefile revision 313486
1# $FreeBSD: stable/10/tools/test/dtrace/Makefile 313486 2017-02-09 22:04:56Z ngie $
2
3TESTSRCDIR=	${.CURDIR}/../../../cddl/contrib/opensolaris/cmd/dtrace/test
4CFLAGS+=	-w
5DTEST=		${TESTSRCDIR}/cmd/scripts/dtest.pl -n
6
7IGNORE=		\
8	${TESTSRCDIR}/tst/common/aggs/tst.subr.d			\
9	${TESTSRCDIR}/tst/common/buffering/tst.cputime.ksh		\
10	${TESTSRCDIR}/tst/common/buffering/tst.ring3.d			\
11	${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.lowfrequency.d	\
12	${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.malformedoverflow.d\
13	${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.nonexistentevent.d\
14	${TESTSRCDIR}/tst/common/cpc/err.cpcvscpustatpart1.ksh		\
15	${TESTSRCDIR}/tst/common/cpc/err.cpcvscpustatpart2.ksh		\
16	${TESTSRCDIR}/tst/common/cpc/err.cputrackfailtostart.ksh	\
17	${TESTSRCDIR}/tst/common/cpc/err.cputrackterminates.ksh		\
18	${TESTSRCDIR}/tst/common/cpc/err.toomanyenablings.d		\
19	${TESTSRCDIR}/tst/common/cpc/tst.allcpus.ksh			\
20	${TESTSRCDIR}/tst/common/cpc/tst.genericevent.d			\
21	${TESTSRCDIR}/tst/common/cpc/tst.platformevent.ksh		\
22	${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithFunctions	\
23	${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithModules	\
24	${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithNames	\
25	${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithProviders	\
26	${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceFunctions		\
27	${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceModule		\
28	${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceNames		\
29	${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceProvider		\
30	${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidModule3.d.ksh	\
31	${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidProvider3.d.ksh	\
32	${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceFunc7.d.ksh	\
33	${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceModule6.d.ksh\
34	${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceProvider4.d.ksh\
35	${TESTSRCDIR}/tst/common/funcs/tst.bcopy.d			\
36	${TESTSRCDIR}/tst/common/funcs/tst.copyin.d			\
37	${TESTSRCDIR}/tst/common/funcs/tst.copyinto.d			\
38	${TESTSRCDIR}/tst/common/funcs/tst.ddi_pathname.d		\
39	${TESTSRCDIR}/tst/common/funcs/tst.index.d			\
40	${TESTSRCDIR}/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d	\
41	${TESTSRCDIR}/tst/common/inline/tst.InlineTypedef.d		\
42	${TESTSRCDIR}/tst/common/io/tst.fds.c				\
43	${TESTSRCDIR}/tst/common/java_api/tst.FunctionLookup.c		\
44	${TESTSRCDIR}/tst/common/java_api/tst.ProbeData.c		\
45	${TESTSRCDIR}/common/misc/tst.include.ksh			\
46	${TESTSRCDIR}/tst/common/misc/tst.roch.d			\
47	${TESTSRCDIR}/tst/common/nfs/tst.call.c				\
48	${TESTSRCDIR}/tst/common/nfs/tst.call.d				\
49	${TESTSRCDIR}/tst/common/nfs/tst.call3.c			\
50	${TESTSRCDIR}/tst/common/nfs/tst.call3.d			\
51	${TESTSRCDIR}/tst/common/offsetof/err.D_OFFSETOF_BITFIELD.bitfield.d\
52	${TESTSRCDIR}/tst/common/pointers/err.D_OP_LVAL.AddressChange.d	\
53	${TESTSRCDIR}/tst/common/pointers/tst.GlobalVar.d		\
54	${TESTSRCDIR}/tst/common/pointers/tst.basic1.d			\
55	${TESTSRCDIR}/tst/common/pointers/tst.basic2.d			\
56	${TESTSRCDIR}/tst/common/predicates/tst.argsnotcached.d		\
57	${TESTSRCDIR}/tst/common/privs/tst.func_access.ksh		\
58	${TESTSRCDIR}/tst/common/privs/tst.op_access.ksh		\
59	${TESTSRCDIR}/tst/common/proc/tst.discard.ksh			\
60	${TESTSRCDIR}/tst/common/proc/tst.signal.ksh			\
61	${TESTSRCDIR}/tst/common/proc/tst.startexit.ksh			\
62	${TESTSRCDIR}/tst/common/scalars/tst.misc.d			\
63	${TESTSRCDIR}/tst/common/scalars/tst.selfarray2.d		\
64	${TESTSRCDIR}/tst/common/sysevent/tst.post.c			\
65	${TESTSRCDIR}/tst/common/sysevent/tst.post.d			\
66	${TESTSRCDIR}/tst/common/sysevent/tst.post_chan.c		\
67	${TESTSRCDIR}/tst/common/sysevent/tst.post_chan.d		\
68	${TESTSRCDIR}/tst/common/trace/tst.misc.d			\
69	${TESTSRCDIR}/tst/common/tracemem/err.D_TRACEMEM_ADDR.badaddr.d	\
70	${TESTSRCDIR}/tst/common/tracemem/tst.rootvp.d			\
71	${TESTSRCDIR}/tst/common/translators/tst.ProcModelTrans.d	\
72	${TESTSRCDIR}/tst/common/types/err.D_XLATE_REDECL.ResultDynType.d\
73	${TESTSRCDIR}/tst/common/types/tst.ptrops.d			\
74	${TESTSRCDIR}/tst/common/types/tst.struct.d			\
75	${TESTSRCDIR}/tst/common/types/tst.typedef.d			\
76	${TESTSRCDIR}/tst/common/vars/tst.ucaller.ksh			\
77	${TESTSRCDIR}/tst/common/vars/tst.walltimestamp.d		\
78	${TESTSRCDIR}/tst/common/usdt/tst.argmap.c			\
79	${TESTSRCDIR}/tst/common/usdt/tst.args.c			\
80	${TESTSRCDIR}/tst/common/usdt/tst.forker.c			\
81	${TESTSRCDIR}/tst/common/ip/tst.ipv4localtcp.ksh		\
82	${TESTSRCDIR}/tst/common/ip/tst.ipv4localudp.ksh		\
83	${TESTSRCDIR}/tst/common/ip/tst.ipv4remotetcp.ksh		\
84	${TESTSRCDIR}/tst/common/ip/tst.ipv4remoteudp.ksh		\
85	${TESTSRCDIR}/tst/common/ip/tst.localtcpstate.ksh		\
86	${TESTSRCDIR}/tst/common/ip/tst.remotetcpstate.ksh		\
87	${TESTSRCDIR}/tst/common/scripting/tst.projid.ksh		\
88	${TESTSRCDIR}/tst/common/scripting/tst.taskid.ksh
89
90
91
92NOTWORK+= \
93	${TESTSRCDIR}/tst/common/io/tst.fds.d				\
94	${TESTSRCDIR}/tst/common/java_api/tst.Abort.ksh			\
95	${TESTSRCDIR}/tst/common/java_api/tst.Bean.ksh			\
96	${TESTSRCDIR}/tst/common/java_api/tst.Close.ksh			\
97	${TESTSRCDIR}/tst/common/java_api/tst.Drop.ksh			\
98	${TESTSRCDIR}/tst/common/java_api/tst.Enable.ksh		\
99	${TESTSRCDIR}/tst/common/java_api/tst.FunctionLookup.ksh	\
100	${TESTSRCDIR}/tst/common/java_api/tst.GetAggregate.ksh		\
101	${TESTSRCDIR}/tst/common/java_api/tst.MaxConsumers.ksh		\
102	${TESTSRCDIR}/tst/common/java_api/tst.MultiAggPrinta.ksh	\
103	${TESTSRCDIR}/tst/common/java_api/tst.ProbeData.ksh		\
104	${TESTSRCDIR}/tst/common/java_api/tst.ProbeDescription.ksh	\
105	${TESTSRCDIR}/tst/common/java_api/tst.StateMachine.ksh		\
106	${TESTSRCDIR}/tst/common/java_api/tst.StopLock.ksh 		\
107	${TESTSRCDIR}/tst/common/java_api/tst.printa.d			\
108	${TESTSRCDIR}/tst/common/lexer/err.D_CHR_NL.char.d		\
109	${TESTSRCDIR}/tst/common/lexer/err.D_STR_NL.string.d		\
110	${TESTSRCDIR}/tst/common/mdb/tst.dtracedcmd.ksh			\
111	${TESTSRCDIR}/tst/common/mib/tst.icmp.ksh			\
112	${TESTSRCDIR}/tst/common/mib/tst.tcp.ksh			\
113	${TESTSRCDIR}/tst/common/mib/tst.udp.ksh			\
114	${TESTSRCDIR}/tst/common/profile-n/tst.func.ksh			\
115	${TESTSRCDIR}/tst/common/profile-n/tst.mod.ksh			\
116	${TESTSRCDIR}/tst/common/profile-n/tst.sym.ksh			\
117	${TESTSRCDIR}/tst/common/safety/tst.basename.d			\
118	${TESTSRCDIR}/tst/common/safety/tst.caller.d			\
119	${TESTSRCDIR}/tst/common/safety/tst.cleanpath.d			\
120	${TESTSRCDIR}/tst/common/safety/tst.copyin.d			\
121	${TESTSRCDIR}/tst/common/safety/tst.copyin2.d			\
122	${TESTSRCDIR}/tst/common/safety/tst.ddi_pathname.d		\
123	${TESTSRCDIR}/tst/common/safety/tst.dirname.d			\
124	${TESTSRCDIR}/tst/common/safety/tst.errno.d			\
125	${TESTSRCDIR}/tst/common/safety/tst.execname.d			\
126	${TESTSRCDIR}/tst/common/safety/tst.gid.d			\
127	${TESTSRCDIR}/tst/common/safety/tst.hton.d			\
128	${TESTSRCDIR}/tst/common/safety/tst.index.d			\
129	${TESTSRCDIR}/tst/common/safety/tst.msgdsize.d			\
130	${TESTSRCDIR}/tst/common/safety/tst.msgsize.d			\
131	${TESTSRCDIR}/tst/common/safety/tst.null.d			\
132	${TESTSRCDIR}/tst/common/safety/tst.pid.d			\
133	${TESTSRCDIR}/tst/common/safety/tst.ppid.d			\
134	${TESTSRCDIR}/tst/common/safety/tst.progenyof.d			\
135	${TESTSRCDIR}/tst/common/safety/tst.random.d			\
136	${TESTSRCDIR}/tst/common/safety/tst.rw.d			\
137	${TESTSRCDIR}/tst/common/safety/tst.shortstr.d			\
138	${TESTSRCDIR}/tst/common/safety/tst.stack.d			\
139	${TESTSRCDIR}/tst/common/safety/tst.stackdepth.d		\
140	${TESTSRCDIR}/tst/common/safety/tst.stddev.d			\
141	${TESTSRCDIR}/tst/common/safety/tst.strchr.d			\
142	${TESTSRCDIR}/tst/common/safety/tst.strjoin.d			\
143	${TESTSRCDIR}/tst/common/safety/tst.strstr.d			\
144	${TESTSRCDIR}/tst/common/safety/tst.strtok.d			\
145	${TESTSRCDIR}/tst/common/safety/tst.substr.d			\
146	${TESTSRCDIR}/tst/common/safety/tst.ucaller.d			\
147	${TESTSRCDIR}/tst/common/safety/tst.uid.d			\
148	${TESTSRCDIR}/tst/common/safety/tst.unalign.d			\
149	${TESTSRCDIR}/tst/common/safety/tst.ustack.d			\
150	${TESTSRCDIR}/tst/common/safety/tst.ustackdepth.d		\
151	${TESTSRCDIR}/tst/common/safety/tst.vahole.d			\
152	${TESTSRCDIR}/tst/common/safety/tst.violentdeath.ksh		\
153	${TESTSRCDIR}/tst/common/safety/tst.zonename.d			\
154	${TESTSRCDIR}/tst/common/sched/tst.enqueue.d			\
155	${TESTSRCDIR}/tst/common/sched/tst.oncpu.d			\
156	${TESTSRCDIR}/tst/common/sched/tst.stackdepth.d			\
157	${TESTSRCDIR}/tst/common/usdt/argmap.d				\
158	${TESTSRCDIR}/tst/common/usdt/args.d				\
159	${TESTSRCDIR}/tst/common/usdt/forker.d				\
160	${TESTSRCDIR}/tst/common/usdt/tst.andpid.ksh			\
161	${TESTSRCDIR}/tst/common/usdt/tst.argmap.d			\
162	${TESTSRCDIR}/tst/common/usdt/tst.args.d			\
163	${TESTSRCDIR}/tst/common/usdt/tst.badguess.ksh			\
164	${TESTSRCDIR}/tst/common/usdt/tst.dlclose1.ksh			\
165	${TESTSRCDIR}/tst/common/usdt/tst.dlclose2.ksh			\
166	${TESTSRCDIR}/tst/common/usdt/tst.dlclose3.ksh			\
167	${TESTSRCDIR}/tst/common/usdt/tst.eliminate.ksh			\
168	${TESTSRCDIR}/tst/common/usdt/tst.enabled.ksh			\
169	${TESTSRCDIR}/tst/common/usdt/tst.entryreturn.ksh		\
170	${TESTSRCDIR}/tst/common/usdt/tst.fork.ksh			\
171	${TESTSRCDIR}/tst/common/usdt/tst.forker.ksh			\
172	${TESTSRCDIR}/tst/common/usdt/tst.guess32.ksh			\
173	${TESTSRCDIR}/tst/common/usdt/tst.guess64.ksh			\
174	${TESTSRCDIR}/tst/common/usdt/tst.header.ksh			\
175	${TESTSRCDIR}/tst/common/usdt/tst.include.ksh			\
176	${TESTSRCDIR}/tst/common/usdt/tst.linkpriv.ksh			\
177	${TESTSRCDIR}/tst/common/usdt/tst.linkunpriv.ksh		\
178	${TESTSRCDIR}/tst/common/usdt/tst.multiple.ksh			\
179	${TESTSRCDIR}/tst/common/usdt/tst.nodtrace.ksh			\
180	${TESTSRCDIR}/tst/common/usdt/tst.onlyenabled.ksh		\
181	${TESTSRCDIR}/tst/common/usdt/tst.reeval.ksh			\
182	${TESTSRCDIR}/tst/common/usdt/tst.static.ksh			\
183	${TESTSRCDIR}/tst/common/usdt/tst.static2.ksh			\
184	${TESTSRCDIR}/tst/common/usdt/tst.user.ksh			\
185	${TESTSRCDIR}/tst/common/misc/tst.schrock.ksh 
186
187# --------------------------------------------------------------------------------
188# Tests that just don't complete (even to fail) at the moment...
189
190NOTWORK+= \
191	${TESTSRCDIR}/tst/common/dtraceUtil/tst.ZeroModuleProbes.d.ksh	\
192	${TESTSRCDIR}/tst/common/printa/tst.many.d			\
193	${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupgtype.d	\
194	${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupltype.d	\
195	${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupttype.d	\
196	${TESTSRCDIR}/tst/common/vars/tst.gid.d				\
197	${TESTSRCDIR}/tst/common/vars/tst.uid.d				\
198
199# --------------------------------------------------------------------------------
200# Tests that currently hang the system:
201
202NOTWORK+= \
203	${TESTSRCDIR}/tst/common/fbtprovider/tst.basic.d	\
204	${TESTSRCDIR}/tst/common/fbtprovider/tst.return.d	\
205	${TESTSRCDIR}/tst/common/grammar/tst.stmts.d		\
206	${TESTSRCDIR}/tst/common/misc/tst.enablerace.ksh	\
207	${TESTSRCDIR}/tst/common/predicates/tst.predcache.ksh	\
208	${TESTSRCDIR}/tst/common/proc/tst.exitkilled.ksh	\
209
210.if ${MACHINE_ARCH} == "i386"
211
212NOTWORK+= ${TESTSRCDIR}/tst/common/dtraceUtil/tst.DataModel64.d.ksh
213
214NOTWORK+= ${TESTSRCDIR}/tst/common/dtraceUtil/tst.DataModel64.d.ksh
215
216# --------------------------------------------------------------------------------
217# This test causes i386 to go kaboom in a big way. There is a problem in the
218# fbt exception code which needs to be fixed.
219
220NOTWORK+= \
221	${TESTSRCDIR}/tst/common/fbtprovider/tst.tailcall.d
222
223# Some tests that don't complete on i386.... :-/
224
225NOTWORK+= ${TESTSRCDIR}/tst/common/funcs/tst.chill.ksh
226NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.create.ksh
227NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exec.ksh
228NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.execfail.ENOENT.ksh
229NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.execfail.ksh
230NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitcore.ksh
231NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitexit.ksh
232NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitkilled.ksh
233NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.signal.ksh
234NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.sigwait.c
235NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.sigwait.d
236NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.startexit.ksh
237NOTWORK+= ${TESTSRCDIR}/tst/common/struct/tst.StructDataTypes.d
238NOTWORK+= ${TESTSRCDIR}/tst/common/union/tst.UnionDataTypes.d
239
240.endif
241
242# --------------------------------------------------------------------------------
243# Interrupt priority isn't relevant on FreeBSD.
244
245NOTWORK+= ${TESTSRCDIR}/tst/common/builtinvar/tst.ipl.d \
246	${TESTSRCDIR}/tst/common/builtinvar/tst.ipl1.d
247
248# --------------------------------------------------------------------------------
249# These tests relies on the Solaris ping behaviour of exiting after a number of
250# pings. On FreeBSD ping doesn't do that.
251
252NOTWORK+= ${TESTSRCDIR}/tst/common/funcs/tst.system.d 		\
253	${TESTSRCDIR}/tst/common/ip/tst.ipv6remoteicmp.ksh 	\
254	${TESTSRCDIR}/tst/common/ip/tst.ipv6localicmp.ksh 	\
255	${TESTSRCDIR}/tst/common/ip/tst.ipv4localicmp.ksh 	\
256	${TESTSRCDIR}/tst/common/ip/tst.ipv4remoteicmp.ksh 
257
258# --------------------------------------------------------------------------------
259# This test checks for a leading tab on a line before #define. That is illegal
260# on Solaris, but the gcc pre-processor on FreeBSD is happy with code like that.
261
262NOTWORK+= ${TESTSRCDIR}/tst/common/preprocessor/err.D_PRAGCTL_INVAL.tabdefine.d
263
264# --------------------------------------------------------------------------------
265# This test is coded to use Solaris syscall names. FreeBSD has none with 'lwp"
266# in them, so the test fails because of that.
267
268NOTWORK+= ${TESTSRCDIR}/tst/common/probes/tst.probestar.d
269
270NOTYET=	${IGNORE} ${NOTWORK}
271
272# --------------------------------------------------------------------------------
273# Only prepare the test lists if we need to:
274
275.if !make(obj) && !make(clean) && !make(cleandir) && !make(listerrors)
276
277# --------------------------------------------------------------------------------
278# Get a list of tests, named according to the directory they are in:
279
280_COMMONDIRS!=	cd ${TESTSRCDIR}/tst/common; find . -depth 1 -type d
281COMMONDIRS=	${_COMMONDIRS:S/.\///}
282
283listtests	:
284	@echo ${COMMONDIRS}
285
286# --------------------------------------------------------------------------------
287# Create a test target for each directory:
288
289ALL_TESTFILES=
290
291# Process each common test directory:
292.for _d in ${COMMONDIRS}
293
294# Get a list of test files in the test directory:
295${_d}_ERR!=	find ${TESTSRCDIR}/tst/common/${_d} -name "err.*.d"
296${_d}_TSTD!=	find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.d"
297${_d}_TSTC!=	find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.c"
298${_d}_SHERR!=	find ${TESTSRCDIR}/tst/common/${_d} -name "err.*.ksh"
299${_d}_SHTST!=	find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.ksh"
300${_d}_TF=	${${_d}_ERR} ${${_d}_TSTD} ${${_d}_SHERR} ${${_d}_SHTST}
301
302# Go through the list of test files and prepare another list that contains
303# none of the test files listed in the NOTYET list:
304.for _f in ${${_d}_TF}
305.if (${NOTYET:M${_f}} == "")
306${_d}_TFS+= ${_f}
307.endif
308.endfor
309
310# Add the list of tests to the overall test list:
311ALL_TESTFILES+=	${${_d}_TFS}
312
313.for _f in ${${_d}_TSTC}
314.if (${NOTYET:M${_f}} == "")
315${_d}_TFCS+= ${_f}
316.endif
317.endfor
318
319ALL_TESTCFILES+= ${${_d}_TFCS}
320
321${_d}	: ${${_d}_TFCS:T:S/c$/exe/}
322	@${DTEST} ${${_d}_TFS}
323.endfor
324
325# --------------------------------------------------------------------------------
326# 
327
328PRGS=	${ALL_TESTCFILES:T:S/c$/exe/}
329
330listprgs	:
331	@echo ${PRGS}
332
333# --------------------------------------------------------------------------------
334# 
335
336.for _f in ${ALL_TESTCFILES}
337${_f:T:S/c$/exe/} : ${_f}
338	${CC} -o ${.TARGET} ${_f} -lrt
339.endfor
340
341listcfiles	:
342	@echo ${ALL_TESTCFILES}
343
344# --------------------------------------------------------------------------------
345# A target to build all tests:
346
347all	: ${PRGS}
348	@sync; sync; sync; sync; sync
349	@${DTEST} ${ALL_TESTFILES}
350
351# --------------------------------------------------------------------------------
352# A target to build the tests flagged as not working yet:
353
354ignore	:
355	@${DTEST} ${IGNORE}
356
357.endif
358
359listerrors	:
360	@find ${.OBJDIR} -name "*.err" -exec cat {} \; -print
361
362
363# --------------------------------------------------------------------------------
364# Test failures are written to failure.N directories in the object tree.
365# Get a list of directories in the object tree for 'make clean'.
366
367.if ${.OBJDIR} != ${.CURDIR} && !empty(${.OBJDIR})
368CLEANDIRS!=	cd ${.OBJDIR} && ls -d *
369.endif
370
371# --------------------------------------------------------------------------------
372# Insist on using an object directory. Things get messy otherwsie.
373
374.if ${.OBJDIR} == ${.CURDIR} && !make(obj) && !make(clean) && !make(cleandir)
375.error ERROR: You must run 'make obj' first!
376.endif
377
378# --------------------------------------------------------------------------------
379# Load the DTrace module set if necessary.
380
381.BEGIN	:
382	@if ! kldstat -q -m dtrace_test; then kldload dtrace_test; fi
383
384.include <bsd.obj.mk>
385
386