about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src/back/linker.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-03-28 00:02:23 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-03-28 01:49:15 +0300
commit6615ee89be2290c96aa7d4ab24dc94e23a8c7080 (patch)
tree2f417b415457bf9466af8ac25b1dce1defd2df49 /compiler/rustc_codegen_ssa/src/back/linker.rs
parentafaf33dcafe9c7068b63eb997df221aa08db7c29 (diff)
downloadrust-6615ee89be2290c96aa7d4ab24dc94e23a8c7080.tar.gz
rust-6615ee89be2290c96aa7d4ab24dc94e23a8c7080.zip
linker: Use `--as-needed` by default when linker supports it
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/back/linker.rs')
-rw-r--r--compiler/rustc_codegen_ssa/src/back/linker.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs
index bb35e7ec894..592675d916a 100644
--- a/compiler/rustc_codegen_ssa/src/back/linker.rs
+++ b/compiler/rustc_codegen_ssa/src/back/linker.rs
@@ -130,6 +130,7 @@ pub trait Linker {
     fn group_end(&mut self);
     fn linker_plugin_lto(&mut self);
     fn add_eh_frame_header(&mut self) {}
+    fn add_as_needed(&mut self) {}
     fn finalize(&mut self);
 }
 
@@ -641,6 +642,12 @@ impl<'a> Linker for GccLinker<'a> {
     fn add_eh_frame_header(&mut self) {
         self.linker_arg("--eh-frame-hdr");
     }
+
+    fn add_as_needed(&mut self) {
+        if self.sess.target.linker_is_gnu {
+            self.linker_arg("--as-needed");
+        }
+    }
 }
 
 pub struct MsvcLinker<'a> {