From 656765c74b39064298eb16fdaf5f8b9f8ebfc01b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 13 Jul 2022 13:41:04 +0200 Subject: cdtest: Restrict exceptions during sysinit Exceptions during system initialization work only on targets which do not need a registration of exception frames during the global construction. In particular, targets which use the DWARF2 unwinder cannot use exceptions during system initialization. --- testsuites/samples/cdtest/main.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'testsuites') diff --git a/testsuites/samples/cdtest/main.cc b/testsuites/samples/cdtest/main.cc index 44cdaf84bb..1c5057a32b 100644 --- a/testsuites/samples/cdtest/main.cc +++ b/testsuites/samples/cdtest/main.cc @@ -238,6 +238,17 @@ rtems_task main_task( exit(0); } +/* + * Exceptions during system initialization work only on targets which do not + * need a registration of exception frames during the global construction. In + * particular, targets which use the DWARF2 unwinder cannot use exceptions + * during system initialization. + */ +#if defined(__arm__) +#define CAN_DO_EXCEPTIONS_DURING_SYSINIT +#endif + +#ifdef CAN_DO_EXCEPTIONS_DURING_SYSINIT static void early_exception() { try @@ -250,11 +261,13 @@ static void early_exception() throw "early exception 2"; } } +#endif static void test_exceptions_during_system_init() { TEST_BEGIN(); +#ifdef CAN_DO_EXCEPTIONS_DURING_SYSINIT try { early_exception(); @@ -263,6 +276,7 @@ static void test_exceptions_during_system_init() { rtems_test_assert(strcmp(e, "early exception 2") == 0); } +#endif } RTEMS_SYSINIT_ITEM( -- cgit v1.2.3