diff options
author | Anton Kolesov <Anton.Kolesov@synopsys.com> | 2017-06-27 19:12:14 +0300 |
---|---|---|
committer | Anton Kolesov <Anton.Kolesov@synopsys.com> | 2017-10-11 15:42:52 +0300 |
commit | 56d704daee44b036d1eff86123de6dec0c55f61b (patch) | |
tree | 291f870c905a27d3e6bd035b24c16e36f10a28cf /gdb/testsuite/gdb.arch | |
parent | 8f314ad58ec824ce6c8467af29f11583f79a80ea (diff) | |
download | gdb-56d704daee44b036d1eff86123de6dec0c55f61b.zip gdb-56d704daee44b036d1eff86123de6dec0c55f61b.tar.gz gdb-56d704daee44b036d1eff86123de6dec0c55f61b.tar.bz2 |
arc: Pass proper CPU value to the disassembler
There was a problem with generation of the disassembler options for ARC in GDB,
because a BFD architecture name was used as a CPU name, but they have different
meaning even if some architectures have same name as respective CPUs. Target
description specifies a BFD architecture, which is different from ARC CPU, as
accepted by the disassembler (and most other ARC tools), because CPU values are
much more fine grained - there can be multiple CPU values per single BFD
architecture. As a result this code should translate architecture to some CPU
value. Since there is no info on exact CPU configuration, it is best to use
the most feature-rich CPU, so that the disassembler will recognize all
instructions available to the specified architecture.
gdb/ChangeLog
yyyy-mm-dd Anton Kolesov <Anton.Kolesov@synopsys.com>
* arc-tdep.c (arc_gdbarch_init): Pass proper cpu value to disassembler.
* arc-tdep.h (arc_arch_is_em): New function.
(arc_arch_is_hs): Likewise.
gdb/testsuite/ChangeLog
yyyy-mm-dd Anton Kolesov <Anton.Kolesov@synopsys.com>
* gdb.arch/arc-tdesc-cpu.exp: New file.
* gdb.arch/arc-tdesc-cpu.xml: Likewise.
Diffstat (limited to 'gdb/testsuite/gdb.arch')
-rw-r--r-- | gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp | 48 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml | 53 |
2 files changed, 101 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp b/gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp new file mode 100644 index 0000000..f1c009d --- /dev/null +++ b/gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp @@ -0,0 +1,48 @@ +# Copyright 2017 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 "arc-tdesc-cpu.exp" + return -1 +} + +gdb_start + +# Test whether it is OK to have `arc:HS` in the target description +# architecture. `HS` is a valid BFD architecture name, however the +# disassembler doesn't accept it as a CPU name. This test checks that GDB +# doesn't pass architecture from the target description directly to the +# disassembler and instead uses one of the valid CPU names. + +set filename $srcdir/$subdir/arc-tdesc-cpu.xml + +set cmd "set tdesc filename $filename" +gdb_test $cmd + +# An error message is emitted by the disassembler, therefore it is not shown +# unless the disassembler is actually invoked. Address "0" is not invalid, +# but that doesn't matter for this test case, because it is only the +# disassembler error message that is interesting. +set cmd "x /i 0" +set msg "setting HS architecture" +gdb_test_multiple $cmd $msg { + -re "Unrecognised disassembler CPU option: HS.*$gdb_prompt" { + fail $msg + } + -re "^$cmd\r\n\\s*$hex:\\s+Cannot access memory at address $hex\r\n$gdb_prompt" + { + pass $msg + } +} diff --git a/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml b/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml new file mode 100644 index 0000000..fe158ae --- /dev/null +++ b/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml @@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2017 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE target SYSTEM "gdb-target.dtd"> +<target> + <architecture>arc:HS</architecture> + + <feature name="org.gnu.gdb.arc.core.v2"> + <reg name="r0" bitsize="32"/> + <reg name="r1" bitsize="32"/> + <reg name="r2" bitsize="32"/> + <reg name="r3" bitsize="32"/> + <reg name="r4" bitsize="32"/> + <reg name="r5" bitsize="32"/> + <reg name="r6" bitsize="32"/> + <reg name="r7" bitsize="32"/> + <reg name="r8" bitsize="32"/> + <reg name="r9" bitsize="32"/> + <reg name="r10" bitsize="32"/> + <reg name="r11" bitsize="32"/> + <reg name="r12" bitsize="32"/> + <reg name="r13" bitsize="32"/> + <reg name="r14" bitsize="32"/> + <reg name="r15" bitsize="32"/> + <reg name="r16" bitsize="32"/> + <reg name="r17" bitsize="32"/> + <reg name="r18" bitsize="32"/> + <reg name="r19" bitsize="32"/> + <reg name="r20" bitsize="32"/> + <reg name="r21" bitsize="32"/> + <reg name="r22" bitsize="32"/> + <reg name="r23" bitsize="32"/> + <reg name="r24" bitsize="32"/> + <reg name="r25" bitsize="32"/> + <reg name="gp" bitsize="32"/> + <reg name="fp" bitsize="32"/> + <reg name="sp" bitsize="32"/> + <reg name="ilink" bitsize="32"/> + <reg name="r30" bitsize="32"/> + <reg name="blink" bitsize="32"/> + <reg name="lp_count" bitsize="32"/> + <reg name="pcl" bitsize="32"/> + </feature> + + <feature name="org.gnu.gdb.arc.aux-minimal"> + <reg name="pc" bitsize="32"/> + <reg name="status32" bitsize="32"/> + </feature> +</target> |