mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-27 03:54:29 +00:00
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.
This commit is contained in:
parent
cc5add8c1c
commit
e11ac3a350
@ -1,3 +1,30 @@
|
||||
2011-12-03 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2011-12-03 Doug Evans <dje@google.com>
|
||||
|
||||
* lib/gdb.exp (gdb_run_cmd, gdb_start_cmd, run_to_main): Add comments.
|
||||
|
@ -16,11 +16,6 @@
|
||||
# Test inferior can stop at its very first instruction, usually "_start".
|
||||
# Dynamic executables have first instruction in ld.so.
|
||||
|
||||
set testfile break-entry
|
||||
if { [prepare_for_testing ${testfile}.exp ${testfile} start.c {additional_flags=-static}] } {
|
||||
return -1
|
||||
}
|
||||
|
||||
# If we're using a stub, we'll already be debugging a live program and
|
||||
# stopped at the entry point when we connect, and so the runto below
|
||||
# will issue a "continue", which always skips any breakpoint at PC.
|
||||
@ -30,11 +25,17 @@ if { [prepare_for_testing ${testfile}.exp ${testfile} start.c {additional_flags=
|
||||
# continues the process with the equivalent of "jump *$PC", which
|
||||
# triggers any breakpoint at $PC. The latter is what we want to test.
|
||||
|
||||
set testfile break-entry
|
||||
|
||||
if [target_info exists use_gdb_stub] {
|
||||
untested ${testfile}.exp
|
||||
return
|
||||
}
|
||||
|
||||
if { [prepare_for_testing ${testfile}.exp ${testfile} start.c {additional_flags=-static}] } {
|
||||
return -1
|
||||
}
|
||||
|
||||
set test "info files"
|
||||
set entry ""
|
||||
gdb_test_multiple $test $test {
|
||||
|
@ -39,7 +39,7 @@ gdb_test "append value" "Missing filename\."
|
||||
gdb_test "append binary memory" "Missing filename\."
|
||||
gdb_test "append binary value" "Missing filename\."
|
||||
|
||||
if ![target_info exists use_gdb_stub] {
|
||||
if !$use_gdb_stub {
|
||||
setup_xfail "mips-idt-*"
|
||||
gdb_test_multiple "attach" "attach" {
|
||||
-re "Argument required .(process-id|program) to attach.*$gdb_prompt $"\
|
||||
@ -420,7 +420,7 @@ gdb_test "ptype" "The history is empty." "ptype"
|
||||
gdb_test "pwd" "Working directory .*" "pwd"
|
||||
|
||||
#test run "r" abbreviation
|
||||
if [target_info exists use_gdb_stub] {
|
||||
if $use_gdb_stub {
|
||||
# Only extended-remote supports "run".
|
||||
} elseif [istarget "*-*-vxworks*"] then {
|
||||
gdb_test "set args" ".*" ""
|
||||
@ -448,7 +448,7 @@ You must specify a function name to run, and arguments if any"\
|
||||
}
|
||||
|
||||
#test run
|
||||
if [target_info exists use_gdb_stub] {
|
||||
if $use_gdb_stub {
|
||||
# Only extended-remote supports "run".
|
||||
} elseif [istarget "*-*-vxworks*"] then {
|
||||
gdb_test "set args" ".*" ""
|
||||
|
@ -51,7 +51,7 @@ gdb_load ${binfile}
|
||||
|
||||
# Some coverage stuff
|
||||
#
|
||||
if ![target_info exists use_gdb_stub] {
|
||||
if !$use_gdb_stub {
|
||||
gdb_test "kill" ".*The program is not being run.*"
|
||||
gdb_test "detach" ".*"
|
||||
gdb_test "run" ".*"
|
||||
|
@ -208,7 +208,7 @@ gdb_test_multiple "next" "step out of main" {
|
||||
set program_exited_normally 0
|
||||
set program_not_exited 0
|
||||
set program_in_exit 0
|
||||
if {! [target_info exists use_gdb_stub]
|
||||
if {!$use_gdb_stub
|
||||
&& (! [target_info exists use_cygmon] || ! [target_info use_cygmon])} {
|
||||
global program_exited;
|
||||
if {[eval expr $program_exited == 0]} {
|
||||
|
@ -81,7 +81,7 @@ proc set_listsize { arg } {
|
||||
#
|
||||
|
||||
proc test_listsize {} {
|
||||
global gdb_prompt
|
||||
global gdb_prompt use_gdb_stub
|
||||
global hp_cc_compiler
|
||||
global hp_aCC_compiler
|
||||
|
||||
@ -94,7 +94,7 @@ proc test_listsize {} {
|
||||
# list the lines there instead of main, so we skip this test for remote targets.
|
||||
# The second case is for optimized code, it is still correct.
|
||||
|
||||
if [target_info exists use_gdb_stub] {
|
||||
if $use_gdb_stub {
|
||||
runto_main;
|
||||
unsupported "list default lines around main";
|
||||
} else {
|
||||
|
@ -97,7 +97,7 @@ gdb_test_no_output "set args foo bar blup baz bubble" "set args"
|
||||
gdb_test "show args" "Argument list to give program being debugged when it is started is \"foo bar blup baz bubble\"..*" "show args"
|
||||
|
||||
# Don't test if we can't pass args or if we're using a stub.
|
||||
if { ![target_info exists use_gdb_stub] && ![target_info exists noargs] } {
|
||||
if { !$use_gdb_stub && ![target_info exists noargs] } {
|
||||
#test passing args
|
||||
gdb_test "cont" "Continuing.*" "continuing"
|
||||
delete_breakpoints
|
||||
|
@ -41,6 +41,11 @@ pass $test
|
||||
# Declare GDB now as running.
|
||||
set gdb_spawn_id -1
|
||||
|
||||
# GDB spawned by `valgrind --db-attach=yes' stops already after the startup is
|
||||
# executed, like with non-extended gdbserver. It is also not correct to
|
||||
# run/attach the inferior.
|
||||
set use_gdb_stub 1
|
||||
|
||||
set test "valgrind started"
|
||||
# The trailing '.' differs for different memcheck versions.
|
||||
gdb_test_multiple "" $test {
|
||||
|
@ -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 $"\
|
||||
|
@ -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]
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user