[PATCH v2] testsuite/newlib: Check newlib does not touch an assigned std FILE pointer
chrisj at rtems.org
chrisj at rtems.org
Sun Feb 16 21:58:04 UTC 2020
From: Chris Johns <chrisj at rtems.org>
Update #3870
---
testsuites/libtests/newlib01/init.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/testsuites/libtests/newlib01/init.c b/testsuites/libtests/newlib01/init.c
index 74e648799e..1bff052363 100644
--- a/testsuites/libtests/newlib01/init.c
+++ b/testsuites/libtests/newlib01/init.c
@@ -23,6 +23,8 @@
#include <rtems/imfs.h>
#include <rtems/libcsupport.h>
+#include <rtems/bspIo.h>
+
#include "tmacros.h"
const char rtems_test_name[] = "NEWLIB 1";
@@ -63,12 +65,24 @@ static void wait(void)
static void worker_task(rtems_task_argument arg)
{
test_context *ctx = &test_instance;
+ struct _reent *reent = __getreent();
+ 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);
+ fflush(stdout);
+ rtems_test_assert(reent->__sdidinit != 0);
+ rtems_test_assert(stdout == output);
+
n = fwrite(&buf[0], sizeof(buf), 1, stdout);
rtems_test_assert(n == 1);
--
2.23.0
More information about the devel
mailing list