From 2891e3ceaad1b46f8831792060be4ab1ad9ca090 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Mon, 6 Oct 2014 21:04:14 +0000 Subject: [PATCH] Followup to r14600. Copy the contents of pub_core_guest.h to pub_tool_guest.h to make it available to tools. This allows to remove quite a bit of ifdeffery from memcheck's mc_machine.c git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14601 --- coregrind/pub_core_guest.h | 35 +++--------------- include/Makefile.am | 1 + include/pub_tool_guest.h | 75 ++++++++++++++++++++++++++++++++++++++ memcheck/mc_machine.c | 47 +----------------------- 4 files changed, 83 insertions(+), 75 deletions(-) create mode 100644 include/pub_tool_guest.h diff --git a/coregrind/pub_core_guest.h b/coregrind/pub_core_guest.h index 3e12d41ef6..46a7d059c6 100644 --- a/coregrind/pub_core_guest.h +++ b/coregrind/pub_core_guest.h @@ -37,36 +37,11 @@ #ifndef __PUB_CORE_GUEST_H #define __PUB_CORE_GUEST_H -#if defined(VGA_x86) -# include "libvex_guest_x86.h" - typedef VexGuestX86State VexGuestArchState; -#elif defined(VGA_amd64) -# include "libvex_guest_amd64.h" - typedef VexGuestAMD64State VexGuestArchState; -#elif defined(VGA_ppc32) -# include "libvex_guest_ppc32.h" - typedef VexGuestPPC32State VexGuestArchState; -#elif defined(VGA_ppc64be) || defined(VGA_ppc64le) -# include "libvex_guest_ppc64.h" - typedef VexGuestPPC64State VexGuestArchState; -#elif defined(VGA_arm) -# include "libvex_guest_arm.h" - typedef VexGuestARMState VexGuestArchState; -#elif defined(VGA_arm64) -# include "libvex_guest_arm64.h" - typedef VexGuestARM64State VexGuestArchState; -#elif defined(VGA_s390x) -# include "libvex_guest_s390x.h" - typedef VexGuestS390XState VexGuestArchState; -#elif defined(VGA_mips32) -# include "libvex_guest_mips32.h" - typedef VexGuestMIPS32State VexGuestArchState; -#elif defined(VGA_mips64) -# include "libvex_guest_mips64.h" - typedef VexGuestMIPS64State VexGuestArchState; -#else -# error Unknown arch -#endif +#include "pub_tool_guest.h" + +// No core-only exports; everything in this module is visible to both +// the core and tools. + #endif // __PUB_CORE_GUEST_H diff --git a/include/Makefile.am b/include/Makefile.am index 2aef15c4bc..520b7188e6 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -14,6 +14,7 @@ nobase_pkginclude_HEADERS = \ pub_tool_errormgr.h \ pub_tool_execontext.h \ pub_tool_gdbserver.h \ + pub_tool_guest.h \ pub_tool_poolalloc.h \ pub_tool_hashtable.h \ pub_tool_libcbase.h \ diff --git a/include/pub_tool_guest.h b/include/pub_tool_guest.h new file mode 100644 index 0000000000..436afe0a34 --- /dev/null +++ b/include/pub_tool_guest.h @@ -0,0 +1,75 @@ +/* -*- mode: C; c-basic-offset: 3; -*- */ + +/*---------------------------------------------------------------*/ +/*--- Provides guest state definition. pub_tool_guest.h ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2014-2014 OpenWorks LLP + info@open-works.net + + 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; either version 2 of the + License, or (at your option) any later version. + + 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + The GNU General Public License is contained in the file COPYING. + + Neither the names of the U.S. Department of Energy nor the + University of California nor the names of its contributors may be + used to endorse or promote products derived from this software + without prior written permission. +*/ + +#ifndef __PUB_TOOL_GUEST_H +#define __PUB_TOOL_GUEST_H + +#if defined(VGA_x86) +# include "libvex_guest_x86.h" + typedef VexGuestX86State VexGuestArchState; +#elif defined(VGA_amd64) +# include "libvex_guest_amd64.h" + typedef VexGuestAMD64State VexGuestArchState; +#elif defined(VGA_ppc32) +# include "libvex_guest_ppc32.h" + typedef VexGuestPPC32State VexGuestArchState; +#elif defined(VGA_ppc64be) || defined(VGA_ppc64le) +# include "libvex_guest_ppc64.h" + typedef VexGuestPPC64State VexGuestArchState; +#elif defined(VGA_arm) +# include "libvex_guest_arm.h" + typedef VexGuestARMState VexGuestArchState; +#elif defined(VGA_arm64) +# include "libvex_guest_arm64.h" + typedef VexGuestARM64State VexGuestArchState; +#elif defined(VGA_s390x) +# include "libvex_guest_s390x.h" + typedef VexGuestS390XState VexGuestArchState; +#elif defined(VGA_mips32) +# include "libvex_guest_mips32.h" + typedef VexGuestMIPS32State VexGuestArchState; +#elif defined(VGA_mips64) +# include "libvex_guest_mips64.h" + typedef VexGuestMIPS64State VexGuestArchState; +#else +# error Unknown arch +#endif + +#endif // __PUB_TOOL_GUEST_H + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c index ed46eba566..732835734a 100644 --- a/memcheck/mc_machine.c +++ b/memcheck/mc_machine.c @@ -41,55 +41,12 @@ #include "pub_tool_libcassert.h" #include "pub_tool_libcprint.h" #include "pub_tool_tooliface.h" +#include "pub_tool_guest.h" // VexGuestArchState #include "mc_include.h" -#undef MC_SIZEOF_GUEST_STATE +#define MC_SIZEOF_GUEST_STATE sizeof(VexGuestArchState) -#if defined(VGA_x86) -# include "libvex_guest_x86.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestX86State) -#endif - -#if defined(VGA_amd64) -# include "libvex_guest_amd64.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestAMD64State) -#endif - -#if defined(VGA_ppc32) -# include "libvex_guest_ppc32.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State) -#endif - -#if defined(VGA_ppc64be) || defined(VGA_ppc64le) -# include "libvex_guest_ppc64.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State) -#endif - -#if defined(VGA_s390x) -# include "libvex_guest_s390x.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestS390XState) -#endif - -#if defined(VGA_arm) -# include "libvex_guest_arm.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState) -#endif - -#if defined(VGA_arm64) -# include "libvex_guest_arm64.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestARM64State) -#endif - -#if defined(VGA_mips32) -# include "libvex_guest_mips32.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestMIPS32State) -#endif - -#if defined(VGA_mips64) -# include "libvex_guest_mips64.h" -# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestMIPS64State) -#endif static inline Bool host_is_big_endian ( void ) { UInt x = 0x11223344; -- 2.47.2