[gdb/testsuite] Log wait status on process no longer exists error

Proc gdb_test_multiple can run into a process no longer exists error, but when
that happens it shows no details about the process:
...
ERROR: Process no longer exists
...

Fix this by showing the wait status of the process in the log:
...
ERROR: GDB process no longer exists
GDB process exited with wait status 8106 exp8 0 0 CHILDKILLED SIGSEGV \
  {segmentation violation}
...

In order to run the wait commmand we need an explicit pid, so we can't use
any_spawn_id, and duplicate the "-i any_spawn_id eof" pattern for gdb_spawn_id,
and add the wait status logging there.

Build and tested on x86_64-linux.

2018-10-24  Tom de Vries  <tdevries@suse.de>

	* lib/gdb.exp (gdb_test_multiple): Log wait status on process no
	longer exists error.
This commit is contained in:
Tom de Vries 2018-10-24 12:54:33 +02:00
parent 8c246a60c0
commit fe1a5cad30
2 changed files with 16 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2018-10-24 Tom de Vries <tdevries@suse.de>
* lib/gdb.exp (gdb_test_multiple): Log wait status on process no
longer exists error.
2018-10-24 Tom de Vries <tdevries@suse.de>
* gdb.base/catch-follow-exec.exp: Rewrite using gdb_test.

View File

@ -980,6 +980,17 @@ proc gdb_test_multiple { command message user_code } {
set result -1
}
-i $gdb_spawn_id
eof {
perror "GDB process no longer exists"
set wait_status [wait -i $gdb_spawn_id]
verbose -log "GDB process exited with wait status $wait_status"
if { $message != "" } {
fail "$message"
}
return -1
}
# Patterns below apply to any spawn id specified.
-i $any_spawn_id
eof {