Module Name: src Committed By: dsl Date: Sat Jan 4 00:10:03 UTC 2014
Modified Files: src/sys/arch/alpha/alpha: process_machdep.c src/sys/arch/amd64/amd64: netbsd32_machdep.c process_machdep.c src/sys/arch/amd64/include: netbsd32_machdep.h src/sys/arch/arm/arm: core_machdep.c process_machdep.c src/sys/arch/hppa/hppa: core_machdep.c process_machdep.c src/sys/arch/i386/i386: process_machdep.c src/sys/arch/ia64/ia64: process_machdep.c src/sys/arch/m68k/include: reg.h src/sys/arch/m68k/m68k: core_machdep.c process_machdep.c src/sys/arch/mips/include: types.h src/sys/arch/mips/mips: process_machdep.c src/sys/arch/powerpc/powerpc: process_machdep.c src/sys/arch/sparc/sparc: process_machdep.c src/sys/arch/sparc64/include: netbsd32_machdep.h src/sys/arch/sparc64/sparc64: netbsd32_machdep.c process_machdep.c src/sys/arch/usermode/usermode: process_machdep.c src/sys/arch/x86/x86: core_machdep.c src/sys/compat/linux/arch/amd64: linux_machdep.c src/sys/compat/linux/arch/i386: linux_ptrace.c src/sys/compat/linux/arch/powerpc: linux_ptrace.c src/sys/kern: core_elf32.c sys_process.c src/sys/sys: ptrace.h Log Message: Remove __HAVE_PROCESS_XFPREGS and add the extra parameter for the size of the fp save area to all the process_read_fpregs() and process_write_fpregs() functions. None of the functions have been modified to use the new parameters. The size is set for all the writes, but some of the arch-specific reads just pass NULL. The amd64 (and i386) need variable sized fp register save areas in order to support AVX and other enhanced register areas. These functions are rarely called - so the extra argument won't matter. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/alpha/alpha/process_machdep.c cvs rdiff -u -r1.86 -r1.87 src/sys/arch/amd64/amd64/netbsd32_machdep.c cvs rdiff -u -r1.24 -r1.25 src/sys/arch/amd64/amd64/process_machdep.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/amd64/include/netbsd32_machdep.h cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/arm/core_machdep.c cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/arm/process_machdep.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/hppa/hppa/core_machdep.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/hppa/hppa/process_machdep.c cvs rdiff -u -r1.75 -r1.76 src/sys/arch/i386/i386/process_machdep.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/ia64/ia64/process_machdep.c cvs rdiff -u -r1.18 -r1.19 src/sys/arch/m68k/include/reg.h cvs rdiff -u -r1.5 -r1.6 src/sys/arch/m68k/m68k/core_machdep.c cvs rdiff -u -r1.29 -r1.30 src/sys/arch/m68k/m68k/process_machdep.c cvs rdiff -u -r1.53 -r1.54 src/sys/arch/mips/include/types.h cvs rdiff -u -r1.36 -r1.37 src/sys/arch/mips/mips/process_machdep.c cvs rdiff -u -r1.35 -r1.36 src/sys/arch/powerpc/powerpc/process_machdep.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/sparc/sparc/process_machdep.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/sparc64/include/netbsd32_machdep.h cvs rdiff -u -r1.101 -r1.102 src/sys/arch/sparc64/sparc64/netbsd32_machdep.c cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sparc64/sparc64/process_machdep.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/usermode/usermode/process_machdep.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/x86/x86/core_machdep.c cvs rdiff -u -r1.43 -r1.44 src/sys/compat/linux/arch/amd64/linux_machdep.c cvs rdiff -u -r1.26 -r1.27 src/sys/compat/linux/arch/i386/linux_ptrace.c cvs rdiff -u -r1.23 -r1.24 src/sys/compat/linux/arch/powerpc/linux_ptrace.c cvs rdiff -u -r1.41 -r1.42 src/sys/kern/core_elf32.c cvs rdiff -u -r1.162 -r1.163 src/sys/kern/sys_process.c cvs rdiff -u -r1.44 -r1.45 src/sys/sys/ptrace.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/alpha/alpha/process_machdep.c diff -u src/sys/arch/alpha/alpha/process_machdep.c:1.27 src/sys/arch/alpha/alpha/process_machdep.c:1.28 --- src/sys/arch/alpha/alpha/process_machdep.c:1.27 Mon Feb 6 02:14:12 2012 +++ src/sys/arch/alpha/alpha/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.27 2012/02/06 02:14:12 matt Exp $ */ +/* $NetBSD: process_machdep.c,v 1.28 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1994 Christopher G. Demetriou @@ -54,7 +54,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.27 2012/02/06 02:14:12 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.28 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -112,7 +112,7 @@ process_set_pc(struct lwp *l, void *addr } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { struct pcb *pcb = lwp_getpcb(l); @@ -123,7 +123,7 @@ process_read_fpregs(struct lwp *l, struc } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { struct pcb *pcb = lwp_getpcb(l); Index: src/sys/arch/amd64/amd64/netbsd32_machdep.c diff -u src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.86 src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.87 --- src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.86 Wed Jan 1 18:57:15 2014 +++ src/sys/arch/amd64/amd64/netbsd32_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_machdep.c,v 1.86 2014/01/01 18:57:15 dsl Exp $ */ +/* $NetBSD: netbsd32_machdep.c,v 1.87 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.86 2014/01/01 18:57:15 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.87 2014/01/04 00:10:02 dsl Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -486,7 +486,7 @@ cpu_coredump32(struct lwp *l, struct cor return error; /* Save floating point registers. */ - error = netbsd32_process_read_fpregs(l, &md_core.freg); + error = netbsd32_process_read_fpregs(l, &md_core.freg, NULL); if (error) return error; @@ -569,10 +569,11 @@ xmm_to_s87_tag(const uint8_t *fpac, int } int -netbsd32_process_read_fpregs(struct lwp *l, struct fpreg32 *regs) +netbsd32_process_read_fpregs(struct lwp *l, struct fpreg32 *regs, size_t *sz) { struct fpreg regs64; struct save87 *s87 = (struct save87 *)regs; + size_t fp_size; int error, i; union fp_addr { @@ -596,7 +597,8 @@ netbsd32_process_read_fpregs(struct lwp * All that stuff makes no sense in i386 code :( */ - error = process_read_fpregs(l, ®s64); + fp_size = sizeof regs64; + error = process_read_fpregs(l, ®s64, &fp_size); if (error) return error; Index: src/sys/arch/amd64/amd64/process_machdep.c diff -u src/sys/arch/amd64/amd64/process_machdep.c:1.24 src/sys/arch/amd64/amd64/process_machdep.c:1.25 --- src/sys/arch/amd64/amd64/process_machdep.c:1.24 Thu Dec 12 22:41:03 2013 +++ src/sys/arch/amd64/amd64/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.24 2013/12/12 22:41:03 dsl Exp $ */ +/* $NetBSD: process_machdep.c,v 1.25 2014/01/04 00:10:02 dsl Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. @@ -53,7 +53,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.24 2013/12/12 22:41:03 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.25 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -103,7 +103,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs,size_t *sz) { struct fxsave64 *frame = process_fpframe(l); @@ -158,7 +158,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { struct fxsave64 *frame = process_fpframe(l); Index: src/sys/arch/amd64/include/netbsd32_machdep.h diff -u src/sys/arch/amd64/include/netbsd32_machdep.h:1.17 src/sys/arch/amd64/include/netbsd32_machdep.h:1.18 --- src/sys/arch/amd64/include/netbsd32_machdep.h:1.17 Sun Feb 19 21:06:02 2012 +++ src/sys/arch/amd64/include/netbsd32_machdep.h Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_machdep.h,v 1.17 2012/02/19 21:06:02 rmind Exp $ */ +/* $NetBSD: netbsd32_machdep.h,v 1.18 2014/01/04 00:10:02 dsl Exp $ */ #ifndef _MACHINE_NETBSD32_H_ #define _MACHINE_NETBSD32_H_ @@ -151,6 +151,10 @@ struct fpacc87 { struct save87 { struct env87 sv_env; struct fpacc87 sv_ac[8]; + /* + * The fields below are not in the 'struct fpreg32' that is + * otherwise the same as this structure (for coredumps). + */ int32_t sv_ex_sw; int32_t sv_ex_tw; uint8_t sv_pad[8 * 2 - 2 * 4]; @@ -159,6 +163,6 @@ struct save87 { #define NETBSD32_MID_MACHINE MID_I386 int netbsd32_process_read_regs(struct lwp *, struct reg32 *); -int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *); +int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *, size_t *); #endif /* _MACHINE_NETBSD32_H_ */ Index: src/sys/arch/arm/arm/core_machdep.c diff -u src/sys/arch/arm/arm/core_machdep.c:1.3 src/sys/arch/arm/arm/core_machdep.c:1.4 --- src/sys/arch/arm/arm/core_machdep.c:1.3 Wed Jan 1 18:57:15 2014 +++ src/sys/arch/arm/arm/core_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: core_machdep.c,v 1.3 2014/01/01 18:57:15 dsl Exp $ */ +/* $NetBSD: core_machdep.c,v 1.4 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -37,7 +37,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.3 2014/01/01 18:57:15 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.4 2014/01/04 00:10:02 dsl Exp $"); #include <sys/core.h> #include <sys/exec.h> @@ -80,7 +80,7 @@ cpu_coredump(struct lwp *l, struct cored if (error) return error; /* Save floating point registers. */ - error = process_read_fpregs(l, &cpustate.fpregs); + error = process_read_fpregs(l, &cpustate.fpregs, NULL); if (error) return error; Index: src/sys/arch/arm/arm/process_machdep.c diff -u src/sys/arch/arm/arm/process_machdep.c:1.28 src/sys/arch/arm/arm/process_machdep.c:1.29 --- src/sys/arch/arm/arm/process_machdep.c:1.28 Mon Oct 14 18:14:08 2013 +++ src/sys/arch/arm/arm/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.28 2013/10/14 18:14:08 skrll Exp $ */ +/* $NetBSD: process_machdep.c,v 1.29 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1993 The Regents of the University of California. @@ -133,7 +133,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.28 2013/10/14 18:14:08 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.29 2014/01/04 00:10:02 dsl Exp $"); #include <sys/proc.h> #include <sys/ptrace.h> @@ -172,7 +172,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { #ifdef FPU_VFP if (curcpu()->ci_vfp_id == 0) { @@ -220,7 +220,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { #ifdef FPU_VFP if (curcpu()->ci_vfp_id == 0) { Index: src/sys/arch/hppa/hppa/core_machdep.c diff -u src/sys/arch/hppa/hppa/core_machdep.c:1.5 src/sys/arch/hppa/hppa/core_machdep.c:1.6 --- src/sys/arch/hppa/hppa/core_machdep.c:1.5 Wed Jan 1 18:57:15 2014 +++ src/sys/arch/hppa/hppa/core_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: core_machdep.c,v 1.5 2014/01/01 18:57:15 dsl Exp $ */ +/* $NetBSD: core_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $ */ /* $OpenBSD: vm_machdep.c,v 1.25 2001/09/19 20:50:56 mickey Exp $ */ @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.5 2014/01/01 18:57:15 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -77,7 +77,7 @@ cpu_coredump(struct lwp *l, struct cored return error; /* Save floating point registers. */ - error = process_read_fpregs(l, &md_core.md_fpreg); + error = process_read_fpregs(l, &md_core.md_fpreg, NULL); if (error) return error; Index: src/sys/arch/hppa/hppa/process_machdep.c diff -u src/sys/arch/hppa/hppa/process_machdep.c:1.17 src/sys/arch/hppa/hppa/process_machdep.c:1.18 --- src/sys/arch/hppa/hppa/process_machdep.c:1.17 Thu Mar 3 09:37:21 2011 +++ src/sys/arch/hppa/hppa/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.17 2011/03/03 09:37:21 skrll Exp $ */ +/* $NetBSD: process_machdep.c,v 1.18 2014/01/04 00:10:02 dsl Exp $ */ /* $OpenBSD: process_machdep.c,v 1.3 1999/06/18 05:19:52 mickey Exp $ */ @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.17 2011/03/03 09:37:21 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.18 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -108,7 +108,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *fpregs) +process_read_fpregs(struct lwp *l, struct fpreg *fpregs, size_t *sz) { struct pcb *pcb = lwp_getpcb(l); @@ -177,7 +177,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *fpregs) +process_write_fpregs(struct lwp *l, const struct fpreg *fpregs, size_t sz) { struct pcb *pcb = lwp_getpcb(l); Index: src/sys/arch/i386/i386/process_machdep.c diff -u src/sys/arch/i386/i386/process_machdep.c:1.75 src/sys/arch/i386/i386/process_machdep.c:1.76 --- src/sys/arch/i386/i386/process_machdep.c:1.75 Sun Dec 8 20:45:30 2013 +++ src/sys/arch/i386/i386/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.75 2013/12/08 20:45:30 dsl Exp $ */ +/* $NetBSD: process_machdep.c,v 1.76 2014/01/04 00:10:02 dsl Exp $ */ /*- * Copyright (c) 1998, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -52,7 +52,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.75 2013/12/08 20:45:30 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.76 2014/01/04 00:10:02 dsl Exp $"); #include "opt_vm86.h" #include "opt_ptrace.h" @@ -238,7 +238,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { union savefpu *frame = process_fpframe(l); @@ -341,7 +341,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { union savefpu *frame = process_fpframe(l); Index: src/sys/arch/ia64/ia64/process_machdep.c diff -u src/sys/arch/ia64/ia64/process_machdep.c:1.5 src/sys/arch/ia64/ia64/process_machdep.c:1.6 --- src/sys/arch/ia64/ia64/process_machdep.c:1.5 Mon Jul 20 04:41:37 2009 +++ src/sys/arch/ia64/ia64/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.5 2009/07/20 04:41:37 kiyohara Exp $ */ +/* $NetBSD: process_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.5 2009/07/20 04:41:37 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/ptrace.h> @@ -53,7 +53,7 @@ printf("%s: not yet\n", __func__); int -process_read_fpregs(struct lwp *l, struct fpreg *fpregs) +process_read_fpregs(struct lwp *l, struct fpreg *fpregs, size_t *sz) { printf("%s: not yet\n", __func__); return 0; @@ -61,7 +61,7 @@ printf("%s: not yet\n", __func__); int -process_write_fpregs(struct lwp *l, const struct fpreg *fpregs) +process_write_fpregs(struct lwp *l, const struct fpreg *fpregs, size_t sz) { printf("%s: not yet\n", __func__); return 0; Index: src/sys/arch/m68k/include/reg.h diff -u src/sys/arch/m68k/include/reg.h:1.18 src/sys/arch/m68k/include/reg.h:1.19 --- src/sys/arch/m68k/include/reg.h:1.18 Tue Feb 8 20:20:16 2011 +++ src/sys/arch/m68k/include/reg.h Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: reg.h,v 1.18 2011/02/08 20:20:16 rmind Exp $ */ +/* $NetBSD: reg.h,v 1.19 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -97,7 +97,7 @@ struct fpreg { struct lwp; int process_read_regs(struct lwp *, struct reg *); -int process_read_fpregs(struct lwp *, struct fpreg *); +int process_read_fpregs(struct lwp *, struct fpreg *, size_t *); #endif Index: src/sys/arch/m68k/m68k/core_machdep.c diff -u src/sys/arch/m68k/m68k/core_machdep.c:1.5 src/sys/arch/m68k/m68k/core_machdep.c:1.6 --- src/sys/arch/m68k/m68k/core_machdep.c:1.5 Wed Jan 1 18:57:15 2014 +++ src/sys/arch/m68k/m68k/core_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: core_machdep.c,v 1.5 2014/01/01 18:57:15 dsl Exp $ */ +/* $NetBSD: core_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.5 2014/01/01 18:57:15 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.6 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -91,7 +91,7 @@ cpu_coredump(struct lwp *l, struct cored if (fputype) { /* Save floating point registers. */ - error = process_read_fpregs(l, &md_core.freg); + error = process_read_fpregs(l, &md_core.freg, NULL); if (error) return error; } else { Index: src/sys/arch/m68k/m68k/process_machdep.c diff -u src/sys/arch/m68k/m68k/process_machdep.c:1.29 src/sys/arch/m68k/m68k/process_machdep.c:1.30 --- src/sys/arch/m68k/m68k/process_machdep.c:1.29 Fri Jan 14 02:06:27 2011 +++ src/sys/arch/m68k/m68k/process_machdep.c Sat Jan 4 00:10:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.29 2011/01/14 02:06:27 rmind Exp $ */ +/* $NetBSD: process_machdep.c,v 1.30 2014/01/04 00:10:02 dsl Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou @@ -53,7 +53,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.29 2011/01/14 02:06:27 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.30 2014/01/04 00:10:02 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -96,7 +96,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { struct fpframe *frame = process_fpframe(l); @@ -140,7 +140,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { struct fpframe *frame = process_fpframe(l); Index: src/sys/arch/mips/include/types.h diff -u src/sys/arch/mips/include/types.h:1.53 src/sys/arch/mips/include/types.h:1.54 --- src/sys/arch/mips/include/types.h:1.53 Tue Aug 16 06:58:15 2011 +++ src/sys/arch/mips/include/types.h Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: types.h,v 1.53 2011/08/16 06:58:15 matt Exp $ */ +/* $NetBSD: types.h,v 1.54 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -142,7 +142,6 @@ typedef volatile unsigned int __cpu_simp #define __HAVE_FAST_SOFTINTS #define __HAVE_AST_PERPROC #define __HAVE_SYSCALL_INTERN -#define __HAVE_PROCESS_XFPREGS #define __HAVE_CPU_LWP_SETPRIVATE #define __HAVE_CPU_DATA_FIRST #define __HAVE_MD_CPU_OFFLINE Index: src/sys/arch/mips/mips/process_machdep.c diff -u src/sys/arch/mips/mips/process_machdep.c:1.36 src/sys/arch/mips/mips/process_machdep.c:1.37 --- src/sys/arch/mips/mips/process_machdep.c:1.36 Thu Jul 14 22:31:22 2011 +++ src/sys/arch/mips/mips/process_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.36 2011/07/14 22:31:22 matt Exp $ */ +/* $NetBSD: process_machdep.c,v 1.37 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 1993 The Regents of the University of California. @@ -76,7 +76,7 @@ */ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.36 2011/07/14 22:31:22 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.37 2014/01/04 00:10:03 dsl Exp $"); /* * This file may seem a bit stylized, but that so that it's easier to port. @@ -134,7 +134,7 @@ CTASSERT(sizeof(struct fpreg_oabi) <= si #endif int -process_read_xfpregs(struct lwp *l, struct fpreg *regs, size_t *regslen_p) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *regslen_p) { struct pcb * const pcb = lwp_getpcb(l); KASSERT(*regslen_p == sizeof(struct fpreg)); @@ -150,7 +150,7 @@ process_read_xfpregs(struct lwp *l, stru } int -process_write_xfpregs(struct lwp *l, const struct fpreg *regs, size_t regslen) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t regslen) { struct pcb * const pcb = lwp_getpcb(l); Index: src/sys/arch/powerpc/powerpc/process_machdep.c diff -u src/sys/arch/powerpc/powerpc/process_machdep.c:1.35 src/sys/arch/powerpc/powerpc/process_machdep.c:1.36 --- src/sys/arch/powerpc/powerpc/process_machdep.c:1.35 Tue Sep 27 01:02:36 2011 +++ src/sys/arch/powerpc/powerpc/process_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.35 2011/09/27 01:02:36 jym Exp $ */ +/* $NetBSD: process_machdep.c,v 1.36 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.35 2011/09/27 01:02:36 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.36 2014/01/04 00:10:03 dsl Exp $"); #include "opt_altivec.h" @@ -82,7 +82,7 @@ process_write_regs(struct lwp *l, const } int -process_read_fpregs(struct lwp *l, struct fpreg *fpregs) +process_read_fpregs(struct lwp *l, struct fpreg *fpregs, size_t *sz) { struct pcb * const pcb = lwp_getpcb(l); @@ -105,7 +105,7 @@ process_read_fpregs(struct lwp *l, struc } int -process_write_fpregs(struct lwp *l, const struct fpreg *fpregs) +process_write_fpregs(struct lwp *l, const struct fpreg *fpregs, size_t sz) { struct pcb * const pcb = lwp_getpcb(l); Index: src/sys/arch/sparc/sparc/process_machdep.c diff -u src/sys/arch/sparc/sparc/process_machdep.c:1.17 src/sys/arch/sparc/sparc/process_machdep.c:1.18 --- src/sys/arch/sparc/sparc/process_machdep.c:1.17 Sat Nov 21 04:16:51 2009 +++ src/sys/arch/sparc/sparc/process_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.17 2009/11/21 04:16:51 rmind Exp $ */ +/* $NetBSD: process_machdep.c,v 1.18 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 1993 The Regents of the University of California. @@ -95,7 +95,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.17 2009/11/21 04:16:51 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.18 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -146,7 +146,7 @@ process_set_pc(struct lwp *p, void *addr } int -process_read_fpregs(struct lwp *p, struct fpreg *regs) +process_read_fpregs(struct lwp *p, struct fpreg *regs, size_t *sz) { extern struct fpstate initfpstate; struct fpstate *statep = &initfpstate; @@ -159,7 +159,7 @@ process_read_fpregs(struct lwp *p, struc } int -process_write_fpregs(struct lwp *p, const struct fpreg *regs) +process_write_fpregs(struct lwp *p, const struct fpreg *regs, size_t sz) { if (p->l_md.md_fpstate == NULL) Index: src/sys/arch/sparc64/include/netbsd32_machdep.h diff -u src/sys/arch/sparc64/include/netbsd32_machdep.h:1.27 src/sys/arch/sparc64/include/netbsd32_machdep.h:1.28 --- src/sys/arch/sparc64/include/netbsd32_machdep.h:1.27 Thu May 29 14:51:26 2008 +++ src/sys/arch/sparc64/include/netbsd32_machdep.h Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_machdep.h,v 1.27 2008/05/29 14:51:26 mrg Exp $ */ +/* $NetBSD: netbsd32_machdep.h,v 1.28 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -77,6 +77,6 @@ int netbsd32_md_ioctl(struct file *, net #define NETBSD32_MID_MACHINE MID_SPARC int netbsd32_process_read_regs(struct lwp *, struct reg32 *); -int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *); +int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *, size_t *); #endif /* _MACHINE_NETBSD32_H_ */ Index: src/sys/arch/sparc64/sparc64/netbsd32_machdep.c diff -u src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.101 src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.102 --- src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.101 Wed Jan 1 18:57:16 2014 +++ src/sys/arch/sparc64/sparc64/netbsd32_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_machdep.c,v 1.101 2014/01/01 18:57:16 dsl Exp $ */ +/* $NetBSD: netbsd32_machdep.c,v 1.102 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.101 2014/01/01 18:57:16 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.102 2014/01/04 00:10:03 dsl Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -641,7 +641,7 @@ netbsd32_process_write_regs(struct lwp * #endif int -netbsd32_process_read_fpregs(struct lwp *l, struct fpreg32 *regs) +netbsd32_process_read_fpregs(struct lwp *l, struct fpreg32 *regs, size_t *sz) { extern const struct fpstate64 initfpstate; const struct fpstate64 *statep = &initfpstate; Index: src/sys/arch/sparc64/sparc64/process_machdep.c diff -u src/sys/arch/sparc64/sparc64/process_machdep.c:1.23 src/sys/arch/sparc64/sparc64/process_machdep.c:1.24 --- src/sys/arch/sparc64/sparc64/process_machdep.c:1.23 Sat Nov 21 04:16:52 2009 +++ src/sys/arch/sparc64/sparc64/process_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.23 2009/11/21 04:16:52 rmind Exp $ */ +/* $NetBSD: process_machdep.c,v 1.24 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 1993 The Regents of the University of California. @@ -95,7 +95,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.23 2009/11/21 04:16:52 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.24 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -199,7 +199,7 @@ process_set_pc(struct lwp *l, void *addr } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { extern const struct fpstate64 initfpstate; const struct fpstate64 *statep = &initfpstate; @@ -225,7 +225,7 @@ process_read_fpregs(struct lwp *l, struc } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { struct fpstate64 *statep; const struct fpreg32 *regp = (const struct fpreg32 *)regs; Index: src/sys/arch/usermode/usermode/process_machdep.c diff -u src/sys/arch/usermode/usermode/process_machdep.c:1.2 src/sys/arch/usermode/usermode/process_machdep.c:1.3 --- src/sys/arch/usermode/usermode/process_machdep.c:1.2 Wed Oct 21 16:07:00 2009 +++ src/sys/arch/usermode/usermode/process_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.2 2009/10/21 16:07:00 snj Exp $ */ +/* $NetBSD: process_machdep.c,v 1.3 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.2 2009/10/21 16:07:00 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.3 2014/01/04 00:10:03 dsl Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -40,7 +40,7 @@ process_read_regs(struct lwp *l, struct } int -process_read_fpregs(struct lwp *l, struct fpreg *regs) +process_read_fpregs(struct lwp *l, struct fpreg *regs, size_t *sz) { return 0; } @@ -52,7 +52,7 @@ process_write_regs(struct lwp *l, const } int -process_write_fpregs(struct lwp *l, const struct fpreg *regs) +process_write_fpregs(struct lwp *l, const struct fpreg *regs, size_t sz) { return 0; } Index: src/sys/arch/x86/x86/core_machdep.c diff -u src/sys/arch/x86/x86/core_machdep.c:1.4 src/sys/arch/x86/x86/core_machdep.c:1.5 --- src/sys/arch/x86/x86/core_machdep.c:1.4 Wed Jan 1 18:57:16 2014 +++ src/sys/arch/x86/x86/core_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: core_machdep.c,v 1.4 2014/01/01 18:57:16 dsl Exp $ */ +/* $NetBSD: core_machdep.c,v 1.5 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 1982, 1986 The Regents of the University of California. @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.4 2014/01/01 18:57:16 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.5 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -115,6 +115,7 @@ cpu_coredump(struct lwp *l, struct cored { struct md_core md_core; struct coreseg cseg; + size_t fp_size; int error; if (iocookie == NULL) { @@ -132,7 +133,8 @@ cpu_coredump(struct lwp *l, struct cored return error; /* Save floating point registers. */ - error = process_read_fpregs(l, &md_core.freg); + fp_size = sizeof md_core.freg; + error = process_read_fpregs(l, &md_core.freg, &fp_size); if (error) return error; Index: src/sys/compat/linux/arch/amd64/linux_machdep.c diff -u src/sys/compat/linux/arch/amd64/linux_machdep.c:1.43 src/sys/compat/linux/arch/amd64/linux_machdep.c:1.44 --- src/sys/compat/linux/arch/amd64/linux_machdep.c:1.43 Sun Dec 1 01:05:16 2013 +++ src/sys/compat/linux/arch/amd64/linux_machdep.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.43 2013/12/01 01:05:16 christos Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.44 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 2005 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.43 2013/12/01 01:05:16 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.44 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -229,7 +229,8 @@ linux_sendsig(const ksiginfo_t *ksi, con * Save FPU state, if any */ if (fpsp != NULL) { - (void)process_read_fpregs(l, &fpregs); + size_t fp_size = sizeof fpregs; + (void)process_read_fpregs(l, &fpregs, &fp_size); memset(&fpstate, 0, sizeof(fpstate)); fpstate.cwd = fpregs.fp_fcw; fpstate.swd = fpregs.fp_fsw; Index: src/sys/compat/linux/arch/i386/linux_ptrace.c diff -u src/sys/compat/linux/arch/i386/linux_ptrace.c:1.26 src/sys/compat/linux/arch/i386/linux_ptrace.c:1.27 --- src/sys/compat/linux/arch/i386/linux_ptrace.c:1.26 Wed Jul 7 01:30:34 2010 +++ src/sys/compat/linux/arch/i386/linux_ptrace.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_ptrace.c,v 1.26 2010/07/07 01:30:34 chs Exp $ */ +/* $NetBSD: linux_ptrace.c,v 1.27 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_ptrace.c,v 1.26 2010/07/07 01:30:34 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_ptrace.c,v 1.27 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/malloc.h> @@ -137,6 +137,7 @@ linux_sys_ptrace_arch(struct lwp *l, con struct linux_fpctx *linux_fpregs = NULL; struct linux_emuldata *led; int request, error, addr; + size_t fp_size; if (linux_ptrace_disabled) return ENOSYS; @@ -264,17 +265,18 @@ linux_sys_ptrace_arch(struct lwp *l, con break; case LINUX_PTRACE_GETFPREGS: - error = process_read_fpregs(lt, fpregs); + fp_size = sizeof fpregs; + error = process_read_fpregs(lt, fpregs, &fp_size); mutex_exit(t->p_lock); if (error) { break; } /* Zero the contents if NetBSD fpreg structure is smaller */ - if (sizeof(struct fpreg) < sizeof(struct linux_fpctx)) { + if (fp_size < sizeof(struct linux_fpctx)) { memset(linux_fpregs, '\0', sizeof(struct linux_fpctx)); } memcpy(linux_fpregs, fpregs, - min(sizeof(struct linux_fpctx), sizeof(struct fpreg))); + min(sizeof(struct linux_fpctx), fp_size)); error = copyout(linux_fpregs, (void *)SCARG(uap, data), sizeof(struct linux_fpctx)); break; Index: src/sys/compat/linux/arch/powerpc/linux_ptrace.c diff -u src/sys/compat/linux/arch/powerpc/linux_ptrace.c:1.23 src/sys/compat/linux/arch/powerpc/linux_ptrace.c:1.24 --- src/sys/compat/linux/arch/powerpc/linux_ptrace.c:1.23 Thu Jul 1 02:38:28 2010 +++ src/sys/compat/linux/arch/powerpc/linux_ptrace.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_ptrace.c,v 1.23 2010/07/01 02:38:28 rmind Exp $ */ +/* $NetBSD: linux_ptrace.c,v 1.24 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_ptrace.c,v 1.23 2010/07/01 02:38:28 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_ptrace.c,v 1.24 2014/01/04 00:10:03 dsl Exp $"); #include <sys/param.h> #include <sys/malloc.h> @@ -237,7 +237,7 @@ linux_sys_ptrace_arch(struct lwp *l, con break; case LINUX_PTRACE_GETFPREGS: - error = process_read_fpregs(lt, fpregs); + error = process_read_fpregs(lt, fpregs, NULL); mutex_exit(t->p_lock); if (error) { break; @@ -256,7 +256,7 @@ linux_sys_ptrace_arch(struct lwp *l, con memset(fpregs, '\0', sizeof(struct fpreg)); memcpy(fpregs, linux_fpreg, min(32 * sizeof(double), sizeof(struct fpreg))); - error = process_write_fpregs(lt, fpregs); + error = process_write_fpregs(lt, fpregs, sizeof fpregs); mutex_exit(t->p_lock); break; Index: src/sys/kern/core_elf32.c diff -u src/sys/kern/core_elf32.c:1.41 src/sys/kern/core_elf32.c:1.42 --- src/sys/kern/core_elf32.c:1.41 Fri Jan 3 21:34:40 2014 +++ src/sys/kern/core_elf32.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: core_elf32.c,v 1.41 2014/01/03 21:34:40 dsl Exp $ */ +/* $NetBSD: core_elf32.c,v 1.42 2014/01/04 00:10:03 dsl Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.41 2014/01/03 21:34:40 dsl Exp $"); +__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.42 2014/01/04 00:10:03 dsl Exp $"); #ifdef _KERNEL_OPT #include "opt_coredump.h" @@ -98,11 +98,7 @@ static int ELFNAMEEND(coredump_note)(str #define ELFROUNDSIZE 4 /* XXX Should it be sizeof(Elf_Word)? */ #define elf_process_read_regs CONCAT(process_read_regs, ELFSIZE) -#ifdef __HAVE_PROCESS_XFPREGS -#define elf_process_read_xfpregs CONCAT(process_read_xfpregs, ELFSIZE) -#else #define elf_process_read_fpregs CONCAT(process_read_fpregs, ELFSIZE) -#endif #define elf_reg CONCAT(process_reg, ELFSIZE) #define elf_fpreg CONCAT(process_fpreg, ELFSIZE) @@ -432,11 +428,7 @@ ELFNAMEEND(coredump_note)(struct lwp *l, #ifdef PT_GETFPREGS freglen = sizeof(freg); -#ifdef __HAVE_PROCESS_XFPREGS - error = elf_process_read_xfpregs(l, &freg, &freglen); -#else - error = elf_process_read_fpregs(l, &freg); -#endif + error = elf_process_read_fpregs(l, &freg, &freglen); if (error) return (error); Index: src/sys/kern/sys_process.c diff -u src/sys/kern/sys_process.c:1.162 src/sys/kern/sys_process.c:1.163 --- src/sys/kern/sys_process.c:1.162 Tue Sep 6 11:22:42 2011 +++ src/sys/kern/sys_process.c Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_process.c,v 1.162 2011/09/06 11:22:42 jmcneill Exp $ */ +/* $NetBSD: sys_process.c,v 1.163 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -118,7 +118,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_process.c,v 1.162 2011/09/06 11:22:42 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_process.c,v 1.163 2014/01/04 00:10:03 dsl Exp $"); #include "opt_ptrace.h" #include "opt_ktrace.h" @@ -1014,22 +1014,14 @@ process_dofpregs(struct lwp *curl /*trac if ((size_t)kl > uio->uio_resid) kl = uio->uio_resid; -#ifdef __HAVE_PROCESS_XFPREGS - error = process_read_xfpregs(l, &r, &kl); -#else - error = process_read_fpregs(l, &r); -#endif + error = process_read_fpregs(l, &r, &kl); if (error == 0) error = uiomove(kv, kl, uio); if (error == 0 && uio->uio_rw == UIO_WRITE) { if (l->l_stat != LSSTOP) error = EBUSY; else -#ifdef __HAVE_PROCESS_XFPREGS - error = process_write_xfpregs(l, &r, kl); -#else - error = process_write_fpregs(l, &r); -#endif + error = process_write_fpregs(l, &r, kl); } uio->uio_offset = 0; return (error); Index: src/sys/sys/ptrace.h diff -u src/sys/sys/ptrace.h:1.44 src/sys/sys/ptrace.h:1.45 --- src/sys/sys/ptrace.h:1.44 Fri Sep 2 20:10:19 2011 +++ src/sys/sys/ptrace.h Sat Jan 4 00:10:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.44 2011/09/02 20:10:19 christos Exp $ */ +/* $NetBSD: ptrace.h,v 1.45 2014/01/04 00:10:03 dsl Exp $ */ /*- * Copyright (c) 1984, 1993 @@ -151,17 +151,14 @@ int process_domem(struct lwp *, struct l void process_stoptrace(void); void proc_reparent(struct proc *, struct proc *); + +/* + * 64bit architectures that support 32bit emulation (amd64 and sparc64) + * will #define process_read_regs32 to netbsd32_process_read_regs (etc). + * In all other cases these #defines drop the size suffix. + */ #ifdef PT_GETFPREGS -#ifdef __HAVE_PROCESS_XFPREGS -int process_read_xfpregs(struct lwp *, struct fpreg *, size_t *); -#ifndef process_read_xfpregs32 -#define process_read_xfpregs32 process_read_xfpregs -#endif -#ifndef process_read_xfpregs64 -#define process_read_xfpregs64 process_read_xfpregs -#endif -#else -int process_read_fpregs(struct lwp *, struct fpreg *); +int process_read_fpregs(struct lwp *, struct fpreg *, size_t *); #ifndef process_read_fpregs32 #define process_read_fpregs32 process_read_fpregs #endif @@ -169,7 +166,6 @@ int process_read_fpregs(struct lwp *, st #define process_read_fpregs64 process_read_fpregs #endif #endif -#endif #ifdef PT_GETREGS int process_read_regs(struct lwp *, struct reg *); #ifndef process_read_regs32 @@ -182,11 +178,7 @@ int process_read_regs(struct lwp *, stru int process_set_pc(struct lwp *, void *); int process_sstep(struct lwp *, int); #ifdef PT_SETFPREGS -#ifdef __HAVE_PROCESS_XFPREGS -int process_write_xfpregs(struct lwp *, const struct fpreg *, size_t); -#else -int process_write_fpregs(struct lwp *, const struct fpreg *); -#endif +int process_write_fpregs(struct lwp *, const struct fpreg *, size_t); #endif #ifdef PT_SETREGS int process_write_regs(struct lwp *, const struct reg *);