binutils-gdb/gdb/testsuite/gdb.xml/tdesc-arch.exp
Andrew Burgess ccb9eba6a2 gdb: Improve formatting of 'show architecture' messages
This commit changes the output of 'show architecture'.  Here is a
session before this commit:

  (gdb) show architecture
  The target architecture is set automatically (currently i386)
  (gdb) set architecture mips
  The target architecture is assumed to be mips
  (gdb) show architecture
  The target architecture is assumed to be mips
  (gdb)

After this commit the session now looks like this:

  (gdb) show architecture
  The target architecture is set to "auto" (currently "i386").
  (gdb) set architecture mips
  The target architecture is set to "mips".
  (gdb) show architecture
  The target architecture is set to "mips".
  (gdb)

The changes are:

  1. The value is now enclosed in quotes,
  2. Each line ends with '.', and
  3. After setting the architecture GDB is now a little more
  assertive; 'architecture is set to' not 'is assumed to be', the user
  did just tell us after all!

gdb/ChangeLog:

	* arch-utils.c (show_architecture): Update formatting of messages.

gdb/testsuite/ChangeLog:

	* gdb.arch/amd64-osabi.exp: Update.
	* gdb.arch/arm-disassembler-options.exp: Update.
	* gdb.arch/powerpc-disassembler-options.exp: Update.
	* gdb.arch/ppc64-symtab-cordic.exp: Update.
	* gdb.arch/s390-disassembler-options.exp: Update.
	* gdb.base/all-architectures.exp.tcl: Update.
	* gdb.base/attach-pie-noexec.exp: Update.
	* gdb.base/catch-syscall.exp: Update.
	* gdb.xml/tdesc-arch.exp: Update.
2020-07-14 13:21:42 +01:00

129 lines
3.9 KiB
Plaintext

# Copyright 2007-2020 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/>.
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 <architecture> 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
}
-re "Requires an argument. Valid arguments are (\[^ \]*), auto\\.\r\n$gdb_prompt $" {
# If there is just one supported architecture, we can't do this test.
unsupported "tdesc-arch.exp"
return -1
}
}
set default_arch ""
set msg "read default architecture"
gdb_test_multiple "show architecture" $msg {
-re "The target architecture is set to \"auto\" \\(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.
# TRANS_MODE indicates how newlines should be represented; it should
# be one of the values supported by "fconfigure -translation".
proc set_arch { arch which trans_mode } {
global gdb_prompt
global subdir
set filename [standard_output_file tdesc-arch.xml]
set fd [open $filename w]
fconfigure $fd -translation $trans_mode
puts $fd \
"<target>
<architecture>$arch</architecture>
</target>"
close $fd
if {[is_remote host]} {
set filename [remote_download host $filename tdesc-arch.xml]
}
# Anchor the test output, so that error messages are detected.
set cmd "set tdesc filename $filename"
set msg "set tdesc filename tdesc-arch.xml ($which architecture)"
set cmd_regex [string_to_regexp $cmd]
gdb_test_multiple $cmd $msg {
-re "^$cmd_regex\r\n$gdb_prompt $" {
pass $msg
}
-re "^$cmd_regex\r\nwarning: A handler for the OS ABI.*\r\n$gdb_prompt $" {
kfail gdb/2225 $msg
}
}
set cmd "show architecture"
gdb_test $cmd \
"The target architecture is set to \"auto\" \\(currently \"$arch\"\\)\\." \
"$cmd ($which architecture)"
remote_file host delete $filename
}
set_arch $arch1 first lf
set_arch $arch2 second lf
with_test_prefix crlf {
set_arch $arch1 first crlf
set_arch $arch2 second crlf
}
# Check an invalid architecture setting.
set filename [standard_output_file tdesc-arch.xml]
set fd [open $filename w]
puts $fd \
"<target>
<architecture>invalid</architecture>
</target>"
close $fd
if {[is_remote host]} {
set filename [remote_download host $filename "tdesc-arch.xml"]
}
set cmd "set tdesc filename $filename"
gdb_test $cmd \
"warning:.*Target description specified unknown architecture.*" \
"set tdesc filename tdesc-arch.xml (invalid architecture)"
set cmd "show architecture"
gdb_test $cmd \
"The target architecture is set to \"auto\" \\(currently \"$default_arch\"\\)\\." \
"$cmd (invalid architecture)"
remote_file host delete $filename