Source level suppression of UBsan finding

Mikhail Maltsev maltsevm@gmail.com
Mon Dec 18 15:12:00 GMT 2017


On Sat, Dec 16, 2017 at 3:28 PM, Jeffrey Walton <noloader@gmail.com> wrote:

> Hi Everyone,
>
> I'm looking for a source-level method to tell UBsan to ignore a
> function that is producing a finding. We are pretty sure it is a false
> positive so we want UBsan to skip analysis of the function.
>
> We want source-level because it is a lot easier for us to make the
> change in one place and document it. Otherwise, a whitelist using a
> separate file will cause a lot of work for us and downstream. Lots of
> build systems will need to be modified to accommodate the recipe
> changes.
>
> With Memory Sanitizer we can do something like:
>
>     #if __has_feature(memory_sanitizer)
>     # define MSAN_AVAILABLE 1
>     #endif
>
>     # ifdef MSAN_AVAILABLE
>     __msan_unpoison(&m_readfds, sizeof(m_readfds));
>     __msan_unpoison(&m_writefds, sizeof(m_writefds));
>     # endif
>
> How can we do similar with UBSan?
>
​There is a function attribute "no_sanitize_undefined"​:
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes


-- 
Regards,
   Mikhail Maltsev



More information about the Gcc-help mailing list