ASan: disabling instrumentation of specific function

Nicholas Wilson via digitalmars-d-ldc digitalmars-d-ldc at puremagic.com
Tue Aug 8 18:56:27 PDT 2017


On Thursday, 3 August 2017 at 20:47:48 UTC, Johan Engelen wrote:
> Hi all,
>   I just implemented blacklisting of functions for the 
> sanitizers' instrumentation via a blacklist file (this is what 
> Clang also provides): 
> https://github.com/ldc-developers/ldc/pull/2261
>
> But I think it is nice if we also provide a way to disable 
> sanitizer instrumentation by adding a UDA to a function. For 
> PGO, back then, I choose to enable/disable profiling 
> instrumentation through a pragma. However, adding our own 
> pragmas is quite invasive and touches frontend code, whereas 
> adding a UDA is easy and nicely compartmentalized.

Well, technically UDA's now touch fronted code, in the form of 
one entry in idgen.d.
I haven't implemented any pragmas, but I'm sure they will be more 
complex.

> Any ideas for a name of the UDA? And where to put it, in 
> ldc.attributes?
> Clang has the no_sanitize_address attribute.

Will blacklisting other sanitisers happen at a future point? if 
so it may make sense to do

// Probably already exists, but w/e
// force the type
enum Sanitizer : byte
{
     Address,
     Thread,
     // Other sanitisers
}
struct blacklist // or struct noSanitize
{
     Sanitizer s;
}

otherwise just

private struct _noSanitizeAddress {};
enum noSanitizeAddress = _noSanitizeAddress();

> Thanks,
>   Johan



More information about the digitalmars-d-ldc mailing list