summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform.h2
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc3
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc3
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc3
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_rtl.cc8
-rw-r--r--compiler-rt/test/sanitizer_common/TestCases/corelimit.cc16
6 files changed, 24 insertions, 11 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform.h b/compiler-rt/lib/tsan/rtl/tsan_platform.h
index b1632640a96..35f4a919545 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform.h
+++ b/compiler-rt/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/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
index fbb1733de60..60036f130a5 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
+++ b/compiler-rt/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/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc
index 262a505a537..ae1e8aa2866 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc
+++ b/compiler-rt/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/compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc
index 8b9d20e2bf1..5326ec379ff 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc
+++ b/compiler-rt/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/compiler-rt/lib/tsan/rtl/tsan_rtl.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
index 118e413adb7..0d00630d064 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
+++ b/compiler-rt/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)
diff --git a/compiler-rt/test/sanitizer_common/TestCases/corelimit.cc b/compiler-rt/test/sanitizer_common/TestCases/corelimit.cc
new file mode 100644
index 00000000000..8f54940d04c
--- /dev/null
+++ b/compiler-rt/test/sanitizer_common/TestCases/corelimit.cc
@@ -0,0 +1,16 @@
+// RUN: %clangxx -O0 %s -o %t && %run %t
+// XFAIL: lsan
+
+#include <assert.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+int main() {
+ struct rlimit lim_core;
+ getrlimit(RLIMIT_CORE, &lim_core);
+ void *p;
+ if (sizeof(p) == 8) {
+ assert(0 == lim_core.rlim_max);
+ }
+ return 0;
+}
OpenPOWER on IntegriCloud