mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
Use do_self_tests in selftest.exp
This patch uses do_self_tests to simplify selftest.exp. It doesn't change the tests except the order, -PASS: gdb.gdb/selftest.exp: Disassemble main PASS: gdb.gdb/selftest.exp: breakpoint in captured_main +PASS: gdb.gdb/selftest.exp: run until breakpoint at captured_main +PASS: gdb.gdb/selftest.exp: Disassemble main PASS: gdb.gdb/selftest.exp: set interrupt character in test_with_self PASS: gdb.gdb/selftest.exp: set listsize to 1 -PASS: gdb.gdb/selftest.exp: run until breakpoint at captured_main gdb/testsuite: 2016-07-19 Yao Qi <yao.qi@linaro.org> * gdb.gdb/selftest.exp: Remove checks on is_remote and isnative. (test_with_self): Remove some code. Remove argument executable. (top-level): Use do_self_tests.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2016-07-19 Yao Qi <yao.qi@linaro.org>
|
||||||
|
|
||||||
|
* gdb.gdb/selftest.exp: Remove checks on is_remote and isnative.
|
||||||
|
(test_with_self): Remove some code. Remove argument executable.
|
||||||
|
(top-level): Use do_self_tests.
|
||||||
|
|
||||||
2016-07-15 Zachary Welch <zwelch@codesourcery.com>
|
2016-07-15 Zachary Welch <zwelch@codesourcery.com>
|
||||||
Don Breazeal <donb@codesourcery.com>
|
Don Breazeal <donb@codesourcery.com>
|
||||||
|
|
||||||
|
@ -17,11 +17,6 @@
|
|||||||
|
|
||||||
load_lib selftest-support.exp
|
load_lib selftest-support.exp
|
||||||
|
|
||||||
# are we on a target board
|
|
||||||
if { [is_remote target] || ![isnative] } then {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
# Not all of the lines of code near the start of main are executed for
|
# Not all of the lines of code near the start of main are executed for
|
||||||
# every machine. Also, optimization may reorder some of the lines.
|
# every machine. Also, optimization may reorder some of the lines.
|
||||||
# So all we do is try to step or next over everything until we get
|
# So all we do is try to step or next over everything until we get
|
||||||
@ -254,44 +249,11 @@ proc do_steps_and_nexts {} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc test_with_self { executable } {
|
proc test_with_self { } {
|
||||||
global gdb_prompt
|
global gdb_prompt
|
||||||
global tool
|
|
||||||
global det_file
|
|
||||||
global decimal
|
global decimal
|
||||||
global timeout
|
global timeout
|
||||||
global INTERNAL_GDBFLAGS
|
global inferior_spawn_id
|
||||||
global inferior_spawn_id gdb_spawn_id
|
|
||||||
|
|
||||||
# load yourself into the debugger
|
|
||||||
# This can take a relatively long time, particularly for testing where
|
|
||||||
# the executable is being accessed over a network, or where gdb does not
|
|
||||||
# support partial symbols for a particular target and has to load the
|
|
||||||
# entire symbol table. Set the timeout to 10 minutes, which should be
|
|
||||||
# adequate for most environments (it *has* timed out with 5 min on a
|
|
||||||
# SPARCstation SLC under moderate load, so this isn't unreasonable).
|
|
||||||
# After gdb is started, set the timeout to 30 seconds for the duration
|
|
||||||
# of this test, and then back to the original value.
|
|
||||||
|
|
||||||
set oldtimeout $timeout
|
|
||||||
set timeout 600
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
|
|
||||||
global gdb_file_cmd_debug_info
|
|
||||||
set gdb_file_cmd_debug_info "unset"
|
|
||||||
|
|
||||||
set result [gdb_load $executable]
|
|
||||||
set timeout $oldtimeout
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
|
|
||||||
if { $result != 0 } then {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
if { $gdb_file_cmd_debug_info != "debug" } then {
|
|
||||||
untested "No debug information, skipping testcase."
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
# When GDB is built as a C++ program, disassemble shows the full
|
# When GDB is built as a C++ program, disassemble shows the full
|
||||||
# prototype.
|
# prototype.
|
||||||
@ -302,11 +264,6 @@ proc test_with_self { executable } {
|
|||||||
"x/10i.*main.*main($cxx_main_args_re)?.$decimal.*main($cxx_main_args_re)?.$decimal.*" \
|
"x/10i.*main.*main($cxx_main_args_re)?.$decimal.*main($cxx_main_args_re)?.$decimal.*" \
|
||||||
"Disassemble main"
|
"Disassemble main"
|
||||||
|
|
||||||
# Set a breakpoint at main
|
|
||||||
gdb_test "break captured_main" \
|
|
||||||
"Breakpoint.*at.* file.*, line.*" \
|
|
||||||
"breakpoint in captured_main"
|
|
||||||
|
|
||||||
# We'll need this when we send a ^C to GDB. Need to do it before we
|
# We'll need this when we send a ^C to GDB. Need to do it before we
|
||||||
# run the program and gdb starts saving and restoring tty states.
|
# run the program and gdb starts saving and restoring tty states.
|
||||||
gdb_test "shell stty intr '^C'" ".*" \
|
gdb_test "shell stty intr '^C'" ".*" \
|
||||||
@ -317,36 +274,6 @@ proc test_with_self { executable } {
|
|||||||
# gdb is stopped.
|
# gdb is stopped.
|
||||||
gdb_test_no_output "set listsize 1" "set listsize to 1"
|
gdb_test_no_output "set listsize 1" "set listsize to 1"
|
||||||
|
|
||||||
# run yourself
|
|
||||||
# It may take a very long time for the inferior gdb to start (lynx),
|
|
||||||
# so we bump it back up for the duration of this command.
|
|
||||||
set timeout 600
|
|
||||||
|
|
||||||
set description "run until breakpoint at captured_main"
|
|
||||||
gdb_test_multiple "run $INTERNAL_GDBFLAGS" "$description" {
|
|
||||||
-re "Starting program.*Breakpoint \[0-9\]+,.*captured_main .data.* at .*main.c:.*$gdb_prompt $" {
|
|
||||||
pass "$description"
|
|
||||||
}
|
|
||||||
-re "Starting program.*Breakpoint \[0-9\]+,.*captured_main .data.*$gdb_prompt $" {
|
|
||||||
xfail "$description (line numbers scrambled?)"
|
|
||||||
}
|
|
||||||
-re "vfork: No more processes.*$gdb_prompt $" {
|
|
||||||
fail "$description (out of virtual memory)"
|
|
||||||
set timeout $oldtimeout
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
-re ".*$gdb_prompt $" {
|
|
||||||
fail "$description"
|
|
||||||
set timeout $oldtimeout
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
set timeout $oldtimeout
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
|
|
||||||
# do we have a version number ?
|
# do we have a version number ?
|
||||||
gdb_test_multiple "print version" "printed version" {
|
gdb_test_multiple "print version" "printed version" {
|
||||||
-re ".\[0-9\]+ = .\[0-9.\]+.*$gdb_prompt $" {
|
-re ".\[0-9\]+ = .\[0-9.\]+.*$gdb_prompt $" {
|
||||||
@ -476,37 +403,8 @@ proc test_with_self { executable } {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Set the timeout back to the value it had when we were called.
|
|
||||||
set timeout $oldtimeout
|
|
||||||
verbose "Timeout is now $timeout seconds" 2
|
|
||||||
|
|
||||||
# Restart gdb in case next test expects it to be started already.
|
# Restart gdb in case next test expects it to be started already.
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Run the test with self.
|
do_self_tests captured_main test_with_self
|
||||||
# Copy the file executable file in case this OS doesn't like to edit its own
|
|
||||||
# text space.
|
|
||||||
|
|
||||||
set GDB_FULLPATH [find_gdb $GDB]
|
|
||||||
|
|
||||||
if {[is_remote host]} {
|
|
||||||
set xgdb x$tool
|
|
||||||
} else {
|
|
||||||
set xgdb [standard_output_file x$tool]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove any old copy lying around.
|
|
||||||
remote_file host delete $xgdb
|
|
||||||
|
|
||||||
gdb_start
|
|
||||||
set file [remote_download host $GDB_FULLPATH $xgdb]
|
|
||||||
set result [test_with_self $file]
|
|
||||||
gdb_exit
|
|
||||||
catch "remote_file host delete $file"
|
|
||||||
|
|
||||||
if {$result <0} then {
|
|
||||||
warning "Couldn't test self"
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user