Mark exit1() and sigexit() as non-returning
authorvisa <visa@openbsd.org>
Fri, 26 Nov 2021 04:42:13 +0000 (04:42 +0000)
committervisa <visa@openbsd.org>
Fri, 26 Nov 2021 04:42:13 +0000 (04:42 +0000)
The late 1990s reasons for avoiding __dead with exit1() should not apply
with the current compilers.

This fixes compiler warnings about uninitialized variables in trap.c
on mips64.

Discussed with guenther@ and miod@

sys/kern/kern_kthread.c
sys/sys/proc.h
sys/sys/signalvar.h

index 0360c22..11cf5c0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_kthread.c,v 1.45 2021/11/24 12:40:40 visa Exp $  */
+/*     $OpenBSD: kern_kthread.c,v 1.46 2021/11/26 04:42:13 visa Exp $  */
 /*     $NetBSD: kern_kthread.c,v 1.3 1998/12/22 21:21:36 kleink Exp $  */
 
 /*-
@@ -94,12 +94,7 @@ kthread_exit(int ecode)
                    curproc->p_p->ps_comm, curproc->p_tid, ecode);
 
        exit1(curproc, ecode, 0, EXIT_NORMAL);
-
-       /*
-        * XXX Fool the compiler.  Making exit1() __dead is a can
-        * XXX of worms right now.
-        */
-       for (;;);
+       /* NOTREACHED */
 }
 
 struct kthread_q {
index 52192e2..c418ba9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: proc.h,v 1.315 2021/10/23 14:53:02 claudio Exp $      */
+/*     $OpenBSD: proc.h,v 1.316 2021/11/26 04:42:13 visa Exp $ */
 /*     $NetBSD: proc.h,v 1.44 1996/04/22 01:23:21 christos Exp $       */
 
 /*-
@@ -571,7 +571,7 @@ void        endtsleep(void *);
 int    wakeup_proc(struct proc *, const volatile void *);
 void   unsleep(struct proc *);
 void   reaper(void *);
-void   exit1(struct proc *, int, int, int);
+__dead void exit1(struct proc *, int, int, int);
 void   exit2(struct proc *);
 int    dowait4(struct proc *, pid_t, int *, int, struct rusage *,
            register_t *);
index 3f42de5..4990cf6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: signalvar.h,v 1.51 2021/11/24 10:28:55 claudio Exp $  */
+/*     $OpenBSD: signalvar.h,v 1.52 2021/11/26 04:42:13 visa Exp $     */
 /*     $NetBSD: signalvar.h,v 1.17 1996/04/22 01:23:31 christos Exp $  */
 
 /*
@@ -103,7 +103,7 @@ void        ptsignal(struct proc *p, int sig, enum signal_type type);
 void   siginit(struct sigacts *);
 void   trapsignal(struct proc *p, int sig, u_long code, int type,
            union sigval val);
-void   sigexit(struct proc *, int);
+__dead void sigexit(struct proc *, int);
 void   sigabort(struct proc *);
 int    sigismasked(struct proc *, int);
 int    sigonstack(size_t);