summaryrefslogtreecommitdiff
path: root/lib/tsan
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2016-03-09 23:39:40 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2016-03-09 23:39:40 +0000
commit9501121033a49dc54862d0f13c900532729b5002 (patch)
tree461c1254cc7dca639a9a5f80c716001717802070 /lib/tsan
parent9556c37f11feeeee3a43e4467b88d1b2e40f4ba9 (diff)
sanitizer: Fix endianness checks for gcc
Summary: __BIG_ENDIAN__ and __LITTLE_ENDIAN__ are not supported by gcc, which eg. for ubsan Value::getFloatValue will silently fall through to the little endian branch, breaking display of float values by ubsan. Use __BYTE_ORDER__ == __ORDER_BIG/LITTLE_ENDIAN__ as the condition instead, which is supported by both clang and gcc. Noticed while porting ubsan to s390x. Patch by Marcin Koƛcielnicki! Differential Revision: http://reviews.llvm.org/D17660 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@263077 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan')
-rw-r--r--lib/tsan/rtl/tsan_interceptors.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/tsan/rtl/tsan_interceptors.cc b/lib/tsan/rtl/tsan_interceptors.cc
index 76cd740ed..5e541f264 100644
--- a/lib/tsan/rtl/tsan_interceptors.cc
+++ b/lib/tsan/rtl/tsan_interceptors.cc
@@ -87,10 +87,10 @@ struct ucontext_t {
#endif
#if defined(__x86_64__) || defined(__mips__) \
- || (defined(__powerpc64__) && defined(__BIG_ENDIAN__))
+ || (defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
#define PTHREAD_ABI_BASE "GLIBC_2.3.2"
#elif defined(__aarch64__) || (defined(__powerpc64__) \
- && defined(__LITTLE_ENDIAN__))
+ && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
#define PTHREAD_ABI_BASE "GLIBC_2.17"
#endif