Skip to content

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

Open

Description

@blipper

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);
}

Activity

  1. self-assigned this
    on Apr 26, 2021
  2. MMory commented on Apr 26, 2021

    @MMory
    Member

    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.

  3. pdschubert commented on Jan 6, 2022

    @pdschubert
    Member

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

  4. added
    check for relevanceNeeds check whether this issue is still relevant and if so what to do about it
    on Dec 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

check for relevanceNeeds check whether this issue is still relevant and if so what to do about it

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions