package/libcap: add patch to fix build on ARC, OpenRISC, Microblaze

Following the bump of libcap to version 2.76 in commit
e2eb2ee58b, the build started failing on
ARC, OpenRISC, Microblaze. The bug was reported upstream at
https://bugzilla.kernel.org/show_bug.cgi?id=219915 and was
subsequently fixed by upstream commit:

  https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=7a2eee56607218d017af8d26c2c41dba83629708

Which we backport in this commit.

Fixes:

  http://autobuild.buildroot.net/results/c99f461ac757d2934a353818a302a67ef3ad5cf5/ (ARC)
  http://autobuild.buildroot.net/results/8cae72f02d25a48287320d9c991f41761487e353/ (Microblaze)
  http://autobuild.buildroot.net/results/74e2c4d37c5b0ae2749c7d77ca7431bd0d510971/ (OpenRISC)

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Thomas Petazzoni
2025-04-18 23:41:43 +02:00
committed by Julien Olivain
parent e3329a1e82
commit 2bea32478d

View File

@@ -0,0 +1,56 @@
From 7a2eee56607218d017af8d26c2c41dba83629708 Mon Sep 17 00:00:00 2001
From: "Andrew G. Morgan" <morgan@kernel.org>
Date: Thu, 17 Apr 2025 20:20:09 -0700
Subject: [PATCH] First attempt at PSX support for microblaze, arc and
openrisc.
I found some confusing macrology for openrisc. I'm optimistic that
this is recognized with the __or1k__ gcc macro.
See for details:
https://bugzilla.kernel.org/show_bug.cgi?id=219915
Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
Upstream: https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=7a2eee56607218d017af8d26c2c41dba83629708
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
psx/psx_calls.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/psx/psx_calls.c b/psx/psx_calls.c
index 9662fbd..8195964 100644
--- a/psx/psx_calls.c
+++ b/psx/psx_calls.c
@@ -48,7 +48,8 @@
|| defined(__mips__) || defined(__loongarch__) \
|| defined(__powerpc__) || defined(__s390__) || defined(__riscv) \
|| defined(__alpha__) || defined(__hppa__) || defined(__sh__) \
- || defined(__m68k__) || defined(__sparc__)
+ || defined(__m68k__) || defined(__sparc__) || defined(__arc__) \
+ || defined(__microblaze__) || defined(__or1k__)
#undef _NSIG
#undef _NSIG_BPW
@@ -69,7 +70,8 @@
#if defined(__x86_64__) || defined(__i386__) \
|| defined(__arm__) \
- || defined(__powerpc__)
+ || defined(__powerpc__) \
+ || defined(__arc__)
/* field used */
#define SA_RESTORER 0x04000000
#endif /* architectures that use SA_RESTORER */
@@ -201,6 +203,8 @@ static void psx_posix_syscall_actor(int signum, siginfo_t *info, void *ignore) {
__asm__ __volatile__("\npsx_restorer:\n\tmov r7,#173\n\tswi 0\n");
#elif defined(__powerpc__)
__asm__ __volatile__("\npsx_restorer:\n\tli 0, 172\n\tsc\n");
+#elif defined(__arc__)
+ __asm__ __volatile__("\npsx_restorer:\n\tmov r8, 139\n\ttrap_s 0\n");
#else
#error "unsupported architecture - https://bugzilla.kernel.org/show_bug.cgi?id=219687"
#endif /* supported architectures */
--
2.49.0