[compiler-rt] Ensure AsanInitFromRtl is called from a static initializer on OS X...
authorKuba Brecka <kuba.brecka@gmail.com>
Fri, 23 Jan 2015 19:29:19 +0000 (19:29 +0000)
committerKuba Brecka <kuba.brecka@gmail.com>
Fri, 23 Jan 2015 19:29:19 +0000 (19:29 +0000)
commit9a36b3e147a0fb0ed087841459730e420a1c30e8
tree6dfdbbe625dbb9a641969cae294e64bebcf55c35
parentba2bcb0da31dd9a329a9da425a1bdc1851839050
[compiler-rt] Ensure AsanInitFromRtl is called from a static initializer on OS X by using ASAN_DYNAMIC=1

The idea is to ensure that the ASan runtime gets initialized early (i.e.
before other initializers/constructors) even when DYLD_INSERT_LIBRARIES
is not used. In that case, the interceptors are not installed (on OS X,
DYLD_INSERT_LIBRARIES is required for interceptors to work), and therefore
ASan gets currently initialized quite late -- from the main executable's
module initializer. The following issues are a consequence of this:

  https://code.google.com/p/address-sanitizer/issues/detail?id=363
  https://code.google.com/p/address-sanitizer/issues/detail?id=357

Both of them are fixed with this patch.

Reviewed at http://reviews.llvm.org/D7117

llvm-svn: 226929
compiler-rt/lib/asan/CMakeLists.txt
compiler-rt/make/platform/clang_darwin.mk
compiler-rt/test/asan/TestCases/Darwin/linked-only.cc [new file with mode: 0644]
compiler-rt/test/asan/TestCases/Darwin/mixing-global-constructors.cc [new file with mode: 0644]