From e515b470281c9dab5de4e7eace22200a577dbf55 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 23 Jan 2007 17:11:55 +0000 Subject: [PATCH] * Makefile.in (ALL_SUBDIRS): Add gdb.xml. * configure: Regenerated. * configure.ac (AC_OUTPUT): Add gdb.xml/Makefile. * gdb.xml/Makefile.in, gdb.xml/tdesc-arch.exp, gdb.xml/tdesc-bogus.xml, gdb.xml/tdesc-errors.exp, gdb.xml/trivial.xml, gdb.xml/tdesc-unknown.xml: New files. * lib/gdb.exp (gdb_skip_xml_test): New function. --- gdb/testsuite/ChangeLog | 10 +++ gdb/testsuite/Makefile.in | 2 +- gdb/testsuite/configure | 3 +- gdb/testsuite/configure.ac | 3 +- gdb/testsuite/gdb.xml/Makefile.in | 13 +++ gdb/testsuite/gdb.xml/tdesc-arch.exp | 104 ++++++++++++++++++++++++ gdb/testsuite/gdb.xml/tdesc-bogus.xml | 3 + gdb/testsuite/gdb.xml/tdesc-errors.exp | 49 +++++++++++ gdb/testsuite/gdb.xml/tdesc-unknown.xml | 12 +++ gdb/testsuite/gdb.xml/trivial.xml | 1 + gdb/testsuite/lib/gdb.exp | 23 ++++++ 11 files changed, 220 insertions(+), 3 deletions(-) create mode 100644 gdb/testsuite/gdb.xml/Makefile.in create mode 100644 gdb/testsuite/gdb.xml/tdesc-arch.exp create mode 100644 gdb/testsuite/gdb.xml/tdesc-bogus.xml create mode 100644 gdb/testsuite/gdb.xml/tdesc-errors.exp create mode 100644 gdb/testsuite/gdb.xml/tdesc-unknown.xml create mode 100644 gdb/testsuite/gdb.xml/trivial.xml diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9160c8e06e..c4ec97d8bd 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2007-01-23 Daniel Jacobowitz + + * Makefile.in (ALL_SUBDIRS): Add gdb.xml. + * configure: Regenerated. + * configure.ac (AC_OUTPUT): Add gdb.xml/Makefile. + * gdb.xml/Makefile.in, gdb.xml/tdesc-arch.exp, + gdb.xml/tdesc-bogus.xml, gdb.xml/tdesc-errors.exp, + gdb.xml/trivial.xml, gdb.xml/tdesc-unknown.xml: New files. + * lib/gdb.exp (gdb_skip_xml_test): New function. + 2007-01-23 Nick Hudson * gdb.base/sigrepeat.exp: Correct error message. diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in index d98ed7650b..7bd9437981 100644 --- a/gdb/testsuite/Makefile.in +++ b/gdb/testsuite/Makefile.in @@ -37,7 +37,7 @@ RPATH_ENVVAR = @RPATH_ENVVAR@ ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.cp gdb.disasm \ gdb.dwarf2 \ gdb.fortran gdb.server gdb.java gdb.mi \ - gdb.objc gdb.threads gdb.trace \ + gdb.objc gdb.threads gdb.trace gdb.xml \ $(SUBDIRS) EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ diff --git a/gdb/testsuite/configure b/gdb/testsuite/configure index 3370ef049e..992737a59f 100755 --- a/gdb/testsuite/configure +++ b/gdb/testsuite/configure @@ -3102,7 +3102,7 @@ done - ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile" + ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -3668,6 +3668,7 @@ do "gdb.objc/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.objc/Makefile" ;; "gdb.threads/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.threads/Makefile" ;; "gdb.trace/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.trace/Makefile" ;; + "gdb.xml/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.xml/Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; diff --git a/gdb/testsuite/configure.ac b/gdb/testsuite/configure.ac index 15369d3993..4f68b8fdb2 100644 --- a/gdb/testsuite/configure.ac +++ b/gdb/testsuite/configure.ac @@ -116,4 +116,5 @@ AC_OUTPUT([Makefile \ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \ gdb.fortran/Makefile gdb.server/Makefile \ gdb.java/Makefile gdb.mi/Makefile \ - gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile]) + gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile \ + gdb.xml/Makefile]) diff --git a/gdb/testsuite/gdb.xml/Makefile.in b/gdb/testsuite/gdb.xml/Makefile.in new file mode 100644 index 0000000000..01c3cf5b40 --- /dev/null +++ b/gdb/testsuite/gdb.xml/Makefile.in @@ -0,0 +1,13 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +PROGS = + +all info install-info dvi install uninstall installcheck check: + @echo "Nothing to be done for $@..." + +clean mostlyclean: + -rm -f *.ci *.o $(OBJS) $(PROGS) *~ core + +distclean maintainer-clean realclean: clean + -rm -f Makefile diff --git a/gdb/testsuite/gdb.xml/tdesc-arch.exp b/gdb/testsuite/gdb.xml/tdesc-arch.exp new file mode 100644 index 0000000000..2ea2bb22b1 --- /dev/null +++ b/gdb/testsuite/gdb.xml/tdesc-arch.exp @@ -0,0 +1,104 @@ +# Copyright 2007 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +if {[gdb_skip_xml_test]} { + unsupported "tdesc-arch.exp" + return -1 +} + +gdb_start + +# Find some valid architectures - we just need legitimate values +# to put in our elements. +set arch1 "" +set arch2 "" +set msg "read valid architectures" +gdb_test_multiple "set architecture" $msg { + -re "Requires an argument. Valid arguments are (\[^ \]*), (\[^ \]*), .*auto\\.\r\n$gdb_prompt $" { + set arch1 $expect_out(1,string) + set arch2 $expect_out(2,string) + pass $msg + } +} + +set default_arch "" +set msg "read default architecture" +gdb_test_multiple "show architecture" $msg { + -re "The target architecture is set automatically \\(currently (\[^ \]*)\\)\r\n$gdb_prompt $" { + set default_arch $expect_out(1,string) + pass $msg + } +} + +# If that did not work, no point running further tests. +if { "$arch1" == "" || "$arch2" == "" || "$default_arch" == "" } { + unresolved "architecture XML tests" + return -1 +} + +# Run these tests twice, once for $arch1 and once for $arch2, to +# make sure that the tdesc file overrides the global default. + +proc set_arch { arch which } { + global gdb_prompt + + set fd [open "tdesc-arch.xml" w] + puts $fd \ + " + $arch + " + close $fd + + # Anchor the test output, so that error messages are detected. + set cmd "set tdesc filename tdesc-arch.xml" + set msg "$cmd ($which architecture)" + set cmd_regex [string_to_regexp $cmd] + gdb_test_multiple $cmd $msg { + -re "^$cmd_regex\r\n$gdb_prompt $" { + pass $msg + } + } + + set cmd "show architecture" + gdb_test $cmd \ + "The target architecture is set automatically \\(currently $arch\\)" \ + "$cmd ($which architecture)" + + file delete "tdesc-arch.xml" +} + +set_arch $arch1 first +set_arch $arch2 second + +# Check an invalid architecture setting. +set fd [open "tdesc-arch.xml" w] +puts $fd \ + " + invalid + " +close $fd + +set cmd "set tdesc filename tdesc-arch.xml" +gdb_test $cmd \ + "warning:.*Target description specified unknown architecture.*" \ + "$cmd (invalid architecture)" + +set cmd "show architecture" +gdb_test $cmd \ + "The target architecture is set automatically \\(currently $default_arch\\)" \ + "$cmd (invalid architecture)" + +file delete "tdesc-arch.xml" diff --git a/gdb/testsuite/gdb.xml/tdesc-bogus.xml b/gdb/testsuite/gdb.xml/tdesc-bogus.xml new file mode 100644 index 0000000000..181b5235c5 --- /dev/null +++ b/gdb/testsuite/gdb.xml/tdesc-bogus.xml @@ -0,0 +1,3 @@ + + diff --git a/gdb/testsuite/gdb.xml/tdesc-errors.exp b/gdb/testsuite/gdb.xml/tdesc-errors.exp new file mode 100644 index 0000000000..03dcd51389 --- /dev/null +++ b/gdb/testsuite/gdb.xml/tdesc-errors.exp @@ -0,0 +1,49 @@ +# Copyright 2007 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +if {[gdb_skip_xml_test]} { + unsupported "tdesc-errors.exp" + return -1 +} + +gdb_start + +proc set_bad_arch { srcfile errmsg } { + global gdb_prompt + global srcdir + global subdir + + # Anchor the test output, so that error messages are detected. + set cmd "set tdesc filename $srcdir/$subdir/$srcfile" + set msg $cmd + set cmd_regex [string_to_regexp $cmd] + gdb_test_multiple $cmd $msg { + -re "^$cmd_regex\r\n$errmsg$gdb_prompt $" { + pass $msg + } + } +} + +set common_warn "\r\nwarning: Could not load XML target description; ignoring\r\n" + +# This file contains a syntax error. We should warn the user about +# it. +set_bad_arch "tdesc-bogus.xml" \ + "warning: while parsing .*: no element found$common_warn" + +# This file contains a bunch of unrecognized elements. They should be +# silently ignored. +set_bad_arch "tdesc-unknown.xml" "" diff --git a/gdb/testsuite/gdb.xml/tdesc-unknown.xml b/gdb/testsuite/gdb.xml/tdesc-unknown.xml new file mode 100644 index 0000000000..72fd7e8a0b --- /dev/null +++ b/gdb/testsuite/gdb.xml/tdesc-unknown.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/gdb/testsuite/gdb.xml/trivial.xml b/gdb/testsuite/gdb.xml/trivial.xml new file mode 100644 index 0000000000..e656681fa7 --- /dev/null +++ b/gdb/testsuite/gdb.xml/trivial.xml @@ -0,0 +1 @@ + diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 7d785bc8fd..6a261f0a29 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2280,6 +2280,29 @@ proc gdb_skip_bogus_test { msg } { return 0; } +# Return true if a test should be skipped due to lack of XML support +# in the host GDB. + +proc gdb_skip_xml_test { } { + global gdb_prompt + global srcdir + global xml_missing_cached + + if {[info exists xml_missing_cached]} { + return $xml_missing_cached + } + + gdb_start + set xml_missing_cached 0 + gdb_test_multiple "set tdesc filename ${srcdir}/gdb.xml/trivial.xml" "" { + -re ".*XML support was disabled at compile time.*$gdb_prompt $" { + set xml_missing_cached 1 + } + -re ".*$gdb_prompt $" { } + } + gdb_exit + return $xml_missing_cached +} # Note: the procedure gdb_gnu_strip_debug will produce an executable called # ${binfile}.dbglnk, which is just like the executable ($binfile) but without -- 2.34.1