From 429223a7f62f3176760273c4ceaa35e551a2a0ac Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Tue, 14 Jun 2022 17:50:45 -0700 Subject: [PATCH 01/12] Add back in __gxx_personality_v0 --- src/library.js | 7 +++++++ tests/test_core.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/library.js b/src/library.js index 1f07e5c619d94..27722d99e00b3 100644 --- a/src/library.js +++ b/src/library.js @@ -405,6 +405,13 @@ mergeInto(LibraryManager.library, { abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); }, + // TODO: Remove this when Rust doesn't need it anymore. + // https://github.com/rust-lang/rust/pull/97888 + __gxx_personality_v0: function() { + console.warn("__gxx_personality_v0 called", arguments); + abort("__gxx_personality_v0 called"); + }, + // ========================================================================== // time.h // ========================================================================== diff --git a/tests/test_core.py b/tests/test_core.py index 154392e727cb7..c07fc32c5d973 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -9401,6 +9401,34 @@ def test_js_library_i64_params(self): self.emcc_args += ['--js-library=' + test_file('core/js_library_i64_params.js')] self.do_core_test('js_library_i64_params.c') + def test_rust_gxx_personality_v0(self): + create_file('main.c', r''' + #include + void __gxx_personality_v0(); + void rust_eh_personality(){ + __gxx_personality_v0(); + } + int main(int argc, char** argv) { + printf("result: %d\n", argc); + if(argc == 2){ + rust_eh_personality(); + } + return 0; + } + ''') + self.emcc('main.c', ['-c']) + + self.run_process([EMCC, '-o', 'main.js', 'main.o'] + self.get_emcc_args()) + + self.do_run('main.js', 'result: 1', no_build=True) + try: + self.do_run('main.js', 'result: 1', no_build=True, args=["1"]) + raise RuntimeError('should not have passed') + except AssertionError as e: + err = e + assert "__gxx_personality_v0 called" in err.args[0] + del err + # Generate tests for everything def make_run(name, emcc_args, settings=None, env=None, node_args=None, require_v8=False, v8_args=None): From 8f379c114b9fb67b5d58412229d4ea11e65c181f Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 10:18:50 -0700 Subject: [PATCH 02/12] Move test to test_other --- tests/test_core.py | 29 ----------------------------- tests/test_other.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index c07fc32c5d973..9cf4e24406c26 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -9401,35 +9401,6 @@ def test_js_library_i64_params(self): self.emcc_args += ['--js-library=' + test_file('core/js_library_i64_params.js')] self.do_core_test('js_library_i64_params.c') - def test_rust_gxx_personality_v0(self): - create_file('main.c', r''' - #include - void __gxx_personality_v0(); - void rust_eh_personality(){ - __gxx_personality_v0(); - } - int main(int argc, char** argv) { - printf("result: %d\n", argc); - if(argc == 2){ - rust_eh_personality(); - } - return 0; - } - ''') - self.emcc('main.c', ['-c']) - - self.run_process([EMCC, '-o', 'main.js', 'main.o'] + self.get_emcc_args()) - - self.do_run('main.js', 'result: 1', no_build=True) - try: - self.do_run('main.js', 'result: 1', no_build=True, args=["1"]) - raise RuntimeError('should not have passed') - except AssertionError as e: - err = e - assert "__gxx_personality_v0 called" in err.args[0] - del err - - # Generate tests for everything def make_run(name, emcc_args, settings=None, env=None, node_args=None, require_v8=False, v8_args=None): if env is None: diff --git a/tests/test_other.py b/tests/test_other.py index d9452b7e8bb08..b8ea84dd83aa7 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12126,3 +12126,31 @@ def test_print_map(self): self.assertContained('hello_world.o:(__original_main)', out) out2 = self.run_process([EMCC, 'hello_world.o', '-Wl,-M'], stdout=PIPE).stdout self.assertEqual(out, out2) + + def test_rust_gxx_personality_v0(self): + create_file('main.c', r''' + #include + void __gxx_personality_v0(); + void rust_eh_personality(){ + __gxx_personality_v0(); + } + int main(int argc, char** argv) { + printf("result: %d\n", argc); + if(argc == 2){ + rust_eh_personality(); + } + return 0; + } + ''') + self.emcc('main.c', ['-c']) + + self.run_process([EMCC, '-o', 'main.js', 'main.o'] + self.get_emcc_args()) + + self.do_run('main.js', 'result: 1', no_build=True) + try: + self.do_run('main.js', 'result: 1', no_build=True, args=["1"]) + raise RuntimeError('should not have passed') + except AssertionError as e: + err = e + assert "__gxx_personality_v0 called" in err.args[0] + del err From b47dbfc55acc02a4a3d4b9ae955849333162b4ee Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 10:36:11 -0700 Subject: [PATCH 03/12] Write test in C++ --- tests/test_other.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/test_other.py b/tests/test_other.py index b8ea84dd83aa7..7700c73d1be3f 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12128,23 +12128,25 @@ def test_print_map(self): self.assertEqual(out, out2) def test_rust_gxx_personality_v0(self): - create_file('main.c', r''' + create_file('main.cpp', r''' #include - void __gxx_personality_v0(); - void rust_eh_personality(){ - __gxx_personality_v0(); - } - int main(int argc, char** argv) { - printf("result: %d\n", argc); - if(argc == 2){ - rust_eh_personality(); + extern "C" { + void __gxx_personality_v0(); + void rust_eh_personality(){ + __gxx_personality_v0(); + } + int main(int argc, char** argv) { + printf("result: %d\n", argc); + if(argc == 2){ + rust_eh_personality(); + } + return 0; } - return 0; } ''') - self.emcc('main.c', ['-c']) + self.run_process([EMXX, '-c', 'main.cpp']) - self.run_process([EMCC, '-o', 'main.js', 'main.o'] + self.get_emcc_args()) + self.run_process([EMXX, '-o', 'main.js', 'main.o', '-lc++abi'] + self.get_emcc_args()) self.do_run('main.js', 'result: 1', no_build=True) try: From edb5eb0415b7ad561415084500c8615a032bef7c Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 10:47:42 -0700 Subject: [PATCH 04/12] Move stub to libcxxabi --- src/library.js | 7 ------- .../libcxxabi/src/gxx_personality_stub.cpp | 20 +++++++++++++++++++ tests/test_other.py | 11 +++++----- tools/system_libs.py | 1 + 4 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 system/lib/libcxxabi/src/gxx_personality_stub.cpp diff --git a/src/library.js b/src/library.js index 27722d99e00b3..1f07e5c619d94 100644 --- a/src/library.js +++ b/src/library.js @@ -405,13 +405,6 @@ mergeInto(LibraryManager.library, { abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); }, - // TODO: Remove this when Rust doesn't need it anymore. - // https://github.com/rust-lang/rust/pull/97888 - __gxx_personality_v0: function() { - console.warn("__gxx_personality_v0 called", arguments); - abort("__gxx_personality_v0 called"); - }, - // ========================================================================== // time.h // ========================================================================== diff --git a/system/lib/libcxxabi/src/gxx_personality_stub.cpp b/system/lib/libcxxabi/src/gxx_personality_stub.cpp new file mode 100644 index 0000000000000..ef51805f91c2d --- /dev/null +++ b/system/lib/libcxxabi/src/gxx_personality_stub.cpp @@ -0,0 +1,20 @@ +#include +#include + + +#include "cxa_exception.h" +#include "cxa_handlers.h" +#include "emscripten.h" + + + +// TODO: Remove this when Rust doesn't need it anymore. +// https://github.com/rust-lang/rust/pull/97888 +extern "C" _LIBCXXABI_FUNC_VIS _Unwind_Reason_Code +__gxx_personality_v0(int version, + _Unwind_Action actions, + uint64_t exceptionClass, + _Unwind_Exception* unwind_exception, + _Unwind_Context* context) { + abort(); +} diff --git a/tests/test_other.py b/tests/test_other.py index 7700c73d1be3f..661d5a945977f 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12130,15 +12130,16 @@ def test_print_map(self): def test_rust_gxx_personality_v0(self): create_file('main.cpp', r''' #include + #include extern "C" { - void __gxx_personality_v0(); - void rust_eh_personality(){ - __gxx_personality_v0(); + int __gxx_personality_v0(int version, void* actions, uint64_t exception_class, void* exception_object, void* context); + int rust_eh_personality(int version, void* actions, uint64_t exception_class, void* exception_object, void* context){ + return __gxx_personality_v0(version, actions, exception_class, exception_object, context); } int main(int argc, char** argv) { printf("result: %d\n", argc); if(argc == 2){ - rust_eh_personality(); + rust_eh_personality(0, NULL, 0, NULL, NULL); } return 0; } @@ -12154,5 +12155,5 @@ def test_rust_gxx_personality_v0(self): raise RuntimeError('should not have passed') except AssertionError as e: err = e - assert "__gxx_personality_v0 called" in err.args[0] + assert "Aborted(native code called abort())" in err.args[0] del err diff --git a/tools/system_libs.py b/tools/system_libs.py index 1ca72a83c2b57..a55c32e6922e4 100644 --- a/tools/system_libs.py +++ b/tools/system_libs.py @@ -1227,6 +1227,7 @@ def get_files(self): 'stdlib_typeinfo.cpp', 'private_typeinfo.cpp', 'cxa_exception_emscripten.cpp', + 'gxx_personality_stub.cpp', ] if self.eh_mode == Exceptions.NONE: filenames += ['cxa_noexception.cpp'] From 7fe5f2309aaf7ad8a10a4079e70c231d17e0d728 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 11:10:17 -0700 Subject: [PATCH 05/12] Simplify test --- tests/test_other.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tests/test_other.py b/tests/test_other.py index 661d5a945977f..5c24fa9579020 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12133,14 +12133,8 @@ def test_rust_gxx_personality_v0(self): #include extern "C" { int __gxx_personality_v0(int version, void* actions, uint64_t exception_class, void* exception_object, void* context); - int rust_eh_personality(int version, void* actions, uint64_t exception_class, void* exception_object, void* context){ - return __gxx_personality_v0(version, actions, exception_class, exception_object, context); - } - int main(int argc, char** argv) { - printf("result: %d\n", argc); - if(argc == 2){ - rust_eh_personality(0, NULL, 0, NULL, NULL); - } + int main() { + __gxx_personality_v0(0, NULL, 0, NULL, NULL); return 0; } } @@ -12149,9 +12143,8 @@ def test_rust_gxx_personality_v0(self): self.run_process([EMXX, '-o', 'main.js', 'main.o', '-lc++abi'] + self.get_emcc_args()) - self.do_run('main.js', 'result: 1', no_build=True) try: - self.do_run('main.js', 'result: 1', no_build=True, args=["1"]) + self.do_run('main.js', no_build=True) raise RuntimeError('should not have passed') except AssertionError as e: err = e From 469912877f7e764140a9775d074bed8ef19032b2 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 11:11:01 -0700 Subject: [PATCH 06/12] Fix formatting --- tests/test_core.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index 9cf4e24406c26..0d44bfadfbcee 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -20,7 +20,7 @@ raise Exception('do not run this file directly; do something like: tests/runner') from tools.shared import try_delete, PIPE -from tools.shared import PYTHON, EMCC, EMAR +from tools.shared import EMCC, EMAR from tools.utils import WINDOWS, MACOS, write_file from tools import shared, building, config, webassembly import common @@ -28,7 +28,7 @@ from common import skip_if, needs_dylink, no_windows, no_mac, is_slow_test, parameterized from common import env_modify, with_env_modify, disabled, node_pthreads, also_with_wasm_bigint from common import read_file, read_binary, requires_v8, requires_node -from common import NON_ZERO, WEBIDL_BINDER, EMBUILDER +from common import NON_ZERO, WEBIDL_BINDER, EMBUILDER, PYTHON import clang_native # decorators for limiting which modes a test can run in @@ -9401,6 +9401,7 @@ def test_js_library_i64_params(self): self.emcc_args += ['--js-library=' + test_file('core/js_library_i64_params.js')] self.do_core_test('js_library_i64_params.c') + # Generate tests for everything def make_run(name, emcc_args, settings=None, env=None, node_args=None, require_v8=False, v8_args=None): if env is None: From 27473cff5b99f275e561fe9827f7945f4cb5cb86 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 11:41:56 -0700 Subject: [PATCH 07/12] Move stub to cxa_exception_emscripten --- .../src/cxa_exception_emscripten.cpp | 13 ++++++++++++ .../libcxxabi/src/gxx_personality_stub.cpp | 20 ------------------- tests/test_other.py | 4 ++-- tools/system_libs.py | 2 +- 4 files changed, 16 insertions(+), 23 deletions(-) delete mode 100644 system/lib/libcxxabi/src/gxx_personality_stub.cpp diff --git a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp index facc0b8ef50c2..7ef940c490dbf 100644 --- a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp +++ b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp @@ -11,10 +11,23 @@ #include "cxa_exception.h" #include "private_typeinfo.h" #include +#include +#include #if defined(__USING_EMSCRIPTEN_EXCEPTIONS__) || \ defined(__USING_WASM_EXCEPTIONS__) +// TODO: Remove this when Rust doesn't need it anymore. +// https://github.com/rust-lang/rust/pull/97888 +extern "C" _LIBCXXABI_FUNC_VIS _Unwind_Reason_Code +__gxx_personality_v0(int version, + _Unwind_Action actions, + uint64_t exceptionClass, + _Unwind_Exception* unwind_exception, + _Unwind_Context* context) { + abort(); +} + using namespace __cxxabiv1; // Some utility routines are copied from cxa_exception.cpp diff --git a/system/lib/libcxxabi/src/gxx_personality_stub.cpp b/system/lib/libcxxabi/src/gxx_personality_stub.cpp deleted file mode 100644 index ef51805f91c2d..0000000000000 --- a/system/lib/libcxxabi/src/gxx_personality_stub.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - - -#include "cxa_exception.h" -#include "cxa_handlers.h" -#include "emscripten.h" - - - -// TODO: Remove this when Rust doesn't need it anymore. -// https://github.com/rust-lang/rust/pull/97888 -extern "C" _LIBCXXABI_FUNC_VIS _Unwind_Reason_Code -__gxx_personality_v0(int version, - _Unwind_Action actions, - uint64_t exceptionClass, - _Unwind_Exception* unwind_exception, - _Unwind_Context* context) { - abort(); -} diff --git a/tests/test_other.py b/tests/test_other.py index 278c5289a0e0e..4bea8ee242514 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12168,9 +12168,9 @@ def test_rust_gxx_personality_v0(self): } } ''') - self.run_process([EMXX, '-c', 'main.cpp']) + self.run_process([EMXX, '-c', 'main.cpp', '-fexceptions']) - self.run_process([EMXX, '-o', 'main.js', 'main.o', '-lc++abi'] + self.get_emcc_args()) + self.run_process([EMXX, '-o', 'main.js', 'main.o', '-fexceptions'] + self.get_emcc_args()) try: self.do_run('main.js', no_build=True) diff --git a/tools/system_libs.py b/tools/system_libs.py index a55c32e6922e4..d5b4bc9df525c 100644 --- a/tools/system_libs.py +++ b/tools/system_libs.py @@ -1227,8 +1227,8 @@ def get_files(self): 'stdlib_typeinfo.cpp', 'private_typeinfo.cpp', 'cxa_exception_emscripten.cpp', - 'gxx_personality_stub.cpp', ] + print("HI!") if self.eh_mode == Exceptions.NONE: filenames += ['cxa_noexception.cpp'] elif self.eh_mode == Exceptions.WASM: From 6430e0150e0bbba2a638126145e35fc69c03d2cc Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 11:57:02 -0700 Subject: [PATCH 08/12] Remove debug print --- tools/system_libs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/system_libs.py b/tools/system_libs.py index d5b4bc9df525c..1ca72a83c2b57 100644 --- a/tools/system_libs.py +++ b/tools/system_libs.py @@ -1228,7 +1228,6 @@ def get_files(self): 'private_typeinfo.cpp', 'cxa_exception_emscripten.cpp', ] - print("HI!") if self.eh_mode == Exceptions.NONE: filenames += ['cxa_noexception.cpp'] elif self.eh_mode == Exceptions.WASM: From 183340e1ef49fa2875fcfffc1d1700bc473a00ae Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 12:00:38 -0700 Subject: [PATCH 09/12] Simplify test --- tests/test_other.py | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/tests/test_other.py b/tests/test_other.py index 4bea8ee242514..6381b04607947 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12157,7 +12157,8 @@ def test_print_map(self): self.assertEqual(out, out2) def test_rust_gxx_personality_v0(self): - create_file('main.cpp', r''' + self.emcc_args.append('-fwasm-exceptions') + self.do_run(r''' #include #include extern "C" { @@ -12167,15 +12168,4 @@ def test_rust_gxx_personality_v0(self): return 0; } } - ''') - self.run_process([EMXX, '-c', 'main.cpp', '-fexceptions']) - - self.run_process([EMXX, '-o', 'main.js', 'main.o', '-fexceptions'] + self.get_emcc_args()) - - try: - self.do_run('main.js', no_build=True) - raise RuntimeError('should not have passed') - except AssertionError as e: - err = e - assert "Aborted(native code called abort())" in err.args[0] - del err + ''', 'Aborted(native code called abort())', assert_returncode=NON_ZERO) From a489abc0d55d1255f418bb27d5fa30fb37f9e063 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 12:04:31 -0700 Subject: [PATCH 10/12] Update comment: --- system/lib/libcxxabi/src/cxa_exception_emscripten.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp index 7ef940c490dbf..c1322c3386265 100644 --- a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp +++ b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp @@ -17,8 +17,11 @@ #if defined(__USING_EMSCRIPTEN_EXCEPTIONS__) || \ defined(__USING_WASM_EXCEPTIONS__) -// TODO: Remove this when Rust doesn't need it anymore. +// Until recently, Rust's `rust_eh_personality` for emscripten referred to this +// symbol. If Emscripten doesn't provide it, there will be errors when linking +// rust. The rust personality function is never called so we can just abort. // https://github.com/rust-lang/rust/pull/97888 +// TODO: Remove this when Rust doesn't need it anymore. extern "C" _LIBCXXABI_FUNC_VIS _Unwind_Reason_Code __gxx_personality_v0(int version, _Unwind_Action actions, From 12d724c622e03bd6197c42cac25533de48b39f89 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 12:10:40 -0700 Subject: [PATCH 11/12] Update guard to !WASM_EXCEPTIONS --- system/lib/libcxxabi/src/cxa_exception_emscripten.cpp | 8 +++++--- tests/test_other.py | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp index c1322c3386265..fdd3bb605d311 100644 --- a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp +++ b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp @@ -14,9 +14,7 @@ #include #include -#if defined(__USING_EMSCRIPTEN_EXCEPTIONS__) || \ - defined(__USING_WASM_EXCEPTIONS__) - +#if !defined(__USING_WASM_EXCEPTIONS__) // Until recently, Rust's `rust_eh_personality` for emscripten referred to this // symbol. If Emscripten doesn't provide it, there will be errors when linking // rust. The rust personality function is never called so we can just abort. @@ -30,6 +28,10 @@ __gxx_personality_v0(int version, _Unwind_Context* context) { abort(); } +#endif // !defined(__USING_WASM_EXCEPTIONS__) + +#if defined(__USING_EMSCRIPTEN_EXCEPTIONS__) || \ + defined(__USING_WASM_EXCEPTIONS__) using namespace __cxxabiv1; diff --git a/tests/test_other.py b/tests/test_other.py index 6381b04607947..86ac20e7be3c4 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12157,7 +12157,6 @@ def test_print_map(self): self.assertEqual(out, out2) def test_rust_gxx_personality_v0(self): - self.emcc_args.append('-fwasm-exceptions') self.do_run(r''' #include #include From 7368a65770fdb52ae27445f85fd2ea3f0752b673 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 15 Jun 2022 13:07:05 -0700 Subject: [PATCH 12/12] Address review comments --- system/lib/libcxxabi/src/cxa_exception_emscripten.cpp | 1 + tests/test_other.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp index fdd3bb605d311..4e971db9307b4 100644 --- a/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp +++ b/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp @@ -18,6 +18,7 @@ // Until recently, Rust's `rust_eh_personality` for emscripten referred to this // symbol. If Emscripten doesn't provide it, there will be errors when linking // rust. The rust personality function is never called so we can just abort. +// We need this to support old versions of Rust. // https://github.com/rust-lang/rust/pull/97888 // TODO: Remove this when Rust doesn't need it anymore. extern "C" _LIBCXXABI_FUNC_VIS _Unwind_Reason_Code diff --git a/tests/test_other.py b/tests/test_other.py index 86ac20e7be3c4..d00c3fa62e5b8 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -12167,4 +12167,4 @@ def test_rust_gxx_personality_v0(self): return 0; } } - ''', 'Aborted(native code called abort())', assert_returncode=NON_ZERO) + ''', assert_returncode=NON_ZERO)