diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-03 20:20:29 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-03 20:20:29 +0000 |
commit | e11ac3a35052210d36c35bc8a735601c385c225c (patch) | |
tree | a0408dd8145a699d20f26ee15ae613a36f7b1dec /gdb/testsuite/lib | |
parent | cc5add8c1cef548dfcefecb01a603112f2df99a8 (diff) | |
download | gdb-e11ac3a35052210d36c35bc8a735601c385c225c.zip gdb-e11ac3a35052210d36c35bc8a735601c385c225c.tar.gz gdb-e11ac3a35052210d36c35bc8a735601c385c225c.tar.bz2 |
gdb/testsuite/
* gdb.base/break-entry.exp: Move the target use_gdb_stub test before
starting GDB.
* gdb.base/default.exp: Replace target use_gdb_stub checks by global
$use_gdb_stub.
* gdb.base/display.exp: Likewise.
* gdb.base/ending-run.exp: Likewise.
* gdb.base/list.exp (test_listsize): Likewise.
* gdb.base/setshow.exp: Likewise.
* gdb.base/valgrind-db-attach.exp: Set global use_gdb_stub to 1.
* lib/gdb.exp (gdb_run_cmd, gdb_start_cmd): Replace target use_gdb_stub
check by global $use_gdb_stub.
(gdb_test_multiple): Forbid run, start or attach for !$use_gdb_stub.
(default_gdb_start): Set global use_gdb_stub from target use_gdb_stub.
(default_gdb_init): Unset global $use_gdb_stub.
(gdb_continue_to_end, rerun_to_main): Replace target use_gdb_stub check
by global $use_gdb_stub.
* lib/gdbserver-support.exp: Extend comments for set_board_info
gdb_protocol and gdb,socketport.
(gdbserver_start_extended): Set global gdbserver_protocol and
gdbserver_gdbport. Clear global use_gdb_stub.
* lib/mi-support.exp (default_mi_gdb_start): Set global use_gdb_stub
from target use_gdb_stub.
(mi_run_cmd): Replace target use_gdb_stub check by global $use_gdb_stub.
Diffstat (limited to 'gdb/testsuite/lib')
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 39 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdbserver-support.exp | 13 | ||||
-rw-r--r-- | gdb/testsuite/lib/mi-support.exp | 9 |
3 files changed, 48 insertions, 13 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 1823e00..1a9270d 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -197,7 +197,7 @@ proc delete_breakpoints {} { # that is the caller's responsibility. proc gdb_run_cmd {args} { - global gdb_prompt + global gdb_prompt use_gdb_stub if [target_info exists gdb_init_command] { send_gdb "[target_info gdb_init_command]\n"; @@ -210,7 +210,7 @@ proc gdb_run_cmd {args} { } } - if [target_info exists use_gdb_stub] { + if $use_gdb_stub { if [target_info exists gdb,do_reload_on_run] { if { [gdb_reload] != 0 } { return; @@ -306,7 +306,7 @@ proc gdb_run_cmd {args} { # that is the caller's responsibility. proc gdb_start_cmd {args} { - global gdb_prompt + global gdb_prompt use_gdb_stub if [target_info exists gdb_init_command] { send_gdb "[target_info gdb_init_command]\n"; @@ -319,7 +319,7 @@ proc gdb_start_cmd {args} { } } - if [target_info exists use_gdb_stub] { + if $use_gdb_stub { return -1 } @@ -587,7 +587,7 @@ proc gdb_internal_error_resync {} { # ...", all being implicitly appended to that list. # proc gdb_test_multiple { command message user_code } { - global verbose + global verbose use_gdb_stub global gdb_prompt global GDB global inferior_exited_re @@ -606,6 +606,12 @@ proc gdb_test_multiple { command message user_code } { error "Invalid newline in \"$message\" test" } + if {$use_gdb_stub + && [regexp -nocase {^\s*(r|run|star|start|at|att|atta|attac|attach)\M} \ + $command]} { + error "gdbserver does not support $command without extended-remote" + } + # TCL/EXPECT WART ALERT # Expect does something very strange when it receives a single braced # argument. It splits it along word separators and performs substitutions. @@ -1317,7 +1323,7 @@ proc gdb_file_cmd { arg } { # get really slow. Give gdb at least 3 minutes to start up. # proc default_gdb_start { } { - global verbose + global verbose use_gdb_stub global GDB global INTERNAL_GDBFLAGS GDBFLAGS global gdb_prompt @@ -1326,6 +1332,15 @@ proc default_gdb_start { } { gdb_stop_suppressing_tests; + # Set the default value, it may be overriden later by specific testfile. + # + # Use `set_board_info use_gdb_stub' for the board file to flag the inferior + # is already started after connecting and run/attach are not supported. + # This is used for the "remote" protocol. After GDB starts you should + # check global $use_gdb_stub instead of the board as the testfile may force + # a specific different target protocol itself. + set use_gdb_stub [target_info exists use_gdb_stub] + verbose "Spawning $GDB $INTERNAL_GDBFLAGS $GDBFLAGS" if [info exists gdb_spawn_id] { @@ -2978,6 +2993,10 @@ proc default_gdb_init { args } { } else { set gdb_prompt "\\(gdb\\)" } + global use_gdb_stub + if [info exists use_gdb_stub] { + unset use_gdb_stub + } } # The default timeout used when testing GDB commands. We want to use @@ -3350,7 +3369,7 @@ proc gdb_get_line_number { text { file "" } } { # is accepted. proc gdb_continue_to_end {{mssg ""} {command continue} {allow_extra 0}} { - global inferior_exited_re + global inferior_exited_re use_gdb_stub if {$mssg == ""} { set text "continue until exit" @@ -3362,7 +3381,7 @@ proc gdb_continue_to_end {{mssg ""} {command continue} {allow_extra 0}} { } else { set extra "" } - if [target_info exists use_gdb_stub] { + if $use_gdb_stub { if {![gdb_breakpoint "exit"]} { return 0 } @@ -3379,9 +3398,9 @@ proc gdb_continue_to_end {{mssg ""} {command continue} {allow_extra 0}} { } proc rerun_to_main {} { - global gdb_prompt + global gdb_prompt use_gdb_stub - if [target_info exists use_gdb_stub] { + if $use_gdb_stub { gdb_run_cmd gdb_expect { -re ".*Breakpoint .*main .*$gdb_prompt $"\ diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp index ec88b66..22c7860 100644 --- a/gdb/testsuite/lib/gdbserver-support.exp +++ b/gdb/testsuite/lib/gdbserver-support.exp @@ -22,6 +22,8 @@ # # set_board_info gdb_protocol "remote" # Unles you have a gdbserver that uses a different protocol... +# After GDB starts you should check global $gdbserver_protocol instead as +# the testfile may force a specific different target protocol itself. # # set_board_info gdb_server_prog # This will be the path to the gdbserver program you want to test. @@ -35,6 +37,8 @@ # set_board_info gdb,socketport # Port id to use for socket connection. If not set explicitly, # it will start at "2345" and increment for each use. +# After GDB starts you should check global $gdbserver_gdbport for the +# real port used. It is not useful if $gdbserver_reconnect_p was not set. # # @@ -338,9 +342,18 @@ proc gdbserver_reconnect { } { # Start and connect to a gdbserver in extended mode. proc gdbserver_start_extended { } { + global gdbserver_protocol + global gdbserver_gdbport + global use_gdb_stub + set res [gdbserver_start "--multi" ""] set gdbserver_protocol "extended-[lindex $res 0]" set gdbserver_gdbport [lindex $res 1] + # Even if the board file is testing with target remote, our caller + # wants to test against gdbserver in extended-remote mode. Make sure to + # disable stub-like techniques. + set use_gdb_stub 0 + return [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport] } diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp index 32949fa..e1845f6 100644 --- a/gdb/testsuite/lib/mi-support.exp +++ b/gdb/testsuite/lib/mi-support.exp @@ -96,7 +96,7 @@ proc mi_uncatched_gdb_exit {} { # get really slow. Give gdb at least 3 minutes to start up. # proc default_mi_gdb_start { args } { - global verbose + global verbose use_gdb_stub global GDB global INTERNAL_GDBFLAGS GDBFLAGS global gdb_prompt @@ -108,6 +108,9 @@ proc default_mi_gdb_start { args } { gdb_stop_suppressing_tests; set inferior_pty no-tty + # Set the default value, it may be overriden later by specific testfile. + set use_gdb_stub [target_info exists use_gdb_stub] + if { [llength $args] == 1} { set inferior_pty [lindex $args 0] } @@ -793,7 +796,7 @@ proc mi_run_cmd_full {use_mi_command args} { if { $suppress_flag } { return -1 } - global mi_gdb_prompt + global mi_gdb_prompt use_gdb_stub global thread_selected_re global library_loaded_re @@ -820,7 +823,7 @@ proc mi_run_cmd_full {use_mi_command args} { return -1 } - if [target_info exists use_gdb_stub] { + if $use_gdb_stub { if [target_info exists gdb,do_reload_on_run] { send_gdb "${run_prefix}continue\n"; gdb_expect 60 { |