canonicalize alloc ID before calling tag_static_base_pointer
This commit is contained in:
parent
5da393970d
commit
01d9329347
2 changed files with 4 additions and 1 deletions
|
@ -253,6 +253,8 @@ pub trait Machine<'mir, 'tcx>: Sized {
|
|||
/// Return the "base" tag for the given *static* allocation: the one that is used for direct
|
||||
/// accesses to this static/const/fn allocation. If `id` is not a static allocation,
|
||||
/// this will return an unusable tag (i.e., accesses will be UB)!
|
||||
///
|
||||
/// Expects `id` to be already canonical, if needed.
|
||||
fn tag_static_base_pointer(memory_extra: &Self::MemoryExtra, id: AllocId) -> Self::PointerTag;
|
||||
|
||||
/// Executes a retagging operation
|
||||
|
|
|
@ -150,7 +150,8 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'mir, 'tcx, M> {
|
|||
/// through a pointer that was created by the program.
|
||||
#[inline]
|
||||
pub fn tag_static_base_pointer(&self, ptr: Pointer) -> Pointer<M::PointerTag> {
|
||||
ptr.with_tag(M::tag_static_base_pointer(&self.extra, ptr.alloc_id))
|
||||
let id = M::canonical_alloc_id(self, ptr.alloc_id);
|
||||
ptr.with_tag(M::tag_static_base_pointer(&self.extra, id))
|
||||
}
|
||||
|
||||
pub fn create_fn_alloc(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue