[PATCH] gdb: don't pass nullptr to sigwait

Andrew Burgess aburgess@redhat.com
Wed Dec 29 14:40:49 GMT 2021


I tried building GDB on GNU/Hurd, and ran into this warning:

  gdbsupport/scoped_ignore_signal.h:78:16: error: null argument where non-null required (argument 2) [-Werror=nonnull]

This is because in this commit:

  commit 99624310dd82542c389c89c2e55d8cae36bb74e1
  Date:   Sun Jun 27 15:13:14 2021 -0400

      gdb: fall back on sigpending + sigwait if sigtimedwait is not available

A call to sigwait was introduced that passes nullptr as the second
argument, this call is only reached if sigtimedwait is not supported.

The original patch was written for macOS, I assume on that target
passing nullptr as the second argument is fine.

On my GNU/Linux box, the man-page for sigwait doesn't mention that
nullptr is allowed for the second argument, so my assumption would be
that nullptr is not OK, and, if I change the '#ifdef
HAVE_SIGTIMEDWAIT' introduced by the above patch to '#if 0', and
rebuild on GNU/Linux, I see the same warning that I see on GNU/Hurd.

I propose that we stop passing nullptr as the second argument to
sigwait, and instead pass a valid int pointer.  The value returned in
the int can then be used in an assert.

For testing, I (locally) made the change to the #ifdef I mentioned
above, compiled GDB, and ran the usual tests, this meant I was using
sigwait instead on sigtimedwait on GNU/Linux, I saw no regressions.
---
 gdbsupport/scoped_ignore_signal.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gdbsupport/scoped_ignore_signal.h b/gdbsupport/scoped_ignore_signal.h
index 57dd4b6d402..6e69044128c 100644
--- a/gdbsupport/scoped_ignore_signal.h
+++ b/gdbsupport/scoped_ignore_signal.h
@@ -75,7 +75,12 @@ class scoped_ignore_signal
 
 	    sigpending (&pending);
 	    if (sigismember (&pending, Sig))
-	      sigwait (&set, nullptr);
+	      {
+		int sig_found;
+
+		sigwait (&set, &sig_found);
+		gdb_assert (sig_found == Sig);
+	      }
 #endif
 	  }
 
-- 
2.25.4



More information about the Gdb-patches mailing list