diff options
| author | bors <bors@rust-lang.org> | 2022-07-22 01:33:49 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-07-22 01:33:49 +0000 |
| commit | aa0189170057a6b56f445f05b9840caf6f260212 (patch) | |
| tree | 44b90133d775da8a57ad4a5d8a5464e1329125c2 /compiler/rustc_llvm/llvm-wrapper/ArchiveWrapper.cpp | |
| parent | 31b9b012bbced0c47a0ff5e4453cdc2e91e668b2 (diff) | |
| parent | d46dfa25d46be353a0cda39373e0319eb4f3ec69 (diff) | |
| download | rust-aa0189170057a6b56f445f05b9840caf6f260212.tar.gz rust-aa0189170057a6b56f445f05b9840caf6f260212.zip | |
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`
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/ArchiveWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
