diff options
author | Sergey Matveev <earthdok@google.com> | 2013-05-07 14:41:43 +0000 |
---|---|---|
committer | Sergey Matveev <earthdok@google.com> | 2013-05-07 14:41:43 +0000 |
commit | 24323de08fa8850712d56621bff29dbbbd0285a9 (patch) | |
tree | 2ac35bf2be079d42730993b97616e163d5ab4b84 /lib/tsan/tests | |
parent | 2be3a283939d4fc14ad86f6cd8be34b1468f22ba (diff) |
[sanitizer] Move GetThreadStackAndTls from TSan to sanitizer_common.
Move this function to sanitizer_common because LSan uses it too. Also, fix a bug
where the TLS range reported for main thread was off by the size of the thread
descriptor from libc (TSan doesn't care much, but for LSan it's critical).
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@181322 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/tests')
-rw-r--r-- | lib/tsan/tests/unit/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lib/tsan/tests/unit/tsan_platform_test.cc | 64 |
2 files changed, 0 insertions, 65 deletions
diff --git a/lib/tsan/tests/unit/CMakeLists.txt b/lib/tsan/tests/unit/CMakeLists.txt index 52ebdb826..b25a56d8d 100644 --- a/lib/tsan/tests/unit/CMakeLists.txt +++ b/lib/tsan/tests/unit/CMakeLists.txt @@ -3,7 +3,6 @@ set(TSAN_UNIT_TESTS tsan_flags_test.cc tsan_mman_test.cc tsan_mutex_test.cc - tsan_platform_test.cc tsan_shadow_test.cc tsan_stack_test.cc tsan_suppressions_test.cc diff --git a/lib/tsan/tests/unit/tsan_platform_test.cc b/lib/tsan/tests/unit/tsan_platform_test.cc deleted file mode 100644 index 733cc54d3..000000000 --- a/lib/tsan/tests/unit/tsan_platform_test.cc +++ /dev/null @@ -1,64 +0,0 @@ -//===-- tsan_platform_test.cc ---------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file is a part of ThreadSanitizer (TSan), a race detector. -// -//===----------------------------------------------------------------------===// -#include "sanitizer_common/sanitizer_libc.h" -#include "tsan_platform.h" -#include "tsan_rtl.h" -#include "gtest/gtest.h" - -namespace __tsan { - -static void TestThreadInfo(bool main) { - ScopedInRtl in_rtl; - uptr stk_addr = 0; - uptr stk_size = 0; - uptr tls_addr = 0; - uptr tls_size = 0; - GetThreadStackAndTls(main, &stk_addr, &stk_size, &tls_addr, &tls_size); - // Printf("stk=%zx-%zx(%zu)\n", stk_addr, stk_addr + stk_size, stk_size); - // Printf("tls=%zx-%zx(%zu)\n", tls_addr, tls_addr + tls_size, tls_size); - - int stack_var; - EXPECT_NE(stk_addr, (uptr)0); - EXPECT_NE(stk_size, (uptr)0); - EXPECT_GT((uptr)&stack_var, stk_addr); - EXPECT_LT((uptr)&stack_var, stk_addr + stk_size); - - static __thread int thread_var; - EXPECT_NE(tls_addr, (uptr)0); - EXPECT_NE(tls_size, (uptr)0); - EXPECT_GT((uptr)&thread_var, tls_addr); - EXPECT_LT((uptr)&thread_var, tls_addr + tls_size); - - // Ensure that tls and stack do not intersect. - uptr tls_end = tls_addr + tls_size; - EXPECT_TRUE(tls_addr < stk_addr || tls_addr >= stk_addr + stk_size); - EXPECT_TRUE(tls_end < stk_addr || tls_end >= stk_addr + stk_size); - EXPECT_TRUE((tls_addr < stk_addr) == (tls_end < stk_addr)); -} - -static void *WorkerThread(void *arg) { - TestThreadInfo(false); - return 0; -} - -TEST(Platform, ThreadInfoMain) { - TestThreadInfo(true); -} - -TEST(Platform, ThreadInfoWorker) { - pthread_t t; - pthread_create(&t, 0, WorkerThread, 0); - pthread_join(t, 0); -} - -} // namespace __tsan |