summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/libcsupport/src/newlibc_reent.c5
-rw-r--r--testsuites/libtests/newlib01/init.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/cpukit/libcsupport/src/newlibc_reent.c b/cpukit/libcsupport/src/newlibc_reent.c
index 430157cf0f..6dc0b1eeaa 100644
--- a/cpukit/libcsupport/src/newlibc_reent.c
+++ b/cpukit/libcsupport/src/newlibc_reent.c
@@ -44,7 +44,10 @@ bool newlib_create_hook(
}
#endif
- _REENT_INIT_PTR((creating_task->libc_reent)); /* GCC extension: structure constants */
+ extern void __sinit (struct _reent *s);
+ struct _reent *reent = (struct _reent *) creating_task->libc_reent;
+ _REENT_INIT_PTR((reent)); /* GCC extension: structure constants */
+ __sinit( reent );
return true;
}
diff --git a/testsuites/libtests/newlib01/init.c b/testsuites/libtests/newlib01/init.c
index f9d39368d2..a8e5b3926c 100644
--- a/testsuites/libtests/newlib01/init.c
+++ b/testsuites/libtests/newlib01/init.c
@@ -245,6 +245,10 @@ static void test(void)
int rv;
rtems_resource_snapshot snapshot;
+ rtems_test_assert(fileno(stdout) >= 0);
+ rtems_test_assert(fileno(stdin) >= 0);
+ rtems_test_assert(fileno(stderr) >= 0);
+
ctx->main_task_id = rtems_task_self();
rtems_resource_snapshot_take(&snapshot);
@@ -275,6 +279,10 @@ static void test(void)
sc = rtems_task_delete(ctx->worker_task_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+ rtems_test_assert(fileno(stdout) >= 0);
+ rtems_test_assert(fileno(stdin) >= 0);
+ rtems_test_assert(fileno(stderr) >= 0);
+
rv = unlink(&file_path[0]);
rtems_test_assert(rv == 0);