summaryrefslogtreecommitdiffstats
path: root/src/test/ui/abi/x86stdcall.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/abi/x86stdcall.rs')
-rw-r--r--src/test/ui/abi/x86stdcall.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/ui/abi/x86stdcall.rs b/src/test/ui/abi/x86stdcall.rs
new file mode 100644
index 000000000..868923e59
--- /dev/null
+++ b/src/test/ui/abi/x86stdcall.rs
@@ -0,0 +1,38 @@
+// run-pass
+// ignore-wasm32-bare no libc to test ffi with
+// ignore-sgx no libc
+// GetLastError doesn't seem to work with stack switching
+
+#[cfg(windows)]
+mod kernel32 {
+ extern "system" {
+ pub fn SetLastError(err: usize);
+ pub fn GetLastError() -> usize;
+ }
+}
+
+
+#[cfg(windows)]
+pub fn main() {
+ unsafe {
+ let expected = 1234;
+ kernel32::SetLastError(expected);
+ let actual = kernel32::GetLastError();
+ println!("actual = {}", actual);
+ assert_eq!(expected, actual);
+ }
+}
+
+#[cfg(any(target_os = "android",
+ target_os = "dragonfly",
+ target_os = "emscripten",
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos",
+ target_os = "linux",
+ target_os = "macos",
+ target_os = "netbsd",
+ target_os = "openbsd",
+ target_os = "solaris",
+ target_os = "vxworks"))]
+pub fn main() { }