/* $Id: tstVMStructRC.cpp $ */ /** @file * tstVMMStructRC - Generate structure member and size checks from the * RC perspective. * * This is built using the VBOXRC template but linked into a host * ring-3 executable, rather hacky. */ /* * Copyright (C) 2006-2023 Oracle and/or its affiliates. * * This file is part of VirtualBox base platform packages, as * available from https://www.virtualbox.org. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, in version 3 of the * License. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * SPDX-License-Identifier: GPL-3.0-only */ /* * Sanity checks. */ #ifndef IN_RC # error Incorrect template! #endif #if defined(IN_RING3) || defined(IN_RING0) # error Incorrect template! #endif #include #include AssertCompileSize(uint8_t, 1); AssertCompileSize(uint16_t, 2); AssertCompileSize(uint32_t, 4); AssertCompileSize(uint64_t, 8); AssertCompileSize(RTRCPTR, 4); #ifdef VBOX_WITH_64_BITS_GUESTS AssertCompileSize(RTGCPTR, 8); #else AssertCompileSize(RTGCPTR, 4); #endif AssertCompileSize(RTGCPHYS, 8); AssertCompileSize(RTHCPHYS, 8); /********************************************************************************************************************************* * Header Files * *********************************************************************************************************************************/ #define IN_TSTVMSTRUCT 1 #define IN_TSTVMSTRUCTGC 1 #include #include #include #include #include #include #include #include "PDMInternal.h" #include #include "CFGMInternal.h" #include "CPUMInternal.h" #include "MMInternal.h" #include "PGMInternal.h" #include "SELMInternal.h" #include "TMInternal.h" #include "IOMInternal.h" #include "HMInternal.h" #include "APICInternal.h" #include "PATMInternal.h" #include "VMMInternal.h" #include "DBGFInternal.h" #include "GIMInternal.h" #include "STAMInternal.h" #include "CSAMInternal.h" #include "EMInternal.h" #include "IEMInternal.h" #include "NEMInternal.h" #include #include #include #include #include #include int main() { #define GEN_CHECK_SIZE(s) RTPrintf(" CHECK_SIZE(%s, %u);\n", #s, (unsigned)sizeof(s)) #define GEN_CHECK_OFF(s, m) RTPrintf(" CHECK_OFF(%s, %u, %s);\n", #s, (unsigned)RT_OFFSETOF(s, m), #m) #define GEN_CHECK_OFF_DOT(s, m) RTPrintf(" CHECK_OFF(%s, %u, %s);\n", #s, (unsigned)RT_OFFSETOF(s, m), #m) #include "tstVMStruct.h" return (0); }