[ASan] Use llvm.global_ctors to insert init-order checking calls into ASan runtime.
authorAlexey Samsonov <vonosmas@gmail.com>
Thu, 29 May 2014 00:51:15 +0000 (00:51 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Thu, 29 May 2014 00:51:15 +0000 (00:51 +0000)
commitb18eabd2d88e95746c83a88d76ab31fed1e2903c
treef2991e6c3c582fd58ddfdb29c820c748783abc7d
parent1d4e8baa9c7f9dfc14156a762d2cd0016ceca034
[ASan] Use llvm.global_ctors to insert init-order checking calls into ASan runtime.

Don't assume that dynamically initialized globals are all initialized from
_GLOBAL__<module_name>I_ function. Instead, scan the llvm.global_ctors and
insert poison/unpoison calls to each function there.

Patch by Nico Weber!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209780 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Instrumentation/AddressSanitizer.cpp
test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll