summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/libcsupport/src/newlibc.c8
-rw-r--r--c/src/lib/libc/newlibc.c8
-rw-r--r--cpukit/libcsupport/src/newlibc.c8
3 files changed, 24 insertions, 0 deletions
diff --git a/c/src/exec/libcsupport/src/newlibc.c b/c/src/exec/libcsupport/src/newlibc.c
index af3023fac2..cbf073cc13 100644
--- a/c/src/exec/libcsupport/src/newlibc.c
+++ b/c/src/exec/libcsupport/src/newlibc.c
@@ -79,6 +79,14 @@ extern void _reclaim_reent(struct _reent *);
void
libc_wrapup(void)
{
+ /*
+ * In case RTEMS is already down, don't do this. It could be
+ * dangerous.
+ */
+
+ if (!_System_state_Is_up(_System_state_Get()))
+ return;
+
_wrapup_reent(0);
if (_REENT != &libc_global_reent)
{
diff --git a/c/src/lib/libc/newlibc.c b/c/src/lib/libc/newlibc.c
index af3023fac2..cbf073cc13 100644
--- a/c/src/lib/libc/newlibc.c
+++ b/c/src/lib/libc/newlibc.c
@@ -79,6 +79,14 @@ extern void _reclaim_reent(struct _reent *);
void
libc_wrapup(void)
{
+ /*
+ * In case RTEMS is already down, don't do this. It could be
+ * dangerous.
+ */
+
+ if (!_System_state_Is_up(_System_state_Get()))
+ return;
+
_wrapup_reent(0);
if (_REENT != &libc_global_reent)
{
diff --git a/cpukit/libcsupport/src/newlibc.c b/cpukit/libcsupport/src/newlibc.c
index af3023fac2..cbf073cc13 100644
--- a/cpukit/libcsupport/src/newlibc.c
+++ b/cpukit/libcsupport/src/newlibc.c
@@ -79,6 +79,14 @@ extern void _reclaim_reent(struct _reent *);
void
libc_wrapup(void)
{
+ /*
+ * In case RTEMS is already down, don't do this. It could be
+ * dangerous.
+ */
+
+ if (!_System_state_Is_up(_System_state_Get()))
+ return;
+
_wrapup_reent(0);
if (_REENT != &libc_global_reent)
{