Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/aarch64/aarch64 Fix build failure due to -Werror=st...
details: https://anonhg.NetBSD.org/src/rev/42e29dd27bb7
branches: trunk
changeset: 973298:42e29dd27bb7
user: rin <rin%NetBSD.org@localhost>
date: Sat Jun 27 00:43:38 2020 +0000
description:
Fix build failure due to -Werror=stack-usage.
Use db_read_bytes() against particular member of structure in use,
by which we can avoid to have whole structure in the stack.
Now, stack usage shrinks: 4240 --> 1296
diffstat:
sys/arch/aarch64/aarch64/db_trace.c | 37 +++++++++++++++++++------------------
1 files changed, 19 insertions(+), 18 deletions(-)
diffs (98 lines):
diff -r 737538f05f78 -r 42e29dd27bb7 sys/arch/aarch64/aarch64/db_trace.c
--- a/sys/arch/aarch64/aarch64/db_trace.c Fri Jun 26 22:05:05 2020 +0000
+++ b/sys/arch/aarch64/aarch64/db_trace.c Sat Jun 27 00:43:38 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: db_trace.c,v 1.11 2020/05/22 19:29:26 ryo Exp $ */
+/* $NetBSD: db_trace.c,v 1.12 2020/06/27 00:43:38 rin Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <ryo%nerv.org@localhost>
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.11 2020/05/22 19:29:26 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.12 2020/06/27 00:43:38 rin Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -174,14 +174,14 @@
#endif
if (trace_thread) {
- proc_t *pp, p;
+ proc_t *pp;
if ((pp = db_proc_find((pid_t)addr)) == 0) {
(*pr)("trace: pid %d: not found\n", (int)addr);
return;
}
- db_read_bytes((db_addr_t)pp, sizeof(p), (char *)&p);
- addr = (db_addr_t)p.p_lwps.lh_first;
+ db_read_bytes((db_addr_t)pp + offsetof(proc_t, p_lwps.lh_first),
+ sizeof(addr), (char *)&addr);
trace_thread = false;
trace_lwp = true;
}
@@ -193,32 +193,32 @@
#endif
if (trace_lwp) {
- proc_t p;
struct lwp l;
+ pid_t pid;
db_read_bytes(addr, sizeof(l), (char *)&l);
- db_read_bytes((db_addr_t)l.l_proc, sizeof(p), (char *)&p);
+ db_read_bytes((db_addr_t)l.l_proc + offsetof(proc_t, p_pid),
+ sizeof(pid), (char *)&pid);
#if defined(_KERNEL)
if (addr == (db_expr_t)curlwp) {
fp = (uint64_t)&DDB_REGS->tf_reg[29]; /* ®[29]={fp,lr} */
tf = DDB_REGS;
(*pr)("trace: pid %d lid %d (curlwp) at tf %p\n",
- p.p_pid, l.l_lid, tf);
+ pid, l.l_lid, tf);
} else
#endif
{
- struct pcb pcb_buf;
struct pcb *pcb = lwp_getpcb(&l);
- db_read_bytes((db_addr_t)pcb, sizeof(pcb_buf),
- (char *)&pcb_buf);
- tf = pcb_buf.pcb_tf;
+ db_read_bytes((db_addr_t)pcb +
+ offsetof(struct pcb, pcb_tf),
+ sizeof(tf), (char *)&tf);
if (tf != 0) {
db_read_bytes((db_addr_t)&tf->tf_reg[29],
sizeof(fp), (char *)&fp);
(*pr)("trace: pid %d lid %d at tf %p (in pcb)\n",
- p.p_pid, l.l_lid, tf);
+ pid, l.l_lid, tf);
}
#if defined(MULTIPROCESSOR) && defined(_KERNEL)
else if (l.l_stat == LSONPROC ||
@@ -226,14 +226,15 @@
/* running lwp on other cpus */
extern struct trapframe *db_readytoswitch[];
- struct cpu_info cpuinfobuf;
+ u_int index;
- db_read_bytes((db_addr_t)l.l_cpu,
- sizeof(cpuinfobuf), (char *)&cpuinfobuf);
- tf = db_readytoswitch[cpuinfobuf.ci_index];
+ db_read_bytes((db_addr_t)l.l_cpu +
+ offsetof(struct cpu_info, ci_index),
+ sizeof(index), (char *)&index);
+ tf = db_readytoswitch[index];
(*pr)("trace: pid %d lid %d at tf %p (in kdb_trap)\n",
- p.p_pid, l.l_lid, tf);
+ pid, l.l_lid, tf);
}
#endif
else {
Home |
Main Index |
Thread Index |
Old Index