mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
Target remote mode fork and exec test updates
This patch updates tests for fork and exec events in target remote mode. In the majority of cases this was a simple matter of removing some code that disabled the test for target remote. In a few cases the test needed to be disabled; in those cases the gdb_protocol was checked instead of using the [is_remote target] etc. In a couple of cases we needed to use clean_restart, since target remote doesn't support the run command, and in one case we had to modify an expect expression to allow for a "multiprocess-style" ptid. Tested with the patch that implemented target remote mode fork and exec event support. gdb/testsuite/ChangeLog: * gdb.base/execl-update-breakpoints.exp (main): Enable for target remote. * gdb.base/foll-exec-mode.exp (main): Disable for target remote. * gdb.base/foll-exec.exp (main): Enable for target remote. * gdb.base/foll-fork.exp (main): Likewise. * gdb.base/foll-vfork.exp (main): Likewise. * gdb.base/multi-forks.exp (main): Likewise, and use clean_restart. (proc continue_to_exit_bp_loc): Use clean_restart. * gdb.base/pie-execl.exp (main): Disable for target remote. * gdb.base/watch-vfork.exp (main): Enable for target remote. * gdb.mi/mi-nsthrexec.exp (main): Likewise. * gdb.threads/execl.exp (main): Likewise. * gdb.threads/fork-child-threads.exp (main): Likewise. * gdb.threads/fork-plus-threads.exp (main): Disable for target remote. * gdb.threads/fork-thread-pending.exp (main): Enable for target remote. * gdb.threads/linux-dp.exp (check_philosopher_stack): Allow pid.tid style ptids, instead of just tid. * gdb.threads/thread-execl.exp (main): Enable for target remote. * gdb.threads/watchpoint-fork.exp (main): Likewise. * gdb.trace/report.exp (use_collected_data): Allow pid.tid style ptids, instead of just tid.
This commit is contained in:
@ -1,3 +1,29 @@
|
|||||||
|
2015-12-11 Don Breazeal <donb@codesourcery.com>
|
||||||
|
|
||||||
|
* gdb.base/execl-update-breakpoints.exp (main): Enable for target
|
||||||
|
remote.
|
||||||
|
* gdb.base/foll-exec-mode.exp (main): Disable for target remote.
|
||||||
|
* gdb.base/foll-exec.exp (main): Enable for target remote.
|
||||||
|
* gdb.base/foll-fork.exp (main): Likewise.
|
||||||
|
* gdb.base/foll-vfork.exp (main): Likewise.
|
||||||
|
* gdb.base/multi-forks.exp (main): Likewise, and use clean_restart.
|
||||||
|
(proc continue_to_exit_bp_loc): Use clean_restart.
|
||||||
|
* gdb.base/pie-execl.exp (main): Disable for target remote.
|
||||||
|
* gdb.base/watch-vfork.exp (main): Enable for target remote.
|
||||||
|
* gdb.mi/mi-nsthrexec.exp (main): Likewise.
|
||||||
|
* gdb.threads/execl.exp (main): Likewise.
|
||||||
|
* gdb.threads/fork-child-threads.exp (main): Likewise.
|
||||||
|
* gdb.threads/fork-plus-threads.exp (main): Disable for target
|
||||||
|
remote.
|
||||||
|
* gdb.threads/fork-thread-pending.exp (main): Enable for target
|
||||||
|
remote.
|
||||||
|
* gdb.threads/linux-dp.exp (check_philosopher_stack): Allow
|
||||||
|
pid.tid style ptids, instead of just tid.
|
||||||
|
* gdb.threads/thread-execl.exp (main): Enable for target remote.
|
||||||
|
* gdb.threads/watchpoint-fork.exp (main): Likewise.
|
||||||
|
* gdb.trace/report.exp (use_collected_data): Allow pid.tid style
|
||||||
|
ptids, instead of just tid.
|
||||||
|
|
||||||
2015-12-11 Andrew Burgess <andrew.burgess@embecosm.com>
|
2015-12-11 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* gdb.base/list.exp (test_list_forward): Add end of file error
|
* gdb.base/list.exp (test_list_forward): Add end of file error
|
||||||
|
@ -16,12 +16,6 @@
|
|||||||
# Test that when following an exec, we don't try to insert breakpoints
|
# Test that when following an exec, we don't try to insert breakpoints
|
||||||
# in the new image at the addresses the symbols had before the exec.
|
# in the new image at the addresses the symbols had before the exec.
|
||||||
|
|
||||||
# Remote protocol does not support follow-exec notifications.
|
|
||||||
|
|
||||||
if [is_remote target] {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
# Build two copies of the program, each linked at a different address.
|
# Build two copies of the program, each linked at a different address.
|
||||||
|
@ -26,7 +26,10 @@
|
|||||||
# be a breakpoint in order to stop after the exec, even if we use
|
# be a breakpoint in order to stop after the exec, even if we use
|
||||||
# a single-step command to execute past the exec.
|
# a single-step command to execute past the exec.
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
# Remote mode doesn't support the 'run' command, which is
|
||||||
|
# required for follow-exec-mode testing.
|
||||||
|
if { [target_info exists gdb_protocol]
|
||||||
|
&& [target_info gdb_protocol] == "remote" } {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,6 @@
|
|||||||
# This is a test of gdb's ability to follow a process through a
|
# This is a test of gdb's ability to follow a process through a
|
||||||
# Unix exec() system call.
|
# Unix exec() system call.
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
# Until "catch exec" is implemented on other targets...
|
# Until "catch exec" is implemented on other targets...
|
||||||
#
|
#
|
||||||
if {![istarget "hppa*-hp-hpux*"] && ![istarget "*-linux*"]} then {
|
if {![istarget "hppa*-hp-hpux*"] && ![istarget "*-linux*"]} then {
|
||||||
|
@ -13,10 +13,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
# Until "set follow-fork-mode" and "catch fork" are implemented on
|
# Until "set follow-fork-mode" and "catch fork" are implemented on
|
||||||
# other targets...
|
# other targets...
|
||||||
#
|
#
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
# either execs or exits --- since those events take somewhat different
|
# either execs or exits --- since those events take somewhat different
|
||||||
# code paths in GDB, both variants are exercised.
|
# code paths in GDB, both variants are exercised.
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
# Until "set follow-fork-mode" and "catch vfork" are implemented on
|
# Until "set follow-fork-mode" and "catch vfork" are implemented on
|
||||||
# other targets...
|
# other targets...
|
||||||
#
|
#
|
||||||
|
@ -13,10 +13,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
# Until "set follow-fork-mode" and "catch fork" are implemented on
|
# Until "set follow-fork-mode" and "catch fork" are implemented on
|
||||||
# other targets...
|
# other targets...
|
||||||
#
|
#
|
||||||
@ -111,6 +107,7 @@ proc continue_to_exit_bp_loc {} {
|
|||||||
# First set gdb to follow the child.
|
# First set gdb to follow the child.
|
||||||
# The result should be that each of the 4 forks returns zero.
|
# The result should be that each of the 4 forks returns zero.
|
||||||
|
|
||||||
|
clean_restart ${binfile}
|
||||||
runto_main
|
runto_main
|
||||||
gdb_test_no_output "set follow-fork child"
|
gdb_test_no_output "set follow-fork child"
|
||||||
continue_to_exit_bp_loc
|
continue_to_exit_bp_loc
|
||||||
@ -120,6 +117,7 @@ gdb_test "print pids" "\\$.* = \\{0, 0, 0, 0\\}.*" "follow child, print pids"
|
|||||||
# Now set gdb to follow the parent.
|
# Now set gdb to follow the parent.
|
||||||
# Result should be that none of the 4 forks returns zero.
|
# Result should be that none of the 4 forks returns zero.
|
||||||
|
|
||||||
|
clean_restart ${binfile}
|
||||||
runto_main
|
runto_main
|
||||||
gdb_test_no_output "set follow-fork parent" ""
|
gdb_test_no_output "set follow-fork parent" ""
|
||||||
continue_to_exit_bp_loc
|
continue_to_exit_bp_loc
|
||||||
|
@ -23,11 +23,13 @@ if ![istarget *-linux*] {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remote protocol does not support follow-exec notifications.
|
# In remote mode we cannot use the 'set args' command, and this
|
||||||
|
# test requires it.
|
||||||
if [is_remote target] {
|
if { [target_info exists gdb_protocol] } then {
|
||||||
|
if { [target_info gdb_protocol] == "remote" } then {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
standard_testfile .c
|
standard_testfile .c
|
||||||
set executable1 ${testfile}1
|
set executable1 ${testfile}1
|
||||||
|
@ -15,11 +15,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
# There's no support for vfork events in the remote protocol.
|
|
||||||
if { [is_remote target] } {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
standard_testfile .c
|
standard_testfile .c
|
||||||
|
|
||||||
if { [build_executable ${testfile}.exp ${testfile} $srcfile {debug}] } {
|
if { [build_executable ${testfile}.exp ${testfile} $srcfile {debug}] } {
|
||||||
|
@ -18,11 +18,6 @@
|
|||||||
# the main thread doesn't just silently stop at the first internal
|
# the main thread doesn't just silently stop at the first internal
|
||||||
# breakpoint (usually the _dl_debug_state breakpoint).
|
# breakpoint (usually the _dl_debug_state breakpoint).
|
||||||
|
|
||||||
# No exec event support in the remote protocol.
|
|
||||||
if { [is_remote target] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if { ![support_displaced_stepping] } {
|
if { ![support_displaced_stepping] } {
|
||||||
unsupported "displaced stepping"
|
unsupported "displaced stepping"
|
||||||
return -1
|
return -1
|
||||||
|
@ -15,10 +15,6 @@
|
|||||||
|
|
||||||
# Test handling of threads across an execl.
|
# Test handling of threads across an execl.
|
||||||
|
|
||||||
if { [is_remote target] } then {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
# Original image, loads a thread library.
|
# Original image, loads a thread library.
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
|
@ -18,10 +18,6 @@ if { ! [istarget "*-*-linux*"] } {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
||||||
|
@ -20,6 +20,13 @@
|
|||||||
#
|
#
|
||||||
# See https://sourceware.org/bugzilla/show_bug.cgi?id=18600
|
# See https://sourceware.org/bugzilla/show_bug.cgi?id=18600
|
||||||
|
|
||||||
|
# In remote mode, we cannot continue debugging after all
|
||||||
|
# inferiors have terminated, and this test requires that.
|
||||||
|
if { [target_info exists gdb_protocol]
|
||||||
|
&& [target_info gdb_protocol] == "remote" } {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
proc do_test { detach_on_fork } {
|
proc do_test { detach_on_fork } {
|
||||||
|
@ -13,12 +13,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
# There's no support for `set follow-fork-mode' in the remote
|
|
||||||
# protocol.
|
|
||||||
if { [is_remote target] } {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Only GNU/Linux is known to support `set follow-fork-mode child'.
|
# Only GNU/Linux is known to support `set follow-fork-mode child'.
|
||||||
#
|
#
|
||||||
if { ! [istarget "*-*-linux*"] } {
|
if { ! [istarget "*-*-linux*"] } {
|
||||||
|
@ -64,7 +64,7 @@ for {set i 0} {$i < 5} {incr i} {
|
|||||||
-re "^ *Id.*Frame *\[\r\n\]+" {
|
-re "^ *Id.*Frame *\[\r\n\]+" {
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
-re "^. +(\[0-9\]+ *Thread \[-0-9a-fx\]+) \[^\n\]*\n" {
|
-re "^. +(\[0-9\]+ *Thread \[-0-9a-fx.\]+) \[^\n\]*\n" {
|
||||||
verbose -log "found thread $expect_out(1,string)" 2
|
verbose -log "found thread $expect_out(1,string)" 2
|
||||||
lappend threads_before $expect_out(1,string)
|
lappend threads_before $expect_out(1,string)
|
||||||
exp_continue
|
exp_continue
|
||||||
@ -126,7 +126,7 @@ for {set i 0} {$i < 5} {incr i} {
|
|||||||
-re "^ *Id.*Frame *\[\r\n\]+" {
|
-re "^ *Id.*Frame *\[\r\n\]+" {
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
-re "^. +(\[0-9\]+ *Thread \[-0-9a-fx\]+) \[^\n\]*\n" {
|
-re "^. +(\[0-9\]+ *Thread \[-0-9a-fx.\]+) \[^\n\]*\n" {
|
||||||
set name $expect_out(1,string)
|
set name $expect_out(1,string)
|
||||||
for {set j 0} {$j != [llength $threads_before] } {incr j} {
|
for {set j 0} {$j != [llength $threads_before] } {incr j} {
|
||||||
if {$name == [lindex $threads_before $j]} {
|
if {$name == [lindex $threads_before $j]} {
|
||||||
|
@ -16,11 +16,6 @@
|
|||||||
# Test that GDB doesn't get stuck when stepping over an exec call done
|
# Test that GDB doesn't get stuck when stepping over an exec call done
|
||||||
# by a thread other than the main thread.
|
# by a thread other than the main thread.
|
||||||
|
|
||||||
# There's no support for exec events in the remote protocol.
|
|
||||||
if { [is_remote target] } {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
|
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
|
||||||
|
@ -17,11 +17,6 @@
|
|||||||
|
|
||||||
set testfile watchpoint-fork
|
set testfile watchpoint-fork
|
||||||
|
|
||||||
if [is_remote target] {
|
|
||||||
kfail "remote/13584" "gdbserver does not support debugging across fork"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
proc test {type symbol} {
|
proc test {type symbol} {
|
||||||
with_test_prefix "$type" {
|
with_test_prefix "$type" {
|
||||||
global testfile subdir srcdir gdb_prompt
|
global testfile subdir srcdir gdb_prompt
|
||||||
|
@ -386,7 +386,7 @@ proc use_collected_data { data_source } {
|
|||||||
|
|
||||||
# There is always a thread of an inferior, either a live one or
|
# There is always a thread of an inferior, either a live one or
|
||||||
# a faked one.
|
# a faked one.
|
||||||
gdb_test "info threads" "\\* ${decimal} (process|Thread) ${decimal}\[ \t\].*"
|
gdb_test "info threads" "\\* ${decimal} (process|Thread) \[0-9\.\]+\[ \t\].*"
|
||||||
gdb_test "info inferiors" "\\* 1 process ${decimal} \[ \t\]+${binfile}.*"
|
gdb_test "info inferiors" "\\* 1 process ${decimal} \[ \t\]+${binfile}.*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user