From: Clemens Gößnitzer Subject: Re: ddb(4): db_read_bytes, db_write_bytes: change data parameter to void pointer To: tech@openbsd.org, Scott Cheloha Date: Thu, 08 Feb 2024 22:47:41 +0000 On 8 February 2024 16:01:43 UTC, Scott Cheloha wrote: >Almost all db_read_bytes/db_write_bytes callers cast the data >parameter to a "char *", which suggests that the function prototypes >don't match how the functions are actually used. > >Change the data parameter to db_read_bytes/db_write/bytes from >"char *" to "void *", update all implementations to use a "char *" >internally, and update all callers to remove the casts. > >While we're updating the callers, we can also change any magic sizes >to sizeof. > >ok? > >Index: ./ddb/db_access.h >=================================================================== >RCS file: /cvs/src/sys/ddb/db_access.h,v >diff -u -p -r1.11 db_access.h >--- ./ddb/db_access.h 20 Jan 2020 15:58:23 -0000 1.11 >+++ ./ddb/db_access.h 8 Feb 2024 15:43:26 -0000 >@@ -36,5 +36,5 @@ > db_expr_t db_get_value(vaddr_t, size_t, int); > void db_put_value(vaddr_t, size_t, db_expr_t); > >-void db_read_bytes(vaddr_t, size_t, char *); >-void db_write_bytes(vaddr_t, size_t, char *); >+void db_read_bytes(vaddr_t, size_t, void *); >+void db_write_bytes(vaddr_t, size_t, void *); >Index: ./arch/alpha/alpha/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/alpha/alpha/db_interface.c,v >diff -u -p -r1.28 db_interface.c >--- ./arch/alpha/alpha/db_interface.c 14 Apr 2022 19:47:10 -0000 1.28 >+++ ./arch/alpha/alpha/db_interface.c 8 Feb 2024 15:43:26 -0000 >@@ -191,9 +191,9 @@ void > db_read_bytes(addr, size, data) Shouldn't data be changed to datap here as well? > vaddr_t addr; > register size_t size; >- register char *data; >+ register void *datap; > { >- register char *src; >+ register char *data = datap, *src; > > src = (char *)addr; > while (size-- > 0) >@@ -207,9 +207,9 @@ void > db_write_bytes(addr, size, data) > vaddr_t addr; > register size_t size; >- register char *data; >+ register void *datap; > { >- register char *dst; >+ register char *data = datap, *dst; > > dst = (char *)addr; > while (size-- > 0) >Index: ./arch/amd64/amd64/db_memrw.c >=================================================================== >RCS file: /cvs/src/sys/arch/amd64/amd64/db_memrw.c,v >diff -u -p -r1.8 db_memrw.c >--- ./arch/amd64/amd64/db_memrw.c 30 Apr 2017 13:04:49 -0000 1.8 >+++ ./arch/amd64/amd64/db_memrw.c 8 Feb 2024 15:43:26 -0000 >@@ -60,9 +60,9 @@ > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src; >+ char *data = datap, *src; > > src = (char *)addr; > >@@ -90,12 +90,12 @@ db_read_bytes(vaddr_t addr, size_t size, > * pages writable temporarily. > */ > static void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, void *datap) > { > pt_entry_t *pte, oldpte, tmppte; > vaddr_t pgva; > size_t limit; >- char *dst; >+ char *data = datap, *dst; > > if (size == 0) > return; >Index: ./arch/arm/arm/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/arm/arm/db_interface.c,v >diff -u -p -r1.20 db_interface.c >--- ./arch/arm/arm/db_interface.c 15 Oct 2022 08:04:02 -0000 1.20 >+++ ./arch/arm/arm/db_interface.c 8 Feb 2024 15:43:27 -0000 >@@ -182,9 +182,9 @@ db_validate_address(vaddr_t addr) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > > if (db_validate_address((u_int)src)) { > db_printf("address %p is invalid\n", src); >@@ -211,14 +211,14 @@ db_read_bytes(vaddr_t addr, size_t size, > } > > static void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, void *datap) > { > struct pmap *pmap = pmap_kernel(); > pd_entry_t *pde, oldpde, tmppde; > pt_entry_t *pte, oldpte, tmppte; > vaddr_t pgva; > size_t limit, savesize; >- char *dst; >+ char *data = datap, *dst; > > /* XXX: gcc */ > oldpte = 0; >@@ -434,7 +434,7 @@ db_branch_taken(u_int insn, vaddr_t pc, > case 0x7: /* ldr pc, [pc, reg, lsl #2] */ > addr = db_fetch_reg(insn & 0xf, db_regs); > addr = pc + 8 + (addr << 2); >- db_read_bytes(addr, 4, (char *)&addr); >+ db_read_bytes(addr, sizeof addr, &addr); > return (addr); > case 0x1: /* mov pc, reg */ > addr = db_fetch_reg(insn & 0xf, db_regs); >@@ -460,7 +460,7 @@ db_branch_taken(u_int insn, vaddr_t pc, > addr = addr + 4 + ((nregs - 1) << 2); > break; > } >- db_read_bytes(addr, 4, (char *)&addr); >+ db_read_bytes(addr, sizeof addr, &addr); > return (addr); > default: > panic("branch_taken: botch"); >Index: ./arch/arm64/arm64/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/arm64/arm64/db_interface.c,v >diff -u -p -r1.14 db_interface.c >--- ./arch/arm64/arm64/db_interface.c 7 Nov 2022 09:43:04 -0000 1.14 >+++ ./arch/arm64/arm64/db_interface.c 8 Feb 2024 15:43:26 -0000 >@@ -197,9 +197,9 @@ db_validate_address(vaddr_t addr) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > > if (db_validate_address((vaddr_t)src)) { > db_printf("address %p is invalid\n", src); >@@ -235,11 +235,11 @@ db_read_bytes(vaddr_t addr, size_t size, > * pages writable temporarily. > */ > static void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, void *datap) > { > vaddr_t pgva; > size_t limit; >- char *dst; >+ char *data = datap, *dst; > > if (size == 0) > return; >Index: ./arch/hppa/hppa/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/hppa/hppa/db_interface.c,v >diff -u -p -r1.49 db_interface.c >--- ./arch/hppa/hppa/db_interface.c 26 Apr 2023 16:53:58 -0000 1.49 >+++ ./arch/hppa/hppa/db_interface.c 8 Feb 2024 15:43:26 -0000 >@@ -134,8 +134,9 @@ db_enter(void) > } > > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; > register char *src = (char *)addr; > > while (size--) >@@ -143,8 +144,9 @@ db_read_bytes(vaddr_t addr, size_t size, > } > > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; > register char *dst = (char *)addr; > > while (size--) >Index: ./arch/i386/i386/db_memrw.c >=================================================================== >RCS file: /cvs/src/sys/arch/i386/i386/db_memrw.c,v >diff -u -p -r1.18 db_memrw.c >--- ./arch/i386/i386/db_memrw.c 23 Sep 2020 15:13:26 -0000 1.18 >+++ ./arch/i386/i386/db_memrw.c 8 Feb 2024 15:43:26 -0000 >@@ -50,9 +50,9 @@ > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src; >+ char *data = datap, *src; > > src = (char *)addr; > while (size-- > 0) >@@ -64,12 +64,12 @@ db_read_bytes(vaddr_t addr, size_t size, > * pages writable temporarily. > */ > static void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, char *datap) > { > vaddr_t pgva; > size_t limit; > uint32_t bits; >- char *dst; >+ char *data = datap, *dst; > > if (size == 0) > return; >Index: ./arch/m88k/m88k/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/m88k/m88k/db_interface.c,v >diff -u -p -r1.28 db_interface.c >--- ./arch/m88k/m88k/db_interface.c 14 Apr 2022 19:47:11 -0000 1.28 >+++ ./arch/m88k/m88k/db_interface.c 8 Feb 2024 15:43:26 -0000 >@@ -487,9 +487,9 @@ ddb_entry_trap(level, eframe) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src; >+ char *data = datap, *src; > > src = (char *)addr; > >@@ -502,10 +502,10 @@ db_read_bytes(vaddr_t addr, size_t size, > * Write bytes to kernel address space for debugger. > */ > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { > extern pt_entry_t *pmap_pte(pmap_t, vaddr_t); >- char *dst = (char *)addr; >+ char *data = datap, *dst = (char *)addr; > vaddr_t va; > paddr_t pa; > pt_entry_t *pte, opte, npte; >Index: ./arch/mips64/mips64/db_machdep.c >=================================================================== >RCS file: /cvs/src/sys/arch/mips64/mips64/db_machdep.c,v >diff -u -p -r1.60 db_machdep.c >--- ./arch/mips64/mips64/db_machdep.c 11 Jan 2023 03:17:56 -0000 1.60 >+++ ./arch/mips64/mips64/db_machdep.c 8 Feb 2024 15:43:26 -0000 >@@ -281,8 +281,10 @@ db_cpuinfo_cmd(db_expr_t addr, int have_ > #endif > > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; >+ > while (size >= sizeof(uint32_t)) { > *(uint32_t *)data = kdbpeek(addr); > data += sizeof(uint32_t); >@@ -302,8 +304,9 @@ db_read_bytes(vaddr_t addr, size_t size, > } > > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; > vaddr_t ptr = addr; > size_t len = size; > >Index: ./arch/powerpc/ddb/db_memrw.c >=================================================================== >RCS file: /cvs/src/sys/arch/powerpc/ddb/db_memrw.c,v >diff -u -p -r1.6 db_memrw.c >--- ./arch/powerpc/ddb/db_memrw.c 15 Oct 2022 08:04:02 -0000 1.6 >+++ ./arch/powerpc/ddb/db_memrw.c 8 Feb 2024 15:43:26 -0000 >@@ -53,9 +53,9 @@ > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > faultbuf env; > faultbuf *old_onfault = curpcb->pcb_onfault; > if (setfault(&env)) { >@@ -80,9 +80,9 @@ db_read_bytes(vaddr_t addr, size_t size, > * Write bytes to kernel address space for debugger. > */ > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *dst = (char *)addr; >+ char *data = datap, *dst = (char *)addr; > faultbuf env; > faultbuf *old_onfault = curpcb->pcb_onfault; > >Index: ./arch/powerpc64/powerpc64/db_memrw.c >=================================================================== >RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/db_memrw.c,v >diff -u -p -r1.2 db_memrw.c >--- ./arch/powerpc64/powerpc64/db_memrw.c 12 Jun 2020 22:01:01 -0000 1.2 >+++ ./arch/powerpc64/powerpc64/db_memrw.c 8 Feb 2024 15:43:26 -0000 >@@ -46,9 +46,9 @@ > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src; >+ char *data = datap, *src; > > src = (char *)addr; > >@@ -76,13 +76,13 @@ db_read_bytes(vaddr_t addr, size_t size, > * pages writable temporarily. > */ > void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, void *datap) > { > struct pte *pte; > uint64_t old_pte_lo; > vaddr_t pgva; > size_t limit; >- char *dst; >+ char *data = datap, *dst; > > if (size == 0) > return; >Index: ./arch/riscv64/riscv64/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/riscv64/riscv64/db_interface.c,v >diff -u -p -r1.8 db_interface.c >--- ./arch/riscv64/riscv64/db_interface.c 14 Apr 2022 19:47:11 -0000 1.8 >+++ ./arch/riscv64/riscv64/db_interface.c 8 Feb 2024 15:43:27 -0000 >@@ -179,9 +179,9 @@ db_validate_address(vaddr_t addr) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > > if (db_validate_address((vaddr_t)src)) { > db_printf("address %p is invalid\n", src); >@@ -217,7 +217,7 @@ db_read_bytes(vaddr_t addr, size_t size, > * Write bytes to kernel address space for debugger. > */ > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { > // XXX > } >Index: ./arch/sh/sh/db_memrw.c >=================================================================== >RCS file: /cvs/src/sys/arch/sh/sh/db_memrw.c,v >diff -u -p -r1.1.1.1 db_memrw.c >--- ./arch/sh/sh/db_memrw.c 6 Oct 2006 21:02:55 -0000 1.1.1.1 >+++ ./arch/sh/sh/db_memrw.c 8 Feb 2024 15:43:27 -0000 >@@ -49,9 +49,9 @@ > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > > /* properly aligned 4-byte */ > if (size == 4 && ((addr & 3) == 0) && (((uintptr_t)data & 3) == 0)) { >@@ -73,9 +73,9 @@ db_read_bytes(vaddr_t addr, size_t size, > * Write bytes to kernel address space for debugger. > */ > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *dst = (char *)addr; >+ char *data = datap, *dst = (char *)addr; > > /* properly aligned 4-byte */ > if (size == 4 && ((addr & 3) == 0) && (((uintptr_t)data & 3) == 0)) { >Index: ./arch/sparc64/sparc64/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/sparc64/sparc64/db_interface.c,v >diff -u -p -r1.61 db_interface.c >--- ./arch/sparc64/sparc64/db_interface.c 31 Jan 2023 15:18:55 -0000 1.61 >+++ ./arch/sparc64/sparc64/db_interface.c 8 Feb 2024 15:43:27 -0000 >@@ -523,8 +523,9 @@ db_stopcpu(struct cpu_info *ci) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; > register char *src; > > src = (char *)addr; >@@ -541,8 +542,9 @@ db_read_bytes(vaddr_t addr, size_t size, > * Write bytes to kernel address space for debugger. > */ > void >-db_write_bytes(vaddr_t addr, size_t size, char *data) >+db_write_bytes(vaddr_t addr, size_t size, void *datap) > { >+ char *data = datap; > register char *dst; > extern vaddr_t ktext; > extern paddr_t ktextp; >Index: arch/arm/arm/db_interface.c >=================================================================== >RCS file: /cvs/src/sys/arch/arm/arm/db_interface.c,v >diff -u -p -r1.20 db_interface.c >--- arch/arm/arm/db_interface.c 15 Oct 2022 08:04:02 -0000 1.20 >+++ arch/arm/arm/db_interface.c 8 Feb 2024 15:43:27 -0000 >@@ -182,9 +182,9 @@ db_validate_address(vaddr_t addr) > * Read bytes from kernel address space for debugger. > */ > void >-db_read_bytes(vaddr_t addr, size_t size, char *data) >+db_read_bytes(vaddr_t addr, size_t size, void *datap) > { >- char *src = (char *)addr; >+ char *data = datap, *src = (char *)addr; > > if (db_validate_address((u_int)src)) { > db_printf("address %p is invalid\n", src); >@@ -211,14 +211,14 @@ db_read_bytes(vaddr_t addr, size_t size, > } > > static void >-db_write_text(vaddr_t addr, size_t size, char *data) >+db_write_text(vaddr_t addr, size_t size, void *datap) > { > struct pmap *pmap = pmap_kernel(); > pd_entry_t *pde, oldpde, tmppde; > pt_entry_t *pte, oldpte, tmppte; > vaddr_t pgva; > size_t limit, savesize; >- char *dst; >+ char *data = datap, *dst; > > /* XXX: gcc */ > oldpte = 0; >@@ -434,7 +434,7 @@ db_branch_taken(u_int insn, vaddr_t pc, > case 0x7: /* ldr pc, [pc, reg, lsl #2] */ > addr = db_fetch_reg(insn & 0xf, db_regs); > addr = pc + 8 + (addr << 2); >- db_read_bytes(addr, 4, (char *)&addr); >+ db_read_bytes(addr, sizeof addr, &addr); > return (addr); > case 0x1: /* mov pc, reg */ > addr = db_fetch_reg(insn & 0xf, db_regs); >@@ -460,7 +460,7 @@ db_branch_taken(u_int insn, vaddr_t pc, > addr = addr + 4 + ((nregs - 1) << 2); > break; > } >- db_read_bytes(addr, 4, (char *)&addr); >+ db_read_bytes(addr, sizeof addr, &addr); > return (addr); > default: > panic("branch_taken: botch"); >Index: arch/arm64/arm64/db_trace.c >=================================================================== >RCS file: /cvs/src/sys/arch/arm64/arm64/db_trace.c,v >diff -u -p -r1.15 db_trace.c >--- arch/arm64/arm64/db_trace.c 17 Jun 2023 08:13:56 -0000 1.15 >+++ arch/arm64/arm64/db_trace.c 8 Feb 2024 15:43:27 -0000 >@@ -86,10 +86,8 @@ db_stack_trace_print(db_expr_t addr, int > lastlr = p->p_addr->u_pcb.pcb_tf->tf_elr; > } else { > sp = addr; >- db_read_bytes(sp, sizeof(vaddr_t), >- (char *)&frame); >- db_read_bytes(sp + 8, sizeof(vaddr_t), >- (char *)&lr); >+ db_read_bytes(sp, sizeof frame, &frame); >+ db_read_bytes(sp + 8, sizeof lr, &lr); > lastlr = 0; > } > } >@@ -109,11 +107,11 @@ db_stack_trace_print(db_expr_t addr, int > (*pr)("\n"); > > // can we detect traps ? >- db_read_bytes(frame, sizeof(vaddr_t), (char *)&frame); >+ db_read_bytes(frame, sizeof frame, &frame); > if (frame == 0) > break; > lastlr = lr; >- db_read_bytes(frame + 8, sizeof(vaddr_t), (char *)&lr); >+ db_read_bytes(frame + 8, sizeof lr, &lr); > > if (name != NULL) { > if ((strcmp (name, "handle_el0_irq") == 0) || >Index: arch/m88k/m88k/db_sstep.c >=================================================================== >RCS file: /cvs/src/sys/arch/m88k/m88k/db_sstep.c,v >diff -u -p -r1.8 db_sstep.c >--- arch/m88k/m88k/db_sstep.c 8 Nov 2019 15:01:15 -0000 1.8 >+++ arch/m88k/m88k/db_sstep.c 8 Feb 2024 15:43:27 -0000 >@@ -149,7 +149,7 @@ db_set_single_step(db_regs_t *regs) > * User was stopped at pc, e.g. the instruction > * at pc was not executed. > */ >- db_read_bytes(pc, sizeof(inst), (caddr_t)&inst); >+ db_read_bytes(pc, sizeof inst, &inst); > > /* > * Find if this instruction may cause a branch, and set up a >Index: arch/m88k/m88k/db_trace.c >=================================================================== >RCS file: /cvs/src/sys/arch/m88k/m88k/db_trace.c,v >diff -u -p -r1.19 db_trace.c >--- arch/m88k/m88k/db_trace.c 11 Apr 2023 00:45:07 -0000 1.19 >+++ arch/m88k/m88k/db_trace.c 8 Feb 2024 15:43:27 -0000 >@@ -286,7 +286,7 @@ db_trace_get_val(vaddr_t addr, u_int *pt > db_recover = prev; > return 0; > } else { >- db_read_bytes(addr, 4, (char *)ptr); >+ db_read_bytes(addr, sizeof *ptr, ptr); > db_recover = prev; > return 1; > } >@@ -772,7 +772,7 @@ db_stack_trace_cmd2(db_regs_t *regs, int > badaddr((vaddr_t)(stack + 4), 4)) > break; > >- db_read_bytes((vaddr_t)stack, 2 * sizeof(int), (char *)pair); >+ db_read_bytes((vaddr_t)stack, sizeof pair, pair); > > /* the pairs should match and equal stack+8 */ > if (pair[0] == pair[1]) { >Index: arch/powerpc/ddb/db_trace.c >=================================================================== >RCS file: /cvs/src/sys/arch/powerpc/ddb/db_trace.c,v >diff -u -p -r1.20 db_trace.c >--- arch/powerpc/ddb/db_trace.c 26 Apr 2023 16:53:59 -0000 1.20 >+++ arch/powerpc/ddb/db_trace.c 8 Feb 2024 15:43:27 -0000 >@@ -158,7 +158,7 @@ db_stack_trace_print(db_expr_t addr, int > addr = p->p_addr->u_pcb.pcb_sp; > } > sp = addr; >- db_read_bytes(sp + 4, sizeof(vaddr_t), (char *)&lr); >+ db_read_bytes(sp + 4, sizeof lr, &lr); > } > > while (count && sp != 0) { >@@ -213,11 +213,11 @@ db_stack_trace_print(db_expr_t addr, int > (*pr)("--- trap (type 0x%x) ---\n", type); > } > >- db_read_bytes(sp, sizeof(vaddr_t), (char *)&sp); >+ db_read_bytes(sp, sizeof sp, &sp); > if (sp == 0) > break; > >- db_read_bytes(sp + 4, sizeof(vaddr_t), (char *)&lr); >+ db_read_bytes(sp + 4, sizeof lr, &lr); > > if (INKERNEL(sp)) { > if (sp <= lastsp) { >Index: arch/powerpc64/powerpc64/db_trace.c >=================================================================== >RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/db_trace.c,v >diff -u -p -r1.9 db_trace.c >--- arch/powerpc64/powerpc64/db_trace.c 26 Apr 2023 16:53:59 -0000 1.9 >+++ arch/powerpc64/powerpc64/db_trace.c 8 Feb 2024 15:43:27 -0000 >@@ -120,8 +120,8 @@ db_stack_trace_print(db_expr_t addr, int > } else > sp = addr; > /* The 1st return address is in the 2nd frame. */ >- db_read_bytes(sp, sizeof(vaddr_t), (char *)&sp); >- db_read_bytes(sp + 16, sizeof(vaddr_t), (char *)&lr); >+ db_read_bytes(sp, sizeof sp, &sp); >+ db_read_bytes(sp + 16, sizeof lr, &lr); > callpc = lr - 4; > has_frame = 1; > } >@@ -138,8 +138,7 @@ db_stack_trace_print(db_expr_t addr, int > iaddr = sym->st_value; > limit = MIN(iaddr + 0x100, callpc); > for (; iaddr < limit; iaddr += 4) { >- db_read_bytes(iaddr, sizeof(ins), >- (char *)&ins); >+ db_read_bytes(iaddr, sizeof ins, &ins); > if (inst_establish_frame(ins)) { > has_frame = 1; > break; >@@ -178,14 +177,14 @@ db_stack_trace_print(db_expr_t addr, int > lr = ddb_regs.lr; > has_frame = 1; > } else { >- db_read_bytes(sp, sizeof(vaddr_t), (char *)&sp); >+ db_read_bytes(sp, sizeof sp, &sp); > if (sp == 0) > break; > if (sp <= lastsp) { > (*pr)("Bad frame pointer: 0x%lx\n", sp); > break; > } >- db_read_bytes(sp + 16, sizeof(vaddr_t), (char *)&lr); >+ db_read_bytes(sp + 16, sizeof lr, &lr); > } > callpc = lr - 4; > >Index: arch/riscv64/riscv64/db_trace.c >=================================================================== >RCS file: /cvs/src/sys/arch/riscv64/riscv64/db_trace.c,v >diff -u -p -r1.5 db_trace.c >--- arch/riscv64/riscv64/db_trace.c 22 Feb 2022 07:46:04 -0000 1.5 >+++ arch/riscv64/riscv64/db_trace.c 8 Feb 2024 15:43:27 -0000 >@@ -74,8 +74,8 @@ db_stack_trace_print(db_expr_t addr, int > ra = ddb_regs.tf_ra; > frame = ddb_regs.tf_s[0]; > } else { >- db_read_bytes(addr - 16, sizeof(vaddr_t), (char *)&frame); >- db_read_bytes(addr - 8, sizeof(vaddr_t), (char *)&ra); >+ db_read_bytes(addr - 16, sizeof frame, &frame); >+ db_read_bytes(addr - 8, sizeof ra, &ra); > } > > while (count != 0 && frame != 0) { >@@ -109,20 +109,18 @@ db_stack_trace_print(db_expr_t addr, int > subr == (vaddr_t)cpu_exception_handler_user) { > struct trapframe *tf = (struct trapframe *)frame; > >- db_read_bytes((vaddr_t)&tf->tf_ra, sizeof(ra), >- (char *)&ra); >- db_read_bytes((vaddr_t)&tf->tf_s[0], sizeof(frame), >- (char *)&frame); >+ db_read_bytes((vaddr_t)&tf->tf_ra, sizeof ra, &ra); >+ db_read_bytes((vaddr_t)&tf->tf_s[0], sizeof frame, >+ &frame); > } else { >- db_read_bytes(frame - 16, sizeof(frame), >- (char *)&frame); >+ db_read_bytes(frame - 16, sizeof frame, &frame); > if (frame == 0) > break; > if ((frame & 0x7) != 0) { > (*pr)("bad frame pointer: 0x%lx\n", frame); > break; > } >- db_read_bytes(frame - 8, sizeof(ra), (char *)&ra); >+ db_read_bytes(frame - 8, sizeof ra, &ra); > } > > if (INKERNEL(frame)) { > -- Sent from a mobile device. Please excuse my brevity.