<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 5, 2019 at 10:20 PM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, Jul 4, 2019 at 2:31 AM Vaibhav Gupta <<a href="mailto:vaibhavgupta40@gmail.com" target="_blank">vaibhavgupta40@gmail.com</a>> wrote:<br>
><br>
> Hello,<br>
> As I mentioned in previous threads, RSB patch was not generating function symbols defined<br>
> in ndbm.c, but they were generated when I build newlib repository for SPARC.<br>
> .<br>
> .<br>
> So, I made a script to add them manually, from newlib build, to rtems/5/.....<br>
> <a href="https://github.com/VARoDeK/MiniProject_1-Add_newlib_object_files_to_rtems_libraries/blob/master/script.sh" rel="noreferrer" target="_blank">https://github.com/VARoDeK/MiniProject_1-Add_newlib_object_files_to_rtems_libraries/blob/master/script.sh</a><br>
> .<br>
> .<br>
> The compilation of minimal Testsuite was Successful this time and is generating<br>
> expected correct results.<br>
Good.<br></blockquote><div>Thanks :) <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> ========================<br>
> OUTPUT<br>
> ========================<br>
> *** BEGIN OF TEST PSXNDBM 01 ***<br>
> *** TEST VERSION: 5.0.0.5cbee18e0030981cd61b8c9d556cc5c57f6ee082-modified<br>
> *** TEST STATE: EXPECTED-PASS<br>
> *** TEST BUILD: RTEMS_POSIX_API<br>
> *** TEST TOOLS: 7.4.1 20190514 (RTEMS 5, RSB d694d16e5a7241827471af98c8f978ff3eb331fd, Newlib 5c2a3661c)<br>
> Open Database<br>
> Store Records in Database<br>
> Fetch Records from Database<br>
><br>
> Name: VARoDeK,<br>
> Phone Number: 123-321-777-888<br>
><br>
> Close Database<br>
><br>
> *** END OF TEST PSXNDBM 01 ***<br>
><br>
><br>
> *** FATAL ***<br>
> fatal source: 5 (RTEMS_FATAL_SOURCE_EXIT)<br>
> fatal code: 0 (0x00000000)<br>
> RTEMS version: 5.0.0.5cbee18e0030981cd61b8c9d556cc5c57f6ee082-modified<br>
> RTEMS tools: 7.4.1 20190514 (RTEMS 5, RSB d694d16e5a7241827471af98c8f978ff3eb331fd, Newlib 5c2a3661c)<br>
> executing thread ID: 0x08a010001<br>
> executing thread name: UI1<br>
> ========================<br>
> .<br>
> I will now make a Testsuite for each and every error and output.<br>
> Should I send the ndbm patch to newlib now?<br>
><br>
Did you post the final ndbm here already? if so, which was it? Your<br>
mentors should take a good look before you will send it to newlib-ml<br>
to avoid any obvious problems. (Or else, Joel might get scolded by<br>
Corinna again. :))<br></blockquote><div>No, I haven't send any patch to newlib for now. <br></div><div>There is no change in ndbm patch. Its same what I submitted last time. Its just I added the `lib_a-ndbm.o` manually to the RTEMS libraries using shell script. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> .<br>
> .<br>
> .<br>
> .<br>
> ========================<br>
> Patch for Testsuite<br>
> ========================<br>
> ---<br>
>  testsuites/psxtests/Makefile.am      |   8 +++<br>
>  testsuites/psxtests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a>     |   1 +<br>
>  testsuites/psxtests/psxndbm01/init.c | 103 +++++++++++++++++++++++++++<br>
>  3 files changed, 112 insertions(+)<br>
>  create mode 100644 testsuites/psxtests/psxndbm01/init.c<br>
><br>
> diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am<br>
> index 59c9f2085b..c805973afb 100755<br>
> --- a/testsuites/psxtests/Makefile.am<br>
> +++ b/testsuites/psxtests/Makefile.am<br>
> @@ -694,6 +694,14 @@ psxmutexattr01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxmutexattr01) \<br>
>   $(support_includes) -I$(top_srcdir)/include<br>
>  endif<br>
><br>
> +if TEST_psxndbm01<br>
> +psx_tests += psxndbm01<br>
> +psxndbm01_SOURCES = psxndbm01/init.c<br>
> +psxndbm01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxndbm01) \<br>
> +       $(support_includes)<br>
> +endif<br>
> +<br>
> +<br>
only need 1 blank line to separate things, like in the rest of this file.<br>
<br>
>  if TEST_psxobj01<br>
>  psx_tests += psxobj01<br>
>  psx_screens += psxobj01/psxobj01.scn<br>
> diff --git a/testsuites/psxtests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> b/testsuites/psxtests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
> index 85559e4aa5..07d7ccaf55 100644<br>
> --- a/testsuites/psxtests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
> +++ b/testsuites/psxtests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
> @@ -110,6 +110,7 @@ RTEMS_TEST_CHECK([psxmsgq02])<br>
>  RTEMS_TEST_CHECK([psxmsgq03])<br>
>  RTEMS_TEST_CHECK([psxmsgq04])<br>
>  RTEMS_TEST_CHECK([psxmutexattr01])<br>
> +RTEMS_TEST_CHECK([psxndbm01])<br>
>  RTEMS_TEST_CHECK([psxobj01])<br>
>  RTEMS_TEST_CHECK([psxonce01])<br>
>  RTEMS_TEST_CHECK([psxpasswd01])<br>
> diff --git a/testsuites/psxtests/psxndbm01/init.c b/testsuites/psxtests/psxndbm01/init.c<br>
> new file mode 100644<br>
> index 0000000000..74dec0c969<br>
> --- /dev/null<br>
> +++ b/testsuites/psxtests/psxndbm01/init.c<br>
> @@ -0,0 +1,103 @@<br>
> +/**<br>
> + *  @file<br>
> + *  @brief Test suite for inttypes.h methods<br>
inttypes.h?<br></blockquote><div>That mistake must have been caused by my hurry. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> + */<br>
> +<br>
> +/*<br>
> + * SPDX-License-Identifier: BSD-2-Clause<br>
> + *<br>
> + * Copyright (C) 2019 Vaibhav Gupta<br>
> + *<br>
> + * Redistribution and use in source and binary forms, with or without<br>
> + * modification, are permitted provided that the following conditions<br>
> + * are met:<br>
> + * 1. Redistributions of source code must retain the above copyright<br>
> + *    notice, this list of conditions and the following disclaimer.<br>
> + * 2. Redistributions in binary form must reproduce the above copyright<br>
> + *    notice, this list of conditions and the following disclaimer in the<br>
> + *    documentation and/or other materials provided with the distribution.<br>
> + *<br>
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"<br>
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br>
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE<br>
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE<br>
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br>
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br>
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br>
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br>
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)<br>
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br>
> + * POSSIBILITY OF SUCH DAMAGE.<br>
> + */<br>
> +<br>
> +#ifdef HAVE_CONFIG_H<br>
> +#include "config.h"<br>
> +#endif<br>
> +<br>
> +#include <errno.h><br>
> +#include <fcntl.h><br>
> +#include <ndbm.h><br>
> +#include <stddef.h><br>
> +#include <stdint.h><br>
> +#include <stdio.h><br>
> +#include <sys/stat.h><br>
> +#include <rtems/test.h><br>
> +#include <tmacros.h><br>
> +<br>
> +<br>
Only need one blank line to separate things.<br>
<br>
> +const char rtems_test_name[] = "PSXNDBM 01";<br>
> +<br>
> +#define NAME     "VARoDeK"<br>
> +#define PHONE_NO "123-321-777-888"<br>
> +#define DB_NAME  "phones_test"<br>
> +<br>
> +/* forward declarations to avoid warnings */<br>
> +rtems_task Init(rtems_task_argument ignored);<br>
> +DBM *db;<br>
> +<br>
> +rtems_task Init(rtems_task_argument ignored)<br>
> +{<br>
> +  datum name = { NAME , sizeof(NAME) };<br>
> +  datum put_phone_no = { PHONE_NO, sizeof(PHONE_NO) };<br>
> +  datum get_phone_no;<br>
> +<br>
> +  TEST_BEGIN();<br>
> +<br>
> +  puts( "Open Database" );<br>
> +  db = dbm_open( DB_NAME , O_RDWR | O_CREAT | O_TRUNC , S_IRWXU );<br>
> +  rtems_test_assert( db != NULL );<br>
> +<br>
> +  puts( "Store Records in Database" );<br>
> +  dbm_store( db , name , put_phone_no , DBM_INSERT );<br>
> +<br>
Can you check this call for any return value / errors?<br></blockquote><div>for this scenerio, I just wanted to check If I am able to call ndbm functions. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> +  puts( "Fetch Records from Database" );<br>
> +  get_phone_no = dbm_fetch( db , name );<br>
> +  printf( "\nName: %s, \nPhone Number: %s\n\n", (char *)name.dptr , (char *)get_phone_no.dptr );<br>
> +<br>
How do you determine the test is successful?  You must manually view<br>
the output?  Can you make this test to fail in case the dbm_fetch is<br>
wrong?<br></blockquote><div>Yah, as I mentioned, this is a minimal test.</div><div>.<br></div><div>Actually, as discussed in previous meetings, i was not able to run ndbm tests</div><div>due to `undefined reference` error.</div><div>.<br></div><div>So I was trying multiple solutions. <br></div><div>Finally I decided to add `lib_a-ndbm.o`, manually to RTEMS libraries.</div><div>.<br></div><div>Just have a loot at my Script: <a href="https://github.com/VARoDeK/MiniProject_1-Add_newlib_object_files_to_rtems_libraries/blob/master/script.sh" rel="noreferrer" target="_blank">https://github.com/VARoDeK/MiniProject_1-Add_newlib_object_files_to_rtems_libraries/blob/master/script.sh</a></div><div>To try If its working or not (am i able to call ndbm functions?), I made minimal tests.</div><div><div>.<br></div><div>All the blank lines and formatting mistakes, its because of my hurry as,</div><div> I was trying multiple solutions to make it run. <br></div><div>.<br></div></div><div>Now it worked, So will make a good testsuite, considering all errors and outputs and all functions.</div><div>.</div><div>I will make sure, to not to make any formatting erros. and other errors too :)<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> +  puts( "Close Database" );<br>
> +  dbm_close( db );<br>
> +<br>
> +<br>
> +<br>
> +<br>
1 blank line only<br>
<br>
> +  TEST_END();<br>
> +  rtems_test_exit(0);<br>
> +<br>
> +}<br>
> +<br>
> +/* NOTICE: the clock driver is explicitly disabled */<br>
> +<br>
> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER<br>
> +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER<br>
> +<br>
> +#define CONFIGURE_MAXIMUM_TASKS            1<br>
> +<br>
> +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6<br>
> +<br>
> +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE<br>
> +<br>
> +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION<br>
> +<br>
> +#define CONFIGURE_INIT<br>
> +#include <rtems/confdefs.h><br>
> +/* end of file */<br>
> --<br>
> 2.21.0<br>
> ========================<br>
</blockquote></div></div>