diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 23eea6bf81..14e2d5c085 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-10-11 Yao Qi + + * gdb.server/server-kill.c: Include sys/types.h and unistd.h. + (main): Call getppid. + * gdb.server/server-kill.exp: Set breakpoint on line "i = 0;" + and continue to it. Read variable "server_pid". + 2014-10-11 Yao Qi * gdb.server/server-kill.exp: Remove "delete_breakpoints". diff --git a/gdb/testsuite/gdb.server/server-kill.c b/gdb/testsuite/gdb.server/server-kill.c index 8a7c74e737..8369024bd8 100644 --- a/gdb/testsuite/gdb.server/server-kill.c +++ b/gdb/testsuite/gdb.server/server-kill.c @@ -15,10 +15,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include +#include + +int server_pid; + int main (void) { - int i = 0; + int i; + + server_pid = getppid (); + i = 0; return i; } diff --git a/gdb/testsuite/gdb.server/server-kill.exp b/gdb/testsuite/gdb.server/server-kill.exp index b23c2b54d7..83c11f2d0d 100644 --- a/gdb/testsuite/gdb.server/server-kill.exp +++ b/gdb/testsuite/gdb.server/server-kill.exp @@ -33,7 +33,23 @@ gdb_test "disconnect" ".*" gdbserver_run "" -set server_pid [exp_pid -i [board_info target fileid]] +# Continue past server_pid assignment. +gdb_breakpoint ${srcfile}:[gdb_get_line_number "i = 0;"] +gdb_continue_to_breakpoint "after server_pid assignment" + +# Get the pid of GDBServer. +set test "p server_pid" +gdb_test_multiple $test $test { + -re " = ($decimal)\r\n$gdb_prompt $" { + set server_pid $expect_out(1,string) + pass $test + } +} + +if {$server_pid == "" } { + return -1 +} + remote_exec target "kill -9 $server_pid" # Force GDB to talk with GDBserver, so that we can get the