yawanng added a comment.

In https://reviews.llvm.org/D35372#810525, @alexfh wrote:

> In https://reviews.llvm.org/D35372#810457, @alexfh wrote:
>
> > I have deja vu ;)
> >
> > Should we make a single check for all CLOEXEC and friends with a single 
> > configurable list of (function name, flag name) pairs?
>
>
> Okay, it may be a bit more complicated than just a list of function name -> 
> flag name mappings, since we have to take in account the argument position as 
> well. We also might want to check the signature to a certain degree to avoid 
> matching wrong function. There are multiple approaches possible to rule out 
> incorrect functions with the same name:
>
> 1. just look at the number of arguments - this might well be enough, since 
> for a certain codebase I wouldn't expect multiple `memfd_create`'s etc. It 
> would allow user configurability of the function -> flag mappings.
> 2. encode the types of arguments as strings and have a small dictionary of 
> matchers in the check (e.g. `"const char*" -> 
> pointerType(pointee(isAnyCharacter()))`) - that will be more precise and 
> still quite flexible and also allow user-configurable function -> flag 
> mappings. But this mechanism may be an overkill, if we don't anticipate 
> user-configurable functions. I don't know how complex the resulting code 
> turns out to be.
> 3. Add a matcher for each function statically. This would obviously allow for 
> arbitrarily complex matchers, but won't be extensible via configuration 
> options.


Great idea. But we may prefer separate checks, because each API can be 
controlled independently. Moreover, there are not that many such system 
functions and hopefully we have listed most of them already :-)  To reduce the 
code duplication, what about a base class for all of them and try to share as 
much code as possible?


https://reviews.llvm.org/D35372



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to