[UBSan] Implement runtime suppressions (PR25066).
Add the ability to suppress UBSan reports for files/functions/modules
at runtime. The user can now pass UBSAN_OPTIONS=suppressions=supp.txt
with the contents of the form:
Suppression categories match the arguments passed to -fsanitize=
flag (although, see below). There is no overhead if suppressions are
not provided. Otherwise there is extra overhead for symbolization.
- sometimes suppressions need debug info / symbol table to function properly (although sometimes frontend generates enough info to do the match).
- it's only possible to suppress recoverable UB kinds - if you've built the code with -fno-sanitize-recover=undefined, suppressions will not work.
- categories are fine-grained check kinds, not groups like "undefined" or "integer", so you can't write "undefined:file_with_ub.cc".
Reviewers: rsmith, kcc
Differential Revision: http://reviews.llvm.org/D15363