Page MenuHomeFreeBSD

D18421.id51533.diff
No OneTemporary

D18421.id51533.diff

Index: sys/amd64/amd64/machdep.c
===================================================================
--- sys/amd64/amd64/machdep.c
+++ sys/amd64/amd64/machdep.c
@@ -2045,6 +2045,7 @@
int
fill_frame_regs(struct trapframe *tp, struct reg *regs)
{
+
regs->r_r15 = tp->tf_r15;
regs->r_r14 = tp->tf_r14;
regs->r_r13 = tp->tf_r13;
@@ -2076,6 +2077,8 @@
regs->r_fs = 0;
regs->r_gs = 0;
}
+ regs->r_err = 0;
+ regs->r_trapno = 0;
return (0);
}
Index: sys/amd64/ia32/ia32_reg.c
===================================================================
--- sys/amd64/ia32/ia32_reg.c
+++ sys/amd64/ia32/ia32_reg.c
@@ -105,6 +105,8 @@
regs->r_eflags = tp->tf_rflags;
regs->r_esp = tp->tf_rsp;
regs->r_ss = tp->tf_ss;
+ regs->r_err = 0;
+ regs->r_trapno = 0;
return (0);
}
Index: sys/arm/arm/machdep_kdb.c
===================================================================
--- sys/arm/arm/machdep_kdb.c
+++ sys/arm/arm/machdep_kdb.c
@@ -104,6 +104,7 @@
regs->r_cpsr = tf->tf_spsr;
return (0);
}
+
int
fill_fpregs(struct thread *td, struct fpreg *regs)
{
@@ -134,8 +135,11 @@
int
fill_dbregs(struct thread *td, struct dbreg *regs)
{
+
+ bzero(regs, sizeof(*regs));
return (0);
}
+
int
set_dbregs(struct thread *td, struct dbreg *regs)
{
Index: sys/i386/i386/machdep.c
===================================================================
--- sys/i386/i386/machdep.c
+++ sys/i386/i386/machdep.c
@@ -2816,6 +2816,7 @@
int
fill_frame_regs(struct trapframe *tp, struct reg *regs)
{
+
regs->r_fs = tp->tf_fs;
regs->r_es = tp->tf_es;
regs->r_ds = tp->tf_ds;
@@ -2831,6 +2832,8 @@
regs->r_eflags = tp->tf_eflags;
regs->r_esp = tp->tf_esp;
regs->r_ss = tp->tf_ss;
+ regs->r_err = 0;
+ regs->r_trapno = 0;
return (0);
}
Index: sys/kern/sys_process.c
===================================================================
--- sys/kern/sys_process.c
+++ sys/kern/sys_process.c
@@ -573,7 +573,7 @@
struct ptrace_lwpinfo32 pl32;
struct ptrace_vm_entry32 pve32;
#endif
- char args[nitems(td->td_sa.args) * sizeof(register_t)];
+ char args[sizeof(td->td_sa.args)];
int ptevents;
} r;
void *addr;
@@ -590,11 +590,17 @@
addr = &r;
switch (uap->req) {
case PT_GET_EVENT_MASK:
+ case PT_LWPINFO:
+ case PT_GET_SC_ARGS:
+ break;
case PT_GETREGS:
+ bzero(&r.reg, sizeof(r.reg));
+ break;
case PT_GETFPREGS:
+ bzero(&r.fpreg, sizeof(r.fpreg));
+ break;
case PT_GETDBREGS:
- case PT_LWPINFO:
- case PT_GET_SC_ARGS:
+ bzero(&r.dbreg, sizeof(r.dbreg));
break;
case PT_SETREGS:
error = COPYIN(uap->addr, &r.reg, sizeof r.reg);
Index: sys/sparc64/sparc64/machdep.c
===================================================================
--- sys/sparc64/sparc64/machdep.c
+++ sys/sparc64/sparc64/machdep.c
@@ -1056,6 +1056,7 @@
bcopy(pcb->pcb_ufp, fpregs->fr_regs, sizeof(fpregs->fr_regs));
fpregs->fr_fsr = tf->tf_fsr;
fpregs->fr_gsr = tf->tf_gsr;
+ fpregs->fr_pad[0] = 0;
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 16, 4:25 AM (13 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31578520
Default Alt Text
D18421.id51533.diff (2 KB)

Event Timeline