VirtualBox

source: vbox/trunk/src/VBox/VMM/testcase/Makefile.kmk@ 106061

Last change on this file since 106061 was 106061, checked in by vboxsync, 2 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 43.0 KB
Line 
1# $Id: Makefile.kmk 106061 2024-09-16 14:03:52Z vboxsync $
2## @file
3# Sub-Makefile for the VMM testcases.
4#
5
6#
7# Copyright (C) 2006-2024 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31#
32# Include sub-makefiles.
33#
34if 0 # Not ready for general consumption yet.
35 include $(PATH_SUB_CURRENT)/Instructions/Makefile.kmk
36endif
37
38#
39# Target lists.
40#
41PROGRAMS += tstVMStructSize tstAsmStructs
42ifdef VBOX_WITH_RAW_MODE
43 PROGRAMS += tstVMStructRC tstAsmStructsRC
44endif
45if !defined(VBOX_ONLY_EXTPACKS) \
46 && ( defined(VBOX_WITH_DTRACE_R3) \
47 || defined(VBOX_WITH_DTRACE_R0) \
48 || defined(VBOX_WITH_DTRACE_RC))
49 PROGRAMS += tstVMStructDTrace
50 INSTALLS += VMMLibDTraceStructTest
51endif
52ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
53 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
54 PROGRAMS += tstGlobalConfigHardened
55 DLL += tstGlobalConfig
56 else
57 PROGRAMS += tstGlobalConfig
58 endif
59
60 ifdef VBOX_WITH_RAW_MODE
61 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
62 PROGRAMS += tstVMMHardened
63 DLLS += tstVMM
64 else
65 PROGRAMS += tstVMM tstVMM-HM
66 endif
67 ifneq ($(KBUILD_TARGET),win)
68 PROGRAMS += tstVMMFork
69 endif
70 endif
71 ifdef VBOX_WITH_TESTCASES
72 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
73 PROGRAMS += tstCFGMHardened tstVMREQHardened tstAnimateHardened
74 DLLS += tstCFGM tstVMREQ tstAnimate
75 else
76 PROGRAMS += tstCFGM tstVMREQ tstAnimate
77 endif
78 PROGRAMS += \
79 tstCompressionBenchmark \
80 tstIEMCheckMc \
81 tstIEMAImpl \
82 tstPDMQueue \
83 tstSSM
84 PROGRAMS.amd64 += tstIEMAImplAsm
85
86 if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
87 PROGRAMS += \
88 tstVMMR0CallHost-1 \
89 tstX86-FpuSaveRestore
90 ifn1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), solaris.x86 solaris.amd64 win.amd64) ## TODO: Fix the code.
91 PROGRAMS += tstX86-1
92 endif
93 endif
94 ifdef VBOX_WITH_RAW_MODE
95 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
96 PROGRAMS += tstMicroHardened
97 DLLS += tstMicro
98 else
99 PROGRAMS += tstMicro
100 endif
101 SYSMODS += tstMicroRC
102 endif
103 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
104 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
105 PROGRAMS += tstPDMAsyncCompletionHardened tstPDMAsyncCompletionStressHardened
106 DLLS += tstPDMAsyncCompletion tstPDMAsyncCompletionStress
107 else
108 PROGRAMS += tstPDMAsyncCompletion tstPDMAsyncCompletionStress
109 endif
110 endif
111 endif # VBOX_WITH_TESTCASES
112endif # !VBOX_ONLY_EXTPACKS_USE_IMPLIBS
113
114# Where we put our temporary files (just for simplicity)
115VBOX_VMM_TESTCASE_OUT_DIR := $(PATH_TARGET)/VMM
116BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR)
117
118#
119# We setup two 'other' targets for executing the two structure & alignment
120# validation testcases. Perhaps a bit hackish, but extremely useful.
121#
122ifeq ($(KBUILD_TARGET),$(KBUILD_HOST))
123 ifeq ($(filter-out x86.x86 amd64.amd64 x86.amd64, $(KBUILD_TARGET_ARCH).$(KBUILD_HOST_ARCH)),)
124 OTHERS += \
125 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
126 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
127 endif
128endif
129
130# The normal testing pass.
131TESTING += \
132 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
133 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
134
135OTHER_CLEAN += \
136 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
137 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run \
138 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o \
139 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep \
140 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
141 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.o \
142 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.lst \
143 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h \
144 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h \
145 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
146
147#
148# Globals
149#
150VBOX_PATH_VMM_SRC = $(PATH_ROOT)/src/VBox/VMM
151
152#
153# Targets
154#
155ifdef VBOX_WITH_RAW_MODE
156 tstVMStructRC_TEMPLATE = VBoxRcExe
157 tstVMStructRC_DEFS = VBOX_IN_VMM IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE $(VMM_COMMON_DEFS)
158 ifdef VBOX_WITH_R0_LOGGING
159 tstVMStructRC_DEFS += VBOX_WITH_R0_LOGGING
160 endif
161 tstVMStructRC_SOURCES = tstVMStructRC.cpp
162 tstVMStructRC_INCS = \
163 $(VBOX_PATH_VMM_SRC)/include \
164 $(VBOX_PATH_VMM_SRC)/PATM
165endif
166
167tstVMStructSize_TEMPLATE = VBoxR3AutoTest
168ifneq ($(KBUILD_TARGET),win)
169 tstVMStructSize_CXXFLAGS += $(VBOX_GCC_Wno-invalid-offsetof)
170endif
171tstVMStructSize_DEFS = VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS)
172ifdef VBOX_WITH_RAW_MODE
173 tstVMStructSize_DEFS += VBOX_WITH_RAW_MODE
174endif
175tstVMStructSize_INCS = \
176 $(VBOX_PATH_VMM_SRC)/include \
177 $(tstVMStructSize_0_OUTDIR) \
178 $(VBOX_VMM_TESTCASE_OUT_DIR)
179tstVMStructSize_SOURCES = tstVMStructSize.cpp
180ifdef VBOX_WITH_RAW_MODE
181 tstVMStructSize.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
182endif
183ifdef VBOX_WITH_R0_LOGGING
184 tstVMStructSize_DEFS += VBOX_WITH_R0_LOGGING
185endif
186$(call KB_FN_DO_PASS0_ON_TARGET,tstVMStructSize)
187$(evalcall2 def_VBoxGenIEMInstructionStatisticsTmpl_Header,tstVMStructSize,$(tstVMStructSize_0_OUTDIR))
188
189tstAsmStructs_TEMPLATE = VBoxR3AutoTest
190ifneq ($(KBUILD_TARGET),win)
191 tstAsmStructSize_CXXFLAGS += $(VBOX_GCC_Wno-invalid-offsetof)
192endif
193tstAsmStructs_DEFS = VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS)
194ifdef VBOX_WITH_RAW_MODE
195 tstAsmStructs_DEFS += VBOX_WITH_RAW_MODE
196endif
197ifdef VBOX_WITH_R0_LOGGING
198 tstAsmStructs_DEFS += VBOX_WITH_R0_LOGGING
199endif
200tstAsmStructs_INCS = \
201 $(VBOX_PATH_VMM_SRC)/include \
202 $(VBOX_VMM_TESTCASE_OUT_DIR)
203tstAsmStructs_SOURCES = tstAsmStructs.cpp
204tstAsmStructs.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h
205
206ifdef VBOX_WITH_RAW_MODE
207 tstAsmStructsRC_TEMPLATE = VBoxRcExe
208 tstAsmStructsRC_DEFS = VBOX_IN_VMM IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE $(VMM_COMMON_DEFS)
209 ifdef VBOX_WITH_R0_LOGGING
210 tstAsmStructsRC_DEFS += VBOX_WITH_R0_LOGGING
211 endif
212 tstAsmStructsRC_INCS = \
213 $(VBOX_PATH_VMM_SRC)/include \
214 $(VBOX_VMM_TESTCASE_OUT_DIR)
215 tstAsmStructsRC_SOURCES = tstAsmStructs.cpp
216 tstAsmStructs.cpp_DEPS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h
217endif # VBOX_WITH_RAW_MODE
218
219
220#
221# Global config tool.
222#
223if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
224 tstGlobalConfigHardened_TEMPLATE = VBoxR3HardenedTstExe
225 tstGlobalConfigHardened_NAME = tstGlobalConfig
226 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
227 tstGlobalConfigHardened_DEFS = PROGRAM_NAME_STR="tstGlobalConfig"
228 else
229 tstGlobalConfigHardened_DEFS = PROGRAM_NAME_STR=\"tstGlobalConfig\"
230 endif
231 tstGlobalConfigHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplateTestcase.cpp
232 tstGlobalConfig_TEMPLATE = VBoxR3HardenedTstDll
233else
234 tstGlobalConfig_TEMPLATE = VBoxR3TstExe
235endif
236tstGlobalConfig_SOURCES = tstGlobalConfig.cpp
237tstGlobalConfig_LIBS = $(LIB_RUNTIME)
238
239
240#
241# Testcase for checking the C (IEMAllAImplC.cpp) and assembly (IEMAllAImpl.asm)
242# instruction emulation helpers.
243#
244TSTIEMAIMPL_TEST_DATA_DEPS := \
245 tstIEMAImplDataInt-adcx_u32.bin.gz \
246 tstIEMAImplDataInt-adcx_u64.bin.gz \
247 tstIEMAImplDataInt-adc_u8.bin.gz \
248 tstIEMAImplDataInt-adc_u8_locked.bin.gz \
249 tstIEMAImplDataInt-adc_u16.bin.gz \
250 tstIEMAImplDataInt-adc_u16_locked.bin.gz \
251 tstIEMAImplDataInt-adc_u32.bin.gz \
252 tstIEMAImplDataInt-adc_u32_locked.bin.gz \
253 tstIEMAImplDataInt-adc_u64.bin.gz \
254 tstIEMAImplDataInt-adc_u64_locked.bin.gz \
255 tstIEMAImplDataInt-add_u8.bin.gz \
256 tstIEMAImplDataInt-add_u8_locked.bin.gz \
257 tstIEMAImplDataInt-add_u16.bin.gz \
258 tstIEMAImplDataInt-add_u16_locked.bin.gz \
259 tstIEMAImplDataInt-add_u32.bin.gz \
260 tstIEMAImplDataInt-add_u32_locked.bin.gz \
261 tstIEMAImplDataInt-add_u64.bin.gz \
262 tstIEMAImplDataInt-add_u64_locked.bin.gz \
263 tstIEMAImplDataInt-adox_u32.bin.gz \
264 tstIEMAImplDataInt-adox_u64.bin.gz \
265 tstIEMAImplDataInt-and_u8.bin.gz \
266 tstIEMAImplDataInt-and_u8_locked.bin.gz \
267 tstIEMAImplDataInt-and_u16.bin.gz \
268 tstIEMAImplDataInt-and_u16_locked.bin.gz \
269 tstIEMAImplDataInt-and_u32.bin.gz \
270 tstIEMAImplDataInt-and_u32_locked.bin.gz \
271 tstIEMAImplDataInt-and_u64.bin.gz \
272 tstIEMAImplDataInt-and_u64_locked.bin.gz \
273 tstIEMAImplDataInt-arpl.bin.gz \
274 tstIEMAImplDataInt-bsf_u16_amd.bin.gz \
275 tstIEMAImplDataInt-bsf_u16_intel.bin.gz \
276 tstIEMAImplDataInt-bsf_u32_amd.bin.gz \
277 tstIEMAImplDataInt-bsf_u32_intel.bin.gz \
278 tstIEMAImplDataInt-bsf_u64_amd.bin.gz \
279 tstIEMAImplDataInt-bsf_u64_intel.bin.gz \
280 tstIEMAImplDataInt-bsr_u16_amd.bin.gz \
281 tstIEMAImplDataInt-bsr_u16_intel.bin.gz \
282 tstIEMAImplDataInt-bsr_u32_amd.bin.gz \
283 tstIEMAImplDataInt-bsr_u32_intel.bin.gz \
284 tstIEMAImplDataInt-bsr_u64_amd.bin.gz \
285 tstIEMAImplDataInt-bsr_u64_intel.bin.gz \
286 tstIEMAImplDataInt-btc_u16.bin.gz \
287 tstIEMAImplDataInt-btc_u16_locked.bin.gz \
288 tstIEMAImplDataInt-btc_u32.bin.gz \
289 tstIEMAImplDataInt-btc_u32_locked.bin.gz \
290 tstIEMAImplDataInt-btc_u64.bin.gz \
291 tstIEMAImplDataInt-btc_u64_locked.bin.gz \
292 tstIEMAImplDataInt-btr_u16.bin.gz \
293 tstIEMAImplDataInt-btr_u16_locked.bin.gz \
294 tstIEMAImplDataInt-btr_u32.bin.gz \
295 tstIEMAImplDataInt-btr_u32_locked.bin.gz \
296 tstIEMAImplDataInt-btr_u64.bin.gz \
297 tstIEMAImplDataInt-btr_u64_locked.bin.gz \
298 tstIEMAImplDataInt-bts_u16.bin.gz \
299 tstIEMAImplDataInt-bts_u16_locked.bin.gz \
300 tstIEMAImplDataInt-bts_u32.bin.gz \
301 tstIEMAImplDataInt-bts_u32_locked.bin.gz \
302 tstIEMAImplDataInt-bts_u64.bin.gz \
303 tstIEMAImplDataInt-bts_u64_locked.bin.gz \
304 tstIEMAImplDataInt-bt_u16.bin.gz \
305 tstIEMAImplDataInt-bt_u32.bin.gz \
306 tstIEMAImplDataInt-bt_u64.bin.gz \
307 tstIEMAImplDataInt-cmp_u8.bin.gz \
308 tstIEMAImplDataInt-cmp_u16.bin.gz \
309 tstIEMAImplDataInt-cmp_u32.bin.gz \
310 tstIEMAImplDataInt-cmp_u64.bin.gz \
311 tstIEMAImplDataInt-dec_u8.bin.gz \
312 tstIEMAImplDataInt-dec_u8_locked.bin.gz \
313 tstIEMAImplDataInt-dec_u16.bin.gz \
314 tstIEMAImplDataInt-dec_u16_locked.bin.gz \
315 tstIEMAImplDataInt-dec_u32.bin.gz \
316 tstIEMAImplDataInt-dec_u32_locked.bin.gz \
317 tstIEMAImplDataInt-dec_u64.bin.gz \
318 tstIEMAImplDataInt-dec_u64_locked.bin.gz \
319 tstIEMAImplDataInt-div_u8_amd.bin.gz \
320 tstIEMAImplDataInt-div_u8_intel.bin.gz \
321 tstIEMAImplDataInt-div_u16_amd.bin.gz \
322 tstIEMAImplDataInt-div_u16_intel.bin.gz \
323 tstIEMAImplDataInt-div_u32_amd.bin.gz \
324 tstIEMAImplDataInt-div_u32_intel.bin.gz \
325 tstIEMAImplDataInt-div_u64_amd.bin.gz \
326 tstIEMAImplDataInt-div_u64_intel.bin.gz \
327 tstIEMAImplDataInt-idiv_u8_amd.bin.gz \
328 tstIEMAImplDataInt-idiv_u8_intel.bin.gz \
329 tstIEMAImplDataInt-idiv_u16_amd.bin.gz \
330 tstIEMAImplDataInt-idiv_u16_intel.bin.gz \
331 tstIEMAImplDataInt-idiv_u32_amd.bin.gz \
332 tstIEMAImplDataInt-idiv_u32_intel.bin.gz \
333 tstIEMAImplDataInt-idiv_u64_amd.bin.gz \
334 tstIEMAImplDataInt-idiv_u64_intel.bin.gz \
335 tstIEMAImplDataInt-imul_two_u16_amd.bin.gz \
336 tstIEMAImplDataInt-imul_two_u16_intel.bin.gz \
337 tstIEMAImplDataInt-imul_two_u32_amd.bin.gz \
338 tstIEMAImplDataInt-imul_two_u32_intel.bin.gz \
339 tstIEMAImplDataInt-imul_two_u64_amd.bin.gz \
340 tstIEMAImplDataInt-imul_two_u64_intel.bin.gz \
341 tstIEMAImplDataInt-imul_u8_amd.bin.gz \
342 tstIEMAImplDataInt-imul_u8_intel.bin.gz \
343 tstIEMAImplDataInt-imul_u16_amd.bin.gz \
344 tstIEMAImplDataInt-imul_u16_intel.bin.gz \
345 tstIEMAImplDataInt-imul_u32_amd.bin.gz \
346 tstIEMAImplDataInt-imul_u32_intel.bin.gz \
347 tstIEMAImplDataInt-imul_u64_amd.bin.gz \
348 tstIEMAImplDataInt-imul_u64_intel.bin.gz \
349 tstIEMAImplDataInt-inc_u8.bin.gz \
350 tstIEMAImplDataInt-inc_u8_locked.bin.gz \
351 tstIEMAImplDataInt-inc_u16.bin.gz \
352 tstIEMAImplDataInt-inc_u16_locked.bin.gz \
353 tstIEMAImplDataInt-inc_u32.bin.gz \
354 tstIEMAImplDataInt-inc_u32_locked.bin.gz \
355 tstIEMAImplDataInt-inc_u64.bin.gz \
356 tstIEMAImplDataInt-inc_u64_locked.bin.gz \
357 tstIEMAImplDataInt-mul_u8_amd.bin.gz \
358 tstIEMAImplDataInt-mul_u8_intel.bin.gz \
359 tstIEMAImplDataInt-mul_u16_amd.bin.gz \
360 tstIEMAImplDataInt-mul_u16_intel.bin.gz \
361 tstIEMAImplDataInt-mul_u32_amd.bin.gz \
362 tstIEMAImplDataInt-mul_u32_intel.bin.gz \
363 tstIEMAImplDataInt-mul_u64_amd.bin.gz \
364 tstIEMAImplDataInt-mul_u64_intel.bin.gz \
365 tstIEMAImplDataInt-neg_u8.bin.gz \
366 tstIEMAImplDataInt-neg_u8_locked.bin.gz \
367 tstIEMAImplDataInt-neg_u16.bin.gz \
368 tstIEMAImplDataInt-neg_u16_locked.bin.gz \
369 tstIEMAImplDataInt-neg_u32.bin.gz \
370 tstIEMAImplDataInt-neg_u32_locked.bin.gz \
371 tstIEMAImplDataInt-neg_u64.bin.gz \
372 tstIEMAImplDataInt-neg_u64_locked.bin.gz \
373 tstIEMAImplDataInt-not_u8.bin.gz \
374 tstIEMAImplDataInt-not_u8_locked.bin.gz \
375 tstIEMAImplDataInt-not_u16.bin.gz \
376 tstIEMAImplDataInt-not_u16_locked.bin.gz \
377 tstIEMAImplDataInt-not_u32.bin.gz \
378 tstIEMAImplDataInt-not_u32_locked.bin.gz \
379 tstIEMAImplDataInt-not_u64.bin.gz \
380 tstIEMAImplDataInt-not_u64_locked.bin.gz \
381 tstIEMAImplDataInt-or_u8.bin.gz \
382 tstIEMAImplDataInt-or_u8_locked.bin.gz \
383 tstIEMAImplDataInt-or_u16.bin.gz \
384 tstIEMAImplDataInt-or_u16_locked.bin.gz \
385 tstIEMAImplDataInt-or_u32.bin.gz \
386 tstIEMAImplDataInt-or_u32_locked.bin.gz \
387 tstIEMAImplDataInt-or_u64.bin.gz \
388 tstIEMAImplDataInt-or_u64_locked.bin.gz \
389 tstIEMAImplDataInt-rcl_u8_amd.bin.gz \
390 tstIEMAImplDataInt-rcl_u8_intel.bin.gz \
391 tstIEMAImplDataInt-rcl_u16_amd.bin.gz \
392 tstIEMAImplDataInt-rcl_u16_intel.bin.gz \
393 tstIEMAImplDataInt-rcl_u32_amd.bin.gz \
394 tstIEMAImplDataInt-rcl_u32_intel.bin.gz \
395 tstIEMAImplDataInt-rcl_u64_amd.bin.gz \
396 tstIEMAImplDataInt-rcl_u64_intel.bin.gz \
397 tstIEMAImplDataInt-rcr_u8_amd.bin.gz \
398 tstIEMAImplDataInt-rcr_u8_intel.bin.gz \
399 tstIEMAImplDataInt-rcr_u16_amd.bin.gz \
400 tstIEMAImplDataInt-rcr_u16_intel.bin.gz \
401 tstIEMAImplDataInt-rcr_u32_amd.bin.gz \
402 tstIEMAImplDataInt-rcr_u32_intel.bin.gz \
403 tstIEMAImplDataInt-rcr_u64_amd.bin.gz \
404 tstIEMAImplDataInt-rcr_u64_intel.bin.gz \
405 tstIEMAImplDataInt-rol_u8_amd.bin.gz \
406 tstIEMAImplDataInt-rol_u8_intel.bin.gz \
407 tstIEMAImplDataInt-rol_u16_amd.bin.gz \
408 tstIEMAImplDataInt-rol_u16_intel.bin.gz \
409 tstIEMAImplDataInt-rol_u32_amd.bin.gz \
410 tstIEMAImplDataInt-rol_u32_intel.bin.gz \
411 tstIEMAImplDataInt-rol_u64_amd.bin.gz \
412 tstIEMAImplDataInt-rol_u64_intel.bin.gz \
413 tstIEMAImplDataInt-ror_u8_amd.bin.gz \
414 tstIEMAImplDataInt-ror_u8_intel.bin.gz \
415 tstIEMAImplDataInt-ror_u16_amd.bin.gz \
416 tstIEMAImplDataInt-ror_u16_intel.bin.gz \
417 tstIEMAImplDataInt-ror_u32_amd.bin.gz \
418 tstIEMAImplDataInt-ror_u32_intel.bin.gz \
419 tstIEMAImplDataInt-ror_u64_amd.bin.gz \
420 tstIEMAImplDataInt-ror_u64_intel.bin.gz \
421 tstIEMAImplDataInt-sar_u8_amd.bin.gz \
422 tstIEMAImplDataInt-sar_u8_intel.bin.gz \
423 tstIEMAImplDataInt-sar_u16_amd.bin.gz \
424 tstIEMAImplDataInt-sar_u16_intel.bin.gz \
425 tstIEMAImplDataInt-sar_u32_amd.bin.gz \
426 tstIEMAImplDataInt-sar_u32_intel.bin.gz \
427 tstIEMAImplDataInt-sar_u64_amd.bin.gz \
428 tstIEMAImplDataInt-sar_u64_intel.bin.gz \
429 tstIEMAImplDataInt-sbb_u8.bin.gz \
430 tstIEMAImplDataInt-sbb_u8_locked.bin.gz \
431 tstIEMAImplDataInt-sbb_u16.bin.gz \
432 tstIEMAImplDataInt-sbb_u16_locked.bin.gz \
433 tstIEMAImplDataInt-sbb_u32.bin.gz \
434 tstIEMAImplDataInt-sbb_u32_locked.bin.gz \
435 tstIEMAImplDataInt-sbb_u64.bin.gz \
436 tstIEMAImplDataInt-sbb_u64_locked.bin.gz \
437 tstIEMAImplDataInt-shld_u16_amd.bin.gz \
438 tstIEMAImplDataInt-shld_u16_intel.bin.gz \
439 tstIEMAImplDataInt-shld_u32_amd.bin.gz \
440 tstIEMAImplDataInt-shld_u32_intel.bin.gz \
441 tstIEMAImplDataInt-shld_u64_amd.bin.gz \
442 tstIEMAImplDataInt-shld_u64_intel.bin.gz \
443 tstIEMAImplDataInt-shl_u8_amd.bin.gz \
444 tstIEMAImplDataInt-shl_u8_intel.bin.gz \
445 tstIEMAImplDataInt-shl_u16_amd.bin.gz \
446 tstIEMAImplDataInt-shl_u16_intel.bin.gz \
447 tstIEMAImplDataInt-shl_u32_amd.bin.gz \
448 tstIEMAImplDataInt-shl_u32_intel.bin.gz \
449 tstIEMAImplDataInt-shl_u64_amd.bin.gz \
450 tstIEMAImplDataInt-shl_u64_intel.bin.gz \
451 tstIEMAImplDataInt-shrd_u16_amd.bin.gz \
452 tstIEMAImplDataInt-shrd_u16_intel.bin.gz \
453 tstIEMAImplDataInt-shrd_u32_amd.bin.gz \
454 tstIEMAImplDataInt-shrd_u32_intel.bin.gz \
455 tstIEMAImplDataInt-shrd_u64_amd.bin.gz \
456 tstIEMAImplDataInt-shrd_u64_intel.bin.gz \
457 tstIEMAImplDataInt-shr_u8_amd.bin.gz \
458 tstIEMAImplDataInt-shr_u8_intel.bin.gz \
459 tstIEMAImplDataInt-shr_u16_amd.bin.gz \
460 tstIEMAImplDataInt-shr_u16_intel.bin.gz \
461 tstIEMAImplDataInt-shr_u32_amd.bin.gz \
462 tstIEMAImplDataInt-shr_u32_intel.bin.gz \
463 tstIEMAImplDataInt-shr_u64_amd.bin.gz \
464 tstIEMAImplDataInt-shr_u64_intel.bin.gz \
465 tstIEMAImplDataInt-sub_u8.bin.gz \
466 tstIEMAImplDataInt-sub_u8_locked.bin.gz \
467 tstIEMAImplDataInt-sub_u16.bin.gz \
468 tstIEMAImplDataInt-sub_u16_locked.bin.gz \
469 tstIEMAImplDataInt-sub_u32.bin.gz \
470 tstIEMAImplDataInt-sub_u32_locked.bin.gz \
471 tstIEMAImplDataInt-sub_u64.bin.gz \
472 tstIEMAImplDataInt-sub_u64_locked.bin.gz \
473 tstIEMAImplDataInt-test_u8.bin.gz \
474 tstIEMAImplDataInt-test_u16.bin.gz \
475 tstIEMAImplDataInt-test_u32.bin.gz \
476 tstIEMAImplDataInt-test_u64.bin.gz \
477 tstIEMAImplDataInt-xor_u8.bin.gz \
478 tstIEMAImplDataInt-xor_u8_locked.bin.gz \
479 tstIEMAImplDataInt-xor_u16.bin.gz \
480 tstIEMAImplDataInt-xor_u16_locked.bin.gz \
481 tstIEMAImplDataInt-xor_u32.bin.gz \
482 tstIEMAImplDataInt-xor_u32_locked.bin.gz \
483 tstIEMAImplDataInt-xor_u64.bin.gz \
484 tstIEMAImplDataInt-xor_u64_locked.bin.gz \
485 \
486 tstIEMAImplDataFpuBinary1-fadd_r80_by_r80.bin.gz \
487 tstIEMAImplDataFpuBinary1-fcomi_r80_by_r80.bin.gz \
488 tstIEMAImplDataFpuBinary1-fcom_r80_by_r80.bin.gz \
489 tstIEMAImplDataFpuBinary1-fdivr_r80_by_r80.bin.gz \
490 tstIEMAImplDataFpuBinary1-fdiv_r80_by_r80.bin.gz \
491 tstIEMAImplDataFpuBinary1-fmul_r80_by_r80.bin.gz \
492 tstIEMAImplDataFpuBinary1-fpatan_r80_by_r80_amd.bin.gz \
493 tstIEMAImplDataFpuBinary1-fpatan_r80_by_r80_intel.bin.gz \
494 tstIEMAImplDataFpuBinary1-fprem1_r80_by_r80.bin.gz \
495 tstIEMAImplDataFpuBinary1-fprem_r80_by_r80.bin.gz \
496 tstIEMAImplDataFpuBinary1-fscale_r80_by_r80.bin.gz \
497 tstIEMAImplDataFpuBinary1-fsubr_r80_by_r80.bin.gz \
498 tstIEMAImplDataFpuBinary1-fsub_r80_by_r80.bin.gz \
499 tstIEMAImplDataFpuBinary1-fucomi_r80_by_r80.bin.gz \
500 tstIEMAImplDataFpuBinary1-fucom_r80_by_r80.bin.gz \
501 tstIEMAImplDataFpuBinary1-fyl2xp1_r80_by_r80_amd.bin.gz \
502 tstIEMAImplDataFpuBinary1-fyl2xp1_r80_by_r80_intel.bin.gz \
503 tstIEMAImplDataFpuBinary1-fyl2x_r80_by_r80_amd.bin.gz \
504 tstIEMAImplDataFpuBinary1-fyl2x_r80_by_r80_intel.bin.gz \
505 tstIEMAImplDataFpuBinary2-fadd_r80_by_r32.bin.gz \
506 tstIEMAImplDataFpuBinary2-fadd_r80_by_r64.bin.gz \
507 tstIEMAImplDataFpuBinary2-fcom_r80_by_r32.bin.gz \
508 tstIEMAImplDataFpuBinary2-fcom_r80_by_r64.bin.gz \
509 tstIEMAImplDataFpuBinary2-fdivr_r80_by_r32.bin.gz \
510 tstIEMAImplDataFpuBinary2-fdivr_r80_by_r64.bin.gz \
511 tstIEMAImplDataFpuBinary2-fdiv_r80_by_r32.bin.gz \
512 tstIEMAImplDataFpuBinary2-fdiv_r80_by_r64.bin.gz \
513 tstIEMAImplDataFpuBinary2-fiadd_r80_by_i16.bin.gz \
514 tstIEMAImplDataFpuBinary2-fiadd_r80_by_i32.bin.gz \
515 tstIEMAImplDataFpuBinary2-ficom_r80_by_i16.bin.gz \
516 tstIEMAImplDataFpuBinary2-ficom_r80_by_i32.bin.gz \
517 tstIEMAImplDataFpuBinary2-fidivr_r80_by_i16.bin.gz \
518 tstIEMAImplDataFpuBinary2-fidivr_r80_by_i32.bin.gz \
519 tstIEMAImplDataFpuBinary2-fidiv_r80_by_i16.bin.gz \
520 tstIEMAImplDataFpuBinary2-fidiv_r80_by_i32.bin.gz \
521 tstIEMAImplDataFpuBinary2-fimul_r80_by_i16.bin.gz \
522 tstIEMAImplDataFpuBinary2-fimul_r80_by_i32.bin.gz \
523 tstIEMAImplDataFpuBinary2-fisubr_r80_by_i16.bin.gz \
524 tstIEMAImplDataFpuBinary2-fisubr_r80_by_i32.bin.gz \
525 tstIEMAImplDataFpuBinary2-fisub_r80_by_i16.bin.gz \
526 tstIEMAImplDataFpuBinary2-fisub_r80_by_i32.bin.gz \
527 tstIEMAImplDataFpuBinary2-fmul_r80_by_r32.bin.gz \
528 tstIEMAImplDataFpuBinary2-fmul_r80_by_r64.bin.gz \
529 tstIEMAImplDataFpuBinary2-fsubr_r80_by_r32.bin.gz \
530 tstIEMAImplDataFpuBinary2-fsubr_r80_by_r64.bin.gz \
531 tstIEMAImplDataFpuBinary2-fsub_r80_by_r32.bin.gz \
532 tstIEMAImplDataFpuBinary2-fsub_r80_by_r64.bin.gz \
533 tstIEMAImplDataFpuLdSt-fild_r80_from_i16.bin.gz \
534 tstIEMAImplDataFpuLdSt-fild_r80_from_i32.bin.gz \
535 tstIEMAImplDataFpuLdSt-fild_r80_from_i64.bin.gz \
536 tstIEMAImplDataFpuLdSt-fistt_r80_to_i16_amd.bin.gz \
537 tstIEMAImplDataFpuLdSt-fistt_r80_to_i16_intel.bin.gz \
538 tstIEMAImplDataFpuLdSt-fistt_r80_to_i32.bin.gz \
539 tstIEMAImplDataFpuLdSt-fistt_r80_to_i64.bin.gz \
540 tstIEMAImplDataFpuLdSt-fist_r80_to_i16.bin.gz \
541 tstIEMAImplDataFpuLdSt-fist_r80_to_i32.bin.gz \
542 tstIEMAImplDataFpuLdSt-fist_r80_to_i64.bin.gz \
543 tstIEMAImplDataFpuLdSt-fld1.bin.gz \
544 tstIEMAImplDataFpuLdSt-fldl2e.bin.gz \
545 tstIEMAImplDataFpuLdSt-fldl2t.bin.gz \
546 tstIEMAImplDataFpuLdSt-fldlg2.bin.gz \
547 tstIEMAImplDataFpuLdSt-fldln2.bin.gz \
548 tstIEMAImplDataFpuLdSt-fldpi.bin.gz \
549 tstIEMAImplDataFpuLdSt-fldz.bin.gz \
550 tstIEMAImplDataFpuLdSt-fld_r80_from_d80.bin.gz \
551 tstIEMAImplDataFpuLdSt-fld_r80_from_r32.bin.gz \
552 tstIEMAImplDataFpuLdSt-fld_r80_from_r64.bin.gz \
553 tstIEMAImplDataFpuLdSt-fld_r80_from_r80.bin.gz \
554 tstIEMAImplDataFpuLdSt-fst_r80_to_d80.bin.gz \
555 tstIEMAImplDataFpuLdSt-fst_r80_to_r32.bin.gz \
556 tstIEMAImplDataFpuLdSt-fst_r80_to_r64.bin.gz \
557 tstIEMAImplDataFpuLdSt-fst_r80_to_r80.bin.gz \
558 tstIEMAImplDataFpuOther-f2xm1_r80_amd.bin.gz \
559 tstIEMAImplDataFpuOther-f2xm1_r80_intel.bin.gz \
560 tstIEMAImplDataFpuOther-fabs_r80.bin.gz \
561 tstIEMAImplDataFpuOther-fchs_r80.bin.gz \
562 tstIEMAImplDataFpuOther-fcos_r80_amd.bin.gz \
563 tstIEMAImplDataFpuOther-fcos_r80_intel.bin.gz \
564 tstIEMAImplDataFpuOther-fptan_r80_r80_amd.bin.gz \
565 tstIEMAImplDataFpuOther-fptan_r80_r80_intel.bin.gz \
566 tstIEMAImplDataFpuOther-frndint_r80.bin.gz \
567 tstIEMAImplDataFpuOther-fsincos_r80_r80_amd.bin.gz \
568 tstIEMAImplDataFpuOther-fsincos_r80_r80_intel.bin.gz \
569 tstIEMAImplDataFpuOther-fsin_r80_amd.bin.gz \
570 tstIEMAImplDataFpuOther-fsin_r80_intel.bin.gz \
571 tstIEMAImplDataFpuOther-fsqrt_r80.bin.gz \
572 tstIEMAImplDataFpuOther-ftst_r80.bin.gz \
573 tstIEMAImplDataFpuOther-fxam_r80.bin.gz \
574 tstIEMAImplDataFpuOther-fxtract_r80_r80.bin.gz \
575 \
576 tstIEMAImplDataSseBinary-addps_u128.bin.gz \
577 tstIEMAImplDataSseBinary-mulps_u128.bin.gz \
578 tstIEMAImplDataSseBinary-subps_u128.bin.gz \
579 tstIEMAImplDataSseBinary-minps_u128.bin.gz \
580 tstIEMAImplDataSseBinary-divps_u128.bin.gz \
581 tstIEMAImplDataSseBinary-maxps_u128.bin.gz \
582 tstIEMAImplDataSseBinary-haddps_u128.bin.gz \
583 tstIEMAImplDataSseBinary-hsubps_u128.bin.gz \
584 tstIEMAImplDataSseBinary-sqrtps_u128.bin.gz \
585 tstIEMAImplDataSseBinary-addsubps_u128.bin.gz \
586 tstIEMAImplDataSseBinary-cvtps2pd_u128.bin.gz \
587 tstIEMAImplDataSseBinary-addpd_u128.bin.gz \
588 tstIEMAImplDataSseBinary-mulpd_u128.bin.gz \
589 tstIEMAImplDataSseBinary-subpd_u128.bin.gz \
590 tstIEMAImplDataSseBinary-minpd_u128.bin.gz \
591 tstIEMAImplDataSseBinary-divpd_u128.bin.gz \
592 tstIEMAImplDataSseBinary-maxpd_u128.bin.gz \
593 tstIEMAImplDataSseBinary-haddpd_u128.bin.gz \
594 tstIEMAImplDataSseBinary-hsubpd_u128.bin.gz \
595 tstIEMAImplDataSseBinary-sqrtpd_u128.bin.gz \
596 tstIEMAImplDataSseBinary-addsubpd_u128.bin.gz \
597 tstIEMAImplDataSseBinary-cvtpd2ps_u128.bin.gz \
598 tstIEMAImplDataSseBinary-addss_u128_r32.bin.gz \
599 tstIEMAImplDataSseBinary-addsd_u128_r64.bin.gz \
600 tstIEMAImplDataSseBinary-mulss_u128_r32.bin.gz \
601 tstIEMAImplDataSseBinary-mulsd_u128_r64.bin.gz \
602 tstIEMAImplDataSseBinary-subss_u128_r32.bin.gz \
603 tstIEMAImplDataSseBinary-subsd_u128_r64.bin.gz \
604 tstIEMAImplDataSseBinary-minss_u128_r32.bin.gz \
605 tstIEMAImplDataSseBinary-minsd_u128_r64.bin.gz \
606 tstIEMAImplDataSseBinary-divss_u128_r32.bin.gz \
607 tstIEMAImplDataSseBinary-divsd_u128_r64.bin.gz \
608 tstIEMAImplDataSseBinary-maxss_u128_r32.bin.gz \
609 tstIEMAImplDataSseBinary-maxsd_u128_r64.bin.gz \
610 tstIEMAImplDataSseBinary-cvtss2sd_u128_r32.bin.gz \
611 tstIEMAImplDataSseBinary-cvtsd2ss_u128_r64.bin.gz \
612 tstIEMAImplDataSseBinary-sqrtss_u128_r32.bin.gz \
613 tstIEMAImplDataSseBinary-sqrtsd_u128_r64.bin.gz \
614 tstIEMAImplDataSseBinary-cvttsd2si_i32_r64.bin.gz \
615 tstIEMAImplDataSseBinary-cvtsd2si_i32_r64.bin.gz \
616 tstIEMAImplDataSseBinary-cvttsd2si_i64_r64.bin.gz \
617 tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin.gz \
618 tstIEMAImplDataSseBinary-cvttss2si_i32_r32.bin.gz \
619 tstIEMAImplDataSseBinary-cvtss2si_i32_r32.bin.gz \
620 tstIEMAImplDataSseBinary-cvttss2si_i64_r32.bin.gz \
621 tstIEMAImplDataSseBinary-cvtss2si_i64_r32.bin.gz \
622 tstIEMAImplDataSseBinary-cvtsi2ss_r32_i32.bin.gz \
623 tstIEMAImplDataSseBinary-cvtsi2ss_r32_i64.bin.gz \
624 tstIEMAImplDataSseBinary-cvtsi2sd_r64_i32.bin.gz \
625 tstIEMAImplDataSseBinary-cvtsi2sd_r64_i64.bin.gz \
626 tstIEMAImplDataSseCompare-ucomiss_u128.bin.gz \
627 tstIEMAImplDataSseCompare-vucomiss_u128.bin.gz \
628 tstIEMAImplDataSseCompare-comiss_u128.bin.gz \
629 tstIEMAImplDataSseCompare-vcomiss_u128.bin.gz \
630 tstIEMAImplDataSseCompare-ucomisd_u128.bin.gz \
631 tstIEMAImplDataSseCompare-vucomisd_u128.bin.gz \
632 tstIEMAImplDataSseCompare-comisd_u128.bin.gz \
633 tstIEMAImplDataSseCompare-vcomisd_u128.bin.gz \
634 tstIEMAImplDataSseCompare-cmpps_u128.bin.gz \
635 tstIEMAImplDataSseCompare-cmpss_u128.bin.gz \
636 tstIEMAImplDataSseCompare-cmppd_u128.bin.gz \
637 tstIEMAImplDataSseCompare-cmpsd_u128.bin.gz \
638 tstIEMAImplDataSseConvert-cvtdq2ps_u128.bin.gz \
639 tstIEMAImplDataSseConvert-cvtps2dq_u128.bin.gz \
640 tstIEMAImplDataSseConvert-cvttps2dq_u128.bin.gz \
641 tstIEMAImplDataSseConvert-cvtdq2pd_u128.bin.gz \
642 tstIEMAImplDataSseConvert-cvtpd2dq_u128.bin.gz \
643 tstIEMAImplDataSseConvert-cvttpd2dq_u128.bin.gz \
644 tstIEMAImplDataSseConvert-cvtpd2pi_u128.bin.gz \
645 tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin.gz \
646 tstIEMAImplDataSseConvert-cvtpi2ps_u128.bin.gz \
647 tstIEMAImplDataSseConvert-cvtpi2pd_u128.bin.gz \
648 tstIEMAImplDataSseConvert-cvtps2pi_u128.bin.gz \
649 tstIEMAImplDataSseConvert-cvttps2pi_u128.bin.gz \
650 tstIEMAImplDataSsePcmpxstrx-pcmpistri_u128.bin.gz \
651 tstIEMAImplDataSsePcmpxstrx-pcmpistrm_u128.bin.gz \
652 tstIEMAImplDataSsePcmpxstrx-pcmpestri_u128.bin.gz \
653 tstIEMAImplDataSsePcmpxstrx-pcmpestrm_u128.bin.gz
654
655tstIEMAImpl_TEMPLATE = VBoxR3TstExe
656tstIEMAImpl_DEFS = $(VMM_COMMON_DEFS) IEM_WITHOUT_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS
657tstIEMAImpl_SDKS = VBoxSoftFloatR3Shared
658tstIEMAImpl_INCS = ../include .
659tstIEMAImpl_SOURCES = \
660 tstIEMAImpl.cpp \
661 ../VMMAll/IEMAllAImplC.cpp \
662 $(tstIEMAImpl_CLEAN)
663tstIEMAImpl_SOURCES.x86 += tstIEMAImplDataSseBinary.asm
664tstIEMAImpl_SOURCES.amd64 += tstIEMAImplDataSseBinary.asm
665tstIEMAImplDataSseBinary.asm_DEPS = \
666 $(TSTIEMAIMPL_TEST_DATA_DEPS)
667
668tstIEMAImpl_SOURCES.arm64 = \
669 tstIEMAImplDataSseBinary.S \
670 ../VMMAll/IEMAllAImpl-arm64.S
671tstIEMAImplDataSseBinary.S_DEPS = \
672 $(TSTIEMAIMPL_TEST_DATA_DEPS)
673$(call KB_FN_DO_PASS0_ON_TARGET,tstIEMAImpl)
674
675# This variant mainly for generating data.
676tstIEMAImplAsm_TEMPLATE := VBoxR3TstExe
677tstIEMAImplAsm_SDKS := VBoxSoftFloatR3Shared
678tstIEMAImplAsm_DEFS = $(VMM_COMMON_DEFS) IEM_WITH_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS TSTIEMAIMPL_WITH_GENERATOR
679tstIEMAImplAsm_ASFLAGS.amd64 := -Werror
680tstIEMAImplAsm_ASFLAGS.x86 := -Werror
681tstIEMAImplAsm_INCS := ../include .
682tstIEMAImplAsm_SOURCES = \
683 tstIEMAImpl.cpp \
684 ../VMMAll/IEMAllAImpl.asm \
685 ../VMMAll/IEMAllAImplC.cpp \
686 $(tstIEMAImpl_CLEAN)
687tstIEMAImplAsm_SOURCES.x86 += tstIEMAImplDataSseBinary.asm
688tstIEMAImplAsm_SOURCES.amd64 += tstIEMAImplDataSseBinary.asm
689tstIEMAImplDataSseBinary.asm_DEPS = \
690 $(TSTIEMAIMPL_TEST_DATA_DEPS)
691
692tstIEMAImplAsm_SOURCES.arm64 += tstIEMAImplDataSseBinary.S
693tstIEMAImplDataSseBinary.S_DEPS = \
694 $(TSTIEMAIMPL_TEST_DATA_DEPS)
695
696
697#
698# Testcase for checking the repurposing of the IEM instruction code.
699#
700tstIEMCheckMc_TEMPLATE = VBoxR3TstExe
701tstIEMCheckMc_SOURCES = tstIEMCheckMc.cpp
702tstIEMCheckMc_DEFS = $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
703tstIEMCheckMc_LIBS = $(LIB_RUNTIME)
704ifeq ($(KBUILD_TARGET),win)
705 tstIEMCheckMc_CXXFLAGS = $(VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS) -wd4189 # local variable is initialized but not used.
706else
707 tstIEMCheckMc_CXXFLAGS = $(VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS) -Wno-unused-value -Wno-unused-variable -Wno-return-type
708endif
709
710#
711# Saved state manager testcase.
712#
713tstSSM_TEMPLATE = VBoxR3TstExe
714tstSSM_INCS = $(VBOX_PATH_VMM_SRC)/include
715tstSSM_DEFS = $(VMM_COMMON_DEFS)
716tstSSM_SOURCES = tstSSM.cpp
717tstSSM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
718
719#
720# VMM configuration manager tests.
721#
722if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
723 tstCFGMHardened_TEMPLATE = VBoxR3HardenedTstExe
724 tstCFGMHardened_NAME = tstCFGM
725 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
726 tstCFGMHardened_DEFS = PROGRAM_NAME_STR="tstCFGM"
727 else
728 tstCFGMHardened_DEFS = PROGRAM_NAME_STR=\"tstCFGM\"
729 endif
730 tstCFGMHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplateTestcase.cpp
731 tstCFGM_TEMPLATE = VBoxR3HardenedTstDll
732else
733 tstCFGM_TEMPLATE = VBoxR3TstExe
734endif
735tstCFGM_DEFS = $(VMM_COMMON_DEFS)
736tstCFGM_SOURCES = tstCFGM.cpp
737tstCFGM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
738
739#
740# Comparing some compression algorithms considered for SSM usage.
741#
742tstCompressionBenchmark_TEMPLATE = VBoxR3TstExe
743tstCompressionBenchmark_SOURCES = tstCompressionBenchmark.cpp
744
745#
746# Two testcases for checking the ring-0 setjmp/longjmp code.
747#
748tstVMMR0CallHost-1_TEMPLATE = VBoxR3TstExe
749tstVMMR0CallHost-1_INCS = $(VBOX_PATH_VMM_SRC)/include
750tstVMMR0CallHost-1_SOURCES = \
751 tstVMMR0CallHost-1.cpp
752tstVMMR0CallHost-1_SOURCES.amd64 = \
753 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-amd64.asm
754tstVMMR0CallHost-1_SOURCES.x86 = \
755 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-x86.asm
756
757
758#
759# For testing the VM request queue code.
760#
761if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
762 tstVMREQHardened_TEMPLATE = VBoxR3HardenedExe
763 tstVMREQHardened_NAME = tstVMREQ
764 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
765 tstVMREQHardened_DEFS = PROGRAM_NAME_STR="tstVMREQ"
766 else
767 tstVMREQHardened_DEFS = PROGRAM_NAME_STR=\"tstVMREQ\"
768 endif
769 tstVMREQHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
770 tstVMREQ_TEMPLATE = VBoxR3Dll
771else
772 tstVMREQ_TEMPLATE = VBoxR3Exe
773endif
774tstVMREQ_DEFS = $(VMM_COMMON_DEFS)
775tstVMREQ_SOURCES = tstVMREQ.cpp
776tstVMREQ_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
777
778#
779# Tool for reanimate things like OS/2 dumps.
780#
781if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
782 tstAnimateHardened_TEMPLATE = VBoxR3HardenedExe
783 tstAnimateHardened_NAME = tstAnimate
784 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
785 tstAnimateHardened_DEFS = PROGRAM_NAME_STR="tstAnimate"
786 else
787 tstAnimateHardened_DEFS = PROGRAM_NAME_STR=\"tstAnimate\"
788 endif
789 tstAnimateHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
790 tstAnimate_TEMPLATE = VBoxR3Dll
791else
792 tstAnimate_TEMPLATE = VBoxR3Exe
793endif
794tstAnimate_DEFS = $(VMM_COMMON_DEFS)
795tstAnimate_SOURCES = tstAnimate.cpp
796tstAnimate_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
797
798tstX86-1_TEMPLATE = VBoxR3TstExe
799tstX86-1_SOURCES = tstX86-1.cpp tstX86-1A.asm
800tstX86-1_LIBS = $(LIB_RUNTIME)
801tstX86-1_LDFLAGS.linux = $(VBOX_GCC_no-pie)
802
803tstX86-FpuSaveRestore_TEMPLATE = VBoxR3TstExe
804tstX86-FpuSaveRestore_SOURCES = tstX86-FpuSaveRestore.cpp tstX86-FpuSaveRestoreA.asm
805tstX86-FpuSaveRestore_LIBS = $(LIB_RUNTIME)
806
807ifdef VBOX_WITH_RAW_MODE
808
809 #
810 # Raw-mode VMM testcase.
811 #
812 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
813 tstVMMHardened_TEMPLATE = VBoxR3HardenedExe
814 tstVMMHardened_NAME = tstVMM
815 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
816 tstVMMHardened_DEFS = PROGRAM_NAME_STR="tstVMM"
817 else
818 tstVMMHardened_DEFS = PROGRAM_NAME_STR=\"tstVMM\"
819 endif
820 tstVMMHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
821 tstVMM_TEMPLATE = VBoxR3Dll
822 else
823 tstVMM_TEMPLATE = VBoxR3Exe
824 endif
825 tstVMM_SOURCES = tstVMM.cpp
826 tstVMM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
827
828 #
829 # HM VMM testcase.
830 #
831 tstVMM-HM_TEMPLATE = VBoxR3Exe
832 tstVMM-HM_SOURCES = tstVMM-HM.cpp
833 tstVMM-HM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
834
835 #
836 # VMM host process fork test case (memory ++).
837 #
838 tstVMMFork_TEMPLATE = VBoxR3Exe
839 tstVMMFork_SOURCES = tstVMMFork.cpp
840 tstVMMFork_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
841
842 #
843 # Raw-mode micro benchmark.
844 #
845 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
846 tstMicroHardened_TEMPLATE = VBoxR3HardenedExe
847 tstMicroHardened_NAME = tstMicro
848 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
849 tstMicroHardened_DEFS = PROGRAM_NAME_STR="tstMicro"
850 else
851 tstMicroHardened_DEFS = PROGRAM_NAME_STR=\"tstMicro\"
852 endif
853 tstMicroHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
854 tstMicro_TEMPLATE = VBoxR3Dll
855 else
856 tstMicro_TEMPLATE = VBoxR3Exe
857 endif
858 tstMicro_SOURCES = tstMicro.cpp
859 tstMicro_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
860 tstMicro_DEFS = $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,)
861
862 tstMicroRC_TEMPLATE = VBoxRc
863 tstMicroRC_SOURCES = tstMicroRC.cpp tstMicroRCA.asm
864 tstMicroRC_DEFS = $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,)
865 tstMicroRC_INCS = $(VBOX_PATH_VMM_SRC)/testcase
866 ifeq ($(VBOX_LDR_FMT32),pe)
867 tstMicroRC_LDFLAGS = -Entry:tstMicroRC
868 endif
869 tstMicroRC_SYSSUFF = .gc
870 tstMicroRC_LIBS = \
871 $(PATH_STAGE_LIB)/DisasmRC$(VBOX_SUFF_LIB) \
872 $(PATH_STAGE_LIB)/RuntimeRC$(VBOX_SUFF_LIB)
873 ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT32)),)
874 tstMicroRC_LIBS += \
875 $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \
876 $(LIB_VMMRC)
877 endif
878 tstMicroRC_SOURCES.win = tstMicroRC.def
879
880endif # VBOX_WITH_RAW_MODE
881
882
883if !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)
884 #
885 # Special NEM host testcase.
886 #
887 if ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "darwin.amd64" && (defined(VBOX_WITH_NATIVE_NEM) || "$(USERNAME)" == "bird")) \
888 || ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "linux.amd64" && (defined(VBOX_WITH_NATIVE_NEM) || "$(USERNAME)" == "bird")) \
889 || ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "win.amd64" && defined(VBOX_WITH_NATIVE_NEM))
890 PROGRAMS += NemRawBench-1
891 NemRawBench-1_TEMPLATE = VBoxR3Static
892 NemRawBench-1_SOURCES = NemRawBench-1.cpp
893 NemRawBench-1_BLD_TYPE = release
894 NemRawBench-1_INCS.win = \
895 $(KBUILD_DEVTOOLS)/win.x86/sdk/v10.0.17134.0/include/10.0.17134.0/um \
896 $(KBUILD_DEVTOOLS)/win.x86/sdk/v10.0.17134.0/include/10.0.17134.0/shared
897 NemRawBench-1_CXXFLAGS.darwin = \
898 -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform//Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks
899 #NemRawBench-1_LDFLAGS.darwin = \
900# -F/System/Library/Frameworks \
901# -framework Hypervisor
902 NemRawBench-1_LDFLAGS.darwin = \
903 /System/Library/Frameworks/Hypervisor.framework/Hypervisor
904 endif
905endif
906
907#
908# PDM Queue tests.
909#
910tstPDMQueue_TEMPLATE := VBoxR3Exe
911tstPDMQueue_DEFS = $(VMM_COMMON_DEFS)
912tstPDMQueue_SOURCES := tstPDMQueue.cpp
913tstPDMQueue_LIBS := $(LIB_VMM) $(LIB_RUNTIME)
914
915
916ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
917 #
918 # PDM asynchronous completation test.
919 #
920 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
921 tstPDMAsyncCompletionHardened_TEMPLATE = VBoxR3HardenedExe
922 tstPDMAsyncCompletionHardened_NAME = tstPDMAsyncCompletion
923 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
924 tstPDMAsyncCompletionHardened_DEFS = PROGRAM_NAME_STR="tstPDMAsyncCompletion"
925 else
926 tstPDMAsyncCompletionHardened_DEFS = PROGRAM_NAME_STR=\"tstPDMAsyncCompletion\"
927 endif
928 tstPDMAsyncCompletionHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
929 tstPDMAsyncCompletion_TEMPLATE = VBoxR3Dll
930 else
931 tstPDMAsyncCompletion_TEMPLATE = VBoxR3Exe
932 endif
933 tstPDMAsyncCompletion_DEFS = $(VMM_COMMON_DEFS)
934 tstPDMAsyncCompletion_INCS = $(VBOX_PATH_VMM_SRC)/include
935 tstPDMAsyncCompletion_SOURCES = tstPDMAsyncCompletion.cpp
936 tstPDMAsyncCompletion_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
937
938 #
939 # PDM asynchronous completation stress test.
940 #
941 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
942 tstPDMAsyncCompletionStressHardened_TEMPLATE = VBoxR3HardenedExe
943 tstPDMAsyncCompletionStressHardened_NAME = tstPDMAsyncCompletionStress
944 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
945 tstPDMAsyncCompletionStressHardened_DEFS = PROGRAM_NAME_STR="tstPDMAsyncCompletionStress"
946 else
947 tstPDMAsyncCompletionStressHardened_DEFS = PROGRAM_NAME_STR=\"tstPDMAsyncCompletionStress\"
948 endif
949 tstPDMAsyncCompletionStressHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
950 tstPDMAsyncCompletionStress_TEMPLATE = VBoxR3Dll
951 else
952 tstPDMAsyncCompletionStress_TEMPLATE = VBoxR3Exe
953 endif
954 tstPDMAsyncCompletionStress_DEFS = $(VMM_COMMON_DEFS)
955 tstPDMAsyncCompletionStress_INCS = $(VBOX_PATH_VMM_SRC)/include
956 tstPDMAsyncCompletionStress_SOURCES = tstPDMAsyncCompletionStress.cpp
957 tstPDMAsyncCompletionStress_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
958endif
959
960ifndef VBOX_ONLY_EXTPACKS
961 PROGRAMS += tstSSM-2
962 tstSSM-2_TEMPLATE = VBoxR3TstExe
963 tstSSM-2_DEFS = IN_VMM_STATIC
964 tstSSM-2_SOURCES = tstSSM-2.cpp
965 tstSSM-2_LIBS = $(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB)
966endif
967
968#
969# Generate VM structure tests.
970#
971if !defined(VBOX_ONLY_EXTPACKS) \
972 && ( defined(VBOX_WITH_DTRACE_R3) \
973 || defined(VBOX_WITH_DTRACE_R0) \
974 || defined(VBOX_WITH_DTRACE_RC))
975 tstVMStructDTrace_TEMPLATE = VBoxR3AutoTest
976 tstVMStructDTrace_DEFS = VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
977 ifdef VBOX_WITH_RAW_MODE
978 tstVMStructDTrace_DEFS += VBOX_WITH_RAW_MODE
979 endif
980 tstVMStructDTrace_INCS = \
981 $(VBOX_PATH_VMM_SRC)/include \
982 $(VBOX_PATH_VMM_SRC)/PATM \
983 $(VBOX_VMM_TESTCASE_OUT_DIR)
984 tstVMStructDTrace_SOURCES = tstVMStructDTrace.cpp
985 ifdef VBOX_WITH_R0_LOGGING
986 tstVMStructDTrace_DEFS += VBOX_WITH_R0_LOGGING
987 endif
988
989
990 VMMLibDTraceStructTest_INST = $(VBOX_INST_DTRACE_TST)$(KBUILD_TARGET_ARCH)/
991 VMMLibDTraceStructTest_SOURCES = \
992 $(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d
993 VMMLibDTraceStructTest_CLEAN = \
994 $(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d
995
996 $$(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d: \
997 $$(tstVMStructDTrace_1_STAGE_TARGET) | $$(dir $$@)
998 $(QUIET)$(RM) -f $@
999 $< > $@
1000
1001endif
1002
1003
1004include $(FILE_KBUILD_SUB_FOOTER)
1005
1006
1007#
1008# Some handcrafted support targets for tstAsmStructs.
1009#
1010MY_ASA_ASM_STUFF = \
1011 $(addprefix -D, \
1012 $(DEFS) \
1013 $(DEFS.$(KBUILD_TYPE)) \
1014 $(DEFS.$(KBUILD_TARGET)) \
1015 IN_RING3 $(ARCH_BITS_DEFS) \
1016 $(DEFS.$(KBUILD_TARGET_ARCH)) \
1017 $(DEFS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) \
1018 $(VMM_COMMON_DEFS) \
1019 ) \
1020 -f $(if $(eq $(KBUILD_TARGET),darwin),macho,$(if $(eq $(KBUILD_TARGET),win),coff,elf)) \
1021 $(foreach inc,$(INCS) $(VBOX_PATH_VMM_SRC)/testcase $(VBOX_PATH_VMM_SRC)/include $(VBOX_VMM_TESTCASE_OUT_DIR) \
1022 ,-I$(inc)/)
1023
1024# 1a. make a header file which makes all the structures+members globals.
1025$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac: \
1026 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
1027 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed \
1028 $(DEPTH)/include/iprt/asmdefs.mac \
1029 $(DEPTH)/include/VBox/vmm/cpum.mac \
1030 $(DEPTH)/include/VBox/vmm/vm.mac \
1031 $(DEPTH)/include/VBox/vmm/gvm.mac \
1032 $(DEPTH)/include/VBox/sup.mac \
1033 $(DEPTH)/include/iprt/x86.mac \
1034 $(VBOX_PATH_VMM_SRC)/include/CPUMInternal.mac \
1035 $(VBOX_PATH_VMM_SRC)/include/HMInternal.mac \
1036 $(VBOX_PATH_VMM_SRC)/include/VMMInternal.mac \
1037 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
1038 $(PATH_ROOT)/Config.kmk $(LOCALCFG) $(AUTOCFG) \
1039 | $$(dir $$@)
1040 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
1041ifndef DONT_USE_YASM
1042 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -o $@.o -l $@.lst $<
1043 $(SED) -f $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed --output $@ $@.lst
1044else
1045 $(QUIET)$(TOOL_NASM_AS) -g $(MY_ASA_ASM_STUFF) -o $@.o -l $@.lst $<
1046 $(VBOX_NM) $@.o | $(SED) \
1047 -e '/[0-9a-fA-F][0-9a-fA-F]* [^a] /d' \
1048 -e 's/[0-9a-fA-F][0-9a-fA-F]* a \([^ ]*\)/global \1/' \
1049 > $@
1050endif
1051
1052# 1b. make an elf/macho object containing the offsets.
1053includedep $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep
1054$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o: \
1055 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
1056 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
1057 $(DEPTH)/include/iprt/asmdefs.mac \
1058 $(DEPTH)/include/VBox/vmm/cpum.mac \
1059 $(DEPTH)/include/VBox/vmm/hm_vmx.mac \
1060 $(DEPTH)/include/VBox/vmm/stam.mac \
1061 $(DEPTH)/include/VBox/vmm/vm.mac \
1062 $(DEPTH)/include/VBox/sup.mac \
1063 $(DEPTH)/include/iprt/x86.mac \
1064 $(VBOX_PATH_VMM_SRC)/include/CPUMInternal.mac \
1065 $(VBOX_PATH_VMM_SRC)/include/HMInternal.mac \
1066 $(VBOX_PATH_VMM_SRC)/include/VMMInternal.mac \
1067 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
1068 $$(if $$(eq $$(tstAsmStructsAsmDep_STUFF),$$(MY_ASA_ASM_STUFF)),,FORCE) \
1069 | $$(dir $$@)
1070 $(call MSG_COMPILE,tstAsmStructsasm,$<,$@,AS)
1071ifndef DONT_USE_YASM
1072 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
1073else
1074 $(QUIET)$(TOOL_NASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
1075endif
1076 %$(QUIET2)$(RM) -f -- $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep
1077 %$(QUIET2)$(APPEND) '$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep' 'tstAsmStructsAsmDep_STUFF=$(MY_ASA_ASM_STUFF)'
1078
1079# 2. use nm and sed to transform this into the header we want.
1080$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o
1081 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
1082 $(QUIET)$(RM) -f $@ $@.dump $@.tmp
1083ifeq ($(KBUILD_TARGET),win)
1084 $(QUIET)$(REDIRECT) -wo $@.dump -- $(TOOL_$(VBOX_VCC_TOOL)_DUMPBIN) /nologo /symbols $<
1085 $(QUIET)$(SED) \
1086 -e '/STAMPROFILEADV/d' \
1087 \
1088 -e '/^[0-9a-fA-F]\{1,\} 00[0-9a-fA-F]* ABS *notype *External *| [^.]\{1,\}\./!d' \
1089 -e 's/^[0-9a-fA-F]\{1,\} \(00[0-9a-fA-F]*\) ABS *notype *External *| \([^.]\{1,\}\)\.\(.*$$\)/ CHECK_OFF(\2, 0x0\1, \3);/' \
1090 --output $@.tmp $@.dump
1091 $(QUIET)$(SED) \
1092 -e '/VM_size$$/d' \
1093 -e '/VMCPU_size$$/d' \
1094 -e '/VMMCPU_size$$/d' \
1095 -e '/SUPDRVTRACERUSRCTX32_size$$/d' \
1096 -e '/HMCPU_size$$/d' \
1097 -e '/SUPGLOBALINFOPAGE_size$$/d' \
1098 \
1099 -e '/^[0-9a-fA-F]\{1,\} 00[0-9a-fA-F]* ABS *notype *External *| [^_.]\{1,\}_size$$/!d' \
1100 -e 's/^[0-9a-fA-F]\{1,\} \(00[0-9a-fA-F]*\) ABS *notype *External *| \([^_.]\{1,\}\)_size$$/ CHECK_SIZE(\2, 0x0\1);/' \
1101 --append $@.tmp $@.dump
1102else
1103 $(QUIET)$(REDIRECT) -wo $@.dump -- $(VBOX_NM) $<
1104 $(QUIET)$(SED) \
1105 -e '/STAMPROFILEADV/d' \
1106 \
1107 -e '/^\(0x\)\{0,1\}00[0-9a-fA-F]* [aAnN] [^_.]*\./!d' \
1108 -e 's/^\(0x\)\{0,1\}\(00[0-9a-fA-F]*\) [aAnN] \([^.]*\)\.\(.*$$\)/ CHECK_OFF(\3, 0x0\2, \4);/' \
1109 --output $@.tmp $@.dump
1110 $(QUIET)$(SED) \
1111 -e '/VM_size$$/d' \
1112 -e '/VMCPU_size$$/d' \
1113 -e '/VMMCPU_size$$/d' \
1114 -e '/SUPDRVTRACERUSRCTX32_size$$/d' \
1115 -e '/HMCPU_size$$/d' \
1116 -e '/SUPGLOBALINFOPAGE_size$$/d' \
1117 \
1118 -e '/^\(0x\)\{0,1\}00[0-9a-fA-F]* [aAnN] [^_.]*_size$$/!d' \
1119 -e 's/^\(0x\)\{0,1\}\(00[0-9a-fA-F]*\) [aAnN] \([^_.]*\)_size/ CHECK_SIZE(\3, 0x0\2);/' \
1120 --append $@.tmp $@.dump
1121endif
1122 $(QUIET)$(MV) -f $@.tmp $@
1123 $(QUIET)$(RM) -f $@.dump
1124
1125# 3. run it.
1126$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: \
1127 $$(tstAsmStructs_1_STAGE_TARGET) \
1128 $(if-expr defined(VBOX_WITH_RAW_MODE),$$(tstAsmStructsRC_1_STAGE_TARGET),)
1129 $(QUIET)$(RM) -f $@
1130 $(tstAsmStructs_1_STAGE_TARGET)
1131ifdef VBOX_WITH_RAW_MODE
1132 $(tstAsmStructsRC_1_STAGE_TARGET)
1133endif
1134 $(QUIET)$(APPEND) "$@" "done"
1135
1136
1137
1138#
1139# Run rule for tstVMStructSize.
1140#
1141
1142ifdef VBOX_WITH_RAW_MODE
1143 # 1. Manually dump selected structures and members.
1144 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h: $$(tstVMStructRC_1_STAGE_TARGET) | $$(dir $$@)
1145 $(call MSG_GENERATE,tstVMStructSize,$@)
1146 $(QUIET)$(REDIRECT) -wo $@ -- $<
1147endif # VBOX_WITH_RAW_MODE
1148
1149# 2. run it.
1150$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run: $$(tstVMStructSize_1_STAGE_TARGET) | $$(dir $$@)
1151 $(QUIET)$(RM) -f $@
1152 $<
1153 $(QUIET)$(APPEND) "$@" "done"
1154
1155# alias for the two struct tests.
1156run-struct-tests: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
1157
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette