Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:13:29

0001 
0002 /*--------------------------------------------------------------------*/
0003 /*--- Utilities for inner Valgrind                  libvex_inner.h ---*/
0004 /*--------------------------------------------------------------------*/
0005 
0006 /*
0007    This file is part of Valgrind, a dynamic binary instrumentation
0008    framework.
0009 
0010    Copyright (C) 2017-2017 Philippe Waroquiers
0011       philippe.waroquiers@skynet.be
0012 
0013    This program is free software; you can redistribute it and/or
0014    modify it under the terms of the GNU General Public License as
0015    published by the Free Software Foundation; either version 2 of the
0016    License, or (at your option) any later version.
0017 
0018    This program is distributed in the hope that it will be useful, but
0019    WITHOUT ANY WARRANTY; without even the implied warranty of
0020    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0021    General Public License for more details.
0022 
0023    You should have received a copy of the GNU General Public License
0024    along with this program; if not, see <http://www.gnu.org/licenses/>.
0025 
0026    The GNU General Public License is contained in the file COPYING.
0027 */
0028 
0029 #ifndef __LIBVEX_INNER_H
0030 #define __LIBVEX_INNER_H
0031 
0032 //--------------------------------------------------------------------
0033 // PURPOSE: This header should be imported by every  file in Valgrind
0034 // which needs specific behaviour when running as an "inner" Valgrind.
0035 // Valgrind can self-host itself (i.e. Valgrind can run Valgrind) :
0036 // The outer Valgrind executes the inner Valgrind.
0037 // For more details, see README_DEVELOPPERS.
0038 //--------------------------------------------------------------------
0039 
0040 #include "config.h" 
0041 
0042 // The code of the inner Valgrind (core or tool code) contains client
0043 // requests (e.g. from helgrind.h, memcheck.h, ...) to help the
0044 // outer Valgrind finding (relevant) errors in the inner Valgrind.
0045 // Such client requests should only be compiled in for an inner Valgrind.
0046 // Use the macro INNER_REQUEST to allow a central enabling/disabling
0047 // of these client requests.
0048 #if defined(ENABLE_INNER)
0049 
0050 // By default, the inner Valgrind annotates various actions to help
0051 // the outer tool (memcheck or helgrind).
0052 // Undefine the below to have an inner Valgrind without any annotation.
0053 #define ENABLE_INNER_CLIENT_REQUEST 1
0054 
0055 #if defined(ENABLE_INNER_CLIENT_REQUEST)
0056 #define INNER_REQUEST(__zza)  __zza
0057 #else
0058 #define INNER_REQUEST(__zza)  do {} while (0)
0059 #endif
0060 
0061 #else
0062 
0063 #define INNER_REQUEST(__zza)  do {} while (0)
0064 
0065 #endif
0066 
0067 #endif   // __LIBVEX_INNER_H
0068 
0069 /*--------------------------------------------------------------------*/
0070 /*--- end                                                          ---*/
0071 /*--------------------------------------------------------------------*/