granite-rust/compiler
Nikita Popov 9488cacc52 Use object crate for .rustc metadata generation
We already use the object crate for generating uncompressed .rmeta
metadata object files. This switches the generation of compressed
.rustc object files to use the object crate as well. These have
slightly different requirements in that .rmeta should be completely
excluded from any final compilation artifacts, while .rustc should
be part of shared objects, but not loaded into memory.

The primary motivation for this change is #90326: In LLVM 14, the
current way of setting section flags (and in particular, preventing
the setting of SHF_ALLOC) will no longer work. There are other ways
we could work around this, but switching to the object crate seems
like the most elegant, as we already use it for .rmeta, and as it
makes this independent of the codegen backend. In particular, we
don't need separate handling in codegen_llvm and codegen_gcc.
codegen_cranelift should be able to reuse the implementation as
well, though I have omitted that here, as it is not based on
codegen_ssa.

This change mostly extracts the existing code for .rmeta handling
to allow using it for .rustc as well, and adjust the codegen
infrastructure to handle the metadata object file separately: We
no longer create a backend-specific module for it, and directly
produce the compiled module instead.

This does not fix #90326 by itself yet, as .llvmbc will need to be
handled separately.
2021-12-07 09:39:05 +01:00
..
rustc Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_apfloat Revert "Auto merge of #89709 - clemenswasser:apply_clippy_suggestions_2, r=petrochenkov" 2021-10-15 11:28:23 +02:00
rustc_arena Add some comments. 2021-11-19 07:52:59 +11:00
rustc_ast expand: Turn ast::Crate into a first class expansion target 2021-11-28 15:48:55 +08:00
rustc_ast_lowering Merge Implicit and ImplicitMissing. 2021-11-30 22:56:47 +01:00
rustc_ast_passes Rollup merge of #91208 - estebank:eq-constraint, r=cjgillot 2021-11-27 11:46:44 +01:00
rustc_ast_pretty expand: Turn ast::Crate into a first class expansion target 2021-11-28 15:48:55 +08:00
rustc_attr Correct typo 2021-10-16 13:36:05 -07:00
rustc_borrowck Auto merge of #90446 - cjgillot:late-elided, r=jackh726 2021-12-01 23:22:43 +00:00
rustc_builtin_macros Rollup merge of #91313 - petrochenkov:cratexp, r=Aaron1011 2021-12-01 20:57:43 +01:00
rustc_codegen_cranelift fix sparc64 ABI for aggregates with floating point members 2021-12-01 10:03:45 +01:00
rustc_codegen_gcc Use object crate for .rustc metadata generation 2021-12-07 09:39:05 +01:00
rustc_codegen_llvm Use object crate for .rustc metadata generation 2021-12-07 09:39:05 +01:00
rustc_codegen_ssa Use object crate for .rustc metadata generation 2021-12-07 09:39:05 +01:00
rustc_const_eval Rollup merge of #91368 - ecstatic-morse:mir-pass-reexport, r=cjgillot 2021-11-30 17:29:12 +09:00
rustc_data_structures Use intrinsic pointer methods 2021-11-27 16:59:18 +00:00
rustc_driver add rustc option for using LLVM stack smash protection 2021-11-22 20:06:22 +01:00
rustc_error_codes Update Copy/Clone documentation WRT arrays 2021-11-08 13:11:59 -05:00
rustc_errors Include lint errors in error count for -Ztreat-err-as-bug 2021-12-01 16:39:55 +00:00
rustc_expand expand: Turn ast::Crate into a first class expansion target 2021-11-28 15:48:55 +08:00
rustc_feature Rollup merge of #90420 - GuillaumeGomez:rustdoc-internals-feature, r=camelid 2021-11-24 22:56:37 +01:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_graphviz Revert "Auto merge of #89709 - clemenswasser:apply_clippy_suggestions_2, r=petrochenkov" 2021-10-15 11:28:23 +02:00
rustc_hir Merge Implicit and ImplicitMissing. 2021-11-30 22:56:47 +01:00
rustc_hir_pretty Auto merge of #89124 - cjgillot:owner-info, r=michaelwoerister 2021-10-18 19:53:05 +00:00
rustc_incremental Add -Zassert-incr-state to assert state of incremental cache 2021-11-12 13:41:46 -06:00
rustc_index Auto merge of #90491 - Mark-Simulacrum:push-pred-faster, r=matthewjasper 2021-11-24 15:51:46 +00:00
rustc_infer Take a LocalDefId in expect_*item. 2021-11-28 21:09:45 +01:00
rustc_interface expand: Turn ast::Crate into a first class expansion target 2021-11-28 15:48:55 +08:00
rustc_lexer udpate comment to be more accurate 2021-11-23 20:37:23 +00:00
rustc_lint Auto merge of #91255 - b-naber:normalization-ice, r=jackh276 2021-12-01 13:33:33 +00:00
rustc_lint_defs Properly register text_direction_codepoint_in_comment lint. 2021-11-05 20:12:40 +01:00
rustc_llvm Rollup merge of #91207 - richkadel:rk-bump-coverage-version, r=tmandry 2021-12-01 10:50:20 +01:00
rustc_macros Make TypeFoldable implementors short-circuit on error 2021-11-26 07:17:59 +00:00
rustc_metadata Auto merge of #91330 - cjgillot:no-ee-features, r=Aaron1011 2021-11-30 07:40:08 +00:00
rustc_middle Auto merge of #91255 - b-naber:normalization-ice, r=jackh276 2021-12-01 13:33:33 +00:00
rustc_mir_build Fix stack overflow in usefulness.rs 2021-11-23 23:07:11 +01:00
rustc_mir_dataflow Auto merge of #90788 - ecstatic-morse:issue-90752, r=wesleywiser 2021-11-23 17:44:33 +00:00
rustc_mir_transform Rollup merge of #91294 - cjgillot:process-elem, r=jackh726 2021-11-30 23:43:31 +01:00
rustc_monomorphize Rollup merge of #90701 - michaelwoerister:more-artifact-sizes, r=davidtwco 2021-11-09 19:00:45 +01:00
rustc_parse Rollup merge of #91313 - petrochenkov:cratexp, r=Aaron1011 2021-12-01 20:57:43 +01:00
rustc_parse_format Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_passes Auto merge of #91330 - cjgillot:no-ee-features, r=Aaron1011 2021-11-30 07:40:08 +00:00
rustc_plugin_impl Move rustc_middle::middle::cstore to rustc_session. 2021-10-03 16:08:51 +02:00
rustc_privacy Take a LocalDefId in expect_*item. 2021-11-28 21:09:45 +01:00
rustc_query_impl Revert "Add rustc lint, warning when iterating over hashmaps" 2021-10-28 11:01:42 -04:00
rustc_query_system Manually outline error on incremental_verify_ich 2021-11-22 21:32:20 -05:00
rustc_resolve Auto merge of #90446 - cjgillot:late-elided, r=jackh726 2021-12-01 23:22:43 +00:00
rustc_save_analysis Give inline const separate DefKind 2021-11-07 03:59:06 +00:00
rustc_serialize Avoid generating empty closures for fieldless enums 2021-11-22 21:22:35 -05:00
rustc_session Accumulate all values of -C remark option 2021-11-29 09:12:01 +01:00
rustc_span Add parent crate assert to register_expn_id 2021-11-28 16:35:54 -06:00
rustc_symbol_mangling Revert "Add rustc lint, warning when iterating over hashmaps" 2021-10-28 11:01:42 -04:00
rustc_target Auto merge of #91003 - psumbera:sparc64-abi, r=nagisa 2021-12-02 02:59:44 +00:00
rustc_trait_selection Rollup merge of #90985 - camsteffen:diag-name-usage, r=jackh726 2021-12-01 10:50:18 +01:00
rustc_traits implement version of normalize_erasing_regions that doesn't assume value is normalizable 2021-12-01 12:12:38 +01:00
rustc_ty_utils Take a LocalDefId in expect_*item. 2021-11-28 21:09:45 +01:00
rustc_type_ir Add two inline annotations for hot functions 2021-10-03 12:43:43 -04:00
rustc_typeck Rollup merge of #91243 - jackh726:issue-91068, r=nikomatsakis 2021-11-30 17:29:06 +09:00