diff options
| author | l00846161 <liuxinyi27@huawei.com> | 2023-11-16 14:17:54 +0800 |
|---|---|---|
| committer | l00846161 <liuxinyi27@huawei.com> | 2023-12-05 14:22:08 +0800 |
| commit | 3f8487a0996de85b611b7c10fd5a3f60b10473a6 (patch) | |
| tree | a3f632a1dc332ec73da4b752f51020ef4cbb02eb /src/bootstrap | |
| parent | da1da3f1a03edae03769fcb2866137a773bb6a93 (diff) | |
| download | rust-3f8487a0996de85b611b7c10fd5a3f60b10473a6.tar.gz rust-3f8487a0996de85b611b7c10fd5a3f60b10473a6.zip | |
Add safe compilation options
Add two options when building rust: strip and stack protector. If set `strip = true`, symbols will be stripped using `-Cstrip=symbols`. Also can set `stack-protector` and stack protectors will be used.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/src/core/builder.rs | 6 | ||||
| -rw-r--r-- | src/bootstrap/src/core/config/config.rs | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs index 65af2aed6de..8c73a2ad5c1 100644 --- a/src/bootstrap/src/core/builder.rs +++ b/src/bootstrap/src/core/builder.rs @@ -1667,6 +1667,12 @@ impl<'a> Builder<'a> { } } + cargo.env(profile_var("STRIP"), self.config.rust_strip.to_string()); + + if let Some(stack_protector) = &self.config.rust_stack_protector { + rustflags.arg(&format!("-Zstack-protector={stack_protector}")); + } + if let Some(host_linker) = self.linker(compiler.host) { hostflags.arg(format!("-Clinker={}", host_linker.display())); } diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs index 22e8ce8365b..1527cc3e46a 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs @@ -222,6 +222,8 @@ pub struct Config { pub rust_debuginfo_level_tests: DebuginfoLevel, pub rust_split_debuginfo: SplitDebuginfo, pub rust_rpath: bool, + pub rust_strip: bool, + pub rust_stack_protector: Option<String>, pub rustc_parallel: bool, pub rustc_default_linker: Option<String>, pub rust_optimize_tests: bool, @@ -1001,6 +1003,8 @@ define_config! { description: Option<String> = "description", musl_root: Option<String> = "musl-root", rpath: Option<bool> = "rpath", + strip: Option<bool> = "strip", + stack_protector: Option<String> = "stack-protector", verbose_tests: Option<bool> = "verbose-tests", optimize_tests: Option<bool> = "optimize-tests", codegen_tests: Option<bool> = "codegen-tests", @@ -1069,6 +1073,7 @@ impl Config { config.docs = true; config.docs_minification = true; config.rust_rpath = true; + config.rust_strip = false; config.channel = "dev".to_string(); config.codegen_tests = true; config.rust_dist_src = true; @@ -1422,6 +1427,8 @@ impl Config { set(&mut config.rust_optimize_tests, rust.optimize_tests); set(&mut config.codegen_tests, rust.codegen_tests); set(&mut config.rust_rpath, rust.rpath); + set(&mut config.rust_strip, rust.strip); + config.rust_stack_protector = rust.stack_protector; set(&mut config.jemalloc, rust.jemalloc); set(&mut config.test_compare_mode, rust.test_compare_mode); set(&mut config.backtrace, rust.backtrace); |
