gdb/riscv: Don't error when decoding a 6 or 8 byte instruction
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 4 Jun 2019 09:30:41 +0000 (10:30 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 5 Jun 2019 08:54:47 +0000 (09:54 +0100)
commit312617a3d06b8df67b9f4f63f92ebfaa6b591921
tree37d49c97d82d795c3d0c0519f78283531543a0b9
parentfbe4d6650d714643fe340d9ccba7fc500c26b91d
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.
gdb/ChangeLog
gdb/riscv-tdep.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/riscv-unwind-long-insn-6.s [new file with mode: 0644]
gdb/testsuite/gdb.arch/riscv-unwind-long-insn-8.s [new file with mode: 0644]
gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c [new file with mode: 0644]
gdb/testsuite/gdb.arch/riscv-unwind-long-insn.exp [new file with mode: 0644]