[gdb/testsuite] Rewrite catch-follow-exec.exp using gdb_test

The testcase catch-follow-exec.exp is written use gdb -batch in order to avoid
a GDB SIGTTOU.  After the commit of "Avoid GDB SIGTTOU on catch exec + set
follow-exec-mode new (PR 23368)", that no longer is necessary.

Rewrite the test using regular gdb_test commands.

Tested with x86_64-linux.

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

	* gdb.base/catch-follow-exec.exp: Rewrite using gdb_test.
This commit is contained in:
Tom de Vries 2018-10-23 23:54:21 +02:00
parent 4df46df7a4
commit a76dc3b770
2 changed files with 17 additions and 50 deletions

View File

@ -1,3 +1,7 @@
2018-10-24 Tom de Vries <tdevries@suse.de>
* gdb.base/catch-follow-exec.exp: Rewrite using gdb_test.
2018-10-24 Tom de Vries <tdevries@suse.de>
* gdb.base/valgrind-db-attach.exp: Handle removed support for

View File

@ -13,72 +13,35 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Check whether finish respects the print pretty user setting when printing the
# function result.
# Test whether info prog crashes gdb at a catch point in follow-exec-mode new.
standard_testfile
if { [target_info gdb_protocol] != "" } {
# Even though the feature under features being tested are supported by
# gdbserver, the way this test is written doesn't make it easy with a
# remote target.
unsupported "not native"
return
}
if { ![remote_file target exists /bin/ls] } {
unsupported "no ls"
return
}
if { [build_executable "failed to prepare" $testfile $srcfile debug] == -1 } {
return -1
if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } {
return
}
proc catch_follow_exec { } {
global binfile
global gdb_spawn_id
set test "catch-follow-exec"
append FLAGS " \"$binfile\""
append FLAGS " -batch"
append FLAGS " -ex \"catch exec\""
append FLAGS " -ex \"set follow-exec-mode new\""
append FLAGS " -ex \"run\""
append FLAGS " -ex \"info prog\""
gdb_exit
if {[gdb_spawn_with_cmdline_opts "$FLAGS"] != 0} {
fail "spawn"
return
if { ![runto_main] } {
untested "could not run to main"
return -1
}
gdb_test_multiple "" "run til exit" {
"runtime error:" {
# Error in case of --enable-ubsan
fail "no runtime error"
}
eof {
set result [wait -i $gdb_spawn_id]
verbose $result
gdb_test "catch exec" \
{Catchpoint [0-9]+ \(exec\)}
gdb_assert { [lindex $result 2] == 0 }
gdb_test_no_output "set follow-exec-mode new"
# We suspect this will be zero instead of one after fixing PR23368
# - "gdb goes to into background when hitting exec catchpoint with
# follow-exec-mode new"
gdb_assert { [lindex $result 3] != 0 }
gdb_test "continue" \
".*hit Catchpoint.*"
# Error in case of --disable-ubsan, we get
# "CHILDKILLED SIGSEGV {segmentation violation}" as extra
# argument(s).
gdb_assert { [llength $result] == 4 }
}
remote_close host
clear_gdb_spawn_id
}
gdb_test "info prog" \
"No selected thread."
}
catch_follow_exec