diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2019-06-04 10:30:41 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2019-06-05 09:54:47 +0100 |
commit | 312617a3d06b8df67b9f4f63f92ebfaa6b591921 (patch) | |
tree | 37d49c97d82d795c3d0c0519f78283531543a0b9 /gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c | |
parent | fbe4d6650d714643fe340d9ccba7fc500c26b91d (diff) | |
download | gdb-312617a3d06b8df67b9f4f63f92ebfaa6b591921.zip gdb-312617a3d06b8df67b9f4f63f92ebfaa6b591921.tar.gz gdb-312617a3d06b8df67b9f4f63f92ebfaa6b591921.tar.bz2 |
gdb/riscv: Don't error when decoding a 6 or 8 byte instruction
If the RISC-V prologue scanner finds a 6 or 8 byte instruction we
currently throw an internal error, which is not great for the user.
A mechanism already exists in the prologue scanner to leave
instructions marked as unknown so that we can stop the prologue scan
without raising an error, this is used for all 2 and 4 byte
instructions that are not part of the small set the prologue scanner
actually understands.
This commit changes GDB so that all 6 and 8 byte instructions are
marked as unknown, rather than causing an error.
gdb/ChangeLog:
* riscv-tdep.c (riscv_insn::decode): Gracefully ignore
instructions of lengths 6 or 8 bytes.
gdb/testsuite/ChangeLog:
* gdb.arch/riscv-unwind-long-insn-6.s: New file.
* gdb.arch/riscv-unwind-long-insn-8.s: New file.
* gdb.arch/riscv-unwind-long-insn.c: New file.
* gdb.arch/riscv-unwind-long-insn.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c')
-rw-r--r-- | gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c b/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c new file mode 100644 index 0000000..d601e2d --- /dev/null +++ b/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c @@ -0,0 +1,25 @@ +/* Copyright 2019 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/>. */ + +extern void func (void); +extern void bar (void); + +int +main () +{ + bar (); + func (); + return 0; +} |