Skip to content
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

Symbolically propagate assertions inside a basic block #266

Closed
wants to merge 11 commits into from

Conversation

elazarg
Copy link
Collaborator

@elazarg elazarg commented Sep 24, 2021

This is not going to be merged soon (if ever), it's just a demonstration of #258.

Assertion constraints are propagated backwards inside each basic block, with the ultimate goal of putting them at the start of the block. If this will be achieved, the checking phase will only involve checking them, and the analysis phase will never see them (unless --assume-assert is on).

In the process, many assertions (60% on average) are simply resolved, and many more can be resolved with more sophisticated propagation - for example, tracking cells as if they were registers, or using general expression instead of only registers and constants.

Ideally we'll simply use a constraint language instead of ebpf-specific assertions, and then implement symbolic simplification and join operations, but that would be even a larger change.

@elazarg elazarg marked this pull request as draft September 24, 2021 11:46
Signed-off-by: Elazar Gershuni <[email protected]>
Signed-off-by: Elazar Gershuni <[email protected]>
Signed-off-by: Elazar Gershuni <[email protected]>
@elazarg elazarg closed this Oct 12, 2021
@elazarg elazarg deleted the assertions-rearrange-1 branch October 12, 2021 15:29
@elazarg elazarg restored the assertions-rearrange-1 branch October 12, 2021 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant