Module Name:    src
Committed By:   matt
Date:           Mon Dec 14 00:48:36 UTC 2009

Modified Files:
        src/sys/kern: core_elf32.c exec_elf.c init_sysent.c sys_process.c
            syscalls.c
        src/sys/lib/libkern/arch/mips: Makefile.inc
        src/sys/sys: exec.h ptrace.h

Log Message:
Merge from matt-nb5-mips64


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/kern/core_elf32.c
cvs rdiff -u -r1.11 -r1.12 src/sys/kern/exec_elf.c
cvs rdiff -u -r1.241 -r1.242 src/sys/kern/init_sysent.c
cvs rdiff -u -r1.151 -r1.152 src/sys/kern/sys_process.c
cvs rdiff -u -r1.232 -r1.233 src/sys/kern/syscalls.c
cvs rdiff -u -r1.20 -r1.21 src/sys/lib/libkern/arch/mips/Makefile.inc
cvs rdiff -u -r1.128 -r1.129 src/sys/sys/exec.h
cvs rdiff -u -r1.41 -r1.42 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/kern/core_elf32.c
diff -u src/sys/kern/core_elf32.c:1.34 src/sys/kern/core_elf32.c:1.35
--- src/sys/kern/core_elf32.c:1.34	Wed Oct 21 21:12:06 2009
+++ src/sys/kern/core_elf32.c	Mon Dec 14 00:48:35 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: core_elf32.c,v 1.34 2009/10/21 21:12:06 rmind Exp $	*/
+/*	$NetBSD: core_elf32.c,v 1.35 2009/12/14 00:48:35 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.34 2009/10/21 21:12:06 rmind Exp $");
+__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.35 2009/12/14 00:48:35 matt Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_coredump.h"
@@ -90,7 +90,11 @@
 #define	elfround(x)	roundup((x), ELFROUNDSIZE)
 
 #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)
 
@@ -162,6 +166,10 @@
 	ehdr.e_shnum = 0;
 	ehdr.e_shstrndx = 0;
 
+#ifdef ELF_MD_COREDUMP_SETUP
+	ELF_MD_COREDUMP_SETUP(l, &ehdr);
+#endif
+
 	/* Write out the ELF header. */
 	error = coredump_write(cookie, UIO_SYSSPACE, &ehdr, sizeof(ehdr));
 	if (error)
@@ -451,12 +459,17 @@
 #ifdef PT_GETFPREGS
 	notesize = sizeof(nhdr) + elfround(namesize) + elfround(sizeof(freg));
 	if (iocookie) {
+		size_t freglen = sizeof(freg);
+#ifdef __HAVE_PROCESS_XFPREGS
+		error = elf_process_read_xfpregs(l, &freg, &freglen);
+#else
 		error = elf_process_read_fpregs(l, &freg);
+#endif
 		if (error)
 			return (error);
 
 		nhdr.n_namesz = namesize;
-		nhdr.n_descsz = sizeof(freg);
+		nhdr.n_descsz = freglen;
 		nhdr.n_type = PT_GETFPREGS;
 
 		error = ELFNAMEEND(coredump_writenote)(p, iocookie, &nhdr,

Index: src/sys/kern/exec_elf.c
diff -u src/sys/kern/exec_elf.c:1.11 src/sys/kern/exec_elf.c:1.12
--- src/sys/kern/exec_elf.c:1.11	Wed Dec 17 20:51:35 2008
+++ src/sys/kern/exec_elf.c	Mon Dec 14 00:48:35 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec_elf.c,v 1.11 2008/12/17 20:51:35 cegger Exp $	*/
+/*	$NetBSD: exec_elf.c,v 1.12 2009/12/14 00:48:35 matt Exp $	*/
 
 /*-
  * Copyright (c) 1994, 2000, 2005 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.11 2008/12/17 20:51:35 cegger Exp $");
+__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.12 2009/12/14 00:48:35 matt Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pax.h"
@@ -909,7 +909,10 @@
 
 	if ((error = netbsd_elf_signature(l, epp, eh)) != 0)
 		return error;
-#ifdef ELF_INTERP_NON_RELOCATABLE
+#ifdef ELF_MD_PROBE_FUNC
+	if ((error = ELF_MD_PROBE_FUNC(l, epp, eh, itp, pos)) != 0)
+		return error;
+#elif defined(ELF_INTERP_NON_RELOCATABLE)
 	*pos = ELF_LINK_ADDR;
 #endif
 	return 0;

Index: src/sys/kern/init_sysent.c
diff -u src/sys/kern/init_sysent.c:1.241 src/sys/kern/init_sysent.c:1.242
--- src/sys/kern/init_sysent.c:1.241	Tue Oct 13 21:57:53 2009
+++ src/sys/kern/init_sysent.c	Mon Dec 14 00:48:35 2009
@@ -1,14 +1,14 @@
-/* $NetBSD: init_sysent.c,v 1.241 2009/10/13 21:57:53 pooka Exp $ */
+/* $NetBSD: init_sysent.c,v 1.242 2009/12/14 00:48:35 matt Exp $ */
 
 /*
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.229 2009/07/21 23:59:00 pooka Exp
+ * created from	NetBSD
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.241 2009/10/13 21:57:53 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.242 2009/12/14 00:48:35 matt Exp $");
 
 #include "opt_modular.h"
 #include "opt_ntp.h"
@@ -465,9 +465,9 @@
 #endif
 	{ 0, 0, 0,
 	    sys_nosys },			/* 172 = unimplemented */
-	{ ns(struct sys_pread_args), 0,
+	{ ns(struct sys_pread_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)sys_pread },		/* 173 = pread */
-	{ ns(struct sys_pwrite_args), 0,
+	{ ns(struct sys_pwrite_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)sys_pwrite },		/* 174 = pwrite */
 	{ ns(struct compat_30_sys_ntp_gettime_args), 0,
 	    (sy_call_t *)compat_30(sys_ntp_gettime) },/* 175 = compat_30_ntp_gettime */
@@ -529,15 +529,15 @@
 	    (sy_call_t *)sys_setrlimit },	/* 195 = setrlimit */
 	{ ns(struct compat_12_sys_getdirentries_args), 0,
 	    (sy_call_t *)sys_nomodule },	/* 196 = compat_12_getdirentries */
-	{ ns(struct sys_mmap_args), 0,
+	{ ns(struct sys_mmap_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG6_64,
 	    (sy_call_t *)sys_mmap },		/* 197 = mmap */
-	{ ns(struct sys___syscall_args), SYCALL_INDIRECT,
+	{ ns(struct sys___syscall_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG0_64 | SYCALL_RET_64 | SYCALL_INDIRECT,
 	    (sy_call_t *)sys___syscall },	/* 198 = __syscall */
-	{ ns(struct sys_lseek_args), 0,
+	{ ns(struct sys_lseek_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64 | SYCALL_RET_64,
 	    (sy_call_t *)sys_lseek },		/* 199 = lseek */
-	{ ns(struct sys_truncate_args), 0,
+	{ ns(struct sys_truncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64,
 	    (sy_call_t *)sys_truncate },	/* 200 = truncate */
-	{ ns(struct sys_ftruncate_args), 0,
+	{ ns(struct sys_ftruncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64,
 	    (sy_call_t *)sys_ftruncate },	/* 201 = ftruncate */
 	{ ns(struct sys___sysctl_args), 0,
 	    (sy_call_t *)sys___sysctl },	/* 202 = __sysctl */
@@ -746,9 +746,9 @@
 	    (sy_call_t *)sys___clone },		/* 287 = __clone */
 	{ ns(struct sys_fktrace_args), 0,
 	    (sy_call_t *)sys_fktrace },		/* 288 = fktrace */
-	{ ns(struct sys_preadv_args), 0,
+	{ ns(struct sys_preadv_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)sys_preadv },		/* 289 = preadv */
-	{ ns(struct sys_pwritev_args), 0,
+	{ ns(struct sys_pwritev_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)sys_pwritev },		/* 290 = pwritev */
 	{ ns(struct compat_16_sys___sigaction14_args), 0,
 	    (sy_call_t *)sys_nomodule },	/* 291 = compat_16___sigaction14 */
@@ -891,7 +891,7 @@
 	    sys_nosys },			/* 352 = unimplemented */
 	{ 0, 0, 0,
 	    sys_nosys },			/* 353 = unimplemented */
-	{ ns(struct sys_fsync_range_args), 0,
+	{ ns(struct sys_fsync_range_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64,
 	    (sy_call_t *)sys_fsync_range },	/* 354 = fsync_range */
 	{ ns(struct sys_uuidgen_args), 0,
 	    (sy_call_t *)sys_uuidgen },		/* 355 = uuidgen */
@@ -1015,7 +1015,7 @@
 	    (sy_call_t *)sys_pset_assign },	/* 414 = pset_assign */
 	{ ns(struct sys__pset_bind_args), 0,
 	    (sy_call_t *)sys__pset_bind },	/* 415 = _pset_bind */
-	{ ns(struct sys___posix_fadvise50_args), 0,
+	{ ns(struct sys___posix_fadvise50_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64,
 	    (sy_call_t *)sys___posix_fadvise50 },/* 416 = __posix_fadvise50 */
 	{ ns(struct sys___select50_args), 0,
 	    (sy_call_t *)sys___select50 },	/* 417 = __select50 */

Index: src/sys/kern/sys_process.c
diff -u src/sys/kern/sys_process.c:1.151 src/sys/kern/sys_process.c:1.152
--- src/sys/kern/sys_process.c:1.151	Wed Oct 21 21:12:06 2009
+++ src/sys/kern/sys_process.c	Mon Dec 14 00:48:35 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_process.c,v 1.151 2009/10/21 21:12:06 rmind Exp $	*/
+/*	$NetBSD: sys_process.c,v 1.152 2009/12/14 00:48:35 matt 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.151 2009/10/21 21:12:06 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_process.c,v 1.152 2009/12/14 00:48:35 matt Exp $");
 
 #include "opt_ptrace.h"
 #include "opt_ktrace.h"
@@ -896,7 +896,7 @@
 	int error;
 	struct fpreg r;
 	char *kv;
-	int kl;
+	size_t kl;
 
 	if (uio->uio_offset < 0 || uio->uio_offset > (off_t)sizeof(r))
 		return EINVAL;
@@ -909,14 +909,22 @@
 	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
 	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
 	}
 	uio->uio_offset = 0;
 	return (error);

Index: src/sys/kern/syscalls.c
diff -u src/sys/kern/syscalls.c:1.232 src/sys/kern/syscalls.c:1.233
--- src/sys/kern/syscalls.c:1.232	Tue Oct 13 21:57:53 2009
+++ src/sys/kern/syscalls.c	Mon Dec 14 00:48:35 2009
@@ -1,14 +1,14 @@
-/* $NetBSD: syscalls.c,v 1.232 2009/10/13 21:57:53 pooka Exp $ */
+/* $NetBSD: syscalls.c,v 1.233 2009/12/14 00:48:35 matt Exp $ */
 
 /*
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.229 2009/07/21 23:59:00 pooka Exp
+ * created from	NetBSD
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.232 2009/10/13 21:57:53 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.233 2009/12/14 00:48:35 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_modular.h"

Index: src/sys/lib/libkern/arch/mips/Makefile.inc
diff -u src/sys/lib/libkern/arch/mips/Makefile.inc:1.20 src/sys/lib/libkern/arch/mips/Makefile.inc:1.21
--- src/sys/lib/libkern/arch/mips/Makefile.inc:1.20	Fri Aug 14 19:23:54 2009
+++ src/sys/lib/libkern/arch/mips/Makefile.inc	Mon Dec 14 00:48:35 2009
@@ -1,9 +1,14 @@
-#	$NetBSD: Makefile.inc,v 1.20 2009/08/14 19:23:54 dsl Exp $
+#	$NetBSD: Makefile.inc,v 1.21 2009/12/14 00:48:35 matt Exp $
 #
 #	There are likely more that we will notice when we go native
 
 NO_SRCS+= imax.c imin.c lmax.c lmin.c max.c min.c ulmax.c ulmin.c
 NO_SRCS+= __main.c
 
-SRCS+=	byte_swap_2.S byte_swap_4.S ffs.S memcpy.S memset.S memmove.S
-SRCS+=	strlen.S strcmp.S
+SRCS+=	__assert.c memchr.c memcmp.c random.c scanc.c \
+	skpc.c strcat.c strcpy.c strcasecmp.c \
+	strncasecmp.c strncmp.c strncpy.c strtoul.c
+
+SRCS+=	byte_swap_2.S byte_swap_4.S byte_swap_8.S \
+	ffs.S memcpy.S memset2.c memmove.S \
+	strlen.S strcmp.S

Index: src/sys/sys/exec.h
diff -u src/sys/sys/exec.h:1.128 src/sys/sys/exec.h:1.129
--- src/sys/sys/exec.h:1.128	Thu Dec 10 14:13:54 2009
+++ src/sys/sys/exec.h	Mon Dec 14 00:48:35 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec.h,v 1.128 2009/12/10 14:13:54 matt Exp $	*/
+/*	$NetBSD: exec.h,v 1.129 2009/12/14 00:48:35 matt Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -215,7 +215,7 @@
 	vsize_t	ev_len;		/* length of the segment to map */
 	vaddr_t	ev_addr;	/* address in the vmspace to place it at */
 	struct	vnode *ev_vp;	/* vnode pointer for the file w/the data */
-	u_long	ev_offset;	/* offset in the file for the data */
+	vsize_t	ev_offset;	/* offset in the file for the data */
 	u_int	ev_prot;	/* protections for segment */
 	int	ev_flags;
 #define	VMCMD_RELATIVE	0x0001	/* ev_addr is relative to base entry */

Index: src/sys/sys/ptrace.h
diff -u src/sys/sys/ptrace.h:1.41 src/sys/sys/ptrace.h:1.42
--- src/sys/sys/ptrace.h:1.41	Fri Oct  2 22:18:56 2009
+++ src/sys/sys/ptrace.h	Mon Dec 14 00:48:35 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ptrace.h,v 1.41 2009/10/02 22:18:56 elad Exp $	*/
+/*	$NetBSD: ptrace.h,v 1.42 2009/12/14 00:48:35 matt Exp $	*/
 
 /*-
  * Copyright (c) 1984, 1993
@@ -113,6 +113,15 @@
 
 void	proc_reparent(struct proc *, struct proc *);
 #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 *);
 #ifndef process_read_fpregs32
 #define process_read_fpregs32	process_read_fpregs
@@ -121,6 +130,7 @@
 #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
@@ -133,8 +143,12 @@
 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
+#endif
 #ifdef PT_SETREGS
 int	process_write_regs(struct lwp *, const struct reg *);
 #endif

Reply via email to