diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/run-make-fulldeps/foreign-double-unwind | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/run-make-fulldeps/foreign-double-unwind')
3 files changed, 0 insertions, 69 deletions
diff --git a/src/test/run-make-fulldeps/foreign-double-unwind/Makefile b/src/test/run-make-fulldeps/foreign-double-unwind/Makefile deleted file mode 100644 index ea2fe9ff8..000000000 --- a/src/test/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/src/test/run-make-fulldeps/foreign-double-unwind/foo.cpp b/src/test/run-make-fulldeps/foreign-double-unwind/foo.cpp deleted file mode 100644 index 69a8f11c2..000000000 --- a/src/test/run-make-fulldeps/foreign-double-unwind/foo.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include <cstdio> -#include <exception> - -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/src/test/run-make-fulldeps/foreign-double-unwind/foo.rs b/src/test/run-make-fulldeps/foreign-double-unwind/foo.rs deleted file mode 100644 index cae8aa940..000000000 --- a/src/test/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) }; -} |