Skip to content

Commit

Permalink
Auto merge of #133032 - GuillaumeGomez:rollup-vqakdmw, r=GuillaumeGomez
Browse files Browse the repository at this point in the history
Rollup of 5 pull requests

Successful merges:

 - #132010 (ci: Enable full `debuginfo-level=2` in `DEPLOY_ALT`)
 - #132310 (compiletest: add `max-llvm-major-version` directive)
 - #132773 (PassWrapper: disable UseOdrIndicator for Asan Win32)
 - #133013 (compiletest: known-bug / crashes: allow for an "auxiliary" directory to contain files that do not have a "known-bug" directive)
 - #133027 (Fix a copy-paste issue in the NuttX raw type definition)

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Nov 14, 2024
2 parents dae7ac1 + e6cd869 commit a4cedec
Show file tree
Hide file tree
Showing 14 changed files with 92 additions and 13 deletions.
15 changes: 11 additions & 4 deletions compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -882,10 +882,12 @@ extern "C" LLVMRustResult LLVMRustOptimize(
SanitizerOptions->SanitizeKernelAddress) {
OptimizerLastEPCallbacks.push_back(
#if LLVM_VERSION_GE(20, 0)
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level,
ThinOrFullLTOPhase phase) {
[SanitizerOptions, TM](ModulePassManager &MPM,
OptimizationLevel Level,
ThinOrFullLTOPhase phase) {
#else
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
[SanitizerOptions, TM](ModulePassManager &MPM,
OptimizationLevel Level) {
#endif
auto CompileKernel = SanitizerOptions->SanitizeKernelAddress;
AddressSanitizerOptions opts = AddressSanitizerOptions{
Expand All @@ -895,7 +897,12 @@ extern "C" LLVMRustResult LLVMRustOptimize(
/*UseAfterScope=*/true,
AsanDetectStackUseAfterReturnMode::Runtime,
};
MPM.addPass(AddressSanitizerPass(opts));
MPM.addPass(AddressSanitizerPass(
opts,
/*UseGlobalGC*/ true,
// UseOdrIndicator should be false on windows machines
// https://reviews.llvm.org/D137227
!TM->getTargetTriple().isOSWindows()));
});
}
if (SanitizerOptions->SanitizeHWAddress) {
Expand Down
2 changes: 1 addition & 1 deletion library/std/src/os/nuttx/raw.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! rtems raw type definitions
//! NuttX raw type definitions

#![stable(feature = "raw_ext", since = "1.1.0")]
#![deprecated(
Expand Down
7 changes: 6 additions & 1 deletion src/ci/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,12 @@ RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --release-channel=$RUST_RELEASE_CHANNE
if [ "$DEPLOY$DEPLOY_ALT" = "1" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-llvm-static-stdcpp"
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.remap-debuginfo"
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --debuginfo-level-std=1"

if [ "$DEPLOY_ALT" != "" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --debuginfo-level=2"
else
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --debuginfo-level-std=1"
fi

if [ "$NO_LLVM_ASSERTIONS" = "1" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-llvm-assertions"
Expand Down
1 change: 1 addition & 0 deletions src/tools/compiletest/src/directive-list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"incremental",
"known-bug",
"llvm-cov-flags",
"max-llvm-major-version",
"min-cdb-version",
"min-gdb-version",
"min-lldb-version",
Expand Down
14 changes: 14 additions & 0 deletions src/tools/compiletest/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1546,6 +1546,20 @@ fn ignore_llvm(config: &Config, line: &str) -> IgnoreDecision {
),
};
}
} else if let Some(version_string) =
config.parse_name_value_directive(line, "max-llvm-major-version")
{
let max_version = extract_llvm_version(&version_string);
// Ignore if actual major version is larger than the maximum required major version.
if actual_version.major > max_version.major {
return IgnoreDecision::Ignore {
reason: format!(
"ignored when the LLVM version ({actual_version}) is newer than major\
version {}",
max_version.major
),
};
}
} else if let Some(version_string) =
config.parse_name_value_directive(line, "min-system-llvm-version")
{
Expand Down
9 changes: 9 additions & 0 deletions src/tools/compiletest/src/header/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,15 @@ fn llvm_version() {

let config: Config = cfg().llvm_version("10.6.2").build();
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10"));

let config: Config = cfg().llvm_version("19.0.0").build();
assert!(!check_ignore(&config, "//@ max-llvm-major-version: 19"));

let config: Config = cfg().llvm_version("19.1.2").build();
assert!(!check_ignore(&config, "//@ max-llvm-major-version: 19"));

let config: Config = cfg().llvm_version("20.0.0").build();
assert!(check_ignore(&config, "//@ max-llvm-major-version: 19"));
}

#[test]
Expand Down
18 changes: 16 additions & 2 deletions src/tools/tidy/src/known_bug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,22 @@ use crate::walk::*;

pub fn check(filepath: &Path, bad: &mut bool) {
walk(filepath, |path, _is_dir| filter_not_rust(path), &mut |entry, contents| {
let file = entry.path();
if !contents.lines().any(|line| line.starts_with("//@ known-bug: ")) {
let file: &Path = entry.path();

// files in "auxiliary" do not need to crash by themselves
let test_path_segments =
file.iter().map(|s| s.to_string_lossy().into()).collect::<Vec<String>>();
let test_path_segments_str =
test_path_segments.iter().map(|s| s.as_str()).collect::<Vec<&str>>();

if !matches!(test_path_segments_str[..], [
..,
"tests",
"crashes",
"auxiliary",
_aux_file_rs
]) && !contents.lines().any(|line| line.starts_with("//@ known-bug: "))
{
tidy_error!(
bad,
"{} crash/ice test does not have a \"//@ known-bug: \" directive",
Expand Down
2 changes: 1 addition & 1 deletion tests/assembly/riscv-soft-abi-with-float-features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//@ compile-flags: --target riscv64imac-unknown-none-elf -Ctarget-feature=+f,+d
//@ needs-llvm-components: riscv
//@ revisions: LLVM-PRE-20 LLVM-POST-20
//@ [LLVM-PRE-20] ignore-llvm-version: 20 - 99
//@ [LLVM-PRE-20] max-llvm-major-version: 19
//@ [LLVM-POST-20] min-llvm-version: 20

#![feature(no_core, lang_items, f16)]
Expand Down
2 changes: 1 addition & 1 deletion tests/assembly/x86_64-cmp.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//@ revisions: DEBUG LLVM-PRE-20-OPTIM LLVM-20-OPTIM
//@ [DEBUG] compile-flags: -C opt-level=0
//@ [LLVM-PRE-20-OPTIM] compile-flags: -C opt-level=3
//@ [LLVM-PRE-20-OPTIM] ignore-llvm-version: 20 - 99
//@ [LLVM-PRE-20-OPTIM] max-llvm-major-version: 19
//@ [LLVM-20-OPTIM] compile-flags: -C opt-level=3
//@ [LLVM-20-OPTIM] min-llvm-version: 20
//@ assembly-output: emit-asm
Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/branch-protection-old-llvm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//@ [LEAF] compile-flags: -Z branch-protection=pac-ret,leaf
//@ [BKEY] compile-flags: -Z branch-protection=pac-ret,b-key
//@ compile-flags: --target aarch64-unknown-linux-gnu
//@ ignore-llvm-version: 19 - 99
//@ max-llvm-major-version: 18

#![crate_type = "lib"]
#![feature(no_core, lang_items)]
Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/call-metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// scalar value.

//@ compile-flags: -O -C no-prepopulate-passes
//@ ignore-llvm-version: 19 - 99
//@ max-llvm-major-version: 18

#![crate_type = "lib"]

Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/integer-cmp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

//@ revisions: llvm-pre-20 llvm-20
//@ [llvm-20] min-llvm-version: 20
//@ [llvm-pre-20] ignore-llvm-version: 20 - 99
//@ [llvm-pre-20] max-llvm-major-version: 19
//@ compile-flags: -C opt-level=3

#![crate_type = "lib"]
Expand Down
18 changes: 18 additions & 0 deletions tests/ui/asan-odr-win/asan_odr_windows.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//! Check that crates can be linked together with `-Z sanitizer=address` on msvc.
//! See <https://github.com/rust-lang/rust/issues/124390>.

//@ run-pass
//@ compile-flags:-Zsanitizer=address
//@ aux-build: asan_odr_win-2.rs
//@ only-windows-msvc

extern crate othercrate;

fn main() {
let result = std::panic::catch_unwind(|| {
println!("hello!");
});
assert!(result.is_ok());

othercrate::exposed_func();
}
11 changes: 11 additions & 0 deletions tests/ui/asan-odr-win/auxiliary/asan_odr_win-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//@ no-prefer-dynamic
//@ compile-flags: -Z sanitizer=address
#![crate_name = "othercrate"]
#![crate_type = "rlib"]

pub fn exposed_func() {
let result = std::panic::catch_unwind(|| {
println!("hello!");
});
assert!(result.is_ok());
}

0 comments on commit a4cedec

Please sign in to comment.