Auto merge of #99420 - RalfJung:vtable, r=oli-obk
make vtable pointers entirely opaque This implements the scheme discussed in https://github.com/rust-lang/unsafe-code-guidelines/issues/338: vtable pointers should be considered entirely opaque and not even readable by Rust code, similar to function pointers. - We have a new kind of `GlobalAlloc` that symbolically refers to a vtable. - Miri uses that kind of allocation when generating a vtable. - The codegen backends, upon encountering such an allocation, call `vtable_allocation` to obtain an actually dataful allocation for this vtable. - We need new intrinsics to obtain the size and align from a vtable (for some `ptr::metadata` APIs), since direct accesses are UB now. I had to touch quite a bit of code that I am not very familiar with, so some of this might not make much sense... r? `@oli-obk`
This commit is contained in:
commit
aa01891700
69 changed files with 673 additions and 527 deletions
|
@ -1565,6 +1565,8 @@ symbols! {
|
|||
volatile_store,
|
||||
vreg,
|
||||
vreg_low16,
|
||||
vtable_align,
|
||||
vtable_size,
|
||||
warn,
|
||||
wasm_abi,
|
||||
wasm_import_module,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue