[PATCH] D152246: [clang][ThreadSafety] Analyze known function pointer values
    Aaron Puchert via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Sun Aug 20 17:09:21 PDT 2023
    
    
  
aaronpuchert added a comment.
In D152246#4484366 <https://reviews.llvm.org/D152246#4484366>, @tbaeder wrote:
> So, the problem with this (type of) analysis is that we don't have a perfect view of the (global) program state, right? The CFG is per-function, and any other function (etc.) might change a function pointer. And we don't even know its initial value. Correct? The CFG-based anaylsis is just not enough to reliably diagnose this sort of problem.
Exactly, the analysis is strictly intraprocedural. So we'll only see any value if initialization/assignment and call are in the same function. And if the value is uniquely determined, the question is why does the function do an indirect call at all? I could imagine this in something like a unit test, but these are not so interesting for static analysis.
So basically the code would need to look like this:
  void f() __attribute__((requires_capability(mu)));
  
  void g() {
    void (*pf)() = f;
    pf();
  }
But why would someone write this instead of a direct call to `f`?
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152246/new/
https://reviews.llvm.org/D152246
    
    
More information about the cfe-commits
mailing list