CFI: Fix SIGILL reached via trait objects
Fix #106547 by transforming the concrete self into a reference to a trait object before emitting type metadata identifiers for trait methods.
This commit is contained in:
parent
eac35583d2
commit
7c7b22e62c
10 changed files with 247 additions and 28 deletions
|
@ -772,7 +772,7 @@ fn gen_fn<'ll, 'tcx>(
|
|||
) -> (&'ll Type, &'ll Value) {
|
||||
let fn_abi = cx.fn_abi_of_fn_ptr(rust_fn_sig, ty::List::empty());
|
||||
let llty = fn_abi.llvm_type(cx);
|
||||
let llfn = cx.declare_fn(name, fn_abi);
|
||||
let llfn = cx.declare_fn(name, fn_abi, None);
|
||||
cx.set_frame_pointer_type(llfn);
|
||||
cx.apply_target_cpu_attr(llfn);
|
||||
// FIXME(eddyb) find a nicer way to do this.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue