1//===-- tsan_stack_trace.h --------------------------------------*- C++ -*-===//
2//
3// This file is distributed under the University of Illinois Open Source
4// License. See LICENSE.TXT for details.
5//
6//===----------------------------------------------------------------------===//
7//
8// This file is a part of ThreadSanitizer (TSan), a race detector.
9//
10//===----------------------------------------------------------------------===//
11#ifndef TSAN_STACK_TRACE_H
12#define TSAN_STACK_TRACE_H
13
14#include "sanitizer_common/sanitizer_stacktrace.h"
15#include "tsan_defs.h"
16
17namespace __tsan {
18
19// StackTrace which calls malloc/free to allocate the buffer for
20// addresses in stack traces.
21struct VarSizeStackTrace : public StackTrace {
22  uptr *trace_buffer;  // Owned.
23
24  VarSizeStackTrace();
25  ~VarSizeStackTrace();
26  void Init(const uptr *pcs, uptr cnt, uptr extra_top_pc = 0);
27
28 private:
29  void ResizeBuffer(uptr new_size);
30
31  VarSizeStackTrace(const VarSizeStackTrace &);
32  void operator=(const VarSizeStackTrace &);
33};
34
35}  // namespace __tsan
36
37#endif  // TSAN_STACK_TRACE_H
38