Module Name: src
Committed By: thorpej
Date: Mon Nov 1 05:53:46 UTC 2021
Modified Files:
src/distrib/sets/lists/base: shl.mi
src/distrib/sets/lists/debug: shl.mi
src/include: signal.h
src/lib/libc: shlib_version
src/lib/libc/compat/sys: Makefile.inc
src/lib/libc/sys: Makefile.inc
Added Files:
src/lib/libc/compat/sys: compat___sigaction14_sigtramp.c
src/lib/libc/sys: Lint___sigaction_siginfo.c __sigaction_siginfo.c
Removed Files:
src/lib/libc/sys: Lint___sigaction14.c __sigaction14_sigtramp.c
Log Message:
Version the sigaction(2) libc wrapper. The new version uses the "siginfo"
trampoline exclusively, thus relegating "sigcontext"-style handlers (which
have not been documented for many years now) to the dustbin of the compat
library.
To generate a diff of this commit:
cvs rdiff -u -r1.929 -r1.930 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.286 -r1.287 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.57 -r1.58 src/include/signal.h
cvs rdiff -u -r1.292 -r1.293 src/lib/libc/shlib_version
cvs rdiff -u -r1.10 -r1.11 src/lib/libc/compat/sys/Makefile.inc
cvs rdiff -u -r0 -r1.1 \
src/lib/libc/compat/sys/compat___sigaction14_sigtramp.c
cvs rdiff -u -r1.1 -r0 src/lib/libc/sys/Lint___sigaction14.c
cvs rdiff -u -r0 -r1.1 src/lib/libc/sys/Lint___sigaction_siginfo.c \
src/lib/libc/sys/__sigaction_siginfo.c
cvs rdiff -u -r1.249 -r1.250 src/lib/libc/sys/Makefile.inc
cvs rdiff -u -r1.2 -r0 src/lib/libc/sys/__sigaction14_sigtramp.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/base/shl.mi
diff -u src/distrib/sets/lists/base/shl.mi:1.929 src/distrib/sets/lists/base/shl.mi:1.930
--- src/distrib/sets/lists/base/shl.mi:1.929 Sat Oct 16 07:01:02 2021
+++ src/distrib/sets/lists/base/shl.mi Mon Nov 1 05:53:45 2021
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.929 2021/10/16 07:01:02 skrll Exp $
+# $NetBSD: shl.mi,v 1.930 2021/11/01 05:53:45 thorpej Exp $
#
# Note: Don't delete entries from here - mark them as "obsolete" instead,
# unless otherwise stated below.
@@ -24,7 +24,7 @@
./lib/libblocklist.so.0.0 base-sys-shlib dynamicroot
./lib/libc.so base-sys-shlib dynamicroot
./lib/libc.so.12 base-sys-shlib dynamicroot
-./lib/libc.so.12.219 base-sys-shlib dynamicroot
+./lib/libc.so.12.220 base-sys-shlib dynamicroot
./lib/libcrypt.so base-sys-shlib dynamicroot
./lib/libcrypt.so.1 base-sys-shlib dynamicroot
./lib/libcrypt.so.1.0 base-sys-shlib dynamicroot
@@ -251,7 +251,7 @@
./usr/lib/libc++.so.1.0 base-sys-shlib compatfile,libcxx
./usr/lib/libc.so base-sys-shlib compatfile
./usr/lib/libc.so.12 base-sys-shlib compatfile
-./usr/lib/libc.so.12.219 base-sys-shlib compatfile
+./usr/lib/libc.so.12.220 base-sys-shlib compatfile
./usr/lib/libcbor.so base-sys-shlib compatfile
./usr/lib/libcbor.so.0 base-sys-shlib compatfile
./usr/lib/libcbor.so.0.5 base-sys-shlib compatfile
Index: src/distrib/sets/lists/debug/shl.mi
diff -u src/distrib/sets/lists/debug/shl.mi:1.286 src/distrib/sets/lists/debug/shl.mi:1.287
--- src/distrib/sets/lists/debug/shl.mi:1.286 Sat Oct 16 07:01:03 2021
+++ src/distrib/sets/lists/debug/shl.mi Mon Nov 1 05:53:45 2021
@@ -1,10 +1,10 @@
-# $NetBSD: shl.mi,v 1.286 2021/10/16 07:01:03 skrll Exp $
+# $NetBSD: shl.mi,v 1.287 2021/11/01 05:53:45 thorpej Exp $
./usr/lib/libbfd_g.a comp-c-debuglib debuglib,compatfile,binutils
./usr/libdata/debug/lib base-sys-usr debug,dynamicroot,compatdir
./usr/libdata/debug/lib/libavl.so.0.0.debug comp-zfs-debug debug,dynamicroot,zfs
./usr/libdata/debug/lib/libblacklist.so.0.0.debug comp-obsolete obsolete,compatfile
./usr/libdata/debug/lib/libblocklist.so.0.0.debug comp-sys-debug debug,dynamicroot
-./usr/libdata/debug/lib/libc.so.12.219.debug comp-sys-debug debug,dynamicroot
+./usr/libdata/debug/lib/libc.so.12.220.debug comp-sys-debug debug,dynamicroot
./usr/libdata/debug/lib/libcrypt.so.1.0.debug comp-sys-debug debug,dynamicroot
./usr/libdata/debug/lib/libcrypto.so.12.0.debug comp-sys-debug debug,dynamicroot,openssl=10
./usr/libdata/debug/lib/libcrypto.so.14.0.debug comp-sys-debug debug,dynamicroot,openssl=11
@@ -84,7 +84,7 @@
./usr/libdata/debug/usr/lib/libbsdmalloc.so.0.0.debug comp-sys-debug debug,compatfile
./usr/libdata/debug/usr/lib/libbz2.so.1.1.debug comp-sys-debug debug,compatfile
./usr/libdata/debug/usr/lib/libc++.so.1.0.debug comp-sys-debug debug,compatfile,libcxx
-./usr/libdata/debug/usr/lib/libc.so.12.219.debug comp-sys-debug debug,compatfile
+./usr/libdata/debug/usr/lib/libc.so.12.220.debug comp-sys-debug debug,compatfile
./usr/libdata/debug/usr/lib/libcbor.so.0.5.debug comp-sys-debug debug,compatfile
./usr/libdata/debug/usr/lib/libcom_err.so.8.0.debug comp-krb5-debug debug,compatfile,kerberos
./usr/libdata/debug/usr/lib/libcrypt.so.1.0.debug comp-sys-debug debug,compatfile
Index: src/include/signal.h
diff -u src/include/signal.h:1.57 src/include/signal.h:1.58
--- src/include/signal.h:1.57 Tue Jan 8 17:35:42 2019
+++ src/include/signal.h Mon Nov 1 05:53:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.57 2019/01/08 17:35:42 joerg Exp $ */
+/* $NetBSD: signal.h,v 1.58 2021/11/01 05:53:45 thorpej Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -66,7 +66,7 @@ int signalnumber(const char *);
#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
defined(_NETBSD_SOURCE)
int kill(pid_t, int);
-int __libc_sigaction14(int, const struct sigaction * __restrict,
+int __sigaction_siginfo(int, const struct sigaction * __restrict,
struct sigaction * __restrict);
#if (_POSIX_C_SOURCE - 0L) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
@@ -83,7 +83,7 @@ int __libc_thr_sigsetmask(int, const sig
#ifndef __LIBC12_SOURCE__
int sigaction(int, const struct sigaction * __restrict,
- struct sigaction * __restrict) __RENAME(__sigaction14);
+ struct sigaction * __restrict) __RENAME(__sigaction_siginfo);
int sigaddset(sigset_t *, int) __RENAME(__sigaddset14);
int sigdelset(sigset_t *, int) __RENAME(__sigdelset14);
int sigemptyset(sigset_t *) __RENAME(__sigemptyset14);
@@ -91,7 +91,7 @@ int sigfillset(sigset_t *) __RENAME(__si
int sigismember(const sigset_t *, int) __RENAME(__sigismember14);
int sigpending(sigset_t *) __RENAME(__sigpending14);
int sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict)
- __RENAME(__sigprocmask14);
+ __RENAME(__sigprocmask14);
int sigsuspend(const sigset_t *) __RENAME(__sigsuspend14);
#if defined(__c99inline) || defined(__SIGSETOPS_BODY)
@@ -211,6 +211,8 @@ int sigblock(int);
int sigsetmask(int);
#endif /* _NETBSD_SOURCE */
+int __sigtramp_check_np(void *);
+
#endif /* _POSIX_C_SOURCE || _XOPEN_SOURCE || _NETBSD_SOURCE */
__END_DECLS
Index: src/lib/libc/shlib_version
diff -u src/lib/libc/shlib_version:1.292 src/lib/libc/shlib_version:1.293
--- src/lib/libc/shlib_version:1.292 Sun Sep 19 15:51:28 2021
+++ src/lib/libc/shlib_version Mon Nov 1 05:53:45 2021
@@ -1,4 +1,4 @@
-# $NetBSD: shlib_version,v 1.292 2021/09/19 15:51:28 thorpej Exp $
+# $NetBSD: shlib_version,v 1.293 2021/11/01 05:53:45 thorpej Exp $
# Remember to update distrib/sets/lists/base/shl.* when changing
#
# things we wish to do on next major version bump:
@@ -54,4 +54,4 @@
# - the syscall stubs for the (obsolete) lfs syscalls should be removed
# - remove tzsetwall(3), upstream has removed it
major=12
-minor=219
+minor=220
Index: src/lib/libc/compat/sys/Makefile.inc
diff -u src/lib/libc/compat/sys/Makefile.inc:1.10 src/lib/libc/compat/sys/Makefile.inc:1.11
--- src/lib/libc/compat/sys/Makefile.inc:1.10 Sun Sep 22 22:59:38 2019
+++ src/lib/libc/compat/sys/Makefile.inc Mon Nov 1 05:53:45 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.10 2019/09/22 22:59:38 christos Exp $
+# $NetBSD: Makefile.inc,v 1.11 2021/11/01 05:53:45 thorpej Exp $
.PATH: ${COMPATDIR}/sys
SRCS+= compat_getdents.c compat_getdirentries.c compat_msync.c \
@@ -13,7 +13,8 @@ SRCS+= compat_getdents.c compat_getdiren
compat_mqueue.c compat__lwp_park.c compat_lfs_segwait.c compat_kevent.c \
compat___ntp_gettime30.c compat___semctl13.c compat___shmctl13.c \
compat___msgctl13.c compat___lwp_park50.c \
- compat___fhstatvfs140.c compat___fhstatvfs40.c
+ compat___fhstatvfs140.c compat___fhstatvfs40.c \
+ compat___sigaction14_sigtramp.c
MAN+= getdirentries.3
Index: src/lib/libc/sys/Makefile.inc
diff -u src/lib/libc/sys/Makefile.inc:1.249 src/lib/libc/sys/Makefile.inc:1.250
--- src/lib/libc/sys/Makefile.inc:1.249 Sun Oct 31 22:24:36 2021
+++ src/lib/libc/sys/Makefile.inc Mon Nov 1 05:53:45 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.249 2021/10/31 22:24:36 thorpej Exp $
+# $NetBSD: Makefile.inc,v 1.250 2021/11/01 05:53:45 thorpej Exp $
# @(#)Makefile.inc 8.3 (Berkeley) 10/24/94
# sys sources
@@ -21,7 +21,7 @@ SRCS+= __clone.S __vfork14.S brk.S fork.
_LSRC+= Lint___clone.c Lint___vfork14.c Lint_brk.c Lint_clone.c \
Lint_getcontext.c Lint_pipe.c Lint_ptrace.c \
- Lint_sbrk.c Lint___sigaction14.c Lint_syscall.c Lint___syscall.c \
+ Lint_sbrk.c Lint___sigaction_siginfo.c Lint_syscall.c Lint___syscall.c \
LintSysNormal.c LintSysNoerr.c LintSysPseudoNoerr.c
.if ${MKLINT} != "no"
@@ -90,7 +90,7 @@ ASM_GLUE+= tmp___${glue:.c=}50.S
.endfor
# modules with default implementations on all architectures:
-SRCS+= __sigaction14_sigtramp.c
+SRCS+= __sigaction_siginfo.c
ASM=\
__acl_get_link.S __acl_set_link.S __acl_delete_link.S \
Added files:
Index: src/lib/libc/compat/sys/compat___sigaction14_sigtramp.c
diff -u /dev/null src/lib/libc/compat/sys/compat___sigaction14_sigtramp.c:1.1
--- /dev/null Mon Nov 1 05:53:46 2021
+++ src/lib/libc/compat/sys/compat___sigaction14_sigtramp.c Mon Nov 1 05:53:45 2021
@@ -0,0 +1,94 @@
+/* $NetBSD: compat___sigaction14_sigtramp.c,v 1.1 2021/11/01 05:53:45 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#if defined(LIBC_SCCS) && !defined(lint)
+__RCSID("$NetBSD: compat___sigaction14_sigtramp.c,v 1.1 2021/11/01 05:53:45 thorpej Exp $");
+#endif /* LIBC_SCCS and not lint */
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "extern.h"
+
+#define C(a,b) __CONCAT(a,b)
+#define __SIGTRAMP_SIGCONTEXT \
+ C(__sigtramp_sigcontext_,__SIGTRAMP_SIGCONTEXT_VERSION)
+#define __SIGTRAMP_SIGINFO \
+ C(__sigtramp_siginfo_,__SIGTRAMP_SIGINFO_VERSION)
+
+__weak_alias(__sigaction14, __libc_sigaction14)
+
+#define __LIBC12_SOURCE__
+
+/*
+ * The symbol must remain, but we don't want this exposed in a header
+ * anywhere, so the prototype goes here.
+ */
+int __libc_sigaction14(int, const struct sigaction *, struct sigaction *);
+
+int
+__libc_sigaction14(int sig, const struct sigaction *act, struct sigaction *oact)
+{
+ extern const char __SIGTRAMP_SIGINFO[];
+
+ /*
+ * If no sigaction, use the "default" trampoline since it won't
+ * be used.
+ */
+ if (act == NULL)
+ return __sigaction_sigtramp(sig, act, oact, NULL, 0);
+
+#if defined(__HAVE_STRUCT_SIGCONTEXT) && defined(__LIBC12_SOURCE__)
+ /*
+ * We select the non-SA_SIGINFO trampoline if SA_SIGINFO is not
+ * set in the sigaction.
+ */
+ if ((act->sa_flags & SA_SIGINFO) == 0) {
+ extern const char __SIGTRAMP_SIGCONTEXT[];
+ int sav = errno;
+ int rv = __sigaction_sigtramp(sig, act, oact,
+ __SIGTRAMP_SIGCONTEXT, __SIGTRAMP_SIGCONTEXT_VERSION);
+ if (rv >= 0 || errno != EINVAL)
+ return rv;
+ errno = sav;
+ }
+#endif
+
+ /*
+ * If SA_SIGINFO was specified or the compatibility trampolines
+ * can't be used, use the siginfo trampoline.
+ */
+ return __sigaction_sigtramp(sig, act, oact,
+ __SIGTRAMP_SIGINFO, __SIGTRAMP_SIGINFO_VERSION);
+}
Index: src/lib/libc/sys/Lint___sigaction_siginfo.c
diff -u /dev/null src/lib/libc/sys/Lint___sigaction_siginfo.c:1.1
--- /dev/null Mon Nov 1 05:53:46 2021
+++ src/lib/libc/sys/Lint___sigaction_siginfo.c Mon Nov 1 05:53:45 2021
@@ -0,0 +1,11 @@
+/* $NetBSD: Lint___sigaction_siginfo.c,v 1.1 2021/11/01 05:53:45 thorpej Exp $ */
+
+#include <signal.h>
+
+/*ARGSUSED*/
+int
+__sigaction_siginfo(int sig, const struct sigaction *nact,
+ struct sigaction *oact)
+{
+ return 0;
+}
Index: src/lib/libc/sys/__sigaction_siginfo.c
diff -u /dev/null src/lib/libc/sys/__sigaction_siginfo.c:1.1
--- /dev/null Mon Nov 1 05:53:46 2021
+++ src/lib/libc/sys/__sigaction_siginfo.c Mon Nov 1 05:53:45 2021
@@ -0,0 +1,62 @@
+/* $NetBSD: __sigaction_siginfo.c,v 1.1 2021/11/01 05:53:45 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#if defined(LIBC_SCCS) && !defined(lint)
+__RCSID("$NetBSD: __sigaction_siginfo.c,v 1.1 2021/11/01 05:53:45 thorpej Exp $");
+#endif /* LIBC_SCCS and not lint */
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "extern.h"
+
+#define C(a,b) __CONCAT(a,b)
+#define __SIGTRAMP_SIGINFO \
+ C(__sigtramp_siginfo_,__SIGTRAMP_SIGINFO_VERSION)
+
+/*
+ * This serves no purpose except as a marker that this function should
+ * simply be renamed "sigaction" when libc's major version is bumped.
+ */
+#define __LIBC12_SOURCE__
+
+int
+__sigaction_siginfo(int sig, const struct sigaction *act,
+ struct sigaction *oact)
+{
+ extern const char __SIGTRAMP_SIGINFO[];
+
+ return __sigaction_sigtramp(sig, act, oact,
+ __SIGTRAMP_SIGINFO, __SIGTRAMP_SIGINFO_VERSION);
+}