tstVMStructGC.cpp revision ac0912325782a5dc3216b1d7ca3463d869b7c05f
de6a40dbdd4712e5a9398b8519a59b1eaeab2f5aChristian Maeder * tstVMMStructGC - Generate structure member and size checks from the GC perspective.
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian Maeder * This is built using the VBOXGC template but linked into a host
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * ring-3 executable, rather hacky.
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * Copyright (C) 2006-2007 Sun Microsystems, Inc.
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * This file is part of VirtualBox Open Source Edition (OSE), as
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * available from http://www.virtualbox.org. This file is free software;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * you can redistribute it and/or modify it under the terms of the GNU
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * General Public License (GPL) as published by the Free Software
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * Foundation, in version 2 as it comes in the "COPYING" file of the
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d1126d58419412635564085406d3779325b33ae0Till Mossakowski * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder * Clara, CA 95054 USA or visit http://www.sun.com if you need
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * additional information or have any questions.
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder * Sanity checks.
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder/*******************************************************************************
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski* Header Files *
0b2340d1ef7d0998e4b0c321021be942c6b67652Christian Maeder*******************************************************************************/
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder/* we don't use iprt here because we're pretending to be in GC! */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder#define GEN_CHECK_SIZE(s) printf(" CHECK_SIZE(%s, %u);\n", #s, (unsigned)sizeof(s))
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder#define GEN_CHECK_OFF(s, m) printf(" CHECK_OFF(%s, %u, %s);\n", #s, (unsigned)RT_OFFSETOF(s, m), #m)
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder GEN_CHECK_OFF(EM, u.achPaddingFatalLongJump);
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnWriteCallbackR3);
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnReadCallbackR3);
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnFillCallbackR3);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnWriteCallbackR0);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnReadCallbackR0);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnFillCallbackR0);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnWriteCallbackRC);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnReadCallbackRC);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder GEN_CHECK_OFF(IOMMMIORANGE, pfnFillCallbackRC);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(MMHYPERHEAP, offPageAligned);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(MMHYPERHEAP, HyperHeapStatTree);
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.Locked.pvR3);
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.Locked.pvR0);
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.Locked.pLockedMem);
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.HCPhys.pvR3);
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.HCPhys.HCPhys);
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder GEN_CHECK_OFF(MMLOOKUPHYPER, u.GCPhys.GCPhys);
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnRegisterR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnIORegionRegisterR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSaveExecR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnLoadExecR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnFakePCIBIOSR3);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsR0);
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqR0);
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsRC);
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqRC);
#ifdef VBOX_WITH_STATISTICS
#ifdef PGMPOOL_WITH_USER_TRACKING
#ifdef PGMPOOL_WITH_MONITORING
#ifdef PGMPOOL_WITH_CACHE
#ifdef PGMPOOL_WITH_USER_TRACKING
#ifdef PGMPOOL_WITH_GCPHYS_TRACKING
#ifdef PGMPOOL_WITH_CACHE
#ifdef PGMPOOL_WITH_MONITORING
#ifdef VBOX_WITH_STATISTICS