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

Intrinsics Audit #727

Closed
adpaco-aws opened this issue Jan 5, 2022 · 8 comments
Closed

Intrinsics Audit #727

adpaco-aws opened this issue Jan 5, 2022 · 8 comments
Assignees
Labels
[F] Soundness Kani failed to detect an issue
Milestone

Comments

@adpaco-aws
Copy link
Contributor

adpaco-aws commented Jan 5, 2022

The intrinsics list below is based on the table recently published in #714.

The goal is for each intrinsics to:

  1. Identify what is needed to claim full support.
  2. Implement support for it if possible.

Note: We are now focusing on fixing issues with intrinsics that we already support. New intrinsics will be added on demand.

This issue will keep track of the work done on intrinsics (a check on intrinsics will mark it as "done") and link other issues related to the implementation/rework/cleanup of intrinsics.

@adpaco-aws
Copy link
Contributor Author

Added abort (#734) and transmute (missing case) which should be handled as non returning intrinsics.

@adpaco-aws
Copy link
Contributor Author

adpaco-aws commented Jan 11, 2022

Added abort (#734) and transmute (missing case) which should be handled as non returning intrinsics.

These cases were fixed in #736, marking abort as done (transmute still needs auditing for the general case).

@adpaco-aws
Copy link
Contributor Author

Added assert_inhabited. Marked assert_inhabited, assert_uninit_valid and assert_zero_valid after merging #742

@adpaco-aws
Copy link
Contributor Author

Created #788 for fast math intrinsics. A first attempt was made in this branch but there are some issues with this approach that require some guidance from CBMC experts.

@adpaco-aws
Copy link
Contributor Author

Updated to reflect status after merging #804

@adpaco-aws
Copy link
Contributor Author

Marked volatile_store as done since its audit was completed in #794

@adpaco-aws
Copy link
Contributor Author

Basically, the remaining intrinsics to be audited can be classified into 3 groups:

  1. wrapping_<op>, unchecked_op and <op>_with_overflow, which were reviewed and tested in Fix spurious overflow counter examples. (#558) #647
  2. Math-related intrinsics that just need a single test.
  3. Others (notably, volatile and pointer-related ones)
    The plan is to audit (1) first, then focus on (3) and leave (2) for the last ones.

@adpaco-aws
Copy link
Contributor Author

The audit has been completed and all intrinsics in the list have been reviewed.

There is a small amount of remaining cleanup work to be done which is going to be tracked in the following issues:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[F] Soundness Kani failed to detect an issue
Projects
None yet
Development

No branches or pull requests

3 participants