[PATCH] asan/tsan/msan: properly intercept pthread_cond_xxx
Dmitry Vyukov
dvyukov at google.com
Mon Apr 7 09:08:43 PDT 2014
Hi chandlerc, kcc, samsonov, eugenis, glider,
NPTL implementation of pthread_cond has 2 versions -- 2.2.5 and 2.3.2. pthread_cond_t has different sizes in these versions, so we can't simply always call real 2.3.2 functions. Previously we struggled with this by means of various hacks (always call new version; allocate a satellite object large enough for new version; added flag that enables/disables the previous behavior; and probably other options).
This is an attempt to solve this problem once and for all. The patch adds 2 versions of interceptors, so that we know when to call old real functions and when to call new real function.
The main downside is that linking of shared libraries with xsan runtime now requires version script. This mode (linking of xsan runtime into shared libs) is generally unsupported, but we use it in some custom setups (e.g. build an instrumented shared C++ library and load it into Python/R/Java process). That usages will require the provided version script.
Better suggestions are welcome.
http://reviews.llvm.org/D3309
Files:
cmake/Modules/SanitizerUtils.cmake
lib/tsan/dd/dd_interceptors.cc
lib/tsan/Makefile.old
lib/tsan/CMakeLists.txt
lib/tsan/tests/unit/tsan_flags_test.cc
lib/msan/CMakeLists.txt
lib/sanitizer_common/sanitizer_flags.cc
lib/sanitizer_common/sanitizer_internal_defs.h
lib/sanitizer_common/sanitizer_common_interceptors.inc
lib/sanitizer_common/sanitizer_flags.h
lib/asan/CMakeLists.txt
lib/interception/interception_linux.h
lib/interception/interception.h
test/tsan/runtime_in_shared_lib.cc
test/tsan/test_output.sh
lib/tsan/check_runtime_library.sh
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3309.1.patch
Type: text/x-patch
Size: 25556 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140407/a1a7c2a6/attachment.bin>
More information about the llvm-commits
mailing list