]> Git Repo - binutils.git/blob - gdb/testsuite/gdb.python/py-send-packet.exp
Automatic date update in version.in
[binutils.git] / gdb / testsuite / gdb.python / py-send-packet.exp
1 # Copyright (C) 2021-2022 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 # Test the gdb.RemoteTargetConnection.send_packet API.  This is done
17 # by connecting to a remote target and fetching the thread list in two
18 # ways, first, we manually send the packets required to read the
19 # thread list using gdb.TargetConnection.send_packet, then we compare
20 # the results to the thread list using the standard API calls.
21
22 load_lib gdb-python.exp
23 load_lib gdbserver-support.exp
24
25 standard_testfile
26
27 if {[skip_gdbserver_tests]} {
28     return 0
29 }
30
31 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
32     return -1
33 }
34
35 if { [skip_python_tests] } {
36     return 0
37 }
38
39 # Make sure we're disconnected, in case we're testing with an
40 # extended-remote board, therefore already connected.
41 gdb_test "disconnect" ".*"
42
43 gdbserver_run ""
44
45 gdb_breakpoint "breakpt"
46 gdb_continue_to_breakpoint "breakpt"
47
48 # Source the python script.
49 set remote_python_file [gdb_remote_download host \
50                             ${srcdir}/${subdir}/${testfile}.py]
51 gdb_test "source $remote_python_file" "Sourcing complete\\." \
52     "source ${testfile}.py script"
53
54 # The test is actually written in the Python script.  Run it now.
55 gdb_test "python run_send_packet_test()" "Send packet test passed"
56
57 # Check the string representation of a remote target connection.
58 gdb_test "python print(gdb.selected_inferior().connection)" \
59     "<gdb.RemoteTargetConnection num=$decimal, what=\".*\">"
60
61 # Check to see if there's any auxv data for this target.
62 gdb_test_multiple "info auxv" "" {
63     -re -wrap "The program has no auxiliary information now\\. " {
64         set skip_auxv_test true
65     }
66     -re -wrap "0\\s+AT_NULL\\s+End of vector\\s+0x0" {
67         set skip_auxv_test false
68     }
69 }
70
71 if { ! $skip_auxv_test } {
72     # Use 'maint packet' to fetch the auxv data.
73     set reply_data ""
74     gdb_test_multiple "maint packet qXfer:auxv:read::0,1000" "" {
75         -re "sending: \"qXfer:auxv:read::0,1000\"\r\n" {
76             exp_continue
77         }
78         -re -wrap "received: \"(.*)\"" {
79             set reply_data $expect_out(1,string)
80         }
81     }
82
83     # Escape any backslash characters in the output, so we can safely
84     # pass a string through to Python.
85     set reply_data [string map {\\ \\\\} $reply_data]
86     gdb_assert { ![string equal "$reply_data" ""] }
87
88     # Run the test, fetches the auxv data in Python and confirm it
89     # matches the expected results.
90     gdb_test "python run_auxv_send_packet_test(\"$reply_data\")" \
91         "auxv send packet test passed" \
92         "call python run_auxv_send_packet_test function"
93 }
94
95 set sizeof_global_var [get_valueof "/d" "sizeof(global_var)" "UNKNOWN"]
96 if { $sizeof_global_var == 4 } {
97     gdb_test_no_output "set debug remote 1"
98     gdb_test "python run_set_global_var_test()" \
99         "set global_var test passed"
100 }
This page took 0.030064 seconds and 4 git commands to generate.