From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1726) id 9F62E38330DE; Tue, 6 Dec 2022 10:19:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F62E38330DE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1670321967; bh=f7pM+WQQQltGjMuWMLzZrI5xdkMxdAymrJtUVFdU1mk=; h=From:To:Subject:Date:From; b=qJGk+yexy0xWfZtddzIPdCpD8dJ0LRns2ELRDChp/xMqvC2YFBbRT1Xj8QEoSr/T/ 4R85mTI1hn+jh/xJfnPxQqoJGLVBEANGFMjJeSQTS9KxbczMk8tJ8SGF8tXxY1Wud6 kDIURvwCrzHHKhBDV2jdZT17jx5CXOOuXVaxtMMM= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Andrew Burgess To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb/riscv: correct dwarf to gdb register number mapping X-Act-Checkin: binutils-gdb X-Git-Author: Xiao Zeng X-Git-Refname: refs/heads/master X-Git-Oldrev: 40849d84cbcc7647edf90ab8078d873fab15ffb8 X-Git-Newrev: c8ea5e409b02cf7fa848e44af74b2e8246ad03f1 Message-Id: <20221206101927.9F62E38330DE@sourceware.org> Date: Tue, 6 Dec 2022 10:19:27 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Dc8ea5e409b02= cf7fa848e44af74b2e8246ad03f1 commit c8ea5e409b02cf7fa848e44af74b2e8246ad03f1 Author: Xiao Zeng Date: Tue Dec 6 14:59:43 2022 +0800 gdb/riscv: correct dwarf to gdb register number mapping =20 According to the riscv psabi, the mapping relationship between the DWARF registers and the machine registers is as follows: =20 DWARF Number | Register Name | Description 0 - 31 | x0 - x31 | Integer Registers 32 - 63 | f0 - f31 | Floating-point Registers =20 This is not modelled quite right in riscv_dwarf_reg_to_regnum, the DWARF register numbers 31 and 63 are not handled correctly due to a use of '<' instead of '<=3D'. This commit fixes this issue. Diff: --- gdb/riscv-tdep.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index 0a050b272ff..a298623b449 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -3623,10 +3623,10 @@ riscv_add_reggroups (struct gdbarch *gdbarch) static int riscv_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) { - if (reg < RISCV_DWARF_REGNUM_X31) + if (reg <=3D RISCV_DWARF_REGNUM_X31) return RISCV_ZERO_REGNUM + (reg - RISCV_DWARF_REGNUM_X0); =20 - else if (reg < RISCV_DWARF_REGNUM_F31) + else if (reg <=3D RISCV_DWARF_REGNUM_F31) return RISCV_FIRST_FP_REGNUM + (reg - RISCV_DWARF_REGNUM_F0); =20 else if (reg >=3D RISCV_DWARF_FIRST_CSR && reg <=3D RISCV_DWARF_LAST_CSR)