0001-syscall-don-t-fail-if-__NR_signalfd-is-not-defined.patch 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. From 3341e204dc1e1da6ecbc1ffbe59fca33f23ca557 Mon Sep 17 00:00:00 2001
  2. From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  3. Date: Tue, 28 Jul 2020 12:31:31 +0200
  4. Subject: [PATCH] syscall: don't fail if __NR_signalfd is not defined
  5. lxc fails to build if __NR_signalfd is not defined since version 4.0.0
  6. and
  7. https://github.com/lxc/lxc/commit/bed09c9cc0bec7bbd2442fcce4a2a0f03994cb09
  8. However, some architectures don't define __NR_signalfd but only
  9. __NR_signalfd4. This is the case for example for nios2 or csky:
  10. https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
  11. https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/csky/arch-syscall.h
  12. Fixes:
  13. - http://autobuild.buildroot.org/results/75096a48d2dbda57459523db3ed0952e63f93535
  14. Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  15. [Retrieved from:
  16. https://github.com/lxc/lxc/commit/3341e204dc1e1da6ecbc1ffbe59fca33f23ca557]
  17. ---
  18. src/lxc/syscall_numbers.h | 3 ---
  19. src/lxc/syscall_wrappers.h | 2 ++
  20. 2 files changed, 2 insertions(+), 3 deletions(-)
  21. diff --git a/src/lxc/syscall_numbers.h b/src/lxc/syscall_numbers.h
  22. index e2e7883786..72e4ffe460 100644
  23. --- a/src/lxc/syscall_numbers.h
  24. +++ b/src/lxc/syscall_numbers.h
  25. @@ -228,9 +228,6 @@
  26. #if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
  27. #define __NR_signalfd 5276
  28. #endif
  29. - #else
  30. - #define -1
  31. - #warning "__NR_signalfd not defined for your architecture"
  32. #endif
  33. #endif
  34. diff --git a/src/lxc/syscall_wrappers.h b/src/lxc/syscall_wrappers.h
  35. index 220ef65fde..6aaa437226 100644
  36. --- a/src/lxc/syscall_wrappers.h
  37. +++ b/src/lxc/syscall_wrappers.h
  38. @@ -112,8 +112,10 @@ static inline int signalfd(int fd, const sigset_t *mask, int flags)
  39. int retval;
  40. retval = syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags);
  41. +#ifdef __NR_signalfd
  42. if (errno == ENOSYS && flags == 0)
  43. retval = syscall(__NR_signalfd, fd, mask, _NSIG / 8);
  44. +#endif
  45. return retval;
  46. }