Tweak wasm_base target spec to indicate linker is not GNU and update linker inferring logic for wasm-ld.
This commit is contained in:
parent
625d5a693e
commit
f667aca127
3 changed files with 8 additions and 3 deletions
|
@ -1005,6 +1005,8 @@ fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
|
|||
|| stem.ends_with("-clang")
|
||||
{
|
||||
LinkerFlavor::Gcc
|
||||
} else if stem == "wasm-ld" || stem.ends_with("-wasm-ld") {
|
||||
LinkerFlavor::Lld(LldFlavor::Wasm)
|
||||
} else if stem == "ld" || stem == "ld.lld" || stem.ends_with("-ld") {
|
||||
LinkerFlavor::Ld
|
||||
} else if stem == "link" || stem == "lld-link" {
|
||||
|
|
|
@ -472,7 +472,9 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
// eliminate the metadata. If we're building an executable, however,
|
||||
// --gc-sections drops the size of hello world from 1.8MB to 597K, a 67%
|
||||
// reduction.
|
||||
} else if self.sess.target.linker_is_gnu && !keep_metadata {
|
||||
} else if (self.sess.target.linker_is_gnu || self.sess.target.is_like_wasm)
|
||||
&& !keep_metadata
|
||||
{
|
||||
self.linker_arg("--gc-sections");
|
||||
}
|
||||
}
|
||||
|
@ -480,13 +482,13 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
fn no_gc_sections(&mut self) {
|
||||
if self.sess.target.is_like_osx {
|
||||
self.linker_arg("-no_dead_strip");
|
||||
} else if self.sess.target.linker_is_gnu {
|
||||
} else if self.sess.target.linker_is_gnu || self.sess.target.is_like_wasm {
|
||||
self.linker_arg("--no-gc-sections");
|
||||
}
|
||||
}
|
||||
|
||||
fn optimize(&mut self) {
|
||||
if !self.sess.target.linker_is_gnu {
|
||||
if !self.sess.target.linker_is_gnu && !self.sess.target.is_like_wasm {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue