mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-24 12:35:55 +08:00
ccb9eba6a2
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.
129 lines
3.9 KiB
Plaintext
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
|