granite-rust/compiler
Ramon de C Valle 65698ae9f3 Add LLVM KCFI support to the Rust compiler
This commit adds LLVM Kernel Control Flow Integrity (KCFI) support to
the Rust compiler. It initially provides forward-edge control flow
protection for operating systems kernels for Rust-compiled code only by
aggregating function pointers in groups identified by their return and
parameter types. (See llvm/llvm-project@cff5bef.)

Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by identifying C char and integer type uses at the
time types are encoded (see Type metadata in the design document in the
tracking issue #89653).

LLVM KCFI can be enabled with -Zsanitizer=kcfi.

Co-authored-by: bjorn3 <17426603+bjorn3@users.noreply.github.com>
2022-12-08 17:24:39 -08:00
..
rustc rustc: Use unix_sigpipe instead of rustc_driver::set_sigpipe_handler 2022-10-02 17:49:36 +02:00
rustc_apfloat Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_arena Make use of [wrapping_]byte_{add,sub} 2022-08-23 19:32:37 +04:00
rustc_ast Remove ref patterns from rustc_ast 2022-11-21 09:18:59 +00:00
rustc_ast_lowering Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk 2022-11-21 12:17:03 +00:00
rustc_ast_passes Visit attributes of trait impl items during AST validation 2022-11-08 13:44:07 +01:00
rustc_ast_pretty Box ExprKind::{Closure,MethodCall}, and QSelf in expressions, types, and patterns. 2022-11-17 13:45:59 +11:00
rustc_attr Migrate all diagnostics 2022-10-23 10:09:44 +02:00
rustc_baked_icu_data Update crate documentation of rustc_baked_icu_data crate 2022-11-18 14:46:36 -08:00
rustc_borrowck Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk 2022-11-21 12:17:03 +00:00
rustc_builtin_macros Streamline deriving on packed structs. 2022-11-21 14:07:39 +11:00
rustc_codegen_cranelift Rollup merge of #104605 - RalfJung:clf_consts, r=bjorn3 2022-11-21 14:11:12 +01:00
rustc_codegen_gcc Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_codegen_llvm Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_codegen_ssa Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_const_eval Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr 2022-11-21 14:11:11 +01:00
rustc_data_structures Auto merge of #97870 - eggyal:inplace_fold_spec, r=wesleywiser 2022-11-19 02:28:47 +00:00
rustc_driver Rollup merge of #103117 - joshtriplett:use-is-terminal, r=eholk 2022-11-19 15:35:18 +01:00
rustc_error_codes Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk 2022-11-21 12:17:03 +00:00
rustc_error_messages Match crate and slug names 2022-11-21 15:24:50 +01:00
rustc_errors Rollup merge of #104504 - compiler-errors:fru-syntax-note, r=estebank 2022-11-20 23:50:27 +01:00
rustc_expand Cleanup macro matching recovery 2022-11-19 17:46:04 +01:00
rustc_feature Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_fs_util Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_graphviz Add initial version of value analysis and dataflow constant propagation 2022-11-07 10:35:08 +01:00
rustc_hir Auto merge of #98914 - fee1-dead-contrib:min-deref-patterns, r=compiler-errors 2022-11-20 07:16:42 +00:00
rustc_hir_analysis Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_hir_pretty Store a LocalDefId in hir::Variant & hir::Field. 2022-11-13 14:06:51 +00:00
rustc_hir_typeck Auto merge of #104120 - mejrs:diag, r=davidtwco 2022-11-21 18:36:26 +00:00
rustc_incremental Rename some OwnerId fields. 2022-10-29 20:28:38 +11:00
rustc_index Remove from compiler/ crates 2022-09-29 16:49:04 +09:00
rustc_infer Auto merge of #104673 - matthiaskrgr:rollup-85f65ov, r=matthiaskrgr 2022-11-21 15:22:54 +00:00
rustc_interface Enable icu sync feature for parallel compiler 2022-11-18 14:46:35 -08:00
rustc_lexer Use token::Lit in ast::ExprKind::Lit. 2022-11-16 09:41:28 +11:00
rustc_lint Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr 2022-11-21 14:11:11 +01:00
rustc_lint_defs Merge branch 'master' into patch-2 2022-11-15 21:16:11 +01:00
rustc_llvm Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_log Use IsTerminal in rustc_log 2022-10-16 15:10:40 +01:00
rustc_macros Improve slug name error 2022-11-21 15:24:51 +01:00
rustc_metadata Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk 2022-11-21 12:17:03 +00:00
rustc_middle Auto merge of #104120 - mejrs:diag, r=davidtwco 2022-11-21 18:36:26 +00:00
rustc_mir_build Factor out conservative_is_privately_uninhabited 2022-11-20 19:04:11 -06:00
rustc_mir_dataflow couple of clippy::perf fixes 2022-11-18 10:30:47 +01:00
rustc_mir_transform Factor out conservative_is_privately_uninhabited 2022-11-20 19:04:11 -06:00
rustc_monomorphize Make "long type" printing type aware 2022-11-18 08:42:59 -08:00
rustc_parse Match crate and slug names 2022-11-21 15:24:50 +01:00
rustc_parse_format shift no characters when using raw string literals 2022-11-15 14:28:20 +09:00
rustc_passes Change to Ty::is_inhabited_from 2022-11-20 19:04:11 -06:00
rustc_plugin_impl Migrate all diagnostics 2022-10-23 10:09:44 +02:00
rustc_privacy Store a LocalDefId in hir::Variant & hir::Field. 2022-11-13 14:06:51 +00:00
rustc_query_impl Make AbsoluteBytePos a u64. 2022-11-08 18:47:26 +00:00
rustc_query_system Hash spans when interning. 2022-11-11 13:02:37 +00:00
rustc_resolve Auto merge of #104573 - matthiaskrgr:rollup-k36ybtp, r=matthiaskrgr 2022-11-18 20:26:58 +00:00
rustc_save_analysis Store a LocalDefId in hir::Variant & hir::Field. 2022-11-13 14:06:51 +00:00
rustc_serialize rustdoc: use ThinVec for cleaned generics 2022-11-02 16:17:22 -07:00
rustc_session Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_smir Only keep one version of ImplicitSelfKind. 2022-09-13 19:18:23 +02:00
rustc_span Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_symbol_mangling Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_target Add LLVM KCFI support to the Rust compiler 2022-12-08 17:24:39 -08:00
rustc_trait_selection Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr 2022-11-21 14:11:11 +01:00
rustc_traits Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr 2022-11-21 14:11:11 +01:00
rustc_transmute Auto merge of #103831 - chenyukang:yukang/fix-103751-ice, r=nagisa 2022-11-05 13:48:30 +00:00
rustc_ty_utils Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk 2022-11-21 12:17:03 +00:00
rustc_type_ir deprecate DelaySpanBugEmitted and use ErrorGuaranteed directly 2022-11-02 23:15:49 +08:00