diff options
author | Philippe Waroquiers <philippe.waroquiers@skynet.be> | 2019-12-21 14:19:40 +0100 |
---|---|---|
committer | Philippe Waroquiers <philippe.waroquiers@skynet.be> | 2020-01-25 11:08:24 +0100 |
commit | b1468492c69335b023e6e4adf15ba0de0263812e (patch) | |
tree | a4ac8fefbad17a1e3cdd4fd07cbdae71692a003e /gdb/testsuite/gdb.base/attach.exp | |
parent | a2fedca99c622e1b523046d09f573b06de0207a6 (diff) | |
download | gdb-b1468492c69335b023e6e4adf15ba0de0263812e.zip gdb-b1468492c69335b023e6e4adf15ba0de0263812e.tar.gz gdb-b1468492c69335b023e6e4adf15ba0de0263812e.tar.bz2 |
Test 'set exec-file-mismatch ask|warn|off'.
Modify gdb.base/attach.exp to test the behaviour of the option
exec-file-mismatch. Note that this test can also be run using/
make check RUNTESTFLAGS="--target_board=native-extended-gdbserver" TESTS=gdb.base/attach.exp
to test the behaviour of attaching to running program using a gdb server.
Note: when running the test with a gdbserver, the tests in
test_command_line_attach_run fail because the command "run" is not supported.
I tried to extend the condition
if ![isnative] then {
unsupported "commandline attach run test"
return 0
}
but unclear to me how to best do that. The below trials all failed
to work properly:
if { ![isnative] || [target_is_gdbserver] } then {
if { ![isnative] || [use_gdb_stub] } then {
if { ![isnative] || [is_remote target] } then {
=> could never obtain a condition that was true with gdbserver.
2020-01-25 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* gdb.base/attach.exp: Test 'set exec-file-mismatch'.
Diffstat (limited to 'gdb/testsuite/gdb.base/attach.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/attach.exp | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp index 52a8995..5a1d7a84 100644 --- a/gdb/testsuite/gdb.base/attach.exp +++ b/gdb/testsuite/gdb.base/attach.exp @@ -474,7 +474,12 @@ proc test_command_line_attach_run {} { global gdb_prompt global binfile - if ![isnative] then { + # Skip test if we cannot attach on the command line and use the run command. + # ??? Unclear what condition to use to return here when using gdbserver. + # ??? None of the below works. + # ![isnative] || [target_is_gdbserver] + # ![isnative] || [use_gdb_stub] + if { ![isnative] || [is_remote target] } then { unsupported "commandline attach run test" return 0 } @@ -513,14 +518,91 @@ proc test_command_line_attach_run {} { } } + +# This is a test of 'set exec-file-mismatch' handling. + +proc_with_prefix do_attach_exec_mismatch_handling_tests {} { + global gdb_prompt + global binfile + global binfile2 + + clean_restart $binfile + + # Start two programs that can be attached to. + # The first program contains a 'int bidule' variable, the second a 'float bidule'. + + set test_spawn_id [spawn_wait_for_attach $binfile] + set testpid [spawn_id_get_pid $test_spawn_id] + set test_spawn_id2 [spawn_wait_for_attach $binfile2] + set testpid2 [spawn_id_get_pid $test_spawn_id2] + + + # Test with the default value of 'set exec-file-mismatch load". + set test "mismatch load" + gdb_test "attach $testpid" "Attaching to program.*" "$test attach1" + # Verify that we can "see" the variable "bidule" in the + # program, and that it is an integer. + gdb_test "ptype bidule" " = int" "$test after attach1, bidule is int" + # Detach the process. + gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach1" + gdb_test_multiple "attach $testpid2" "$test attach2" { + -re "Attaching to program.*exec-file-mismatch handling is currently \"ask\".*Load new symbol table from .*attach2\".*\(y or n\)" { + pass "$test attach2" + } + } + gdb_test "y" "Reading symbols from .*attach2.*" "$test load attach2" + # Verify that we can "see" the variable "bidule" in the + # program, and that it is a float. + gdb_test "ptype bidule" " = float" "$test after attach2 and load, bidule is float" + # Detach the process. + gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach2" + + + # Test with 'set exec-file-mismatch warn". + set test "mismatch warn" + gdb_test_no_output "set exec-file-mismatch warn" + gdb_test_multiple "attach $testpid" "$test attach" { + -re "Attaching to program.*exec-file-mismatch handling is currently \"warn\".*$gdb_prompt" { + pass "$test attach" + } + } + # Verify that we still (wrongly) "see" the variable "bidule" as a float, + # as we have not loaded the correct exec-file. + gdb_test "ptype bidule" " = float" "$test after attach and warn, bidule is float" + # Detach the process. + gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach" + + + # Same test but with 'set exec-file-mismatch off". + set test "mismatch off" + gdb_test_no_output "set exec-file-mismatch off" + gdb_test_multiple "attach $testpid" "$test attach" { + -re "Attaching to program.*$gdb_prompt" { + pass "$test attach" + } + } + # Verify that we still (wrongly) "see" the variable "bidule" as a float, + # as we have not warned the user and not loaded the correct exec-file + gdb_test "ptype bidule" " = float" "$test after attach and warn, bidule is float" + # Detach the process. + gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach" + + + # Don't leave a process around + kill_wait_spawned_process $test_spawn_id + kill_wait_spawned_process $test_spawn_id2 +} + do_attach_tests do_attach_failure_tests do_call_attach_tests +do_attach_exec_mismatch_handling_tests # Test "gdb --pid" do_command_attach_tests + test_command_line_attach_run return 0 |