diff options
| author | bors <bors@rust-lang.org> | 2022-12-03 12:32:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-12-03 12:32:28 +0000 |
| commit | 840f227b008aac696e869e1cf9e8e9f562496bc4 (patch) | |
| tree | e2486fa6b75b9b473c4d0619e2ebe67f2fad180f /src/test/codegen | |
| parent | 7d75cc48fed440a45c623609914554a816ceacd8 (diff) | |
| parent | 29814f2e2ace29268f76b109022ea4fe26de6535 (diff) | |
| download | rust-840f227b008aac696e869e1cf9e8e9f562496bc4.tar.gz rust-840f227b008aac696e869e1cf9e8e9f562496bc4.zip | |
Auto merge of #2712 - RalfJung:rustup, r=RalfJung
Rustup
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/auxiliary/extern_decl.rs | 11 | ||||
| -rw-r--r-- | src/test/codegen/dllimports/main.rs | 13 | ||||
| -rw-r--r-- | src/test/codegen/panic-abort-windows.rs | 15 | ||||
| -rw-r--r-- | src/test/codegen/static-relocation-model-msvc.rs | 26 |
4 files changed, 40 insertions, 25 deletions
diff --git a/src/test/codegen/auxiliary/extern_decl.rs b/src/test/codegen/auxiliary/extern_decl.rs new file mode 100644 index 00000000000..edc48351869 --- /dev/null +++ b/src/test/codegen/auxiliary/extern_decl.rs @@ -0,0 +1,11 @@ +// Auxiliary crate that exports a function and static. Both always +// evaluate to `71`. We force mutability on the static to prevent +// it from being inlined as constant. + +#![crate_type = "lib"] + +#[no_mangle] +pub fn extern_fn() -> u8 { unsafe { extern_static } } + +#[no_mangle] +pub static mut extern_static: u8 = 71; diff --git a/src/test/codegen/dllimports/main.rs b/src/test/codegen/dllimports/main.rs index bb3134e81c9..ab599992ffd 100644 --- a/src/test/codegen/dllimports/main.rs +++ b/src/test/codegen/dllimports/main.rs @@ -1,17 +1,6 @@ // This test is for *-windows-msvc only. -// ignore-android -// ignore-dragonfly -// ignore-emscripten -// ignore-freebsd +// only-windows // ignore-gnu -// ignore-haiku -// ignore-ios -// ignore-linux -// ignore-macos -// ignore-netbsd -// ignore-openbsd -// ignore-solaris -// ignore-sgx no dynamic linking // aux-build:dummy.rs // aux-build:wrapper.rs diff --git a/src/test/codegen/panic-abort-windows.rs b/src/test/codegen/panic-abort-windows.rs index 9ee4bfc4711..2ee29762dcd 100644 --- a/src/test/codegen/panic-abort-windows.rs +++ b/src/test/codegen/panic-abort-windows.rs @@ -1,16 +1,5 @@ -// This test is for *-windows-msvc only. -// ignore-android -// ignore-dragonfly -// ignore-emscripten -// ignore-freebsd -// ignore-haiku -// ignore-ios -// ignore-linux -// ignore-macos -// ignore-netbsd -// ignore-openbsd -// ignore-solaris -// ignore-sgx +// This test is for *-windows only. +// only-windows // compile-flags: -C no-prepopulate-passes -C panic=abort -O diff --git a/src/test/codegen/static-relocation-model-msvc.rs b/src/test/codegen/static-relocation-model-msvc.rs new file mode 100644 index 00000000000..b2afc7deb67 --- /dev/null +++ b/src/test/codegen/static-relocation-model-msvc.rs @@ -0,0 +1,26 @@ +// Verify linkage of external symbols in the static relocation model on MSVC. +// +// compile-flags: -O -C relocation-model=static +// aux-build: extern_decl.rs +// only-x86_64-pc-windows-msvc + +#![crate_type = "rlib"] + +extern crate extern_decl; + +// The `extern_decl` definitions are imported from a statically linked rust +// crate, thus they are expected to be marked `dso_local` without `dllimport`. +// +// The `access_extern()` symbol is from this compilation unit, thus we expect +// it to be marked `dso_local` as well, given the static relocation model. +// +// CHECK: @extern_static = external dso_local local_unnamed_addr global i8 +// CHECK: define dso_local i8 @access_extern() {{.*}} +// CHECK: declare dso_local i8 @extern_fn() {{.*}} + +#[no_mangle] +pub fn access_extern() -> u8 { + unsafe { + extern_decl::extern_fn() + extern_decl::extern_static + } +} |
