1 2/*--------------------------------------------------------------------*/ 3/*--- Utilities for inner Valgrind pub_core_inner.h ---*/ 4/*--------------------------------------------------------------------*/ 5 6/* 7 This file is part of Valgrind, a dynamic binary instrumentation 8 framework. 9 10 Copyright (C) 2012-2013 Philippe Waroquiers 11 philippe.waroquiers@skynet.be 12 13 This program is free software; you can redistribute it and/or 14 modify it under the terms of the GNU General Public License as 15 published by the Free Software Foundation; either version 2 of the 16 License, or (at your option) any later version. 17 18 This program is distributed in the hope that it will be useful, but 19 WITHOUT ANY WARRANTY; without even the implied warranty of 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 General Public License for more details. 22 23 You should have received a copy of the GNU General Public License 24 along with this program; if not, write to the Free Software 25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26 02111-1307, USA. 27 28 The GNU General Public License is contained in the file COPYING. 29*/ 30 31#ifndef __PUB_CORE_INNER_H 32#define __PUB_CORE_INNER_H 33 34//-------------------------------------------------------------------- 35// PURPOSE: This header should be imported by every file in Valgrind 36// which needs specific behaviour when running as an "inner" Valgrind. 37// Valgrind can self-host itself (i.e. Valgrind can run Valgrind) : 38// The outer Valgrind executes the inner Valgrind. 39// For more details, see README_DEVELOPPERS. 40//-------------------------------------------------------------------- 41 42#include "config.h" 43 44// The code of the inner Valgrind (core or tool code) contains client 45// requests (e.g. from helgrind.h, memcheck.h, ...) to help the 46// outer Valgrind finding (relevant) errors in the inner Valgrind. 47// Such client requests should only be compiled in for an inner Valgrind. 48// Use the macro INNER_REQUEST to allow a central enabling/disabling 49// of these client requests. 50#if defined(ENABLE_INNER) 51 52// By default, the client requests 53// undefine the below to have an inner Valgrind without any annotation. 54#define ENABLE_INNER_CLIENT_REQUEST 1 55 56#if defined(ENABLE_INNER_CLIENT_REQUEST) 57#define INNER_REQUEST(__zza) __zza 58#else 59#define INNER_REQUEST(__zza) do {} while (0) 60#endif 61 62#else 63 64#define INNER_REQUEST(__zza) do {} while (0) 65 66#endif 67 68#endif // __PUB_CORE_INNER_H 69 70/*--------------------------------------------------------------------*/ 71/*--- end ---*/ 72/*--------------------------------------------------------------------*/ 73