]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb: LoongArch: Change LOONGARCH_FIRST_FP_REGNUM to 35
authorHui Li <lihui@loongson.cn>
Tue, 27 Feb 2024 01:18:10 +0000 (09:18 +0800)
committerTiezhu Yang <yangtiezhu@loongson.cn>
Sat, 2 Mar 2024 11:07:04 +0000 (19:07 +0800)
commit1304f47d02bfd0b41ebf4c1c6758a6251c29d8a1
tree581737f63a2c46188432e283865fb95b98fb9b24
parenta6a3b67fa9052bba81ed91a38569c11ecb95baf1
gdb: LoongArch: Change LOONGARCH_FIRST_FP_REGNUM to 35

There is an assertion error "gdb_assert (n < tdesc->reg_defs.size ())"
in find_register_by_number() when gdb connects to gdbserver, this
is because the value of LOONGARCH_LINUX_NUM_GREGSET (45, which contains
10 reserved regs) is different with the number of regs (35, which not
contains 10 reserved regs) in file gdb/features/loongarch/base64.xml.
Add a new macro LOONGARCH_USED_NUM_GREGSET which is defined as 35 to
keep consistent with the gdb/features/loongarch/base64.xml, and then
define LOONGARCH_FIRST_FP_REGNUM as LOONGARCH_USED_NUM_GREGSET so that
all the reg numbers in regcache are consistent with tdesc reg numbers.

without this patch:

Execute on the target machine:

  $ gdbserver 192.168.1.123:5678 ./test

Execute on the host machine:

  $ gdb ./test
  (gdb) target remote 192.168.1.123:5678

Output on the target machine:

  Process ./test created; pid = 67683
  Listening on port 5678
  Remote debugging from host 192.168.1.136, port 6789
  gdbserver/regcache.cc:205: A problem internal to GDBserver has been detected.
  find_register_by_number: Assertion 'n < tdesc->reg_defs.size ()' failed.

Output on the host machine:

  Remote debugging using 192.168.1.123:5678
  Remote connection closed

Signed-off-by: Hui Li <lihui@loongson.cn>
Approved-By: John Baldwin <jhb@FreeBSD.org>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
gdb/arch/loongarch.h