summaryrefslogtreecommitdiffstats
path: root/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
commit1376c5a617be5c25655d0d7cb63e3beaa5a6e026 (patch)
tree3bb8d61aee02bc7a15eab3f36e3b921afc2075d0 /tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic
parentReleasing progress-linux version 1.69.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.tar.xz
rustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.zip
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic')
-rw-r--r--tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile30
-rw-r--r--tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c12
-rw-r--r--tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs35
-rw-r--r--tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs12
4 files changed, 0 insertions, 89 deletions
diff --git a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile
deleted file mode 100644
index 134f000d4..000000000
--- a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-include ../tools.mk
-
-all: archive
- # Compile `main.rs`, which will link into our library, and run it.
- $(RUSTC) main.rs
- $(call RUN,main)
-
-ifdef IS_MSVC
-archive: add.o panic.o
- # Now, create an archive using these two objects.
- $(AR) crus $(TMPDIR)/add.lib $(TMPDIR)/add.o $(TMPDIR)/panic.o
-else
-archive: add.o panic.o
- # Now, create an archive using these two objects.
- $(AR) crus $(TMPDIR)/libadd.a $(TMPDIR)/add.o $(TMPDIR)/panic.o
-endif
-
-# Compile `panic.rs` into an object file.
-#
-# Note that we invoke `rustc` directly, so we may emit an object rather
-# than an archive. We'll do that later.
-panic.o:
- $(BARE_RUSTC) $(RUSTFLAGS) \
- --out-dir $(TMPDIR) \
- --emit=obj panic.rs
-
-# Compile `add.c` into an object file.
-add.o:
- $(call COMPILE_OBJ,$(TMPDIR)/add.o,add.c)
-
diff --git a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c
deleted file mode 100644
index 444359451..000000000
--- a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-
-// An external function, defined in Rust.
-extern void panic_if_greater_than_10(unsigned x);
-
-unsigned add_small_numbers(unsigned a, unsigned b) {
- unsigned c = a + b;
- panic_if_greater_than_10(c);
- return c;
-}
diff --git a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs
deleted file mode 100644
index 78a71219c..000000000
--- a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-//! A test for calling `C-unwind` functions across foreign function boundaries.
-//!
-//! This test triggers a panic in a Rust library that our foreign function invokes. This shows
-//! that we can unwind through the C code in that library, and catch the underlying panic.
-#![feature(c_unwind)]
-
-use std::panic::{catch_unwind, AssertUnwindSafe};
-
-fn main() {
- // Call `add_small_numbers`, passing arguments that will NOT trigger a panic.
- let (a, b) = (9, 1);
- let c = unsafe { add_small_numbers(a, b) };
- assert_eq!(c, 10);
-
- // Call `add_small_numbers`, passing arguments that will trigger a panic, and catch it.
- let caught_unwind = catch_unwind(AssertUnwindSafe(|| {
- let (a, b) = (10, 1);
- let _c = unsafe { add_small_numbers(a, b) };
- unreachable!("should have unwound instead of returned");
- }));
-
- // Assert that we did indeed panic, then unwrap and downcast the panic into the sum.
- assert!(caught_unwind.is_err());
- let panic_obj = caught_unwind.unwrap_err();
- let msg = panic_obj.downcast_ref::<String>().unwrap();
- assert_eq!(msg, "11");
-}
-
-#[link(name = "add", kind = "static")]
-extern "C-unwind" {
- /// An external function, defined in C.
- ///
- /// Returns the sum of two numbers, or panics if the sum is greater than 10.
- fn add_small_numbers(a: u32, b: u32) -> u32;
-}
diff --git a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs
deleted file mode 100644
index a99a04d5c..000000000
--- a/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-#![crate_type = "staticlib"]
-#![feature(c_unwind)]
-
-/// This function will panic if `x` is greater than 10.
-///
-/// This function is called by `add_small_numbers`.
-#[no_mangle]
-pub extern "C-unwind" fn panic_if_greater_than_10(x: u32) {
- if x > 10 {
- panic!("{}", x); // That is too big!
- }
-}