blob: b7122f1e674f98b4d999b00ab8cd8dd4bd8e3153 [file] [log] [blame]
njnd01fef72005-03-25 23:35:48 +00001/*--------------------------------------------------------------------*/
2/*--- Stack traces: getting, traversing, printing. ---*/
3/*--- pub_core_stacktrace.h ---*/
4/*--------------------------------------------------------------------*/
5
6/*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
9
Elliott Hughesed398002017-06-21 14:41:24 -070010 Copyright (C) 2000-2017 Julian Seward
njnd01fef72005-03-25 23:35:48 +000011 jseward@acm.org
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_STACKTRACE_H
32#define __PUB_CORE_STACKTRACE_H
33
34//--------------------------------------------------------------------
35// PURPOSE: This module deals with stack traces: getting them,
36// traversing them, and printing them.
37//--------------------------------------------------------------------
38
39#include "pub_tool_stacktrace.h"
florian535fb1b2013-09-15 13:54:34 +000040#include "pub_core_basics.h" // UnwindStartRegs
njnd01fef72005-03-25 23:35:48 +000041
sewardjb8b79ad2008-03-03 01:35:41 +000042// Variant that gives a little more control over the stack-walking
43// (this is the "worker" function that actually does the walking).
sewardjdfbaa222006-01-18 04:25:20 +000044// If you know what the thread ID for this stack is, send that
45// as the first parameter, else send zero. This helps generate
46// better stack traces on ppc64-linux and has no effect on other
47// platforms.
sewardjb8b79ad2008-03-03 01:35:41 +000048//
49// The acquired IP values are placed in
50// ips[0 .. min(n_ips,return_value)]. If sps and fps are non-NULL,
51// the corresponding frame-pointer and stack-pointer values for each
52// frame are stored there.
53
54UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
55 /*OUT*/Addr* ips, UInt n_ips,
56 /*OUT*/Addr* sps, /*OUT*/Addr* fps,
florian518850b2014-10-22 22:25:30 +000057 const UnwindStartRegs* startRegs,
sewardj59570ff2010-01-01 11:59:33 +000058 Addr fp_max_orig );
njnd01fef72005-03-25 23:35:48 +000059
60#endif // __PUB_CORE_STACKTRACE_H
61
62/*--------------------------------------------------------------------*/
63/*--- end ---*/
64/*--------------------------------------------------------------------*/