Mon Oct 26 17:35:39 2020 UTC ()
Depend directly on EXEC_ELF{32,64} to determine which versions of the coredump
code are available.


(christos)
diff -r1.32 -r1.33 src/sys/kern/kern_core.c
diff -r1.392 -r1.393 src/sys/kern/kern_sig.c

cvs diff -r1.32 -r1.33 src/sys/kern/kern_core.c (expand / switch to unified diff)

--- src/sys/kern/kern_core.c 2020/10/20 13:47:30 1.32
+++ src/sys/kern/kern_core.c 2020/10/26 17:35:39 1.33
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: kern_core.c,v 1.32 2020/10/20 13:47:30 christos Exp $ */ 1/* $NetBSD: kern_core.c,v 1.33 2020/10/26 17:35:39 christos Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1982, 1986, 1989, 1991, 1993 4 * Copyright (c) 1982, 1986, 1989, 1991, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * (c) UNIX System Laboratories, Inc. 6 * (c) UNIX System Laboratories, Inc.
7 * All or some portions of this file are derived from material licensed 7 * All or some portions of this file are derived from material licensed
8 * to the University of California by American Telephone and Telegraph 8 * to the University of California by American Telephone and Telegraph
9 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 9 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
10 * the permission of UNIX System Laboratories, Inc. 10 * the permission of UNIX System Laboratories, Inc.
11 * 11 *
12 * Redistribution and use in source and binary forms, with or without 12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions 13 * modification, are permitted provided that the following conditions
14 * are met: 14 * are met:
@@ -27,29 +27,30 @@ @@ -27,29 +27,30 @@
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE. 34 * SUCH DAMAGE.
35 * 35 *
36 * @(#)kern_sig.c 8.14 (Berkeley) 5/14/95 36 * @(#)kern_sig.c 8.14 (Berkeley) 5/14/95
37 */ 37 */
38 38
39#include <sys/cdefs.h> 39#include <sys/cdefs.h>
40__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.32 2020/10/20 13:47:30 christos Exp $"); 40__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.33 2020/10/26 17:35:39 christos Exp $");
41 41
42#ifdef _KERNEL_OPT 42#ifdef _KERNEL_OPT
 43#include "opt_execfmt.h"
43#include "opt_compat_netbsd32.h" 44#include "opt_compat_netbsd32.h"
44#endif 45#endif
45 46
46#include <sys/param.h> 47#include <sys/param.h>
47#include <sys/vnode.h> 48#include <sys/vnode.h>
48#include <sys/namei.h> 49#include <sys/namei.h>
49#include <sys/acct.h> 50#include <sys/acct.h>
50#include <sys/file.h> 51#include <sys/file.h>
51#include <sys/stat.h> 52#include <sys/stat.h>
52#include <sys/proc.h> 53#include <sys/proc.h>
53#include <sys/exec.h> 54#include <sys/exec.h>
54#include <sys/filedesc.h> 55#include <sys/filedesc.h>
55#include <sys/kauth.h> 56#include <sys/kauth.h>
@@ -78,44 +79,44 @@ static int coredump_write(struct coredum @@ -78,44 +79,44 @@ static int coredump_write(struct coredum
78 const void *, size_t); 79 const void *, size_t);
79static off_t coredump_offset(struct coredump_iostate *); 80static off_t coredump_offset(struct coredump_iostate *);
80 81
81static int 82static int
82coredump_modcmd(modcmd_t cmd, void *arg) 83coredump_modcmd(modcmd_t cmd, void *arg)
83{ 84{
84 85
85 switch (cmd) { 86 switch (cmd) {
86 case MODULE_CMD_INIT: 87 case MODULE_CMD_INIT:
87 MODULE_HOOK_SET(coredump_hook, coredump); 88 MODULE_HOOK_SET(coredump_hook, coredump);
88 MODULE_HOOK_SET(coredump_write_hook, coredump_write); 89 MODULE_HOOK_SET(coredump_write_hook, coredump_write);
89 MODULE_HOOK_SET(coredump_offset_hook, coredump_offset); 90 MODULE_HOOK_SET(coredump_offset_hook, coredump_offset);
90 MODULE_HOOK_SET(coredump_netbsd_hook, real_coredump_netbsd); 91 MODULE_HOOK_SET(coredump_netbsd_hook, real_coredump_netbsd);
91#if !defined(_LP64) || defined(COMPAT_NETBSD32) 92#ifdef EXEC_ELF32
92 MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32); 93 MODULE_HOOK_SET(coredump_elf32_hook, real_coredump_elf32);
93#endif 94#endif
94#ifdef _LP64 95#ifdef EXEC_ELF64
95 MODULE_HOOK_SET(coredump_elf64_hook, real_coredump_elf64); 96 MODULE_HOOK_SET(coredump_elf64_hook, real_coredump_elf64);
96#endif 97#endif
97 MODULE_HOOK_SET(uvm_coredump_walkmap_hook, 98 MODULE_HOOK_SET(uvm_coredump_walkmap_hook,
98 uvm_coredump_walkmap); 99 uvm_coredump_walkmap);
99 MODULE_HOOK_SET(uvm_coredump_count_segs_hook, 100 MODULE_HOOK_SET(uvm_coredump_count_segs_hook,
100 uvm_coredump_count_segs); 101 uvm_coredump_count_segs);
101 return 0; 102 return 0;
102 case MODULE_CMD_FINI: 103 case MODULE_CMD_FINI:
103 MODULE_HOOK_UNSET(uvm_coredump_count_segs_hook); 104 MODULE_HOOK_UNSET(uvm_coredump_count_segs_hook);
104 MODULE_HOOK_UNSET(uvm_coredump_walkmap_hook); 105 MODULE_HOOK_UNSET(uvm_coredump_walkmap_hook);
105#ifdef _LP64 106#ifdef EXEC_ELF64
106 MODULE_HOOK_UNSET(coredump_elf64_hook); 107 MODULE_HOOK_UNSET(coredump_elf64_hook);
107#endif 108#endif
108#if !defined(_LP64) || defined(COMPAT_NETBSD32) 109#ifdef EXEC_ELF32
109 MODULE_HOOK_UNSET(coredump_elf32_hook); 110 MODULE_HOOK_UNSET(coredump_elf32_hook);
110#endif 111#endif
111 MODULE_HOOK_UNSET(coredump_netbsd_hook); 112 MODULE_HOOK_UNSET(coredump_netbsd_hook);
112 MODULE_HOOK_UNSET(coredump_offset_hook); 113 MODULE_HOOK_UNSET(coredump_offset_hook);
113 MODULE_HOOK_UNSET(coredump_write_hook); 114 MODULE_HOOK_UNSET(coredump_write_hook);
114 MODULE_HOOK_UNSET(coredump_hook); 115 MODULE_HOOK_UNSET(coredump_hook);
115 return 0; 116 return 0;
116 default: 117 default:
117 return ENOTTY; 118 return ENOTTY;
118 } 119 }
119} 120}
120 121
121/* 122/*

cvs diff -r1.392 -r1.393 src/sys/kern/kern_sig.c (expand / switch to unified diff)

--- src/sys/kern/kern_sig.c 2020/10/20 13:16:26 1.392
+++ src/sys/kern/kern_sig.c 2020/10/26 17:35:39 1.393
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: kern_sig.c,v 1.392 2020/10/20 13:16:26 christos Exp $ */ 1/* $NetBSD: kern_sig.c,v 1.393 2020/10/26 17:35:39 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc. 4 * Copyright (c) 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Andrew Doran. 8 * by Andrew Doran.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -60,28 +60,29 @@ @@ -60,28 +60,29 @@
60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
63 * SUCH DAMAGE. 63 * SUCH DAMAGE.
64 * 64 *
65 * @(#)kern_sig.c 8.14 (Berkeley) 5/14/95 65 * @(#)kern_sig.c 8.14 (Berkeley) 5/14/95
66 */ 66 */
67 67
68/* 68/*
69 * Signal subsystem. 69 * Signal subsystem.
70 */ 70 */
71 71
72#include <sys/cdefs.h> 72#include <sys/cdefs.h>
73__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.392 2020/10/20 13:16:26 christos Exp $"); 73__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.393 2020/10/26 17:35:39 christos Exp $");
74 74
 75#include "opt_execfmt.h"
75#include "opt_ptrace.h" 76#include "opt_ptrace.h"
76#include "opt_dtrace.h" 77#include "opt_dtrace.h"
77#include "opt_compat_sunos.h" 78#include "opt_compat_sunos.h"
78#include "opt_compat_netbsd.h" 79#include "opt_compat_netbsd.h"
79#include "opt_compat_netbsd32.h" 80#include "opt_compat_netbsd32.h"
80#include "opt_pax.h" 81#include "opt_pax.h"
81 82
82#define SIGPROP /* include signal properties table */ 83#define SIGPROP /* include signal properties table */
83#include <sys/param.h> 84#include <sys/param.h>
84#include <sys/signalvar.h> 85#include <sys/signalvar.h>
85#include <sys/proc.h> 86#include <sys/proc.h>
86#include <sys/ptrace.h> 87#include <sys/ptrace.h>
87#include <sys/systm.h> 88#include <sys/systm.h>
@@ -2346,38 +2347,38 @@ sigexit(struct lwp *l, int signo) @@ -2346,38 +2347,38 @@ sigexit(struct lwp *l, int signo)
2346/* 2347/*
2347 * Since the "real" code may (or may not) be present in loadable module, 2348 * Since the "real" code may (or may not) be present in loadable module,
2348 * we provide routines here which calls the module hooks. 2349 * we provide routines here which calls the module hooks.
2349 */ 2350 */
2350int 2351int
2351coredump_netbsd(struct lwp *l, struct coredump_iostate *iocookie) 2352coredump_netbsd(struct lwp *l, struct coredump_iostate *iocookie)
2352{ 2353{
2353 int retval; 2354 int retval;
2354 2355
2355 MODULE_HOOK_CALL(coredump_netbsd_hook, (l, iocookie), ENOSYS, retval); 2356 MODULE_HOOK_CALL(coredump_netbsd_hook, (l, iocookie), ENOSYS, retval);
2356 return retval; 2357 return retval;
2357} 2358}
2358 2359
2359#if !defined(_LP64) || defined(COMPAT_NETBSD32) 2360#ifdef EXEC_ELF32
2360int 2361int
2361coredump_elf32(struct lwp *l, struct coredump_iostate *iocookie) 2362coredump_elf32(struct lwp *l, struct coredump_iostate *iocookie)
2362{ 2363{
2363 int retval; 2364 int retval;
2364 2365
2365 MODULE_HOOK_CALL(coredump_elf32_hook, (l, iocookie), ENOSYS, retval); 2366 MODULE_HOOK_CALL(coredump_elf32_hook, (l, iocookie), ENOSYS, retval);
2366 return retval; 2367 return retval;
2367} 2368}
2368#endif 2369#endif
2369 2370
2370#ifdef _LP64 2371#ifdef EXEC_ELF64
2371int 2372int
2372coredump_elf64(struct lwp *l, struct coredump_iostate *iocookie) 2373coredump_elf64(struct lwp *l, struct coredump_iostate *iocookie)
2373{ 2374{
2374 int retval; 2375 int retval;
2375 2376
2376 MODULE_HOOK_CALL(coredump_elf64_hook, (l, iocookie), ENOSYS, retval); 2377 MODULE_HOOK_CALL(coredump_elf64_hook, (l, iocookie), ENOSYS, retval);
2377 return retval; 2378 return retval;
2378} 2379}
2379#endif 2380#endif
2380 2381
2381/* 2382/*
2382 * Put process 'p' into the stopped state and optionally, notify the parent. 2383 * Put process 'p' into the stopped state and optionally, notify the parent.
2383 */ 2384 */