libucontext: Update to latest upstream version 1.3.1
authorVolker Christian <me@vchrist.at>
Mon, 12 Aug 2024 11:38:53 +0000 (13:38 +0200)
committerTianling Shen <cnsztl@gmail.com>
Tue, 13 Aug 2024 08:22:17 +0000 (16:22 +0800)
Signed-off-by: Volker Christian <me@vchrist.at>
libs/libucontext/Makefile
libs/libucontext/patches/010-return_values_fix.patch [deleted file]
libs/libucontext/patches/010-trampoline_fix.patch [new file with mode: 0644]
libs/libucontext/patches/020-honor_return_values_fix.patch [deleted file]

index fd3b0f56267fbf1d5a3ef2156db2f1224dfcac6e..1154bfe7525c00e0edfe5e2407589b5929a22bc8 100644 (file)
@@ -1,17 +1,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libucontext
-PKG_VERSION:=1.2
+PKG_VERSION:=1.3.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/kaniini/libucontext/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=2657e087c493263e7bbbde152a5bc08ce22dc5a7970887ac4fd251b90b58401f
+PKG_SOURCE_URL:=https://codeload.github.com/kaniini/libucontext/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
+PKG_HASH:=1243ee9f03ad38e624f6844427b7bc1f0a05aa5de70f15f3b03805a364b971d6
 
 PKG_MAINTAINER:=Volker Christian <me@vchrist.at>
 PKG_LICENSE:=ISC
 PKG_LICENSE_FILES:=LICENSE
 
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
 PKG_BUILD_FLAGS:=no-mips16
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -36,7 +37,7 @@ define Package/libucontext-tests
 endef
 
 define Package/libucontext/description
-  Thie package is a development package aimed to be linked to
+  This package is a development package aimed to be linked to
   libraries/applications which need the SYS-V ucontext API.
 endef
 
diff --git a/libs/libucontext/patches/010-return_values_fix.patch b/libs/libucontext/patches/010-return_values_fix.patch
deleted file mode 100644 (file)
index 43bc87d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/arch/arm/swapcontext.S
-+++ b/arch/arm/swapcontext.S
-@@ -17,10 +17,12 @@ ALIAS(__swapcontext, libucontext_swapcon
- FUNC(libucontext_swapcontext)
-       /* copy all of the current registers into the ucontext structure */
--      add     r2, r0, #REG_OFFSET(0)
--      stmia   r2, {r0-r12}
-       str     r13, [r0,#REG_OFFSET(13)]
-       str     r14, [r0,#REG_OFFSET(15)]
-+      add     r2, r0, #REG_OFFSET(0)
-+      /* copy r0 with value 0 to indicate success (return value 0) */
-+      mov r0, #0
-+      stmia   r2, {r0-r12}
-       /* load new registers from the second ucontext structure */
-       add     r14, r1, #REG_OFFSET(0)
diff --git a/libs/libucontext/patches/010-trampoline_fix.patch b/libs/libucontext/patches/010-trampoline_fix.patch
new file mode 100644 (file)
index 0000000..676d584
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/meson.build
++++ b/meson.build
+@@ -40,7 +40,7 @@ if cpu in ['ppc', 'ppc64']
+     'arch' / cpu / 'retfromsyscall.c'
+   ]
+ endif
+-if cpu not in ['mips', 'mips64', 'ppc', 'ppc64', 's390x']
++if cpu not in ['loongarch64', 'mips', 'mips64', 'ppc', 'ppc64', 's390x', 'x86']
+   project_source_files += [
+     'arch' / cpu / 'trampoline.c'
+   ]
diff --git a/libs/libucontext/patches/020-honor_return_values_fix.patch b/libs/libucontext/patches/020-honor_return_values_fix.patch
deleted file mode 100644 (file)
index 4769dcd..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
---- a/test_libucontext.c
-+++ b/test_libucontext.c
-@@ -9,6 +9,9 @@
- #include <string.h>
- #include <libucontext/libucontext.h>
-+#define handle_error(msg) \
-+           do { perror(msg); exit(EXIT_FAILURE); } while (0)
-+
- static libucontext_ucontext_t ctx[3];
-@@ -36,7 +39,8 @@ static void f1 (int a, int b, int c, int
-       printf("looks like all arguments are passed correctly\n");
-       printf("swap back to f2\n");
--      libucontext_swapcontext(&ctx[1], &ctx[2]);
-+      if (libucontext_swapcontext(&ctx[1], &ctx[2]) != 0)
-+              handle_error("libucontext_swapcontext");
-       printf("finish f1\n");
- }
-@@ -44,7 +48,8 @@ static void f1 (int a, int b, int c, int
- static void f2 (void) {
-       printf("start f2\n");
-       printf("swap to f1\n");
--      libucontext_swapcontext(&ctx[2], &ctx[1]);
-+      if (libucontext_swapcontext(&ctx[2], &ctx[1]) != 0)
-+              handle_error("libucontext_swapcontext");
-       printf("finish f2, should swap to f1\n");
- }
-@@ -63,7 +68,8 @@ int main (int argc, const char *argv[])
-       printf("setting up context 1\n");
--      libucontext_getcontext(&ctx[1]);
-+      if (libucontext_getcontext(&ctx[1]) != 0)
-+              handle_error("libucontext_getcontext");
-       ctx[1].uc_stack.ss_sp = st1;
-       ctx[1].uc_stack.ss_size = sizeof st1;
-       ctx[1].uc_link = &ctx[0];
-@@ -83,16 +89,20 @@ int main (int argc, const char *argv[])
-       printf("doing initial swapcontext\n");
--      libucontext_swapcontext(&ctx[0], &ctx[2]);
-+      if (libucontext_swapcontext(&ctx[0], &ctx[2]) != 0)
-+              handle_error("libucontext_swapcontext");
-       printf("returned from initial swapcontext\n");
-       /* test ability to use getcontext/setcontext without makecontext */
--      libucontext_getcontext(&ctx[1]);
-+      if (libucontext_getcontext(&ctx[1]) != 0)
-+              handle_error("libucontext_getcontext");
-       printf("done = %d\n", done);
--      if (done++ == 0) libucontext_setcontext(&ctx[1]);
-+      if (done++ == 0)
-+              if (libucontext_setcontext(&ctx[1]) != 0)
-+                      handle_error("libucontext_setcontext");
-       if (done != 2) {
-               fprintf(stderr, "wrong value for done.  got %d, expected 2\n", done);
-               abort();
---- a/test_libucontext_posix.c
-+++ b/test_libucontext_posix.c
-@@ -9,6 +9,9 @@
- #include <string.h>
- #include <ucontext.h>
-+#define handle_error(msg) \
-+           do { perror(msg); exit(EXIT_FAILURE); } while (0)
-+
- static ucontext_t ctx[3];
-@@ -36,7 +39,8 @@ static void f1 (int a, int b, int c, int
-       printf("looks like all arguments are passed correctly\n");
-       printf("swap back to f2\n");
--      swapcontext(&ctx[1], &ctx[2]);
-+      if (swapcontext(&ctx[1], &ctx[2]) != 0)
-+              handle_error("swapcontext");
-       printf("finish f1\n");
- }
-@@ -44,7 +48,8 @@ static void f1 (int a, int b, int c, int
- static void f2 (void) {
-       printf("start f2\n");
-       printf("swap to f1\n");
--      swapcontext(&ctx[2], &ctx[1]);
-+      if (swapcontext(&ctx[2], &ctx[1]) != 0)
-+              handle_error("swapcontext");
-       printf("finish f2, should swap to f1\n");
- }
-@@ -83,16 +88,19 @@ int main (int argc, const char *argv[])
-       printf("doing initial swapcontext\n");
--      swapcontext(&ctx[0], &ctx[2]);
--
-+      if (swapcontext(&ctx[0], &ctx[2]) != 0)
-+              handle_error("swapcontext");
-       printf("returned from initial swapcontext\n");
-       /* test ability to use getcontext/setcontext without makecontext */
--      getcontext(&ctx[1]);
-+      if (getcontext(&ctx[1]) != 0)
-+              handle_error("getcontext");
-       printf("done = %d\n", done);
--      if (done++ == 0) setcontext(&ctx[1]);
-+      if (done++ == 0)
-+              if (setcontext(&ctx[1]) != 0)
-+                      handle_error("setcontext");
-       if (done != 2) {
-               fprintf(stderr, "wrong value for done.  got %d, expected 2\n", done);
-               abort();