[cfe-dev] clang attributes to disable asan/tsan/msan
devlists at shadowlab.org
Mon Feb 18 05:45:20 PST 2013
Le 18 févr. 2013 à 14:31, Kostya Serebryany <kcc at google.com> a écrit :
> Clang has two attributes to disable bug detection tools in a given function:
> __attribute__((no_thread_safety_analysis)) disables clang's *static* thread-safety analysis. (http://clang.llvm.org/docs/LanguageExtensions.html#thread-safety-annotation-checking)
> __attribute__((no_address_safety_analysis)) disables AddressSanitizer (*dynamic* analysis)
> Now we need two more attributes to disable
> ThreadSanitizer (http://clang.llvm.org/docs/ThreadSanitizer.html)
> and MemorySanitizer (http://clang.llvm.org/docs/MemorySanitizer.html)
> For MemorySanitizer I propose __attribute__((no_uninitialized_checks))
> Objections? Better naming suggestion?
> Maybe __attribute__((no_memory_sanitizer))?
> (We deliberately named no-asan attribute "no_address_safety_analysis" w/o mentioning asan
> in the name to make this attribute usable for other tools, e.g. SAFECode. So,
> we may not want to tie the no-msan attribute to msan)
> For ThreadSanitizer the question is a bit trickier.
> We can reuse __attribute__((no_thread_safety_analysis)) which makes sense
> because it already means a similar thing.
> OTOH, most of the current uses of no_thread_safety_analysis I know about
> are there because of the limitations of clang's static analysis.
> And we don't need to disable ThreadSanitizer for the majority of those cases,
> which means we may better use another attribute to disable ThreadSanitizer checking.
> How to name it?
Just a though, but instead of creating new attribute for each analyze, wouldn't it be possible to define a single parameterized attribute which would take parameters similar to the one passed to the --sanitize option ?
__attribute__((safety_analysis("memory", "thread", …)))
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev