rust/compiler
Manish Goregaokar 38bbc39895
Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3
Add cross-language LLVM CFI support to the Rust compiler

This PR adds cross-language LLVM Control Flow Integrity (CFI) support to the Rust compiler by adding the `-Zsanitizer-cfi-normalize-integers` option to be used with Clang `-fsanitize-cfi-icall-normalize-integers` for normalizing integer types (see https://reviews.llvm.org/D139395).

It provides 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). For more information about LLVM CFI and cross-language LLVM CFI support for the Rust compiler, see design document in the tracking issue #89653.

Cross-language LLVM CFI can be enabled with -Zsanitizer=cfi and -Zsanitizer-cfi-normalize-integers, and requires proper (i.e., non-rustc) LTO (i.e., -Clinker-plugin-lto).

Thank you again, ``@bjorn3,`` ``@nikic,`` ``@samitolvanen,`` and the Rust community for all the help!
2023-05-03 16:42:48 -07:00
..
rustc
rustc_abi layout-alignment-promotion logic should depend on the niche-bias 2023-04-28 23:08:54 +02:00
rustc_apfloat
rustc_arena Deny the unsafe_op_in_unsafe_fn lint in 2023-04-28 21:00:54 -07:00
rustc_ast Implement negative bounds 2023-05-02 22:36:24 +00:00
rustc_ast_lowering Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_ast_passes Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_ast_pretty Implement negative bounds 2023-05-02 22:36:24 +00:00
rustc_attr Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_baked_icu_data
rustc_borrowck Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_builtin_macros Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_codegen_cranelift Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_codegen_gcc Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_codegen_llvm Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_codegen_ssa Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_const_eval Rollup merge of #110943 - RalfJung:interpret-unsized-arg-ice, r=oli-obk 2023-05-04 00:17:25 +05:30
rustc_data_structures Auto merge of #107782 - Zoxc:worker-local, r=cjgillot 2023-04-27 17:43:09 +00:00
rustc_driver Remove unneeded extern crate 2023-02-02 07:47:39 +01:00
rustc_driver_impl Fix ICE on --print=... i/o errors 2023-04-25 08:17:18 -07:00
rustc_error_codes Spelling - compiler 2023-04-17 16:09:18 -04:00
rustc_error_messages Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_errors Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_expand Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_feature Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_fluent_macro Remove unused synstructure dep 2023-04-22 22:03:33 +01:00
rustc_fs_util Add try_canonicalize to rustc_fs_util and use it over fs::canonicalize 2023-03-16 21:50:23 +01:00
rustc_graphviz
rustc_hir Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_hir_analysis Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_hir_pretty Rip it out 2023-05-01 16:15:13 +08:00
rustc_hir_typeck Rollup merge of #110874 - compiler-errors:index-op-specific, r=oli-obk 2023-05-04 00:17:24 +05:30
rustc_incremental Remove QueryEngine trait 2023-04-26 07:46:13 +02:00
rustc_index Decorative changes to IndexVec 2023-04-24 13:53:37 +00:00
rustc_infer Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_interface Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_lexer Revert "Don't recover lifetimes/labels containing emojis as character literals" 2023-04-10 06:52:41 +00:00
rustc_lint Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_lint_defs Partial stabilisation of c_unwind 2023-04-29 13:01:44 +01:00
rustc_llvm [LLVM17] Adapt to ExplicitEmulatedTLS removal. 2023-04-24 08:45:15 +00:00
rustc_log Stabilize IsTerminal 2023-04-10 17:24:23 +09:00
rustc_macros Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
rustc_metadata Rollup merge of #110908 - petrochenkov:notagain4, r=compiler-errors 2023-05-04 00:17:24 +05:30
rustc_middle Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_mir_build Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_mir_dataflow Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
rustc_mir_transform Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_monomorphize Box AssertKind 2023-05-01 23:12:41 -04:00
rustc_parse Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_parse_format Fix typos in compiler 2023-04-10 22:02:52 +02:00
rustc_passes Rollup merge of #111062 - clubby789:invalid-repr-unchecked, r=petrochenkov 2023-05-04 00:17:25 +05:30
rustc_plugin_impl Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_privacy resolve: One more attempt to simplify module_children 2023-05-02 17:21:08 +03:00
rustc_query_impl Remove QueryEngine trait 2023-04-26 07:46:13 +02:00
rustc_query_system Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_resolve Rollup merge of #110908 - petrochenkov:notagain4, r=compiler-errors 2023-05-04 00:17:24 +05:30
rustc_serialize Remove MemEncoder. 2023-05-02 12:02:32 +10:00
rustc_session Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_smir Add Call terminator to SMIR 2023-04-20 12:00:41 -03:00
rustc_span Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_symbol_mangling Rollup merge of #105452 - rcvalle:rust-cfi-3, r=bjorn3 2023-05-03 16:42:48 -07:00
rustc_target Change ABI order in is_stable 2023-04-29 13:01:46 +01:00
rustc_trait_selection Rollup merge of #110791 - compiler-errors:negative-bounds, r=oli-obk 2023-05-04 00:17:23 +05:30
rustc_traits Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_transmute Remove unused TypeFoldable/TypeVisitable impls. 2023-04-26 15:19:50 +10:00
rustc_ty_utils Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
rustc_type_ir Rollup merge of #110838 - nnethercote:more-Folder-Visitable-cleanups, r=lcnr 2023-04-27 21:34:14 +02:00