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. 48extern 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.) 54extern 55/*StackTrace*/Addr* VG_(get_ExeContext_StackTrace) ( ExeContext* e ); 56 57 58#endif // __PUB_CORE_EXECONTEXT_H 59 60/*--------------------------------------------------------------------*/ 61/*--- end ---*/ 62/*--------------------------------------------------------------------*/ 63