[PATCH] cdtest: Restrict exceptions during sysinit
Sebastian Huber
sebastian.huber at embedded-brains.de
Wed Jul 13 11:41:58 UTC 2022
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(+)
diff --git a/testsuites/samples/cdtest/main.cc b/testsuites/samples/cdtest/main.cc
index 44cdaf84bb..d5530a657d 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__) || defined(__aarch64__)
+#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(
--
2.35.3
More information about the devel
mailing list