From b18eabd2d88e95746c83a88d76ab31fed1e2903c Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Thu, 29 May 2014 00:51:15 +0000 Subject: [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__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 --- .../Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test/Instrumentation') diff --git a/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll b/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll index 1d00cfacaf..05e18b5a01 100644 --- a/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll +++ b/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll @@ -23,6 +23,8 @@ entry: ret void } +@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] + define internal void @_GLOBAL__I_a() sanitize_address section ".text.startup" { entry: call void @__cxx_global_var_init() -- cgit v1.2.3