summaryrefslogtreecommitdiff
path: root/test/sanitizer_common/TestCases/Linux/sem_init_glibc.cc
AgeCommit message (Collapse)Author
2017-09-25[mips][compiler-rt] Disable sem_init_glibc.cc for MIPS64.Simon Dardis
This test can't pass on MIPS64 due to the lack of versioned interceptors for asan and company. The interceptors bind to the earlier version of sem_init rather than the latest version. For MIPS64el this causes an accidental pass while MIPS64 big endian fails due reading back a different 32bit word to what sem_init wrote when the test is corrected to use 64bit atomics. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@314100 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-14Revert "[mips] Fix sem_init_glibc test for MIPS."Simon Dardis
The commit did not fix the failing test and instead exposed an inconsistency between lsan and (t|m|a)san. I'm reverting the patch as it causes more failures and the original patch had a '||' instead of '&&', which meant that an N32 build of test would have be incorrect w.r.t. __HAVE_64B_ATOMICS for glibc. This reverts commit r313248. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@313291 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-14[mips] Fix sem_init_glibc test for MIPS.Simon Dardis
glibc changed the implementation of semaphores for glibc 2.21 requiring some target specific changes for this compiler-rt test. Modify the test to cope with MIPS64 and do some future/correctness work by tying the define for MIPS64 to exactly the define of __HAVE_64B_ATOMICS in glibc. Contributions from Nitesh Jain. Reviewers: eugenis Differential Revision: https://reviews.llvm.org/D37829 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@313248 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-09[ubsan] Enable UBsan in sanitizer_common testsVitaly Buka
Summary: Failing tests just marked as UNSUPPORTED or XFAIL. Some of them can be easily supported, but I'll do this in separate patches. Reviewers: eugenis, alekseyshl Subscribers: srhines, kubamracek, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D37630 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@312860 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25[PowerPC] Fix test case sem_init_glibc.cc for powerpc64beBill Seurer
This test case fails on powerpc64be with older glibcs because of the glibc version test. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303863 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-03[lsan] Disable sem_init_glibc.cc testcase for LSan x86.Maxim Ostapenko
This test relies on sanitizer common interceptor to pick the oldest version of sem_init function from Glibc. But LSan actually doesn't intercept sem_init, thus the new implementation is called that causes test failure. Disable it for LSan x86, the proper fix would require to check Glibc version at runtime and adjust GET_SEM_VALUE(V) accordingly. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@294001 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-05[sanitizers] Update sanitizers test to better match glibc internalsDiana Picus
Reapply 282061. One of the tests relying on sem_t's layout gets the wrong value for versions of glibc newer than 2.21 on platforms that don't have 64-bit atomics (e.g. ARM). This commit fixes the test to work with: * versions of glibc >= 2.21 on platforms with 64-bit atomics: unchanged * versions of glibc >= 2.21 on platforms without 64-bit atomics: the semaphore value is shifted by SEM_VALUE_SHIFT (which is set to 1 in glibc's internal headers) * versions of glibc < 2.21: unchanged The logic is complicated a bit by the fact that the sanitizers always pick the oldest version of the symbol available in glibc, which creates discrepancies between old platforms which contain several versions od the sem_init symbol, and newer platforms which contain only one. See the glibc 2.23 sources: * sysdeps/nptl/internaltypes.h (struct new_sem for glibc >= 2.21 and struct old_sem for glibc < 2.21) * nptl/sem_getvalue.c This was uncovered on one of the new buildbots that we are trying to move to production. Differential Revision: https://reviews.llvm.org/D24766 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@283299 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-21Revert "[sanitizers] Update sanitizers test to better match glibc internals"Diana Picus
This reverts commit r282061 because it broke the clang-cuda-build bot. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@282064 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-21[sanitizers] Update sanitizers test to better match glibc internalsDiana Picus
One of the tests relying on sem_t's layout gets the wrong value for versions of glibc newer than 2.21 on platforms that don't have 64-bit atomics (e.g. ARM). This commit fixes the test to work with: * versions of glibc >= 2.21 on platforms with 64-bit atomics: unchanged * versions of glibc >= 2.21 on platforms without 64-bit atomics: the semaphore value is shifted by SEM_VALUE_SHIFT (which is set to 1 in glibc's internal headers) * versions of glibc < 2.21: unchanged See the glibc 2.23 sources: * sysdeps/nptl/internaltypes.h (struct new_sem for glibc >= 2.21 and struct old_sem for glibc < 2.21) * nptl/sem_getvalue.c This was uncovered on one of the new buildbots that we are trying to move to production. Differential Revision: https://reviews.llvm.org/D24766 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@282061 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-07[sanitizer] Fix sem_init_glibc.cc test on __HAVE_64B_ATOMIC arches.Evgeniy Stepanov
glibc can use one of 2 layouts for semaphores: architectures that don't HAVE_64B_ATOMIC use an uint32_t field with semaphore value, then a private field, then a waiting thread count field - this is the layout currently assumed by the test. However, HAVE_64B_ATOMIC arches use a fused uint64_t field that contains the value in low bits and waiting thread count in high bits, followed by a private field. This resulted in taking private field from the wrong offset on 64-bit atomic platforms (the test still passed, but didn't actually test the private field). On big-endian platforms, this resulted in a fail, since the first 4 bytes overlay the thread count field, and not the value field. Found while porting ASan to s390x. Patch by Marcin Koƛcielnicki. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@265715 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12[asan] Zero initialize sem_t in sem_init.Evgeniy Stepanov
Old version of sem_init (GLIBC_2.0) fails to initialize parts of sem_t that are used in sem_timedwait. This is fixed in GLIBC_2.1, but since ASan interceptors downgrade sem_* to the oldest available version, this can introduce bugs that are only present in sanitized build. Workaround by zero-initializing sem_t in sem_init. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@250113 91177308-0d34-0410-b5e6-96231b3b80d8