Make sure globals created by UBSan are not instrumented by ASan.
authorAlexey Samsonov <vonosmas@gmail.com>
Fri, 18 Jul 2014 17:50:06 +0000 (17:50 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Fri, 18 Jul 2014 17:50:06 +0000 (17:50 +0000)
commit6c12414358031407667b75657b9d768080f16409
treefdca701ab7a2c9095e7d95de449b704f5347caed
parent54502402193e5d58a450dd7d8b30c46ae9bbe484
Make sure globals created by UBSan are not instrumented by ASan.

Summary:
This change adds description of globals created by UBSan
instrumentation (UBSan handlers, type descriptors, filenames) to
llvm.asan.globals metadata, effectively "blacklisting" them. This can
dramatically decrease the data section in binaries built with UBSan+ASan,
as UBSan tends to create a lot of handlers, and ASan instrumentation
increases the global size to at least 64 bytes.

Test Plan: clang regression test suite

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits, byoungyoung, kcc

Differential Revision: http://reviews.llvm.org/D4575

llvm-svn: 213392
clang/lib/CodeGen/CGExpr.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/test/CodeGenCXX/catch-undef-behavior.cpp