1 2 /*--------------------------------------------------------------------*/ 3 /*--- ExeContexts: long-lived, non-dup'd stack traces. ---*/ 4 /*--- pub_core_execontext.h ---*/ 5 /*--------------------------------------------------------------------*/ 6 7 /* 8 This file is part of Valgrind, a dynamic binary instrumentation 9 framework. 10 11 Copyright (C) 2000-2013 Julian Seward 12 jseward@acm.org 13 14 This program is free software; you can redistribute it and/or 15 modify it under the terms of the GNU General Public License as 16 published by the Free Software Foundation; either version 2 of the 17 License, or (at your option) any later version. 18 19 This program is distributed in the hope that it will be useful, but 20 WITHOUT ANY WARRANTY; without even the implied warranty of 21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22 General Public License for more details. 23 24 You should have received a copy of the GNU General Public License 25 along with this program; if not, write to the Free Software 26 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 27 02111-1307, USA. 28 29 The GNU General Public License is contained in the file COPYING. 30 */ 31 32 #ifndef __PUB_CORE_EXECONTEXT_H 33 #define __PUB_CORE_EXECONTEXT_H 34 35 //-------------------------------------------------------------------- 36 // PURPOSE: This module provides an abstract data type, ExeContext, 37 // which is a stack trace stored in such a way that duplicates are 38 // avoided. This also facilitates fast comparisons if necessary. 39 //-------------------------------------------------------------------- 40 41 #include "pub_tool_execontext.h" 42 43 /* The maximum number of calls we're prepared to save in an ExeContext. */ 44 #define VG_DEEPEST_BACKTRACE 500 45 46 // Print stats (informational only). 47 // If with_stacktraces, outputs all the recorded stacktraces. 48 extern void VG_(print_ExeContext_stats) ( Bool with_stacktraces ); 49 50 // Extract the StackTrace from an ExeContext. 51 // (Minor hack: we use Addr* as the return type instead of StackTrace so 52 // that modules #including this file don't also have to #include 53 // pub_core_stacktrace.h also.) 54 extern 55 /*StackTrace*/Addr* VG_(get_ExeContext_StackTrace) ( ExeContext* e ); 56 57 58 #endif // __PUB_CORE_EXECONTEXT_H 59 60 /*--------------------------------------------------------------------*/ 61 /*--- end ---*/ 62 /*--------------------------------------------------------------------*/ 63