Module Name: src
Committed By: christos
Date: Tue Oct 26 16:16:38 UTC 2021
Modified Files:
src/lib/libc/sys: Makefile.inc
src/sys/arch/alpha/include: signal.h
src/sys/arch/arm/include: signal.h
src/sys/arch/hppa/include: signal.h
src/sys/arch/i386/include: signal.h
src/sys/arch/m68k/include: signal.h
src/sys/arch/mips/include: signal.h
src/sys/arch/powerpc/include: signal.h
src/sys/arch/sh3/include: signal.h
src/sys/arch/sparc/include: signal.h
src/sys/arch/vax/include: signal.h
Added Files:
src/lib/libc/sys: __sigaction14_sigtramp.c
Removed Files:
src/lib/libc/arch/aarch64/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/alpha/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/arm/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/hppa/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/i386/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/ia64/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/m68k/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/mips/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/or1k/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/powerpc/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/powerpc64/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/riscv/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/sh3/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/sparc/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/sparc64/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/vax/sys: __sigaction14_sigtramp.c
src/lib/libc/arch/x86_64/sys: __sigaction14_sigtramp.c
Log Message:
Merge all MD __sigaction14_sigtramp.c copies into one:
- sparc and sparc64 were not using version 0 sigcontext when there were
no arguments in the signal version. This was probably a bug.
- vax is using +1 the version numbers of the other archs.
- Only hppa was defining __LIBC12_SOURCE__ so it was getting a working
sigcontext before. all the other ports that supported sigcontext had
the compat code disabled.
[pointed out by thorpej, thanks!]
If we want to remove sigcontext support from userland at least now there
is less work to do so.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r0 src/lib/libc/arch/aarch64/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.7 -r0 src/lib/libc/arch/alpha/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.7 -r0 src/lib/libc/arch/arm/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.4 -r0 src/lib/libc/arch/hppa/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.12 -r0 src/lib/libc/arch/i386/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.2 -r0 src/lib/libc/arch/ia64/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.9 -r0 src/lib/libc/arch/m68k/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.7 -r0 src/lib/libc/arch/mips/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.1 -r0 src/lib/libc/arch/or1k/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.9 -r0 src/lib/libc/arch/powerpc/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.2 -r0 \
src/lib/libc/arch/powerpc64/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.1 -r0 src/lib/libc/arch/riscv/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.8 -r0 src/lib/libc/arch/sh3/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.7 -r0 src/lib/libc/arch/sparc/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.9 -r0 src/lib/libc/arch/sparc64/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.10 -r0 src/lib/libc/arch/vax/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.11 -r0 src/lib/libc/arch/x86_64/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.247 -r1.248 src/lib/libc/sys/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/lib/libc/sys/__sigaction14_sigtramp.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/alpha/include/signal.h
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/include/signal.h
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/hppa/include/signal.h
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/i386/include/signal.h
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/m68k/include/signal.h
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/mips/include/signal.h
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/powerpc/include/signal.h
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sh3/include/signal.h
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sparc/include/signal.h
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/vax/include/signal.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/sys/Makefile.inc
diff -u src/lib/libc/sys/Makefile.inc:1.247 src/lib/libc/sys/Makefile.inc:1.248
--- src/lib/libc/sys/Makefile.inc:1.247 Fri Oct 1 13:13:44 2021
+++ src/lib/libc/sys/Makefile.inc Tue Oct 26 12:16:36 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.247 2021/10/01 17:13:44 christos Exp $
+# $NetBSD: Makefile.inc,v 1.248 2021/10/26 16:16:36 christos Exp $
# @(#)Makefile.inc 8.3 (Berkeley) 10/24/94
# sys sources
@@ -10,7 +10,7 @@ SRCS+= cpuset.c
SRCS+= accept4.c clock_getcpuclockid.c eventfd_read.c eventfd_write.c \
posix_fadvise.c posix_madvise.c ppoll.c sched.c sigqueue.c \
sigtimedwait.c sigwait.c sigwaitinfo.c statvfs.c swapon.c semctl.c \
- vadvise.c
+ vadvise.c __sigaction14_sigtramp.c
.if ${RUMPRUN} != "yes"
# modules with non-default implementations on at least one architecture:
Index: src/sys/arch/alpha/include/signal.h
diff -u src/sys/arch/alpha/include/signal.h:1.17 src/sys/arch/alpha/include/signal.h:1.18
--- src/sys/arch/alpha/include/signal.h:1.17 Mon Mar 25 15:24:30 2019
+++ src/sys/arch/alpha/include/signal.h Tue Oct 26 12:16:34 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.17 2019/03/25 19:24:30 maxv Exp $ */
+/* $NetBSD: signal.h,v 1.18 2021/10/26 16:16:34 christos Exp $ */
/*
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -66,6 +66,7 @@ struct sigcontext13 {
#endif /* _KERNEL && COMPAT_13 */
#if defined(_LIBC) || (defined(_KERNEL) && defined(COMPAT_16))
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
long sc_onstack; /* sigstack state to restore */
long __sc_mask13; /* signal mask to restore (old style) */
Index: src/sys/arch/arm/include/signal.h
diff -u src/sys/arch/arm/include/signal.h:1.16 src/sys/arch/arm/include/signal.h:1.17
--- src/sys/arch/arm/include/signal.h:1.16 Wed Oct 6 01:33:15 2021
+++ src/sys/arch/arm/include/signal.h Tue Oct 26 12:16:34 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.16 2021/10/06 05:33:15 skrll Exp $ */
+/* $NetBSD: signal.h,v 1.17 2021/10/26 16:16:34 christos Exp $ */
/*
* Copyright (c) 1994-1996 Mark Brinicombe.
@@ -92,6 +92,7 @@ struct sigcontext13 {
};
#endif /* __LIBC12_SOURCE__ || _KERNEL */
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int __sc_mask13; /* signal mask to restore (old style) */
Index: src/sys/arch/hppa/include/signal.h
diff -u src/sys/arch/hppa/include/signal.h:1.8 src/sys/arch/hppa/include/signal.h:1.9
--- src/sys/arch/hppa/include/signal.h:1.8 Tue Apr 16 08:25:17 2019
+++ src/sys/arch/hppa/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.8 2019/04/16 12:25:17 skrll Exp $ */
+/* $NetBSD: signal.h,v 1.9 2021/10/26 16:16:35 christos Exp $ */
/* $OpenBSD: signal.h,v 1.1 1998/06/23 19:45:27 mickey Exp $ */
@@ -48,7 +48,8 @@ typedef int sig_atomic_t;
* to the handler to allow it to restore state properly if
* a non-standard exit is performed.
*/
-struct sigcontext {
+#define __HAVE_STRUCT_SIGCONTEXT
+struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int __sc_mask13; /* signal mask to restore (old style) */
int sc_sp; /* sp to restore */
Index: src/sys/arch/i386/include/signal.h
diff -u src/sys/arch/i386/include/signal.h:1.29 src/sys/arch/i386/include/signal.h:1.30
--- src/sys/arch/i386/include/signal.h:1.29 Wed Nov 19 13:35:59 2008
+++ src/sys/arch/i386/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.29 2008/11/19 18:35:59 ad Exp $ */
+/* $NetBSD: signal.h,v 1.30 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991 Regents of the University of California.
@@ -78,6 +78,7 @@ struct sigcontext13 {
int sc_err;
};
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_gs;
int sc_fs;
Index: src/sys/arch/m68k/include/signal.h
diff -u src/sys/arch/m68k/include/signal.h:1.25 src/sys/arch/m68k/include/signal.h:1.26
--- src/sys/arch/m68k/include/signal.h:1.25 Tue Jan 27 15:30:12 2009
+++ src/sys/arch/m68k/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.25 2009/01/27 20:30:12 martin Exp $ */
+/* $NetBSD: signal.h,v 1.26 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991 Regents of the University of California.
@@ -65,6 +65,7 @@ struct sigcontext13 {
#endif /* __LIBC12_SOURCE__ || _KERNEL */
#if defined(_LIBC) || defined(_KERNEL)
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int __sc_mask13; /* signal mask to restore (old style) */
Index: src/sys/arch/mips/include/signal.h
diff -u src/sys/arch/mips/include/signal.h:1.30 src/sys/arch/mips/include/signal.h:1.31
--- src/sys/arch/mips/include/signal.h:1.30 Sun Jan 24 11:00:29 2016
+++ src/sys/arch/mips/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.30 2016/01/24 16:00:29 christos Exp $ */
+/* $NetBSD: signal.h,v 1.31 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -106,6 +106,7 @@ struct sigcontext { \
_SIGCONTEXT_DEFINE(sigcontext, int, int);
#endif
#ifdef _LIBC
+#define __HAVE_STRUCT_SIGCONTEXT
_SIGCONTEXT_DEFINE(sigcontext, __register_t, __fpregister_t);
#endif
Index: src/sys/arch/powerpc/include/signal.h
diff -u src/sys/arch/powerpc/include/signal.h:1.22 src/sys/arch/powerpc/include/signal.h:1.23
--- src/sys/arch/powerpc/include/signal.h:1.22 Mon Jul 6 05:34:17 2020
+++ src/sys/arch/powerpc/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.22 2020/07/06 09:34:17 rin Exp $ */
+/* $NetBSD: signal.h,v 1.23 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -54,6 +54,7 @@ struct sigcontext13 {
/*
* struct sigcontext introduced in NetBSD 1.4
*/
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_onstack; /* saved onstack flag */
int __sc_mask13; /* saved signal mask (old style) */
Index: src/sys/arch/sh3/include/signal.h
diff -u src/sys/arch/sh3/include/signal.h:1.14 src/sys/arch/sh3/include/signal.h:1.15
--- src/sys/arch/sh3/include/signal.h:1.14 Wed Nov 29 12:43:20 2017
+++ src/sys/arch/sh3/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.14 2017/11/29 17:43:20 christos Exp $ */
+/* $NetBSD: signal.h,v 1.15 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991 Regents of the University of California.
@@ -77,6 +77,7 @@ struct sigcontext13 {
};
#endif
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_spc;
int sc_ssr;
Index: src/sys/arch/sparc/include/signal.h
diff -u src/sys/arch/sparc/include/signal.h:1.23 src/sys/arch/sparc/include/signal.h:1.24
--- src/sys/arch/sparc/include/signal.h:1.23 Wed Nov 29 12:49:03 2017
+++ src/sys/arch/sparc/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.23 2017/11/29 17:49:03 christos Exp $ */
+/* $NetBSD: signal.h,v 1.24 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,6 +78,7 @@ struct sigcontext13 {
long sc_o0; /* %o0 to restore */
};
#endif /* __LIBC12_SOURCE__ || _KERNEL */
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int __sc_mask13; /* signal mask to restore (old style) */
Index: src/sys/arch/vax/include/signal.h
diff -u src/sys/arch/vax/include/signal.h:1.17 src/sys/arch/vax/include/signal.h:1.18
--- src/sys/arch/vax/include/signal.h:1.17 Sat Dec 29 06:30:12 2018
+++ src/sys/arch/vax/include/signal.h Tue Oct 26 12:16:35 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.17 2018/12/29 11:30:12 maxv Exp $ */
+/* $NetBSD: signal.h,v 1.18 2021/10/26 16:16:35 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991 Regents of the University of California.
@@ -36,6 +36,9 @@
#ifndef _VAX_SIGNAL_H_
#define _VAX_SIGNAL_H_
+#define __SIGTRAMP_SIGCONTEXT_VERSION 2
+#define __SIGTRAMP_SIGINFO_VERSION 3
+
#include <sys/featuretest.h>
#include <sys/siginfo.h>
#include <machine/trap.h>
@@ -63,6 +66,7 @@ struct sigcontext13 {
};
#endif /* __LIBC12_SOURCE__ || _KERNEL */
+#define __HAVE_STRUCT_SIGCONTEXT
struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int __sc_mask13; /* signal mask to restore (old style) */
Added files:
Index: src/lib/libc/sys/__sigaction14_sigtramp.c
diff -u /dev/null src/lib/libc/sys/__sigaction14_sigtramp.c:1.1
--- /dev/null Tue Oct 26 12:16:38 2021
+++ src/lib/libc/sys/__sigaction14_sigtramp.c Tue Oct 26 12:16:36 2021
@@ -0,0 +1,94 @@
+/* $NetBSD: __sigaction14_sigtramp.c,v 1.1 2021/10/26 16:16:36 christos 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: __sigaction14_sigtramp.c,v 1.1 2021/10/26 16:16:36 christos Exp $");
+#endif /* LIBC_SCCS and not lint */
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "extern.h"
+
+#ifndef __SIGTRAMP_SIGCONTEXT_VERSION
+#define __SIGTRAMP_SIGCONTEXT_VERSION 1
+#endif
+#ifndef __SIGTRAMP_SIGINFO_VERSION
+#define __SIGTRAMP_SIGINFO_VERSION 2
+#endif
+#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__
+
+int
+__libc_sigaction14(int sig, const struct sigaction *act, struct sigaction *oact)
+{
+ extern const int __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 int __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);
+}