]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: detect and use sigdescr_np() if available 38951/head
authorDavid Disseldorp <ddiss@suse.de>
Tue, 1 Sep 2020 11:49:21 +0000 (13:49 +0200)
committerNathan Cutler <ncutler@suse.com>
Mon, 18 Jan 2021 15:14:06 +0000 (16:14 +0100)
sys_siglist is deprecated with glibc 2.32. A new thread-safe and
async-signal safe sigdescr_np() function is provided, so use it if
available.

Fixes: https://tracker.ceph.com/issues/47187
Signed-off-by: David Disseldorp <ddiss@suse.de>
(cherry picked from commit b9b6faf66ae67648626470cb4fc3f0850ac4d842)

cmake/modules/CephChecks.cmake
src/global/signal_handler.h
src/include/config-h.in.cmake

index 23687283a7c693d0bc0c12adc3f34b57066b5dab..ca86dcbc73de8f7082d4da6eaa91c6fbacf3cd0e 100644 (file)
@@ -24,6 +24,7 @@ check_function_exists(strerror_r HAVE_Strerror_R)
 check_function_exists(name_to_handle_at HAVE_NAME_TO_HANDLE_AT)
 check_function_exists(pipe2 HAVE_PIPE2)
 check_function_exists(accept4 HAVE_ACCEPT4)
+check_function_exists(sigdescr_np HAVE_SIGDESCR_NP)
 
 include(CMakePushCheckState)
 cmake_push_check_state(RESET)
index 476724201aa9943d7f11e6f38ce9df71e71f92c9..c101b2e28733cdb517dc793a78ccf9dbf479c73a 100644 (file)
 
 typedef void (*signal_handler_t)(int);
 
-#ifndef HAVE_REENTRANT_STRSIGNAL
-# define sig_str(signum) sys_siglist[signum]
-#else
+#ifdef HAVE_SIGDESCR_NP
+# define sig_str(signum) sigdescr_np(signum)
+#elif HAVE_REENTRANT_STRSIGNAL
 # define sig_str(signum) strsignal(signum)
+#else
+# define sig_str(signum) sys_siglist[signum]
 #endif
 
 void install_sighandler(int signum, signal_handler_t handler, int flags);
index 722c1364911ad3e7369fa53d81d3b7bf582c4f77..ea0dcadb67f3f9daa17df5dd8ccfb2b6d82415cc 100644 (file)
 /* Define to 1 if you have sched.h. */
 #cmakedefine HAVE_SCHED 1
 
+/* Define to 1 if you have sigdescr_np. */
+#cmakedefine HAVE_SIGDESCR_NP 1
+
 /* Support SSE (Streaming SIMD Extensions) instructions */
 #cmakedefine HAVE_SSE