// This test is for *-windows-msvc only. // ignore-android // ignore-dragonfly // ignore-emscripten // ignore-freebsd // 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 extern crate wrapper; // Check that external symbols coming from foreign dylibs are adorned with 'dllimport', // whereas symbols coming from foreign staticlibs are not. (RFC-1717) // CHECK: @dylib_global1 = external dllimport local_unnamed_addr global i32 // CHECK: @dylib_global2 = external dllimport local_unnamed_addr global i32 // CHECK: @static_global1 = external local_unnamed_addr global i32 // CHECK: @static_global2 = external local_unnamed_addr global i32 // CHECK: declare dllimport i32 @dylib_func1(i32) // CHECK: declare dllimport i32 @dylib_func2(i32) // CHECK: declare i32 @static_func1(i32) // CHECK: declare i32 @static_func2(i32) #[link(name = "dummy", kind="dylib")] extern "C" { pub fn dylib_func1(x: i32) -> i32; pub static dylib_global1: i32; } #[link(name = "dummy", kind="static")] extern "C" { pub fn static_func1(x: i32) -> i32; pub static static_global1: i32; } fn main() { unsafe { dylib_func1(dylib_global1); wrapper::dylib_func2(wrapper::dylib_global2); static_func1(static_global1); wrapper::static_func2(wrapper::static_global2); } }