git: e9b334d7c383 - 2023Q3 - devel/gdb: kgdb: fix aarch64 trapframe handling
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 13 Sep 2023 19:36:23 UTC
The branch 2023Q3 has been updated by kevans: URL: https://cgit.FreeBSD.org/ports/commit/?id=e9b334d7c3830f251e30b875efd56ab414db235a commit e9b334d7c3830f251e30b875efd56ab414db235a Author: Kyle Evans <kevans@FreeBSD.org> AuthorDate: 2023-09-13 15:34:07 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2023-09-13 19:36:08 +0000 devel/gdb: kgdb: fix aarch64 trapframe handling regcache_map_entry_size() doesn't do the magic to convert size == 0 to register_size, so we must supply sizes for all registers if we're going to use it. This fixes handling of the trapframe so that we can actually unwind properly, where-as before we would end up with, e.g., #6 0xffff0000004b4860 in kdb_trap (type=60, code=0, tf=<optimized out>) at /usr/src/sys/kern/subr_kdb.c:790 #7 <signal handler called> #8 <signal handler called> #9 <signal handler called> #10 <signal handler called> #11 <signal handler called> Reported by: Mark Millard Approved by: jhb (implicit, kgdb maintainer) (cherry picked from commit a22f1db084fb50880a0df90f9a0f031a7fc34921) --- devel/gdb/Makefile | 2 +- devel/gdb/files/kgdb/aarch64-fbsd-kern.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/devel/gdb/Makefile b/devel/gdb/Makefile index 59c460983028..78dfb9f91f0f 100644 --- a/devel/gdb/Makefile +++ b/devel/gdb/Makefile @@ -1,6 +1,6 @@ PORTNAME= gdb DISTVERSION= 13.1 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= devel MASTER_SITES= GNU diff --git a/devel/gdb/files/kgdb/aarch64-fbsd-kern.c b/devel/gdb/files/kgdb/aarch64-fbsd-kern.c index 4d813c786b52..68b12130fa83 100644 --- a/devel/gdb/files/kgdb/aarch64-fbsd-kern.c +++ b/devel/gdb/files/kgdb/aarch64-fbsd-kern.c @@ -126,13 +126,13 @@ aarch64_fbsd_supply_pcb(struct regcache *regcache, CORE_ADDR pcb_addr) static const struct regcache_map_entry aarch64_fbsd_trapframe_map[] = { - { 1, AARCH64_SP_REGNUM, 0 }, - { 1, AARCH64_LR_REGNUM, 0 }, - { 1, AARCH64_PC_REGNUM, 0 }, - { 1, AARCH64_CPSR_REGNUM, 0 }, + { 1, AARCH64_SP_REGNUM, 8 }, + { 1, AARCH64_LR_REGNUM, 8 }, + { 1, AARCH64_PC_REGNUM, 8 }, + { 1, AARCH64_CPSR_REGNUM, 8 }, { 1, REGCACHE_MAP_SKIP, 8 }, /* esr */ { 1, REGCACHE_MAP_SKIP, 8 }, /* far */ - { 30, AARCH64_X0_REGNUM, 0 }, /* x0 ... x29 */ + { 30, AARCH64_X0_REGNUM, 8 }, /* x0 ... x29 */ { 0 }, }; @@ -141,12 +141,12 @@ static const struct regcache_map_entry aarch64_fbsd_trapframe_map[] = static const struct regcache_map_entry aarch64_fbsd13_trapframe_map[] = { - { 1, AARCH64_SP_REGNUM, 0 }, - { 1, AARCH64_LR_REGNUM, 0 }, - { 1, AARCH64_PC_REGNUM, 0 }, + { 1, AARCH64_SP_REGNUM, 8 }, + { 1, AARCH64_LR_REGNUM, 8 }, + { 1, AARCH64_PC_REGNUM, 8 }, { 1, AARCH64_CPSR_REGNUM, 4 }, { 1, REGCACHE_MAP_SKIP, 4 }, /* esr */ - { 30, AARCH64_X0_REGNUM, 0 }, /* x0 ... x29 */ + { 30, AARCH64_X0_REGNUM, 8 }, /* x0 ... x29 */ { 0 }, };