CFI: Fix ICE in KCFI non-associated function pointers
We oddly weren't testing the more usual case of casting non-methods to function pointers. The KCFI shim insertion logic would ICE on these due to asking for an irrefutable associated item if we cast a function to a function pointer without needing a traditional shim.
This commit is contained in:
parent
ab3dba92db
commit
284da5d6b4
2 changed files with 10 additions and 3 deletions
|
@ -520,7 +520,10 @@ impl<'tcx> Instance<'tcx> {
|
|||
// Reify `Trait::method` implementations if KCFI is enabled
|
||||
// FIXME(maurer) only reify it if it is a vtable-safe function
|
||||
_ if tcx.sess.is_sanitizer_kcfi_enabled()
|
||||
&& tcx.associated_item(def_id).trait_item_def_id.is_some() =>
|
||||
&& tcx
|
||||
.opt_associated_item(def_id)
|
||||
.and_then(|assoc| assoc.trait_item_def_id)
|
||||
.is_some() =>
|
||||
{
|
||||
// If this function could also go in a vtable, we need to `ReifyShim` it with
|
||||
// KCFI because it can only attach one type per function.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue