aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.base/fileio.c22
-rw-r--r--gdb/testsuite/gdb.base/fileio.exp23
3 files changed, 42 insertions, 10 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e15237c..2720d70 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2014-06-04 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.
+
2014-06-04 Yao Qi <yao@codesourcery.com>
* gdb.base/auto-connect-native-target.exp: Remove redundant
diff --git a/gdb/testsuite/gdb.base/fileio.c b/gdb/testsuite/gdb.base/fileio.c
index 4926c05..b8c2698 100644
--- 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,27 @@ test_system ()
*/
int ret;
- /* Test for shell */
+ /* Test for shell ('set remote system-call-allowed' is disabled
+ by default). */
+ ret = system (NULL);
+ 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 1: ret = %d %s\n", ret, ret != 0 ? "OK" : "");
+ 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 ();
}
diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp
index 663a41a..89f0997 100644
--- 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 \