about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/ui/extern-flag/auxiliary/panic_handler.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/ui/extern-flag/auxiliary/panic_handler.rs b/tests/ui/extern-flag/auxiliary/panic_handler.rs
index 9953b783c62..5ca32fa992b 100644
--- a/tests/ui/extern-flag/auxiliary/panic_handler.rs
+++ b/tests/ui/extern-flag/auxiliary/panic_handler.rs
@@ -1,6 +1,15 @@
 #![feature(lang_items)]
 #![no_std]
 
+// Since `rustc` generally passes `-nodefaultlibs` to the linker,
+// Rust programs link necessary system libraries via `#[link()]`
+// attributes in the `libc` crate. `libc` is a dependency of `std`,
+// but as we are `#![no_std]`, we need to include it manually.
+// Except on windows-msvc.
+#![feature(rustc_private)]
+#[cfg(not(all(windows, target_env = "msvc")))]
+extern crate libc;
+
 #[panic_handler]
 pub fn begin_panic_handler(_info: &core::panic::PanicInfo<'_>) -> ! {
     loop {}