[gdb/testsuite] Disable vgdb tests if xml not supported
authorTom de Vries <tdevries@suse.de>
Wed, 29 Sep 2021 13:53:52 +0000 (15:53 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 29 Sep 2021 13:53:52 +0000 (15:53 +0200)
I build gdb without xml support using --without-expat, and ran into:
...
(gdb) target remote | vgdb --wait=2 --max-invoke-ms=2500 --pid=22032^M
Remote debugging using | vgdb --wait=2 --max-invoke-ms=2500 --pid=22032^M
relaying data between gdb and process 22032^M
warning: Can not parse XML target description; XML support was disabled at \
  compile time^M
  ...
(gdb) PASS: gdb.base/valgrind-infcall.exp: continue #1
p gdb_test_infcall ()^M
Remote 'g' packet reply is too long (expected 560 bytes, got 800 bytes): ...^M
(gdb) FAIL: gdb.base/valgrind-infcall.exp: p gdb_test_infcall ()
...

After googling the error message with context valgrind gdbserver, I found
indications that the Remote 'g' packet reply error is due to missing xml
support.

And here ( https://www.valgrind.org/docs/manual/manual-core-adv.html ) I
found:
...
GDB version needed for ARM and PPC32/64.

You must use a GDB version which is able to read XML target description sent
by a gdbserver.  This is the standard setup if GDB was configured and built
with the "expat" library.  If your GDB was not configured with XML support, it
will report an error message when using the "target" command.  Debugging will
not work because GDB will then not be able to fetch the registers from the
Valgrind gdbserver.
...

So I guess I'm running into the same problem for x86_64.

Fix this by skipping all gdb.base/valgrind-*.exp tests if xml support is not
available.  Although only the gdb.base/valgrind-infcall*.exp produce fails,
the Remote 'g' packet reply error occurs in all tests, so it seems prudent to
disable them all.

Tested on x86_64-linux.

gdb/testsuite/gdb.base/valgrind-bt.exp
gdb/testsuite/gdb.base/valgrind-disp-step.exp
gdb/testsuite/gdb.base/valgrind-infcall-2.exp
gdb/testsuite/gdb.base/valgrind-infcall.exp

index b559e433d7246101697fe45875abce11aa0c7d80..4b84a45d3337b3d8501fc1c94a07896e4f3f40a3 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+if { [gdb_skip_xml_test] } {
+    # Valgrind gdbserver requires gdb with xml support.
+    return 0
+}
+
 load_lib valgrind.exp
 
 if [is_remote target] {
index 3aecf00a29137ba39f771f853f70cc59299800a5..f9429fbd69afe2c21fe207aaa954bfa1db4b45e4 100644 (file)
 # really tests is that GDB falls back to in-line stepping
 # automatically instead of getting stuck or crashing.
 
+if { [gdb_skip_xml_test] } {
+    # Valgrind gdbserver requires gdb with xml support.
+    return 0
+}
+
 load_lib valgrind.exp
 
 if [is_remote target] {
index 82b3f4e5c49eb5c2cd84f1959fb914eb0371cb3f..30881ca72ea1ea02bd01c5d1f6491299c88e41db 100644 (file)
 # terminate called after throwing an instance of 'gdb_exception_error'
 # Aborted (core dumped)
 
+if { [gdb_skip_xml_test] } {
+    # Valgrind gdbserver requires gdb with xml support.
+    return 0
+}
+
 load_lib valgrind.exp
 
 if [is_remote target] {
index 658d2bdb3deba1de83c24c6bdce34b74febf86e2..0108f92ceafd8e445a0135ccb9fde8fcc481c4d9 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+if { [gdb_skip_xml_test] } {
+    # Valgrind gdbserver requires gdb with xml support.
+    return 0
+}
+
 load_lib valgrind.exp
 
 if [is_remote target] {