rust/compiler/rustc_codegen_llvm/src
bors aa01891700 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`
2022-07-22 01:33:49 +00:00
..
back Auto merge of #98162 - nextsilicon:support_lto_embed_bitcode, r=davidtwco 2022-07-21 10:13:59 +00:00
coverageinfo add #[rustc_pass_by_value] to more types 2022-03-08 15:39:52 +01:00
debuginfo consistently use VTable over Vtable (matching stable stdlib API RawWakerVTable) 2022-07-20 17:12:07 -04:00
llvm Auto merge of #98162 - nextsilicon:support_lto_embed_bitcode, r=davidtwco 2022-07-21 10:13:59 +00:00
abi.rs Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
allocator.rs Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
asm.rs Add tmm_reg clobbers 2022-05-16 20:15:06 -04:00
attributes.rs Rollup merge of #98998 - workingjubilee:naked-means-no-clothes-enforcement-technology, r=Amanieu 2022-07-18 21:14:43 +05:30
base.rs Auto merge of #95689 - lqd:self-profiler, r=wesleywiser 2022-04-16 11:43:28 +00:00
builder.rs Prefer trace level instrumentation for the new noisy instrument attributes 2022-07-05 09:27:06 +00:00
callee.rs Update TypeVisitor paths 2022-07-06 06:41:53 +01:00
common.rs slightly cleaner, if more verbose, vtable handling in codegen backends 2022-07-20 17:12:07 -04:00
consts.rs Auto merge of #99420 - RalfJung:vtable, r=oli-obk 2022-07-22 01:33:49 +00:00
context.rs Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
declare.rs Remove LLVM attribute removal 2022-02-28 00:02:11 -05:00
intrinsic.rs Move vtable_size and vtable_align impls to cg_ssa 2022-07-20 17:12:08 -04:00
lib.rs Stabilize let_chains 2022-07-16 20:17:58 -03:00
llvm_util.rs Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
mono_item.rs Update TypeVisitor paths 2022-07-06 06:41:53 +01:00
type_.rs Remove crate visibility usage in compiler 2022-05-20 20:04:54 -04:00
type_of.rs Update TypeVisitor paths 2022-07-06 06:41:53 +01:00
va_arg.rs Introduce Bx::switch_to_block 2022-02-24 12:18:21 +01:00
value.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00