Module Name: src Committed By: pgoyette Date: Sun Nov 1 18:51:03 UTC 2020
Modified Files: src/sys/compat/netbsd32: netbsd32.h netbsd32_core.c src/sys/kern: compat_stub.c files.kern kern_core.c kern_sig.c sys_ptrace_common.c src/sys/modules: Makefile src/sys/modules/compat_netbsd32: Makefile src/sys/modules/coredump: Makefile src/sys/sys: compat_stub.h param.h signalvar.h Added Files: src/sys/modules/compat_netbsd32_coredump: Makefile Log Message: Separate the compat_netbsd32_coredump from the compat_netbsd32 and coredump modules, into its own module. Welcome to 7.99.75 !!! To generate a diff of this commit: cvs rdiff -u -r1.133 -r1.134 src/sys/compat/netbsd32/netbsd32.h cvs rdiff -u -r1.15 -r1.16 src/sys/compat/netbsd32/netbsd32_core.c cvs rdiff -u -r1.20 -r1.21 src/sys/kern/compat_stub.c cvs rdiff -u -r1.53 -r1.54 src/sys/kern/files.kern cvs rdiff -u -r1.33 -r1.34 src/sys/kern/kern_core.c cvs rdiff -u -r1.394 -r1.395 src/sys/kern/kern_sig.c cvs rdiff -u -r1.88 -r1.89 src/sys/kern/sys_ptrace_common.c cvs rdiff -u -r1.247 -r1.248 src/sys/modules/Makefile cvs rdiff -u -r1.35 -r1.36 src/sys/modules/compat_netbsd32/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/compat_netbsd32_coredump/Makefile cvs rdiff -u -r1.7 -r1.8 src/sys/modules/coredump/Makefile cvs rdiff -u -r1.24 -r1.25 src/sys/sys/compat_stub.h cvs rdiff -u -r1.677 -r1.678 src/sys/sys/param.h cvs rdiff -u -r1.102 -r1.103 src/sys/sys/signalvar.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/compat/netbsd32/netbsd32.h diff -u src/sys/compat/netbsd32/netbsd32.h:1.133 src/sys/compat/netbsd32/netbsd32.h:1.134 --- src/sys/compat/netbsd32/netbsd32.h:1.133 Sat May 16 18:31:48 2020 +++ src/sys/compat/netbsd32/netbsd32.h Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32.h,v 1.133 2020/05/16 18:31:48 christos Exp $ */ +/* $NetBSD: netbsd32.h,v 1.134 2020/11/01 18:51:02 pgoyette Exp $ */ /* * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green @@ -1212,6 +1212,7 @@ int netbsd32_kevent(struct lwp *, void * struct coredump_iostate; int coredump_netbsd32(struct lwp *, struct coredump_iostate *); +int real_coredump_netbsd32(struct lwp *, struct coredump_iostate *); /* * random other stuff Index: src/sys/compat/netbsd32/netbsd32_core.c diff -u src/sys/compat/netbsd32/netbsd32_core.c:1.15 src/sys/compat/netbsd32/netbsd32_core.c:1.16 --- src/sys/compat/netbsd32/netbsd32_core.c:1.15 Wed Nov 20 19:37:53 2019 +++ src/sys/compat/netbsd32/netbsd32_core.c Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_core.c,v 1.15 2019/11/20 19:37:53 pgoyette Exp $ */ +/* $NetBSD: netbsd32_core.c,v 1.16 2020/11/01 18:51:02 pgoyette Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -45,22 +45,36 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_core.c,v 1.15 2019/11/20 19:37:53 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_core.c,v 1.16 2020/11/01 18:51:02 pgoyette Exp $"); +#include <sys/compat_stub.h> +#include <sys/exec_elf.h> #include <sys/lwp.h> +#include <sys/module.h> -#define CORENAME(x) __CONCAT(x,32) -#define COREINC <compat/netbsd32/netbsd32.h> +#define DEPS "compat_netbsd32,compat_netbsd32_ptrace,coredump" -struct coredump_iostate; +MODULE(MODULE_CLASS_MISC, compat_netbsd32_coredump, DEPS); -int CORENAME(real_coredump_netbsd)(struct lwp *, struct coredump_iostate *); +#define CORENAME(x) __CONCAT(x,32) +#define COREINC <compat/netbsd32/netbsd32.h> #include "../../kern/core_netbsd.c" -int -CORENAME(coredump_netbsd)(struct lwp *l, struct coredump_iostate *iocookie) +static int +compat_netbsd32_coredump_modcmd(modcmd_t cmd, void *arg) { - return CORENAME(real_coredump_netbsd)(l, iocookie); -} + switch (cmd) { + case MODULE_CMD_INIT: + MODULE_HOOK_SET(coredump_netbsd32_hook, real_coredump_netbsd32); + MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32); + return 0; + case MODULE_CMD_FINI: + MODULE_HOOK_UNSET(coredump_netbsd32_hook); + MODULE_HOOK_UNSET(coredump_elf32_hook); + return 0; + default: + return ENOTTY; + } +} Index: src/sys/kern/compat_stub.c diff -u src/sys/kern/compat_stub.c:1.20 src/sys/kern/compat_stub.c:1.21 --- src/sys/kern/compat_stub.c:1.20 Mon Oct 19 19:33:02 2020 +++ src/sys/kern/compat_stub.c Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: compat_stub.c,v 1.20 2020/10/19 19:33:02 christos Exp $ */ +/* $NetBSD: compat_stub.c,v 1.21 2020/11/01 18:51:02 pgoyette Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -280,6 +280,7 @@ struct coredump_hook_t coredump_hook; struct coredump_offset_hook_t coredump_offset_hook; struct coredump_write_hook_t coredump_write_hook; struct coredump_netbsd_hook_t coredump_netbsd_hook; +struct coredump_netbsd32_hook_t coredump_netbsd32_hook; struct coredump_elf32_hook_t coredump_elf32_hook; struct coredump_elf64_hook_t coredump_elf64_hook; struct uvm_coredump_walkmap_hook_t uvm_coredump_walkmap_hook; Index: src/sys/kern/files.kern diff -u src/sys/kern/files.kern:1.53 src/sys/kern/files.kern:1.54 --- src/sys/kern/files.kern:1.53 Mon Oct 19 19:33:02 2020 +++ src/sys/kern/files.kern Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -# $NetBSD: files.kern,v 1.53 2020/10/19 19:33:02 christos Exp $ +# $NetBSD: files.kern,v 1.54 2020/11/01 18:51:02 pgoyette Exp $ # # kernel sources @@ -167,7 +167,7 @@ file kern/sys_pipe.c !pipe_socketpair file kern/sys_process.c ptrace_hooks | ktrace file kern/sys_process_lwpstatus.c kern file kern/sys_ptrace.c ptrace -file kern/sys_ptrace_common.c ptrace +file kern/sys_ptrace_common.c ptrace | procfs file kern/sys_pset.c kern file kern/sys_select.c kern file kern/sys_sig.c kern Index: src/sys/kern/kern_core.c diff -u src/sys/kern/kern_core.c:1.33 src/sys/kern/kern_core.c:1.34 --- src/sys/kern/kern_core.c:1.33 Mon Oct 26 17:35:39 2020 +++ src/sys/kern/kern_core.c Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_core.c,v 1.33 2020/10/26 17:35:39 christos Exp $ */ +/* $NetBSD: kern_core.c,v 1.34 2020/11/01 18:51:02 pgoyette Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1991, 1993 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.33 2020/10/26 17:35:39 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.34 2020/11/01 18:51:02 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_execfmt.h" @@ -58,13 +58,7 @@ __KERNEL_RCSID(0, "$NetBSD: kern_core.c, #include <sys/compat_stub.h> #include <sys/exec_elf.h> -#ifdef COMPAT_NETBSD32 -#define COREDUMP_MODULE_DEP "compat_netbsd32_ptrace" -#else -#define COREDUMP_MODULE_DEP NULL -#endif - -MODULE(MODULE_CLASS_MISC, coredump, COREDUMP_MODULE_DEP); +MODULE(MODULE_CLASS_MISC, coredump, NULL); struct coredump_iostate { struct lwp *io_lwp; @@ -89,11 +83,10 @@ coredump_modcmd(modcmd_t cmd, void *arg) MODULE_HOOK_SET(coredump_write_hook, coredump_write); MODULE_HOOK_SET(coredump_offset_hook, coredump_offset); MODULE_HOOK_SET(coredump_netbsd_hook, real_coredump_netbsd); -#ifdef EXEC_ELF32 - MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32); -#endif -#ifdef EXEC_ELF64 +#if defined(EXEC_ELF64) MODULE_HOOK_SET(coredump_elf64_hook, real_coredump_elf64); +#elif defined(EXEC_ELF32) + MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32); #endif MODULE_HOOK_SET(uvm_coredump_walkmap_hook, uvm_coredump_walkmap); @@ -103,10 +96,9 @@ coredump_modcmd(modcmd_t cmd, void *arg) case MODULE_CMD_FINI: MODULE_HOOK_UNSET(uvm_coredump_count_segs_hook); MODULE_HOOK_UNSET(uvm_coredump_walkmap_hook); -#ifdef EXEC_ELF64 +#if defined(EXEC_ELF64) MODULE_HOOK_UNSET(coredump_elf64_hook); -#endif -#ifdef EXEC_ELF32 +#elif defined(EXEC_ELF32) MODULE_HOOK_UNSET(coredump_elf32_hook); #endif MODULE_HOOK_UNSET(coredump_netbsd_hook); Index: src/sys/kern/kern_sig.c diff -u src/sys/kern/kern_sig.c:1.394 src/sys/kern/kern_sig.c:1.395 --- src/sys/kern/kern_sig.c:1.394 Fri Oct 30 22:19:00 2020 +++ src/sys/kern/kern_sig.c Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_sig.c,v 1.394 2020/10/30 22:19:00 christos Exp $ */ +/* $NetBSD: kern_sig.c,v 1.395 2020/11/01 18:51:02 pgoyette Exp $ */ /*- * Copyright (c) 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.394 2020/10/30 22:19:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.395 2020/11/01 18:51:02 pgoyette Exp $"); #include "opt_execfmt.h" #include "opt_ptrace.h" @@ -2348,16 +2348,27 @@ sigexit(struct lwp *l, int signo) * Since the "real" code may (or may not) be present in loadable module, * we provide routines here which calls the module hooks. */ + int coredump_netbsd(struct lwp *l, struct coredump_iostate *iocookie) { + int retval; MODULE_HOOK_CALL(coredump_netbsd_hook, (l, iocookie), ENOSYS, retval); return retval; } -#ifdef EXEC_ELF32 +int +coredump_netbsd32(struct lwp *l, struct coredump_iostate *iocookie) +{ + + int retval; + + MODULE_HOOK_CALL(coredump_netbsd32_hook, (l, iocookie), ENOSYS, retval); + return retval; +} + int coredump_elf32(struct lwp *l, struct coredump_iostate *iocookie) { @@ -2366,9 +2377,7 @@ coredump_elf32(struct lwp *l, struct cor MODULE_HOOK_CALL(coredump_elf32_hook, (l, iocookie), ENOSYS, retval); return retval; } -#endif -#ifdef EXEC_ELF64 int coredump_elf64(struct lwp *l, struct coredump_iostate *iocookie) { @@ -2377,7 +2386,6 @@ coredump_elf64(struct lwp *l, struct cor MODULE_HOOK_CALL(coredump_elf64_hook, (l, iocookie), ENOSYS, retval); return retval; } -#endif /* * Put process 'p' into the stopped state and optionally, notify the parent. Index: src/sys/kern/sys_ptrace_common.c diff -u src/sys/kern/sys_ptrace_common.c:1.88 src/sys/kern/sys_ptrace_common.c:1.89 --- src/sys/kern/sys_ptrace_common.c:1.88 Sun Oct 25 15:55:36 2020 +++ src/sys/kern/sys_ptrace_common.c Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_ptrace_common.c,v 1.88 2020/10/25 15:55:36 pgoyette Exp $ */ +/* $NetBSD: sys_ptrace_common.c,v 1.89 2020/11/01 18:51:02 pgoyette Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -107,7 +107,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_ptrace_common.c,v 1.88 2020/10/25 15:55:36 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_ptrace_common.c,v 1.89 2020/11/01 18:51:02 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_ptrace.h" @@ -143,7 +143,6 @@ __KERNEL_RCSID(0, "$NetBSD: sys_ptrace_c #include <machine/reg.h> -#ifdef PTRACE # ifdef PTRACE_DEBUG # define DPRINTF(a) uprintf a # else @@ -1572,7 +1571,6 @@ process_auxv_offset(struct proc *p, stru #endif return 0; } -#endif /* PTRACE */ MODULE(MODULE_CLASS_EXEC, ptrace_common, NULL); Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.247 src/sys/modules/Makefile:1.248 --- src/sys/modules/Makefile:1.247 Wed Oct 14 10:26:59 2020 +++ src/sys/modules/Makefile Sun Nov 1 18:51:02 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.247 2020/10/14 10:26:59 ryo Exp $ +# $NetBSD: Makefile,v 1.248 2020/11/01 18:51:02 pgoyette Exp $ .include <bsd.own.mk> @@ -298,6 +298,7 @@ SUBDIR+= compat_netbsd32_40 compat_netbs SUBDIR+= compat_netbsd32_60 compat_netbsd32_80 SUBDIR+= compat_netbsd32_90 SUBDIR+= compat_netbsd32_43 +SUBDIR+= compat_netbsd32_coredump SUBDIR+= compat_netbsd32_mqueue SUBDIR+= compat_netbsd32_nfssrv SUBDIR+= compat_netbsd32_ptrace Index: src/sys/modules/compat_netbsd32/Makefile diff -u src/sys/modules/compat_netbsd32/Makefile:1.35 src/sys/modules/compat_netbsd32/Makefile:1.36 --- src/sys/modules/compat_netbsd32/Makefile:1.35 Sat May 16 18:31:52 2020 +++ src/sys/modules/compat_netbsd32/Makefile Sun Nov 1 18:51:03 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.35 2020/05/16 18:31:52 christos Exp $ +# $NetBSD: Makefile,v 1.36 2020/11/01 18:51:03 pgoyette Exp $ .include "../Makefile.inc" .include "../Makefile.assym" @@ -29,8 +29,7 @@ CPPFLAGS+= -I${NETBSDSRCDIR}/sys/externa .if ${NETBSD32_DRMKMS:Uno} == "yes" SRCS+= netbsd32_drm.c .endif -SRCS+= netbsd32_acl.c -SRCS+= netbsd32_core.c netbsd32_event.c +SRCS+= netbsd32_acl.c netbsd32_event.c SRCS+= netbsd32_exec_elf32.c netbsd32_execve.c SRCS+= netbsd32_fd.c netbsd32_fs.c SRCS+= netbsd32_futex.c Index: src/sys/modules/coredump/Makefile diff -u src/sys/modules/coredump/Makefile:1.7 src/sys/modules/coredump/Makefile:1.8 --- src/sys/modules/coredump/Makefile:1.7 Mon Oct 19 19:33:02 2020 +++ src/sys/modules/coredump/Makefile Sun Nov 1 18:51:03 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.7 2020/10/19 19:33:02 christos Exp $ +# $NetBSD: Makefile,v 1.8 2020/11/01 18:51:03 pgoyette Exp $ .include "../Makefile.inc" @@ -6,7 +6,18 @@ KMOD= coredump .PATH: ${S}/kern SRCS= kern_core.c core_netbsd.c -SRCS+= ${OBJECT_FMTS:S/^/core_/:S/$/.c/} + +# Include only the primary object format. If both elf64 and elf32 are +# supported, this will pick up elf64 and elf32 will be available in +# the compat_netbsd32_coredump module + +.if ${OBJECT_FMTS:Melf64} != "" +SRCS+= core_elf64.c +CPPFLAGS+= -DEXEC_ELF64 +.elif ${OBJECT_FMTS:Melf32} != "" +SRCS+= core_elf32.c +CPPFLAGS+= -DEXEC_ELF32 +.endif .PATH: ${S}/uvm SRCS+= uvm_coredump.c @@ -14,12 +25,6 @@ SRCS+= uvm_coredump.c .include "../ptrace_common/machdep.mk" SRCS+= core_machdep.c -.include "${.CURDIR}/../../compat/netbsd32/netbsd32.mk" -.if ${COMPAT_USE_NETBSD32} != "no" -CPPFLAGS.core_elf32.c+= -DCOMPAT_NETBSD32 -CPPFLAGS.kern_core.c+= -DCOMPAT_NETBSD32 -.endif - WARNS= 3 COPTS.kern_core.c+= ${GCC_NO_CAST_FUNCTION_TYPE} Index: src/sys/sys/compat_stub.h diff -u src/sys/sys/compat_stub.h:1.24 src/sys/sys/compat_stub.h:1.25 --- src/sys/sys/compat_stub.h:1.24 Mon Oct 19 19:33:02 2020 +++ src/sys/sys/compat_stub.h Sun Nov 1 18:51:03 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: compat_stub.h,v 1.24 2020/10/19 19:33:02 christos Exp $ */ +/* $NetBSD: compat_stub.h,v 1.25 2020/11/01 18:51:03 pgoyette Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -377,6 +377,8 @@ MODULE_HOOK(coredump_write_hook, int, (struct coredump_iostate *, enum uio_seg, const void *, size_t)); MODULE_HOOK(coredump_netbsd_hook, int, (struct lwp *, struct coredump_iostate *)); +MODULE_HOOK(coredump_netbsd32_hook, int, + (struct lwp *, struct coredump_iostate *)); MODULE_HOOK(coredump_elf32_hook, int, (struct lwp *, struct coredump_iostate *)); MODULE_HOOK(coredump_elf64_hook, int, Index: src/sys/sys/param.h diff -u src/sys/sys/param.h:1.677 src/sys/sys/param.h:1.678 --- src/sys/sys/param.h:1.677 Thu Oct 15 17:38:41 2020 +++ src/sys/sys/param.h Sun Nov 1 18:51:03 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: param.h,v 1.677 2020/10/15 17:38:41 mgorny Exp $ */ +/* $NetBSD: param.h,v 1.678 2020/11/01 18:51:03 pgoyette Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 @@ -67,7 +67,7 @@ * 2.99.9 (299000900) */ -#define __NetBSD_Version__ 999007400 /* NetBSD 9.99.74 */ +#define __NetBSD_Version__ 999007500 /* NetBSD 9.99.75 */ #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \ (m) * 1000000) + (p) * 100) <= __NetBSD_Version__) Index: src/sys/sys/signalvar.h diff -u src/sys/sys/signalvar.h:1.102 src/sys/sys/signalvar.h:1.103 --- src/sys/sys/signalvar.h:1.102 Thu May 14 13:32:15 2020 +++ src/sys/sys/signalvar.h Sun Nov 1 18:51:03 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: signalvar.h,v 1.102 2020/05/14 13:32:15 kamil Exp $ */ +/* $NetBSD: signalvar.h,v 1.103 2020/11/01 18:51:03 pgoyette Exp $ */ /* * Copyright (c) 1991, 1993 @@ -138,6 +138,7 @@ struct coredump_iostate; * Machine-independent functions: */ int coredump_netbsd(struct lwp *, struct coredump_iostate *); +int coredump_netbsd32(struct lwp *, struct coredump_iostate *); int real_coredump_netbsd(struct lwp *, struct coredump_iostate *); void execsigs(struct proc *); int issignal(struct lwp *); Added files: Index: src/sys/modules/compat_netbsd32_coredump/Makefile diff -u /dev/null src/sys/modules/compat_netbsd32_coredump/Makefile:1.1 --- /dev/null Sun Nov 1 18:51:03 2020 +++ src/sys/modules/compat_netbsd32_coredump/Makefile Sun Nov 1 18:51:03 2020 @@ -0,0 +1,17 @@ +# $NetBSD: Makefile,v 1.1 2020/11/01 18:51:03 pgoyette Exp $ + +.include "../Makefile.inc" + +KMOD= compat_netbsd32_coredump + +.PATH: ${S}/compat/netbsd32 +SRCS= netbsd32_core.c + +.PATH: ${S}/kern +SRCS+= core_elf32.c + +CPPFLAGS+= -DCOMPAT_NETBSD32 + +WARNS= 3 + +.include <bsd.kmodule.mk>