iAI icon indicating copy to clipboard operation
iAI copied to clipboard

Add/implement isReachable()/pathsTo() for control flow

Open blipper opened this issue 3 years ago • 2 comments

Is your feature request related to a problem? Please describe. I am writing a plugin to determine if a set of constant values can propagate to a certain function with a parameter that is tagged with an LLVM IR custom attribute. I want a way to check from the entry point (or really any function) if there is a path that function to the target function.

This will allow me to select a set of paths so that I can only propogate constants along the paths to the target function

Describe the solution you'd like Something that does this?

Describe alternatives you've considered Maybe a backward analysis to the entry points but still need paths to get there.

Additional context Example code

void crypt(int attribute((annotate("crypto_iv_size")) iv_size) { }

int main() { const int kIVSize = 8; crypt(kIVSize); }

blipper avatar Apr 17 '21 18:04 blipper

If I understand your request right this functionality should already be present: run the analysis that propagates your values of interest and then use resultsAt() at the location of interest and check whether the returned set of data-flow fact contains the LLVM values of interest.

MMory avatar Apr 26 '21 11:04 MMory

pathTo functionalities that allow for path-sensitive data-flow analysis have been implemented. We will merge them to open-source PhASAR soon.

pdschubert avatar Jan 06 '22 14:01 pdschubert