tsan: do not call malloc/free in memory access handling routine.
This improves signal-/fork-safety of instrumented programs.
llvm-svn: 158988
diff --git a/compiler-rt/lib/tsan/rtl/tsan_sync.h b/compiler-rt/lib/tsan/rtl/tsan_sync.h
index 516e46b..51989d2 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_sync.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_sync.h
@@ -25,6 +25,9 @@
class StackTrace {
public:
StackTrace();
+ // Initialized the object in "static mode",
+ // in this mode it never calls malloc/free but uses the provided buffer.
+ StackTrace(uptr *buf, uptr cnt);
~StackTrace();
void Reset();
@@ -39,6 +42,7 @@
private:
uptr n_;
uptr *s_;
+ const uptr c_;
StackTrace(const StackTrace&);
void operator = (const StackTrace&);