This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Add system test before "set remote system-call-allowed 1"
- From: Hui Zhu <teawater at gmail dot com>
- To: Hui Zhu <hui_zhu at mentor dot com>
- Cc: gdb-patches ml <gdb-patches at sourceware dot org>, Nathan Sidwell <nathan_sidwell at mentor dot com>
- Date: Tue, 27 May 2014 18:12:09 +0800
- Subject: Re: [PATCH] Add system test before "set remote system-call-allowed 1"
- Authentication-results: sourceware.org; auth=none
- References: <5371910C dot 9020607 at mentor dot com>
Ping.
Thanks,
Hui
On Tue, May 13, 2014 at 11:27 AM, Hui Zhu <hui_zhu@mentor.com> wrote:
> This patch is update version according to the discussion in
> https://www.sourceware.org/ml/gdb-patches/2009-11/msg00090.html.
> If test get the target doesn't support fileio system according to the
> remote log. It will set this test as "unsupported".
>
> Before I made this patch, I want add a check before all of tests in this
> file. But I found that the target maybe support one call but not others.
> For example: my target support Fwrite, Fopen and so on. But not
> Fgettimeofday.
> And it doesn't support Fsystem NULL but it support Fsystem not NULL.
> So I think if we want to check target support fileio, we need check them
> one by one.
>
> Thanks,
> Hui
>
> 2014-05-13 Nathan Sidwell <nathan@codesourcery.com>
> Hui Zhu <hui@codesourcery.com>
>
> * gdb.base/fileio.exp: Add test for shell not available as well as
> available.
> * gdb.base/fileio.c (test_system): Check for shell twice.
>
> --- a/gdb/testsuite/gdb.base/fileio.c
> +++ b/gdb/testsuite/gdb.base/fileio.c
> @@ -55,7 +55,11 @@ time(time_t *t);
> Not applicable.
>
> system (const char * string);
> -1) Invalid string/command. - returns 127. */
> +1) See if shell available - returns 0
> +2) See if shell available - returns !0
> +3) Execute simple shell command - returns 0
> +4) Invalid string/command. - returns 127. */
> +
> static const char *strerrno (int err);
>
> /* Note that OUTDIR is defined by the test suite. */
> @@ -375,21 +379,26 @@ test_system ()
> */
> int ret;
>
> - /* Test for shell */
> + /* Test for shell (testsuite should have it disabled). */
> ret = system (NULL);
> - printf ("system 1: ret = %d %s\n", ret, ret != 0 ? "OK" : "");
> + printf ("system 1: ret = %d %s\n", ret, ret == 0 ? "OK" : "");
> + stop ();
> + /* Test for shell again (the testsuite will have enabled it now). */
> + ret = system (NULL);
> + printf ("system 2: ret = %d %s\n", ret, ret != 0 ? "OK" : "");
> stop ();
> /* This test prepares the directory for test_rename() */
> sprintf (sys, "mkdir -p %s/%s %s/%s", OUTDIR, TESTSUBDIR, OUTDIR,
> TESTDIR2);
> ret = system (sys);
> if (ret == 127)
> - printf ("system 2: ret = %d /bin/sh unavailable???\n", ret);
> + printf ("system 3: ret = %d /bin/sh unavailable???\n", ret);
> else
> - printf ("system 2: ret = %d %s\n", ret, ret == 0 ? "OK" : "");
> + printf ("system 3: ret = %d %s\n", ret, ret == 0 ? "OK" : "");
> stop ();
> /* Invalid command (just guessing ;-) ) */
> ret = system ("wrtzlpfrmpft");
> - printf ("system 3: ret = %d %s\n", ret, WEXITSTATUS (ret) == 127 ? "OK" :
> "");
> + printf ("system 4: ret = %d %s\n", ret,
> + WEXITSTATUS (ret) == 127 ? "OK" : "");
> stop ();
> }
>
> --- a/gdb/testsuite/gdb.base/fileio.exp
> +++ b/gdb/testsuite/gdb.base/fileio.exp
> @@ -180,19 +180,34 @@ gdb_test continue \
> "Continuing\\..*isatty 5:.*OK$stop_msg" \
> "Isatty (open file)"
>
> -gdb_test continue \
> -"Continuing\\..*system 1:.*OK$stop_msg" \
> -"System says shell is available"
> +gdb_test_no_output "set debug remote 1"
> +set msg "System says shell is not available"
> +gdb_test_multiple "continue" $msg {
> + -re "Continuing\\..*Fsystem.*system 1:.*OK$stop_msg\r\n$gdb_prompt $" {
> + pass $msg
> + }
> + -re ".*Fsystem.*$gdb_prompt $" {
> + fail $msg
> + }
> + -re ".*$gdb_prompt $" {
> + unsupported $msg
> + }
> +}
> +gdb_test_no_output "set debug remote 0"
>
> gdb_test_no_output "set remote system-call-allowed 1"
>
> gdb_test continue \
> "Continuing\\..*system 2:.*OK$stop_msg" \
> +"System says shell is available"
> +
> +gdb_test continue \
> +"Continuing\\..*system 3:.*OK$stop_msg" \
> "System(3) call"
>
> # Is this ok? POSIX says system returns a waitpid status?
> gdb_test continue \
> -"Continuing\\..*system 3:.*OK$stop_msg" \
> +"Continuing\\..*system 4:.*OK$stop_msg" \
> "System with invalid command returns 127"
>
> gdb_test continue \