blob: ec708dd0dd5bb6bf29bb93d9c63474e9a88cd72b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# This testcase is part of GDB, the GNU debugger.
# Copyright 2023-2024 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test per-inferior settings in a multi-inferior debug session. Check
# that the settings really are per-inferior.
load_lib gdb-python.exp
load_lib gdb-guile.exp
standard_testfile
if {[build_executable "failed to prepare" $testfile $srcfile]} {
return -1
}
# Cache whether we can run Python and/or Guile tests.
set run_python_tests [allow_python_tests]
set run_guile_tests [allow_guile_tests]
# The $_gdb_setting/$_gdb_setting_str tests require running inferiors,
# because they allocate memory in the inferiors for the produced
# values. Since we need two inferiors for this test, we can't run
# them with stub boards (e.g. gdbserver with non-extended remote
# protocol), since they can only run one inferior at a time. We can
# still run the other tests with multiple inferiors, they just won't
# be running inferiors.
set run [expr {![use_gdb_stub]}]
# List of inferior numbers to run tests for.
set inferiors {1 2}
# Start all the inferiors.
clean_restart $binfile
foreach_with_prefix inf $inferiors {
if { $inf > 1 } {
gdb_test "add-inferior -exec $binfile" "Added inferior 2.*" \
"add second inferior"
}
if { $run } {
if { ![runto_main] } {
return -1
}
}
}
# Setup some guile helpers -- if we plan to run the guile tests.
if { $run_guile_tests } {
gdb_install_guile_utils
gdb_install_guile_module
}
# Update the settings for each inferior.
foreach_with_prefix inf $inferiors {
gdb_test "inferior ${inf}" "Switching to inferior ${inf}.*" \
"switch to inferior ${inf} before set"
gdb_test_no_output "set args inf${inf}-args"
gdb_test_no_output "set cwd /inf${inf}-cwd"
gdb_test_no_output "set inferior-tty /inf${inf}-tty"
}
# Check settings are still correct for each inferior.
foreach_with_prefix inf $inferiors {
gdb_test "inferior ${inf}" "Switching to inferior ${inf}.*" \
"switch back to inferior ${inf}"
# Check that using 'with' doesn't corrupt the setting value.
gdb_test "with args tmp-value -- print 1" " = 1"
gdb_test "show args" "inf${inf}-args.*"
gdb_test "with cwd tmp-value -- print 1" " = 1"
gdb_test "show cwd" "/inf${inf}-cwd.*"
gdb_test "with inferior-tty tmp-value -- print 1" " = 1"
gdb_test "show inferior-tty" "/inf${inf}-tty.*"
# If the inferiors are running check $_gdb_setting_str and
# $_gdb_setting return the correct values.
if { $run } {
gdb_test {print $_gdb_setting_str("args")} "\"inf${inf}-args\""
gdb_test {print $_gdb_setting("args")} "\"inf${inf}-args\""
gdb_test {print $_gdb_setting_str("cwd")} "\"/inf${inf}-cwd\""
gdb_test {print $_gdb_setting("cwd")} "\"/inf${inf}-cwd\""
gdb_test {print $_gdb_setting_str("inferior-tty")} \
"\"/inf${inf}-tty\""
gdb_test {print $_gdb_setting("inferior-tty")} \
"\"/inf${inf}-tty\""
}
# Check the settings can be read from Python.
if { $run_python_tests } {
gdb_test "python print(gdb.parameter('args'))" "inf${inf}-args"
gdb_test "python print(gdb.parameter('cwd'))" "/inf${inf}-cwd"
gdb_test "python print(gdb.parameter('inferior-tty'))" \
"/inf${inf}-tty"
}
# Check the settings can be read from Guile.
if { $run_guile_tests } {
gdb_test "guile (print (parameter-value \"args\"))" \
"inf${inf}-args"
gdb_test "guile (print (parameter-value \"cwd\"))" \
"/inf${inf}-cwd"
gdb_test "guile (print (parameter-value \"inferior-tty\"))" \
"/inf${inf}-tty"
}
}
|