diff options
| author | bors <bors@rust-lang.org> | 2020-06-04 10:17:38 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-06-04 10:17:38 +0000 |
| commit | 2a5cbb0e42f330617a061243f8725d861dd5118b (patch) | |
| tree | 233ca9a35aed52d9262c72bad1318f94792a356c /src/librustc_codegen_ssa | |
| parent | 627957100c9b810a10c30a11cf1a8a3188d5f9f4 (diff) | |
| parent | 26f0d7f5ffba150d650092b5511f555d68975c6d (diff) | |
Auto merge of #72975 - Dylan-DPC:rollup-6zvco5x, r=Dylan-DPC
Rollup of 6 pull requests Successful merges: - #72718 (Add regression test for #72554) - #72782 (rustc_target: Remove `pre_link_args_crt`) - #72923 (Improve E0433, so that it suggests missing imports) - #72950 (fix `AdtDef` docs) - #72951 (Add Camelid per request) - #72964 (Bump libc dependency to latest version (0.2.71)) Failed merges: r? @ghost
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/back/link.rs | 14 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/back/linker.rs | 15 |
2 files changed, 17 insertions, 12 deletions
diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs index dcce1d45298..cff84b11aa0 100644 --- a/src/librustc_codegen_ssa/back/link.rs +++ b/src/librustc_codegen_ssa/back/link.rs @@ -1253,20 +1253,10 @@ fn add_post_link_objects( /// Add arbitrary "pre-link" args defined by the target spec or from command line. /// FIXME: Determine where exactly these args need to be inserted. -fn add_pre_link_args( - cmd: &mut dyn Linker, - sess: &Session, - flavor: LinkerFlavor, - crate_type: CrateType, -) { +fn add_pre_link_args(cmd: &mut dyn Linker, sess: &Session, flavor: LinkerFlavor) { if let Some(args) = sess.target.target.options.pre_link_args.get(&flavor) { cmd.args(args); } - if let Some(args) = sess.target.target.options.pre_link_args_crt.get(&flavor) { - if sess.crt_static(Some(crate_type)) { - cmd.args(args); - } - } cmd.args(&sess.opts.debugging_opts.pre_link_args); } @@ -1502,7 +1492,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>( let crt_objects_fallback = crt_objects_fallback(sess, crate_type); // NO-OPT-OUT, OBJECT-FILES-MAYBE, CUSTOMIZATION-POINT - add_pre_link_args(cmd, sess, flavor, crate_type); + add_pre_link_args(cmd, sess, flavor); // NO-OPT-OUT add_link_script(cmd, sess, tmpdir, crate_type); diff --git a/src/librustc_codegen_ssa/back/linker.rs b/src/librustc_codegen_ssa/back/linker.rs index 77cb31bf3d2..d9fed998c92 100644 --- a/src/librustc_codegen_ssa/back/linker.rs +++ b/src/librustc_codegen_ssa/back/linker.rs @@ -315,6 +315,21 @@ impl<'a> Linker for GccLinker<'a> { self.build_dylib(out_filename); } } + // VxWorks compiler driver introduced `--static-crt` flag specifically for rustc, + // it switches linking for libc and similar system libraries to static without using + // any `#[link]` attributes in the `libc` crate, see #72782 for details. + // FIXME: Switch to using `#[link]` attributes in the `libc` crate + // similarly to other targets. + if self.sess.target.target.target_os == "vxworks" + && matches!( + output_kind, + LinkOutputKind::StaticNoPicExe + | LinkOutputKind::StaticPicExe + | LinkOutputKind::StaticDylib + ) + { + self.cmd.arg("--static-crt"); + } } fn link_dylib(&mut self, lib: Symbol) { |
