]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: detect and use sigdescr_np() if available 38952/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:16:51 +0000 (16:16 +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)

Conflicts:
        CMakeLists.txt
cmake/modules/CephChecks.cmake
- CephChecks.cmake file does not exist in nautilus; manually cherry-picked the
  change in that file to top-level CMakeLists.txt

CMakeLists.txt
src/global/signal_handler.h
src/include/config-h.in.cmake

index 5b7a67bec60285e45d5a52ecbb677e9ec91b28fe..bdeea6f9c7dea6776238b9583877fa439290b203 100644 (file)
@@ -105,6 +105,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 ccce8fe0017053d43633712cb73e507245381841..acced696e368157c07a787bf1eb7ace87847e7f4 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