]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
syscall: don't fail if __NR_signalfd is not defined 3501/head
authorFabrice Fontaine <fontaine.fabrice@gmail.com>
Tue, 28 Jul 2020 10:31:31 +0000 (12:31 +0200)
committerFabrice Fontaine <fontaine.fabrice@gmail.com>
Tue, 28 Jul 2020 10:44:43 +0000 (12:44 +0200)
lxc fails to build if __NR_signalfd is not defined since version 4.0.0
and
https://github.com/lxc/lxc/commit/bed09c9cc0bec7bbd2442fcce4a2a0f03994cb09

However, some architectures don't define __NR_signalfd but only
__NR_signalfd4. This is the case for example for nios2 or csky:
https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/csky/arch-syscall.h

Fixes:
 - http://autobuild.buildroot.org/results/75096a48d2dbda57459523db3ed0952e63f93535

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
src/lxc/syscall_numbers.h
src/lxc/syscall_wrappers.h

index e2e78837867cf07230fb303f53ca2ac8c671d8ac..72e4ffe46015da69cb18d5c9becb71df2b09cc1f 100644 (file)
                #if _MIPS_SIM == _MIPS_SIM_ABI64        /* n64 */
                        #define __NR_signalfd 5276
                #endif
-       #else
-               #define -1
-               #warning "__NR_signalfd not defined for your architecture"
        #endif
 #endif
 
index 220ef65fded843c884986f4aaeb4f2bc14270f41..6aaa43722622a488361cfed9730d7ff6ef443051 100644 (file)
@@ -112,8 +112,10 @@ static inline int signalfd(int fd, const sigset_t *mask, int flags)
        int retval;
 
        retval = syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags);
+#ifdef __NR_signalfd
        if (errno == ENOSYS && flags == 0)
                retval = syscall(__NR_signalfd, fd, mask, _NSIG / 8);
+#endif
 
        return retval;
 }