Auto merge of #95241 - Gankra:cleaned-provenance, r=workingjubilee
Strict Provenance MVP This patch series examines the question: how bad would it be if we adopted an extremely strict pointer provenance model that completely banished all int<->ptr casts. The key insight to making this approach even *vaguely* pallatable is the ptr.with_addr(addr) -> ptr function, which takes a pointer and an address and creates a new pointer with that address and the provenance of the input pointer. In this way the "chain of custody" is completely and dynamically restored, making the model suitable even for dynamic checkers like CHERI and Miri. This is not a formal model, but lots of the docs discussing the model have been updated to try to the *concept* of this design in the hopes that it can be iterated on. See #95228
This commit is contained in:
commit
e50ff9b452
39 changed files with 621 additions and 126 deletions
|
@ -6,6 +6,7 @@
|
|||
#![feature(once_cell)]
|
||||
#![feature(nll)]
|
||||
#![feature(associated_type_bounds)]
|
||||
#![feature(strict_provenance)]
|
||||
#![recursion_limit = "256"]
|
||||
#![allow(rustc::potential_query_instability)]
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ impl<'a, 'tcx: 'a> MonoItemExt<'a, 'tcx> for MonoItem<'tcx> {
|
|||
fn to_raw_string(&self) -> String {
|
||||
match *self {
|
||||
MonoItem::Fn(instance) => {
|
||||
format!("Fn({:?}, {})", instance.def, instance.substs.as_ptr() as usize)
|
||||
format!("Fn({:?}, {})", instance.def, instance.substs.as_ptr().addr())
|
||||
}
|
||||
MonoItem::Static(id) => format!("Static({:?})", id),
|
||||
MonoItem::GlobalAsm(id) => format!("GlobalAsm({:?})", id),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue