Skip to content

Commit c16a558

Browse files
committed
Replace LinkArgs with Cow<'static, str>
1 parent ce61d40 commit c16a558

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ use std::ffi::OsString;
4040
use std::fs::{File, OpenOptions};
4141
use std::io::{BufWriter, Write};
4242
use std::lazy::OnceCell;
43+
use std::ops::Deref;
4344
use std::path::{Path, PathBuf};
4445
use std::process::{ExitStatus, Output, Stdio};
4546
use std::{ascii, char, env, fmt, fs, io, mem, str};
@@ -1586,7 +1587,7 @@ fn add_post_link_objects(
15861587
/// FIXME: Determine where exactly these args need to be inserted.
15871588
fn add_pre_link_args(cmd: &mut dyn Linker, sess: &Session, flavor: LinkerFlavor) {
15881589
if let Some(args) = sess.target.pre_link_args.get(&flavor) {
1589-
cmd.args(args);
1590+
cmd.args(args.iter().map(Deref::deref));
15901591
}
15911592
cmd.args(&sess.opts.debugging_opts.pre_link_args);
15921593
}
@@ -1634,23 +1635,23 @@ fn add_late_link_args(
16341635
});
16351636
if any_dynamic_crate {
16361637
if let Some(args) = sess.target.late_link_args_dynamic.get(&flavor) {
1637-
cmd.args(args);
1638+
cmd.args(args.iter().map(Deref::deref));
16381639
}
16391640
} else {
16401641
if let Some(args) = sess.target.late_link_args_static.get(&flavor) {
1641-
cmd.args(args);
1642+
cmd.args(args.iter().map(Deref::deref));
16421643
}
16431644
}
16441645
if let Some(args) = sess.target.late_link_args.get(&flavor) {
1645-
cmd.args(args);
1646+
cmd.args(args.iter().map(Deref::deref));
16461647
}
16471648
}
16481649

16491650
/// Add arbitrary "post-link" args defined by the target spec.
16501651
/// FIXME: Determine where exactly these args need to be inserted.
16511652
fn add_post_link_args(cmd: &mut dyn Linker, sess: &Session, flavor: LinkerFlavor) {
16521653
if let Some(args) = sess.target.post_link_args.get(&flavor) {
1653-
cmd.args(args);
1654+
cmd.args(args.iter().map(Deref::deref));
16541655
}
16551656
}
16561657

compiler/rustc_target/src/spec/avr_gnu_base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub fn target(target_cpu: &'static str) -> Target {
1717
linker: Some("avr-gcc".into()),
1818
executables: true,
1919
eh_frame_header: false,
20-
pre_link_args: [(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
20+
pre_link_args: [(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu).into()])]
2121
.into_iter()
2222
.collect(),
2323
late_link_args: [(LinkerFlavor::Gcc, vec!["-lgcc".into()])].into_iter().collect(),

compiler/rustc_target/src/spec/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ impl fmt::Display for LinkOutputKind {
459459
}
460460
}
461461

462-
pub type LinkArgs = BTreeMap<LinkerFlavor, Vec<String>>;
462+
pub type LinkArgs = BTreeMap<LinkerFlavor, Vec<Cow<'static, str>>>;
463463

464464
#[derive(Clone, Copy, Hash, Debug, PartialEq, Eq)]
465465
pub enum SplitDebuginfo {
@@ -1978,7 +1978,7 @@ impl Target {
19781978
.map(|(i,s)| {
19791979
let s = s.as_string().ok_or_else(||
19801980
format!("{}.{}[{}]: expected a JSON string", name, k, i))?;
1981-
Ok(s.into())
1981+
Ok(s.to_string().into())
19821982
})
19831983
.collect::<Result<Vec<_>, String>>()?;
19841984

compiler/rustc_target/src/spec/wasm_base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ use std::collections::BTreeMap;
55
pub fn options() -> TargetOptions {
66
let mut lld_args = Vec::new();
77
let mut clang_args = Vec::new();
8-
let mut arg = |arg: &str| {
8+
let mut arg = |arg: &'static str| {
99
lld_args.push(arg.into());
10-
clang_args.push(format!("-Wl,{}", arg));
10+
clang_args.push(format!("-Wl,{}", arg).into());
1111
};
1212

1313
// By default LLD only gives us one page of stack (64k) which is a

compiler/rustc_target/src/spec/x86_64_fortanix_unknown_sgx.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ pub fn target() -> Target {
6868
position_independent_executables: true,
6969
pre_link_args: iter::once((
7070
LinkerFlavor::Lld(LldFlavor::Ld),
71-
PRE_LINK_ARGS.iter().cloned().map(String::from).collect(),
71+
PRE_LINK_ARGS.iter().cloned().map(Cow::from).collect(),
7272
))
7373
.collect(),
7474
override_export_symbols: Some(EXPORT_SYMBOLS.iter().cloned().map(Cow::from).collect()),

0 commit comments

Comments
 (0)