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