From 631cd5845e8de329d0e227aaa707d7ea228b8f8f Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:20:29 +0200 Subject: Merging upstream version 1.70.0+dfsg1. Signed-off-by: Daniel Baumann --- .../foreign-double-unwind/Makefile | 10 ------- .../foreign-double-unwind/foo.cpp | 33 ---------------------- .../run-make-fulldeps/foreign-double-unwind/foo.rs | 26 ----------------- 3 files changed, 69 deletions(-) delete mode 100644 tests/run-make-fulldeps/foreign-double-unwind/Makefile delete mode 100644 tests/run-make-fulldeps/foreign-double-unwind/foo.cpp delete mode 100644 tests/run-make-fulldeps/foreign-double-unwind/foo.rs (limited to 'tests/run-make-fulldeps/foreign-double-unwind') diff --git a/tests/run-make-fulldeps/foreign-double-unwind/Makefile b/tests/run-make-fulldeps/foreign-double-unwind/Makefile deleted file mode 100644 index ea2fe9ff8..000000000 --- a/tests/run-make-fulldeps/foreign-double-unwind/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -include ../tools.mk - -all: foo - $(call RUN,foo) | $(CGREP) -v unreachable - -foo: foo.rs $(call NATIVE_STATICLIB,foo) - $(RUSTC) $< -lfoo $(EXTRARSCXXFLAGS) - -$(TMPDIR)/libfoo.o: foo.cpp - $(call COMPILE_OBJ_CXX,$@,$<) diff --git a/tests/run-make-fulldeps/foreign-double-unwind/foo.cpp b/tests/run-make-fulldeps/foreign-double-unwind/foo.cpp deleted file mode 100644 index 69a8f11c2..000000000 --- a/tests/run-make-fulldeps/foreign-double-unwind/foo.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -void println(const char* s) { - puts(s); - fflush(stdout); -} - -struct outer_exception {}; -struct inner_exception {}; - -extern "C" { - void throw_cxx_exception() { - if (std::uncaught_exception()) { - println("throwing inner C++ exception"); - throw inner_exception(); - } else { - println("throwing outer C++ exception"); - throw outer_exception(); - } - } - - void cxx_catch_callback(void (*cb)()) { - try { - cb(); - println("unreachable: callback returns"); - } catch (outer_exception) { - println("unreachable: caught outer exception in catch (...)"); - } catch (inner_exception) { - println("unreachable: caught inner exception in catch (...)"); - } - } -} diff --git a/tests/run-make-fulldeps/foreign-double-unwind/foo.rs b/tests/run-make-fulldeps/foreign-double-unwind/foo.rs deleted file mode 100644 index cae8aa940..000000000 --- a/tests/run-make-fulldeps/foreign-double-unwind/foo.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Tests that C++ double unwinding through Rust code will be properly guarded -// against instead of exhibiting undefined behaviour. - -#![feature(c_unwind)] - -extern "C-unwind" { - fn throw_cxx_exception(); - fn cxx_catch_callback(cb: extern "C-unwind" fn()); -} - -struct ThrowOnDrop; - -impl Drop for ThrowOnDrop { - fn drop(&mut self) { - unsafe { throw_cxx_exception() }; - } -} - -extern "C-unwind" fn test_double_unwind() { - let _a = ThrowOnDrop; - let _b = ThrowOnDrop; -} - -fn main() { - unsafe { cxx_catch_callback(test_double_unwind) }; -} -- cgit v1.2.3