On 2020-02-14 17:11, Sebastian Huber wrote:

On 14/02/2020 04:41, chr...@rtems.org wrote:
From: Chris Johns <chr...@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>
+
Not needed?
  #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();

I think you should include <sys/reent.h> and use

struct _reent *reent = _REENT;


Thanks. I was looking at the path the code took with the debugger but now you point this out it is how newlib accesses the pointer.

+  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);
fflush() should return 0 here.

I will add this and send v2.

Thanks for the review.

Chris

+  rtems_test_assert(reent->__sdidinit != 0);
+  rtems_test_assert(stdout == output);
+
    n = fwrite(&buf[0], sizeof(buf), 1, stdout);
    rtems_test_assert(n == 1);
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to