|
From: <sv...@va...> - 2014-10-06 16:41:22
|
Author: florian
Date: Mon Oct 6 17:41:14 2014
New Revision: 14600
Log:
Entangle header files a bit. Specifically, pub_core_basics.h no longer
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.
Added:
trunk/coregrind/pub_core_guest.h
Modified:
trunk/coregrind/Makefile.am
trunk/coregrind/pub_core_basics.h
trunk/coregrind/pub_core_threadstate.h
trunk/coregrind/pub_core_transtab.h
Modified: trunk/coregrind/Makefile.am
==============================================================================
--- trunk/coregrind/Makefile.am (original)
+++ trunk/coregrind/Makefile.am Mon Oct 6 17:41:14 2014
@@ -170,6 +170,7 @@
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 \
Modified: trunk/coregrind/pub_core_basics.h
==============================================================================
--- trunk/coregrind/pub_core_basics.h (original)
+++ trunk/coregrind/pub_core_basics.h Mon Oct 6 17:41:14 2014
@@ -40,38 +40,6 @@
#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.
------------------------------------------------------------------ */
Added: trunk/coregrind/pub_core_guest.h
==============================================================================
--- trunk/coregrind/pub_core_guest.h (added)
+++ trunk/coregrind/pub_core_guest.h Mon Oct 6 17:41:14 2014
@@ -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
+ in...@op...
+
+ 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 ---*/
+/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/pub_core_threadstate.h
==============================================================================
--- trunk/coregrind/pub_core_threadstate.h (original)
+++ trunk/coregrind/pub_core_threadstate.h Mon Oct 6 17:41:14 2014
@@ -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 @@
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;
Modified: trunk/coregrind/pub_core_transtab.h
==============================================================================
--- trunk/coregrind/pub_core_transtab.h (original)
+++ trunk/coregrind/pub_core_transtab.h Mon Oct 6 17:41:14 2014
@@ -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. */
|