RISC-V: PR28291, Fix the gdb fails that PR27916 caused.
authorNelson Chu <nelson.chu@sifive.com>
Mon, 30 Aug 2021 15:20:45 +0000 (23:20 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Mon, 30 Aug 2021 15:30:11 +0000 (23:30 +0800)
* According to PR28291, we get the following unexpected gdb behavior,

(gdb) disassemble 0x0,+4
Dump of assembler code from 0x0 to 0x4:
   0x0000000000000000:
   0x0000000000000001:
   0x0000000000000002:
   0x0000000000000003:
End of assembler dump.

* This patch should fix it to the right behavior,

(gdb) disassemble 0x0,+4
Dump of assembler code from 0x0 to 0x4:
   0x0000000000000000:  Cannot access memory at address 0x0

opcodes/
    pr 28291
    * riscv-dis.c (print_insn_riscv): Return STATUS if it is not zero.

opcodes/riscv-dis.c

index 30b42ef3aec771ca4b2ed3f969e0e3b76e131454..171aea21c7afe1feebeb688d01b036cc472a68ff 100644 (file)
@@ -793,7 +793,7 @@ print_insn_riscv (bfd_vma memaddr, struct disassemble_info *info)
       if (status != 0)
        {
          (*info->memory_error_func) (status, memaddr, info);
-         return 1;
+         return status;
        }
       insn = (insn_t) bfd_getl16 (packet);
       dump_size = riscv_insn_length (insn);
@@ -805,7 +805,7 @@ print_insn_riscv (bfd_vma memaddr, struct disassemble_info *info)
   if (status != 0)
     {
       (*info->memory_error_func) (status, memaddr, info);
-      return 1;
+      return status;
     }
   insn = (insn_t) bfd_get_bits (packet, dump_size * 8, false);