-
Notifications
You must be signed in to change notification settings - Fork 440
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flow sensitivity does not work for indirect function call resolution #1622
Comments
Hi, I will take a look. |
@TrivikramAT could you shorten your example to make it as small as possible to reproduce the issue? |
Hello,
The issue is that in the SVFG, there is a value flow path from: |
We have just tested your case. This is no problem with the current flow-sensitive but context-insensitive SVFG, but you may need a context-sensitive analysis/traversal to distinguish the two call paths |
I just want to clarify.... |
context-sensitive traversal on the SVFG |
In this small toy program, I am trying to track the sources for a variable in an indirectly-called function.
Ideally, in function f1, the only source for "pS->a" must be the statement
S.a = -1;
. Similarly, the source for "pS->b" must beS.b = 20;
But when I use FlowSensitive pointer analysis and generate the SVFG, I can see that flow sensitivity is not maintained for the function pointer. Therefore, the sources for the above two variables are calculated wrongly.
Sources for the statement
if(pS->a)
-->S.a = -1; and S.a = 10;
Sources for the statement
if(pS->b)
-->S.b = -2; and S.b = 20;
Could you let me know if there are any APIs in SVF that can support this functionality correctly? I'm currently using the following APIs for pointer analysis:
The text was updated successfully, but these errors were encountered: