[UBSan] Implement runtime suppressions (PR25066).

Description

[UBSan] Implement runtime suppressions (PR25066).

Summary:
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:

signed-integer-overflow:file-with-known-overflow.cpp
alignment:function_doing_unaligned_access
vptr:shared_object_with_vptr_failures.so

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.

Limitations:

  1. sometimes suppressions need debug info / symbol table to function properly (although sometimes frontend generates enough info to do the match).
  2. it's only possible to suppress recoverable UB kinds - if you've built the code with -fno-sanitize-recover=undefined, suppressions will not work.
  3. 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

Subscribers: cfe-commits

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

Details

Committed
samsonovDec 18 2015, 11:56 AM
Differential Revision
D15363: [UBSan] Implement runtime suppressions (PR25066).
Parents
rL256017: Remove broken last updated link.
Branches
Unknown
Tags
Unknown