From: Scott Cheloha Subject: Re: ddb(4): db_read_bytes, db_write_bytes: change data parameter to void pointer To: tech@openbsd.org Date: Mon, 12 Feb 2024 13:39:29 -0600 On Thu, Feb 08, 2024 at 10:01:43AM -0600, 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. Updated patch. - Fix a few db_write_bytes() implementations I missed during the first pass. 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 12 Feb 2024 19:37:05 -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 12 Feb 2024 19:37:05 -0000 @@ -188,12 +188,12 @@ ddb_trap(a0, a1, a2, entry, regs) * Read bytes from kernel address space for debugger. */ void -db_read_bytes(addr, size, data) +db_read_bytes(addr, size, datap) 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 12 Feb 2024 19:37:05 -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; @@ -160,10 +160,10 @@ db_write_text(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 char etext; - char *dst; + char *data = datap, *dst; /* If any part is in kernel text, use db_write_text() */ if (addr >= KERNBASE && addr < (vaddr_t)&etext) { 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 12 Feb 2024 19:37:05 -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); @@ -301,11 +301,11 @@ db_write_text(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 char etext[]; extern char kernel_text[]; - char *dst; + char *data = datap, *dst; size_t loop; /* If any part is in kernel text, use db_write_text() */ @@ -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 12 Feb 2024 19:37:05 -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; @@ -277,10 +277,10 @@ db_write_text(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 char etext[]; - char *dst; + char *data = datap, *dst; size_t loop; /* If any part is in kernel text, use db_write_text() */ 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 12 Feb 2024 19:37:05 -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/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 12 Feb 2024 19:37:05 -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 12 Feb 2024 19:37:05 -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) @@ -136,9 +136,9 @@ db_write_text(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 *data = datap, *dst; extern char etext; if (addr >= VM_MIN_KERNEL_ADDRESS && 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 12 Feb 2024 19:37:05 -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/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 12 Feb 2024 19:37:05 -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 12 Feb 2024 19:37:05 -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/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 12 Feb 2024 19:37:05 -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 12 Feb 2024 19:37:05 -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/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 12 Feb 2024 19:37:05 -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_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 12 Feb 2024 19:37:05 -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; @@ -136,10 +136,10 @@ db_write_text(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 char _start[], _etext[]; - char *dst; + char *data = datap, *dst; /* If any part is in kernel text, use db_write_text() */ if (addr >= (vaddr_t)_start && addr < (vaddr_t)_etext) { 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 12 Feb 2024 19:37:05 -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_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 12 Feb 2024 19:37:05 -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/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 12 Feb 2024 19:37:05 -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_ra, sizeof(ra), &ra); db_read_bytes((vaddr_t)&tf->tf_s[0], sizeof(frame), - (char *)&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)) { 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 12 Feb 2024 19:37:05 -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 12 Feb 2024 19:37:05 -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;