summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2014-08-15 19:53:51 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2014-08-15 19:53:51 +0000
commitcbaa006aa2428a35c050c28fd5891a409e9c2b5e (patch)
tree72bde85ce8c8db13480592809f964fdc5f6794ad /lib
parentb9cdf18e6ad52e7d4c1193a4222fb6d9fa7272a2 (diff)
[TSan] Initialize flags as early as possible. Disables back coredump, accidentally enabled in r215479. Add a test.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@215763 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/tsan/rtl/tsan_platform.h2
-rw-r--r--lib/tsan/rtl/tsan_platform_linux.cc3
-rw-r--r--lib/tsan/rtl/tsan_platform_mac.cc3
-rw-r--r--lib/tsan/rtl/tsan_platform_windows.cc3
-rw-r--r--lib/tsan/rtl/tsan_rtl.cc8
5 files changed, 8 insertions, 11 deletions
diff --git a/lib/tsan/rtl/tsan_platform.h b/lib/tsan/rtl/tsan_platform.h
index b1632640a..35f4a9195 100644
--- a/lib/tsan/rtl/tsan_platform.h
+++ b/lib/tsan/rtl/tsan_platform.h
@@ -128,7 +128,7 @@ void FlushShadowMemory();
void WriteMemoryProfile(char *buf, uptr buf_size, uptr nthread, uptr nlive);
uptr GetRSS();
-const char *InitializePlatform();
+void InitializePlatform();
void FinalizePlatform();
// The additional page is to catch shadow stack overflow as paging fault.
diff --git a/lib/tsan/rtl/tsan_platform_linux.cc b/lib/tsan/rtl/tsan_platform_linux.cc
index fbb1733de..60036f130 100644
--- a/lib/tsan/rtl/tsan_platform_linux.cc
+++ b/lib/tsan/rtl/tsan_platform_linux.cc
@@ -332,7 +332,7 @@ static void InitDataSeg() {
#endif // #ifndef TSAN_GO
-const char *InitializePlatform() {
+void InitializePlatform() {
DisableCoreDumperIfNecessary();
// Go maps shadow memory lazily and works fine with limited address space.
@@ -369,7 +369,6 @@ const char *InitializePlatform() {
InitTlsSize();
InitDataSeg();
#endif
- return GetEnv(kTsanOptionsEnv);
}
bool IsGlobalVar(uptr addr) {
diff --git a/lib/tsan/rtl/tsan_platform_mac.cc b/lib/tsan/rtl/tsan_platform_mac.cc
index 262a505a5..ae1e8aa28 100644
--- a/lib/tsan/rtl/tsan_platform_mac.cc
+++ b/lib/tsan/rtl/tsan_platform_mac.cc
@@ -73,9 +73,8 @@ void InitializeShadowMemory() {
}
#endif
-const char *InitializePlatform() {
+void InitializePlatform() {
DisableCoreDumperIfNecessary();
- return GetEnv(kTsanOptionsEnv);
}
void FinalizePlatform() {
diff --git a/lib/tsan/rtl/tsan_platform_windows.cc b/lib/tsan/rtl/tsan_platform_windows.cc
index 8b9d20e2b..5326ec379 100644
--- a/lib/tsan/rtl/tsan_platform_windows.cc
+++ b/lib/tsan/rtl/tsan_platform_windows.cc
@@ -35,8 +35,7 @@ uptr GetRSS() {
return 0;
}
-const char *InitializePlatform() {
- return GetEnv(kTsanOptionsEnv);
+void InitializePlatform() {
}
void FinalizePlatform() {
diff --git a/lib/tsan/rtl/tsan_rtl.cc b/lib/tsan/rtl/tsan_rtl.cc
index 118e413ad..0d00630d0 100644
--- a/lib/tsan/rtl/tsan_rtl.cc
+++ b/lib/tsan/rtl/tsan_rtl.cc
@@ -289,18 +289,19 @@ void Initialize(ThreadState *thr) {
// Install tool-specific callbacks in sanitizer_common.
SetCheckFailedCallback(TsanCheckFailed);
+ ctx = new(ctx_placeholder) Context;
+ const char *options = GetEnv(kTsanOptionsEnv);
+ InitializeFlags(&ctx->flags, options);
#ifndef TSAN_GO
InitializeAllocator();
#endif
InitializeInterceptors();
- const char *env = InitializePlatform();
+ InitializePlatform();
InitializeMutex();
InitializeDynamicAnnotations();
- ctx = new(ctx_placeholder) Context;
#ifndef TSAN_GO
InitializeShadowMemory();
#endif
- InitializeFlags(&ctx->flags, env);
// Setup correct file descriptor for error reports.
__sanitizer_set_report_path(flags()->log_path);
InitializeSuppressions();
@@ -336,7 +337,6 @@ void Initialize(ThreadState *thr) {
}
int Finalize(ThreadState *thr) {
- Context *ctx = __tsan::ctx;
bool failed = false;
if (flags()->atexit_sleep_ms > 0 && ThreadCount(thr) > 1)