yapall
yapall copied to clipboard
A precise and scalable pointer analysis for LLVM, written in Ascent
``` yapall> error: Opaque pointers are only supported in -opaque-pointers mode (Producer: 'LLVM15.0.7' Reader: 'LLVM 14.0.6') yapall> error: test failed, to rerun pass `--test pointer` ``` (See https://github.com/GaloisInc/yapall/actions/runs/6029699696/job/16359835202?pr=47#step:5:950 or https://github.com/GaloisInc/yapall/actions/runs/6030069826/job/16361088971?pr=50)...
Right now, a pointer stored to a single, concrete field of a struct or index in an array will be retrieved in a load from *any* field or index. We...
On the Irving example, 65% of GEPs have all-constant indices. On Jackson, it's 93%. With information about type sizes, these GEPs can be translated into byte-offsets. Given information about allocation...
... as a way to achieve soundness without writing many signatures. [Crux](https://crux.galois.com/) does this, we can take inspiration from them.
https://github.com/GaloisInc/yapall/blob/282ac3e0e65eff3c3f9324e1a1aeab6f4c26b4da/tests/pointer.rs#L1652-L1665
https://github.com/GaloisInc/yapall/blob/282ac3e0e65eff3c3f9324e1a1aeab6f4c26b4da/tests/pointer.rs#L992-L995
https://github.com/GaloisInc/yapall/blob/282ac3e0e65eff3c3f9324e1a1aeab6f4c26b4da/tests/pointer.rs#L1552-L1555
The `yapall` binary should (by default) export analysis results in CSV format using the [`csv` crate](https://docs.rs/csv/latest/csv/).