Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 7 pull requests #94801

Closed
wants to merge 22 commits into from
Closed
Changes from 3 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
c956fe5
Document new recommended use of method
Mar 4, 2022
5f34c04
Make use statement visible
Mar 4, 2022
b363f13
Add suggested changes to the docs
Mar 4, 2022
b328688
Statically compile libstdc++ everywhere if asked
Mar 8, 2022
a5216cf
Unify inherent impl blocks by wrapping them into a div
GuillaumeGomez Mar 8, 2022
fbd9c28
Update GUI tests for impl blocks path changes
GuillaumeGomez Mar 8, 2022
4e067e8
Improve rustdoc book
Urgau Mar 8, 2022
5226395
Fix soundness issue in scoped threads.
m-ou-se Mar 5, 2022
7a481ff
Properly abort when thread result panics on drop.
m-ou-se Mar 5, 2022
1c06eb7
Remove outdated comment.
m-ou-se Mar 9, 2022
b97d875
Add soundness test for dropping scoped thread results before joining.
m-ou-se Mar 9, 2022
e346920
Also take in account mdbook redirect in linkchecker
Urgau Mar 9, 2022
109cdc7
suggest enabling generic_const_exprs feature if const is unevaluatable
compiler-errors Mar 4, 2022
9d857d9
Make llvm-libunwind a per-target option
tmandry Feb 2, 2022
42624ba
Use in-tree libunwind by default on Fuchsia
tmandry Mar 10, 2022
321e159
Rollup merge of #93604 - tmandry:libunwind-fuchsia-default, r=Mark-Si…
m-ou-se Mar 10, 2022
20bae16
Rollup merge of #94440 - compiler-errors:issue-94282, r=lcnr
m-ou-se Mar 10, 2022
3a712c3
Rollup merge of #94587 - JKAnderson409:issue-90107-fix, r=scottmcm
m-ou-se Mar 10, 2022
ca36078
Rollup merge of #94644 - m-ou-se:scoped-threads-drop-soundness, r=jos…
m-ou-se Mar 10, 2022
62e9d9a
Rollup merge of #94719 - jonhoo:enable-static-lld, r=Mark-Simulacrum
m-ou-se Mar 10, 2022
06e4633
Rollup merge of #94740 - GuillaumeGomez:unify-impl-blocks, r=notriddle
m-ou-se Mar 10, 2022
8a2cf58
Rollup merge of #94753 - Urgau:rustdoc-book-improvements, r=Guillaume…
m-ou-se Mar 10, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions config.toml.example
Original file line number Diff line number Diff line change
@@ -599,16 +599,9 @@ changelog-seen = 2
# development of NLL
#test-compare-mode = false

# Use LLVM libunwind as the implementation for Rust's unwinder.
# Accepted values are 'in-tree' (formerly true), 'system' or 'no' (formerly false).
# This option only applies for Linux and Fuchsia targets.
# On Linux target, if crt-static is not enabled, 'no' means dynamic link to
# `libgcc_s.so`, 'in-tree' means static link to the in-tree build of llvm libunwind
# and 'system' means dynamic link to `libunwind.so`. If crt-static is enabled,
# the behavior is depend on the libc. On musl target, 'no' and 'in-tree' both
# means static link to the in-tree build of llvm libunwind, and 'system' means
# static link to `libunwind.a` provided by system. Due to the limitation of glibc,
# it must link to `libgcc_eh.a` to get a working output, and this option have no effect.
# Global default for llvm-libunwind for all targets. See the target-specific
# documentation for llvm-libunwind below. Note that the target-specific
# option will override this if set.
#llvm-libunwind = 'no'

# Enable Windows Control Flow Guard checks in the standard library.
@@ -665,6 +658,18 @@ changelog-seen = 2
# not, you can specify an explicit file name for it.
#llvm-filecheck = "/path/to/llvm-version/bin/FileCheck"

# Use LLVM libunwind as the implementation for Rust's unwinder.
# Accepted values are 'in-tree' (formerly true), 'system' or 'no' (formerly false).
# This option only applies for Linux and Fuchsia targets.
# On Linux target, if crt-static is not enabled, 'no' means dynamic link to
# `libgcc_s.so`, 'in-tree' means static link to the in-tree build of llvm libunwind
# and 'system' means dynamic link to `libunwind.so`. If crt-static is enabled,
# the behavior is depend on the libc. On musl target, 'no' and 'in-tree' both
# means static link to the in-tree build of llvm libunwind, and 'system' means
# static link to `libunwind.a` provided by system. Due to the limitation of glibc,
# it must link to `libgcc_eh.a` to get a working output, and this option have no effect.
#llvm-libunwind = 'no' if Linux, 'in-tree' if Fuchsia

# If this target is for Android, this option will be required to specify where
# the NDK for the target lives. This is used to find the C compiler to link and
# build native code.
2 changes: 1 addition & 1 deletion src/bootstrap/compile.rs
Original file line number Diff line number Diff line change
@@ -175,7 +175,7 @@ fn copy_third_party_objects(
}

if target == "x86_64-fortanix-unknown-sgx"
|| builder.config.llvm_libunwind == LlvmLibunwind::InTree
|| builder.config.llvm_libunwind(target) == LlvmLibunwind::InTree
&& (target.contains("linux") || target.contains("fuchsia"))
{
let libunwind_path =
27 changes: 22 additions & 5 deletions src/bootstrap/config.rs
Original file line number Diff line number Diff line change
@@ -66,7 +66,6 @@ pub struct Config {
pub rustc_error_format: Option<String>,
pub json_output: bool,
pub test_compare_mode: bool,
pub llvm_libunwind: LlvmLibunwind,
pub color: Color,

pub on_fail: Option<String>,
@@ -145,6 +144,7 @@ pub struct Config {
pub rust_profile_generate: Option<String>,
pub llvm_profile_use: Option<String>,
pub llvm_profile_generate: bool,
pub llvm_libunwind_default: Option<LlvmLibunwind>,

pub build: TargetSelection,
pub hosts: Vec<TargetSelection>,
@@ -289,6 +289,7 @@ pub struct Target {
pub llvm_config: Option<PathBuf>,
/// Some(path to FileCheck) if one was specified.
pub llvm_filecheck: Option<PathBuf>,
pub llvm_libunwind: Option<LlvmLibunwind>,
pub cc: Option<PathBuf>,
pub cxx: Option<PathBuf>,
pub ar: Option<PathBuf>,
@@ -573,6 +574,7 @@ derive_merge! {
linker: Option<String>,
llvm_config: Option<String>,
llvm_filecheck: Option<String>,
llvm_libunwind: Option<String>,
android_ndk: Option<String>,
sanitizers: Option<bool>,
profiler: Option<bool>,
@@ -925,10 +927,6 @@ impl Config {
set(&mut config.rust_rpath, rust.rpath);
set(&mut config.jemalloc, rust.jemalloc);
set(&mut config.test_compare_mode, rust.test_compare_mode);
config.llvm_libunwind = rust
.llvm_libunwind
.map(|v| v.parse().expect("failed to parse rust.llvm-libunwind"))
.unwrap_or_default();
set(&mut config.backtrace, rust.backtrace);
set(&mut config.channel, rust.channel);
config.description = rust.description;
@@ -951,6 +949,9 @@ impl Config {
config.rust_thin_lto_import_instr_limit = rust.thin_lto_import_instr_limit;
set(&mut config.rust_remap_debuginfo, rust.remap_debuginfo);
set(&mut config.control_flow_guard, rust.control_flow_guard);
config.llvm_libunwind_default = rust
.llvm_libunwind
.map(|v| v.parse().expect("failed to parse rust.llvm-libunwind"));

if let Some(ref backends) = rust.codegen_backends {
config.rust_codegen_backends =
@@ -977,6 +978,10 @@ impl Config {
if let Some(ref s) = cfg.llvm_filecheck {
target.llvm_filecheck = Some(config.src.join(s));
}
target.llvm_libunwind = cfg
.llvm_libunwind
.as_ref()
.map(|v| v.parse().expect("failed to parse rust.llvm-libunwind"));
if let Some(ref s) = cfg.android_ndk {
target.ndk = Some(config.src.join(s));
}
@@ -1174,6 +1179,18 @@ impl Config {
self.rust_codegen_backends.contains(&INTERNER.intern_str("llvm"))
}

pub fn llvm_libunwind(&self, target: TargetSelection) -> LlvmLibunwind {
self.target_config
.get(&target)
.and_then(|t| t.llvm_libunwind)
.or(self.llvm_libunwind_default)
.unwrap_or(if target.contains("fuchsia") {
LlvmLibunwind::InTree
} else {
LlvmLibunwind::No
})
}

pub fn submodules(&self, rust_info: &GitInfo) -> bool {
self.submodules.unwrap_or(rust_info.is_git())
}
2 changes: 1 addition & 1 deletion src/bootstrap/lib.rs
Original file line number Diff line number Diff line change
@@ -704,7 +704,7 @@ impl Build {
fn std_features(&self, target: TargetSelection) -> String {
let mut features = "panic-unwind".to_string();

match self.config.llvm_libunwind {
match self.config.llvm_libunwind(target) {
LlvmLibunwind::InTree => features.push_str(" llvm-libunwind"),
LlvmLibunwind::System => features.push_str(" system-llvm-libunwind"),
LlvmLibunwind::No => {}