summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2020-02-14 14:16:17 +1100
committerChris Johns <chrisj@rtems.org>2020-02-18 08:47:47 +1100
commit3f7ebddfa40a6cce1b9fe9ac0a8c71fd9695df14 (patch)
tree1e23eb81b14a947321b8c52edc9dbd6469b33a6d /testsuites/libtests
parentconfig: Remove unused declaration and defines (diff)
downloadrtems-3f7ebddfa40a6cce1b9fe9ac0a8c71fd9695df14.tar.bz2
testsuite/newlib: Check newlib does not touch an assigned std FILE pointer
Update #3870
Diffstat (limited to 'testsuites/libtests')
-rw-r--r--testsuites/libtests/newlib01/init.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/testsuites/libtests/newlib01/init.c b/testsuites/libtests/newlib01/init.c
index 74e648799e..529531eb24 100644
--- a/testsuites/libtests/newlib01/init.c
+++ b/testsuites/libtests/newlib01/init.c
@@ -18,6 +18,8 @@
#include <stdio.h>
+#include <sys/reent.h>
+
#include <rtems.h>
#include <rtems/console.h>
#include <rtems/imfs.h>
@@ -63,12 +65,24 @@ static void wait(void)
static void worker_task(rtems_task_argument arg)
{
test_context *ctx = &test_instance;
+ struct _reent *reent = _REENT;
+ FILE *output;
char buf[1] = { 'x' };
size_t n;
- stdout = fopen(&file_path[0], "r+");
+ rtems_test_assert(reent->__sdidinit == 0);
+
+ output = stdout = fopen(&file_path[0], "r+");
rtems_test_assert(stdout != NULL);
+ /*
+ * Check newlib's __sinit does not touch our assigned file pointer.
+ */
+ rtems_test_assert(reent->__sdidinit == 0);
+ rtems_test_assert(fflush(stdout) == 0);
+ rtems_test_assert(reent->__sdidinit != 0);
+ rtems_test_assert(stdout == output);
+
n = fwrite(&buf[0], sizeof(buf), 1, stdout);
rtems_test_assert(n == 1);