# 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"