]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Entangle header files a bit. Specifically, pub_core_basics.h no longer
authorFlorian Krohm <florian@eich-krohm.de>
Mon, 6 Oct 2014 16:41:14 +0000 (16:41 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Mon, 6 Oct 2014 16:41:14 +0000 (16:41 +0000)
includes libvex.h. It isn't needed to successfully compile pub_core_basics.h
standalone and the declarations libvex.h provides aren't used as broadly as
the comment in the code implied.
Move the guest-specific includes and some ifdeffery to the new file
pub_core_guest.h
For the curious reader: The change above avoids a problem when linking the
linux-launcher which previously included libvex.h indirectly. libvex.h also
defines the inline function LibVEX_Alloc which, when emitted, causes the
link step to fail due to unresoled references (as the launcher does not link
against libvex.a). See also BZ #339542.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14600

coregrind/Makefile.am
coregrind/pub_core_basics.h
coregrind/pub_core_guest.h [new file with mode: 0644]
coregrind/pub_core_threadstate.h
coregrind/pub_core_transtab.h

index fe2a03144480130c68a4e61a7aa6414a39222d71..0d5bec9908cf4f6d29d0849f6634122ffa1b09f0 100644 (file)
@@ -170,6 +170,7 @@ noinst_HEADERS = \
        pub_core_errormgr.h     \
        pub_core_execontext.h   \
        pub_core_gdbserver.h    \
+       pub_core_guest.h        \
        pub_core_hashtable.h    \
        pub_core_initimg.h      \
        pub_core_inner.h        \
index 05b3d66099529e4048ebaba0ce65e9a33783d7b5..7ac5a728e68ff4a560e0edaa5ce71d013e2ea727 100644 (file)
 
 #include "pub_tool_basics.h"
 
-/* ---------------------------------------------------------------------
-   Other headers to include
-   ------------------------------------------------------------------ */
-
-// Might as well have the following two in here, their contents are used so
-// broadly (eg. in pub_core_threadstate.h).
-
-#include "libvex.h"
-
-#if defined(VGA_x86)
-#  include "libvex_guest_x86.h"
-#elif defined(VGA_amd64)
-#  include "libvex_guest_amd64.h"
-#elif defined(VGA_ppc32)
-#  include "libvex_guest_ppc32.h"
-#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
-#  include "libvex_guest_ppc64.h"
-#elif defined(VGA_arm)
-#  include "libvex_guest_arm.h"
-#elif defined(VGA_arm64)
-#  include "libvex_guest_arm64.h"
-#elif defined(VGA_s390x)
-#  include "libvex_guest_s390x.h"
-#elif defined(VGA_mips32)
-#  include "libvex_guest_mips32.h"
-#elif defined(VGA_mips64)
-#  include "libvex_guest_mips64.h"
-#else
-#  error Unknown arch
-#endif
-
-
 /* ---------------------------------------------------------------------
    A struct to hold starting values for stack unwinding.
    ------------------------------------------------------------------ */
diff --git a/coregrind/pub_core_guest.h b/coregrind/pub_core_guest.h
new file mode 100644 (file)
index 0000000..3e12d41
--- /dev/null
@@ -0,0 +1,75 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- Provides guest state definition.       pub_core_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_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
+
+#endif   // __PUB_CORE_GUEST_H
+
+/*--------------------------------------------------------------------*/
+/*--- end                                                          ---*/
+/*--------------------------------------------------------------------*/
index bd1bc06ed9f746d7aa8aef9c2f058cb1cfc75be4..2f322597db19be46fb79512e738a7ab0431bff6b 100644 (file)
@@ -42,6 +42,9 @@
 #include "pub_tool_threadstate.h"
 #include "pub_core_libcsetjmp.h"   // VG_MINIMAL_JMP_BUF
 #include "pub_core_vki.h"          // vki_sigset_t
+#include "pub_core_guest.h"        // VexGuestAMD64State etc.
+#include "libvex.h"                // LibVEX_N_SPILL_BYTES
+
 
 /*------------------------------------------------------------*/
 /*--- Types                                                ---*/
@@ -78,28 +81,6 @@ typedef
    VgSchedReturnCode;
 
 
-#if defined(VGA_x86)
-   typedef VexGuestX86State   VexGuestArchState;
-#elif defined(VGA_amd64)
-   typedef VexGuestAMD64State VexGuestArchState;
-#elif defined(VGA_ppc32)
-   typedef VexGuestPPC32State VexGuestArchState;
-#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
-   typedef VexGuestPPC64State VexGuestArchState;
-#elif defined(VGA_arm)
-   typedef VexGuestARMState   VexGuestArchState;
-#elif defined(VGA_arm64)
-   typedef VexGuestARM64State VexGuestArchState;
-#elif defined(VGA_s390x)
-   typedef VexGuestS390XState VexGuestArchState;
-#elif defined(VGA_mips32)
-   typedef VexGuestMIPS32State VexGuestArchState;
-#elif defined(VGA_mips64)
-   typedef VexGuestMIPS64State VexGuestArchState;
-#else
-#  error Unknown architecture
-#endif
-
 /* Forward declarations */
 struct SyscallStatus;
 struct SyscallArgs;
index 79fe5f89885c5eabef5e3b7e08d259a89e73fb30..6f810f84feb9cd424bb0cb98528bb5b3e0306d6a 100644 (file)
@@ -38,6 +38,7 @@
 //--------------------------------------------------------------------
 
 #include "pub_core_transtab_asm.h"
+#include "libvex.h"                   // VexGuestExtents
 
 /* The fast-cache for tt-lookup.  Unused entries are denoted by .guest
    == 1, which is assumed to be a bogus address for all guest code. */