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 },
};