From 4160337c8553e1083b12632eed7a94e51d57ea91 Mon Sep 17 00:00:00 2001 From: David Mo Date: Fri, 1 Sep 2023 10:53:50 -0700 Subject: [PATCH] Tests crash from inappropriate use of common linkage Normally, variables with common linkage must be zero-initialized. In Rust, common linkage variables that are not zero-initialized causes a crash in the compiler backend. This commit adds a test case to confirm this behavior, which will inform us if it changes in the future. --- .../linkage-attr/common-linkage-non-zero-init.rs | 14 ++++++++++++++ .../common-linkage-non-zero-init.stderr | 3 +++ 2 files changed, 17 insertions(+) create mode 100644 tests/ui/linkage-attr/common-linkage-non-zero-init.rs create mode 100644 tests/ui/linkage-attr/common-linkage-non-zero-init.stderr diff --git a/tests/ui/linkage-attr/common-linkage-non-zero-init.rs b/tests/ui/linkage-attr/common-linkage-non-zero-init.rs new file mode 100644 index 0000000000000..ce8d9848e4250 --- /dev/null +++ b/tests/ui/linkage-attr/common-linkage-non-zero-init.rs @@ -0,0 +1,14 @@ +// build-fail +// failure-status: 101 +// known-bug: #109681 + +// This test verifies that we continue to hit the LLVM error for common linkage with non-zero +// initializers, since it generates invalid LLVM IR. +// Linkages are internal features marked as perma-unstable, so we don't need to fix the issue +// for now. +#![crate_type="lib"] +#![feature(linkage)] + +#[linkage = "common"] +#[no_mangle] +pub static TEST: bool = true; diff --git a/tests/ui/linkage-attr/common-linkage-non-zero-init.stderr b/tests/ui/linkage-attr/common-linkage-non-zero-init.stderr new file mode 100644 index 0000000000000..667bb3ec130ed --- /dev/null +++ b/tests/ui/linkage-attr/common-linkage-non-zero-init.stderr @@ -0,0 +1,3 @@ +'common' global must have a zero initializer! +ptr @TEST +LLVM ERROR: Broken module found, compilation aborted!