diff --git a/gdb-LoongArch-Change-LOONGARCH_FIRST_FP_REGNUM-to-35.patch b/gdb-LoongArch-Change-LOONGARCH_FIRST_FP_REGNUM-to-35.patch new file mode 100644 index 0000000000000000000000000000000000000000..7dc65c511238b9e464151f4657a19799dcec3300 --- /dev/null +++ b/gdb-LoongArch-Change-LOONGARCH_FIRST_FP_REGNUM-to-35.patch @@ -0,0 +1,67 @@ +From 1304f47d02bfd0b41ebf4c1c6758a6251c29d8a1 Mon Sep 17 00:00:00 2001 +From: Hui Li +Date: Tue, 27 Feb 2024 09:18:10 +0800 +Subject: [PATCH 1709/2674] 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 +Approved-By: John Baldwin +Signed-off-by: Tiezhu Yang +--- + gdb/arch/loongarch.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/gdb/arch/loongarch.h b/gdb/arch/loongarch.h +index 4b7ab054ea0..7056d506bf4 100644 +--- a/gdb/arch/loongarch.h ++++ b/gdb/arch/loongarch.h +@@ -33,10 +33,11 @@ enum loongarch_regnum + LOONGARCH_ORIG_A0_REGNUM = 32, /* Syscall's original arg0. */ + LOONGARCH_PC_REGNUM = 33, /* Program Counter. */ + LOONGARCH_BADV_REGNUM = 34, /* Bad Vaddr for Addressing Exception. */ ++ LOONGARCH_USED_NUM_GREGSET = 35, /* 32 GPR, ORIG_A0, PC, BADV. */ + LOONGARCH_LINUX_NUM_GREGSET = 45, /* 32 GPR, ORIG_A0, PC, BADV, RESERVED 10. */ + LOONGARCH_ARG_REGNUM = 8, /* r4-r11: general-purpose argument registers. + f0-f7: floating-point argument registers. */ +- LOONGARCH_FIRST_FP_REGNUM = LOONGARCH_LINUX_NUM_GREGSET, ++ LOONGARCH_FIRST_FP_REGNUM = LOONGARCH_USED_NUM_GREGSET, + LOONGARCH_LINUX_NUM_FPREGSET = 32, + LOONGARCH_FIRST_FCC_REGNUM = LOONGARCH_FIRST_FP_REGNUM + LOONGARCH_LINUX_NUM_FPREGSET, + LOONGARCH_LINUX_NUM_FCC = 8, +-- +2.30.2 + diff --git a/gdb.spec b/gdb.spec index fad080c464b68e28d94513f6d9a5193724aa982c..3ad0b51e30e0621cb86609f54d6dc7ffc34f849f 100644 --- a/gdb.spec +++ b/gdb.spec @@ -1,4 +1,4 @@ -%define anolis_release 2 +%define anolis_release 3 %global _python_bytecompile_extra 0 %global librpmso librpm.so.9 @@ -68,6 +68,8 @@ patch051: gdb-Fix-CVE-2023-39128.patch patch052: gdb-Fix-CVE-2023-39129.patch patch053: gdb-Fix-CVE-2023-39130.patch +Patch054: gdb-LoongArch-Change-LOONGARCH_FIRST_FP_REGNUM-to-35.patch + BuildRequires: rpm-libs autoconf BuildRequires: readline-devel >= 6.2-4 BuildRequires: gcc-c++ ncurses-devel texinfo gettext flex bison @@ -285,6 +287,9 @@ cd %{gdb_build} %changelog +* Tue Dec 17 2024 zhuyunfei - 13.2-3 +- Fix gdbserver assertions issue + * Tue Mar 26 2024 Bo Ren - 13.2-2 - Rebuild with python3.11