This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add system test before "set remote system-call-allowed 1"


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 \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]