Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/sys Arrange so that no options COREDUMP and no options P...



details:   https://anonhg.NetBSD.org/src/rev/bf4a8a9215d7
branches:  trunk
changeset: 956046:bf4a8a9215d7
user:      christos <christos%NetBSD.org@localhost>
date:      Mon Oct 19 19:33:01 2020 +0000

description:
Arrange so that no options COREDUMP and no options PTRACE work together.
Thanks to Paul Goyette for testing.

diffstat:

 sys/arch/amd64/conf/MODULAR          |   7 ++++---
 sys/arch/amd64/conf/files.amd64      |   4 ++--
 sys/kern/compat_stub.c               |   4 +++-
 sys/kern/core_elf32.c                |   6 +++---
 sys/kern/files.kern                  |   6 +++---
 sys/kern/kern_core.c                 |  25 ++++++++++++++++++++++---
 sys/kern/kern_sig.c                  |  32 +++++++++++++++++++++++++-------
 sys/modules/coredump/Makefile        |  21 ++++++++++-----------
 sys/modules/exec_elf32/Makefile      |   4 ++--
 sys/modules/exec_elf64/Makefile      |   4 ++--
 sys/modules/ptrace_common/Makefile   |   6 ++++--
 sys/modules/ptrace_common/machdep.mk |  13 +++++++++++++
 sys/sys/compat_stub.h                |   6 +++++-
 sys/sys/exec_elf.h                   |  14 +++++++++-----
 14 files changed, 107 insertions(+), 45 deletions(-)

diffs (truncated from 414 to 300 lines):

diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/arch/amd64/conf/MODULAR
--- a/sys/arch/amd64/conf/MODULAR       Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/arch/amd64/conf/MODULAR       Mon Oct 19 19:33:01 2020 +0000
@@ -1,11 +1,9 @@
-# $NetBSD: MODULAR,v 1.17 2020/09/27 13:48:49 roy Exp $
+# $NetBSD: MODULAR,v 1.18 2020/10/19 19:33:01 christos Exp $
 #
 # Try to exclude all the drivers in GENERIC that have been modularized
 # XXX: incomplete
 
 include "arch/amd64/conf/GENERIC"
-options        MODULAR         # new style module(7) framework
-options        MODULAR_DEFAULT_AUTOLOAD
 
 -no acpicpu*   at cpu?
 -no est0               at cpu0
@@ -85,6 +83,9 @@
 
 -no options    AIO
 
+-no options    PTRACE
+-no options    COREDUMP
+
 -no acpiacad*  at acpi?                # ACPI AC Adapter
 -no acpibat*   at acpi?                # ACPI Battery
 -no acpibut*   at acpi?                # ACPI Button
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/arch/amd64/conf/files.amd64
--- a/sys/arch/amd64/conf/files.amd64   Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/arch/amd64/conf/files.amd64   Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.amd64,v 1.117 2020/10/15 17:40:13 mgorny Exp $
+#      $NetBSD: files.amd64,v 1.118 2020/10/19 19:33:01 christos Exp $
 #
 # new style config file for amd64 architecture
 #
@@ -47,7 +47,7 @@
 file   arch/amd64/amd64/gdt.c                  machdep
 file   arch/amd64/amd64/machdep.c              machdep
 file   arch/amd64/amd64/prekern.c              kaslr
-file   arch/amd64/amd64/process_machdep.c      machdep
+file   arch/amd64/amd64/process_machdep.c      machdep & ptrace
 file   arch/amd64/amd64/trap.c                 machdep
 file   arch/x86/x86/fpu.c                      machdep
 file   arch/x86/x86/dbregs.c                   machdep
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/kern/compat_stub.c
--- a/sys/kern/compat_stub.c    Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/kern/compat_stub.c    Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.c,v 1.19 2019/11/20 19:37:53 pgoyette Exp $    */
+/* $NetBSD: compat_stub.c,v 1.20 2020/10/19 19:33:02 christos Exp $    */
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -280,6 +280,8 @@
 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_elf32_hook_t coredump_elf32_hook;
+struct coredump_elf64_hook_t coredump_elf64_hook;
 struct uvm_coredump_walkmap_hook_t uvm_coredump_walkmap_hook;
 struct uvm_coredump_count_segs_hook_t uvm_coredump_count_segs_hook;
 
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/kern/core_elf32.c
--- a/sys/kern/core_elf32.c     Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/kern/core_elf32.c     Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: core_elf32.c,v 1.65 2020/10/10 00:10:06 rin Exp $      */
+/*     $NetBSD: core_elf32.c,v 1.66 2020/10/19 19:33:02 christos Exp $ */
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.65 2020/10/10 00:10:06 rin Exp $");
+__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.66 2020/10/19 19:33:02 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd32.h"
@@ -109,7 +109,7 @@
 #define elf_fpreg              CONCAT(process_fpreg, ELFSIZE)
 
 int
-ELFNAMEEND(coredump)(struct lwp *l, struct coredump_iostate *cookie)
+ELFNAMEEND(real_coredump)(struct lwp *l, struct coredump_iostate *cookie)
 {
        Elf_Ehdr ehdr;
        Elf_Shdr shdr;
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/kern/files.kern
--- a/sys/kern/files.kern       Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/kern/files.kern       Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.kern,v 1.52 2020/09/07 03:50:41 thorpej Exp $
+#      $NetBSD: files.kern,v 1.53 2020/10/19 19:33:02 christos Exp $
 
 #
 # kernel sources
@@ -16,8 +16,8 @@
 file   kern/bufq_priocscan.c           bufq_priocscan
 file   kern/bufq_readprio.c            bufq_readprio | new_bufq_strategy
 file   kern/compat_stub.c              kern
-file   kern/core_elf32.c               exec_elf32
-file   kern/core_elf64.c               exec_elf64
+file   kern/core_elf32.c               exec_elf32 & coredump
+file   kern/core_elf64.c               exec_elf64 & coredump
 file   kern/core_netbsd.c              coredump
 file   kern/cnmagic.c                  kern
 file   kern/exec_aout.c                exec_aout
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/kern/kern_core.c
--- a/sys/kern/kern_core.c      Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/kern/kern_core.c      Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_core.c,v 1.30 2020/05/23 23:42:43 ad Exp $        */
+/*     $NetBSD: kern_core.c,v 1.31 2020/10/19 19:33:02 christos Exp $  */
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1991, 1993
@@ -37,7 +37,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.30 2020/05/23 23:42:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.31 2020/10/19 19:33:02 christos Exp $");
+
+#ifdef _KERNEL_OPT
+#include "opt_compat_netbsd32.h"
+#endif
 
 #include <sys/param.h>
 #include <sys/vnode.h>
@@ -51,8 +55,15 @@
 #include <sys/kauth.h>
 #include <sys/module.h>
 #include <sys/compat_stub.h>
+#include <sys/exec_elf.h>
 
-MODULE(MODULE_CLASS_MISC, coredump, NULL);
+#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);
 
 struct coredump_iostate {
        struct lwp *io_lwp;
@@ -77,6 +88,10 @@
                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);
+               MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32);
+#ifdef _LP64
+               MODULE_HOOK_SET(coredump_elf64_hook, real_coredump_elf64);
+#endif
                MODULE_HOOK_SET(uvm_coredump_walkmap_hook,
                    uvm_coredump_walkmap);
                MODULE_HOOK_SET(uvm_coredump_count_segs_hook,
@@ -85,6 +100,10 @@
        case MODULE_CMD_FINI:
                MODULE_HOOK_UNSET(uvm_coredump_count_segs_hook);
                MODULE_HOOK_UNSET(uvm_coredump_walkmap_hook);
+#ifdef _LP64
+               MODULE_HOOK_UNSET(coredump_elf64_hook);
+#endif
+               MODULE_HOOK_UNSET(coredump_elf32_hook);
                MODULE_HOOK_UNSET(coredump_netbsd_hook);
                MODULE_HOOK_UNSET(coredump_offset_hook);
                MODULE_HOOK_UNSET(coredump_write_hook);
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/kern/kern_sig.c
--- a/sys/kern/kern_sig.c       Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/kern/kern_sig.c       Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_sig.c,v 1.390 2020/05/23 23:42:43 ad Exp $        */
+/*     $NetBSD: kern_sig.c,v 1.391 2020/10/19 19:33:02 christos 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.390 2020/05/23 23:42:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.391 2020/10/19 19:33:02 christos Exp $");
 
 #include "opt_ptrace.h"
 #include "opt_dtrace.h"
@@ -100,6 +100,7 @@
 #include <sys/cpu.h>
 #include <sys/module.h>
 #include <sys/sdt.h>
+#include <sys/exec_elf.h>
 #include <sys/compat_stub.h>
 
 #ifdef PAX_SEGVGUARD
@@ -2343,12 +2344,9 @@
 }
 
 /*
- * Many emulations have a common coredump_netbsd() established as their
- * dump routine.  Since the "real" code may (or may not) be present in
- * loadable module, we provide a routine here which calls the module
- * hook.
+ * 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)
 {
@@ -2358,6 +2356,26 @@
        return retval;
 }
 
+int
+coredump_elf32(struct lwp *l, struct coredump_iostate *iocookie)
+{
+       int retval;
+
+       MODULE_HOOK_CALL(coredump_elf32_hook, (l, iocookie), ENOSYS, retval);
+       return retval;
+}
+
+#ifdef _LP64
+int
+coredump_elf64(struct lwp *l, struct coredump_iostate *iocookie)
+{
+       int retval;
+
+       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.
  */
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/modules/coredump/Makefile
--- a/sys/modules/coredump/Makefile     Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/modules/coredump/Makefile     Mon Oct 19 19:33:01 2020 +0000
@@ -1,25 +1,24 @@
-#      $NetBSD: Makefile,v 1.6 2019/11/20 19:37:54 pgoyette Exp $
+#      $NetBSD: Makefile,v 1.7 2020/10/19 19:33:02 christos Exp $
 
 .include "../Makefile.inc"
 
 KMOD=  coredump
 
 .PATH: ${S}/kern
-SRCS=  kern_core.c core_netbsd.c 
+SRCS=  kern_core.c core_netbsd.c
+SRCS+= ${OBJECT_FMTS:S/^/core_/:S/$/.c/}
 
 .PATH: ${S}/uvm
 SRCS+= uvm_coredump.c
 
-.PATH: ${S}/arch/${MACHINE}/${MACHINE}
-.PATH: ${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}
-.PATH: ${S}/arch/${MACHINE_CPU}/${MACHINE_CPU}
-.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
-.PATH: ${S}/arch/x86/x86
+.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
-.if ${MACHINE_ARCH} == "powerpc64"
-.PATH: ${S}/arch/powerpc/powerpc
-.endif
-SRCS+= core_machdep.c
 
 WARNS= 3
 
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/modules/exec_elf32/Makefile
--- a/sys/modules/exec_elf32/Makefile   Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/modules/exec_elf32/Makefile   Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.5 2019/11/20 19:37:54 pgoyette Exp $
+#      $NetBSD: Makefile,v 1.6 2020/10/19 19:33:02 christos Exp $
 
 .include "../Makefile.inc"
 
@@ -19,7 +19,7 @@
 .endif
 
 .PATH: ${S}/kern
-SRCS=  exec_elf32.c core_elf32.c
+SRCS=  exec_elf32.c
 
 WARNS= 3
 
diff -r d0c7a47b2428 -r bf4a8a9215d7 sys/modules/exec_elf64/Makefile
--- a/sys/modules/exec_elf64/Makefile   Mon Oct 19 19:14:11 2020 +0000
+++ b/sys/modules/exec_elf64/Makefile   Mon Oct 19 19:33:01 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.4 2019/11/20 19:37:54 pgoyette Exp $



Home | Main Index | Thread Index | Old Index