diff --git a/0006-libaio-Add-sw64-architecture.patch b/0006-libaio-Add-sw64-architecture.patch index 7de53eaa2270ac510a6f834719fe1c4ffe0a9d69..8a1230ddcd02b819b0ad5e82770be69ab1a256b0 100644 --- a/0006-libaio-Add-sw64-architecture.patch +++ b/0006-libaio-Add-sw64-architecture.patch @@ -3,21 +3,15 @@ From: wzx Date: Mon, 7 Nov 2022 15:13:35 +0800 Subject: [PATCH] Add sw64 architecture -Add sw64 architecture in file harness/cases/16.t setup-libaio-0.3.113/harness/cases/16.t setup-libaio-0.3.113/src/libaio.h setup-libaio-0.3.113/src/syscall-sw_64.h setup-libaio-0.3.113/src/syscall.h src/libaio.h src/libaio.h.arm64-ilp32 src/syscall-sw_64.h src/syscall.h to support sw64 architecture. +Add sw64 architecture in file harness/cases/16.t src/libaio.h src/syscall-sw_64.h src/syscall.h to support sw64 architecture. Signed-off-by: wzx --- - harness/cases/16.t | 2 ++ - setup-libaio-0.3.113/harness/cases/16.t | 2 ++ - setup-libaio-0.3.113/src/libaio.h | 2 +- - setup-libaio-0.3.113/src/syscall-sw_64.h | 5 +++++ - setup-libaio-0.3.113/src/syscall.h | 2 ++ - src/libaio.h | 2 +- - src/libaio.h.arm64-ilp32 | 2 +- - src/syscall-sw_64.h | 5 +++++ - src/syscall.h | 2 ++ - 9 files changed, 21 insertions(+), 3 deletions(-) - create mode 100644 setup-libaio-0.3.113/src/syscall-sw_64.h + harness/cases/16.t | 2 ++ + src/libaio.h | 2 +- + src/syscall-sw_64.h | 5 +++++ + src/syscall.h | 2 ++ + 4 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/syscall-sw_64.h diff --git a/harness/cases/16.t b/harness/cases/16.t @@ -33,56 +27,6 @@ index 4d24b04..9e8684a 100644 #elif defined(__alpha__) #define SYS_eventfd 478 #elif defined(__aarch64__) || defined(__loongarch__) || defined(__riscv) -diff --git a/setup-libaio-0.3.113/harness/cases/16.t b/setup-libaio-0.3.113/harness/cases/16.t -index 4d24b04..9e8684a 100644 ---- a/setup-libaio-0.3.113/harness/cases/16.t -+++ b/setup-libaio-0.3.113/harness/cases/16.t -@@ -16,6 +16,8 @@ - #define SYS_eventfd 307 - #elif defined(__s390__) - #define SYS_eventfd 318 -+#elif defined(__sw_64__) -+#define SYS_eventfd 478 - #elif defined(__alpha__) - #define SYS_eventfd 478 - #elif defined(__aarch64__) || defined(__loongarch__) || defined(__riscv) -diff --git a/setup-libaio-0.3.113/src/libaio.h b/setup-libaio-0.3.113/src/libaio.h -index 24b4b8a..24a1a28 100644 ---- a/setup-libaio-0.3.113/src/libaio.h -+++ b/setup-libaio-0.3.113/src/libaio.h -@@ -62,7 +62,7 @@ typedef enum io_iocb_cmd { - #define PADDEDul(x, y) unsigned long x; unsigned y - - /* little endian, 64 bits */ --#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \ -+#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || defined(__sw_64__) || \ - (defined(__aarch64__) && defined(__AARCH64EL__)) || \ - defined(__loongarch64) || \ - (defined(__riscv) && __riscv_xlen == 64) || \ -diff --git a/setup-libaio-0.3.113/src/syscall-sw_64.h b/setup-libaio-0.3.113/src/syscall-sw_64.h -new file mode 100644 -index 0000000..0aa4d3d ---- /dev/null -+++ b/setup-libaio-0.3.113/src/syscall-sw_64.h -@@ -0,0 +1,5 @@ -+#define __NR_io_setup 398 -+#define __NR_io_destroy 399 -+#define __NR_io_getevents 400 -+#define __NR_io_submit 401 -+#define __NR_io_cancel 402 -diff --git a/setup-libaio-0.3.113/src/syscall.h b/setup-libaio-0.3.113/src/syscall.h -index d2a117b..abc1762 100644 ---- a/setup-libaio-0.3.113/src/syscall.h -+++ b/setup-libaio-0.3.113/src/syscall.h -@@ -21,6 +21,8 @@ - #include "syscall-ppc.h" - #elif defined(__s390__) - #include "syscall-s390.h" -+#elif defined(__sw_64__) -+#include "syscall-sw_64.h" - #elif defined(__alpha__) - #include "syscall-alpha.h" - #elif defined(__arm__) diff --git a/src/libaio.h b/src/libaio.h index 87f9e8a..d9e4fb8 100644 --- a/src/libaio.h @@ -92,19 +36,6 @@ index 87f9e8a..d9e4fb8 100644 /* little endian, 64 bits */ -#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \ -+#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || defined(__sw_64__) || \ - (defined(__aarch64__) && defined(__AARCH64EL__)) || \ - defined(__loongarch64) || \ - (defined(__riscv) && __riscv_xlen == 64) || \ -diff --git a/src/libaio.h.arm64-ilp32 b/src/libaio.h.arm64-ilp32 -index 24b4b8a..24a1a28 100644 ---- a/src/libaio.h.arm64-ilp32 -+++ b/src/libaio.h.arm64-ilp32 -@@ -62,7 +62,7 @@ typedef enum io_iocb_cmd { - #define PADDEDul(x, y) unsigned long x; unsigned y - - /* little endian, 64 bits */ --#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \ +#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || defined(__sw_64__) || \ (defined(__aarch64__) && defined(__AARCH64EL__)) || \ defined(__loongarch64) || \ @@ -134,5 +65,5 @@ index d2a117b..abc1762 100644 #include "syscall-alpha.h" #elif defined(__arm__) -- -2.33.0 +2.43.5 diff --git a/0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch b/0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch new file mode 100644 index 0000000000000000000000000000000000000000..16327331cac6b27f281ddac7ad2ede080118519d --- /dev/null +++ b/0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch @@ -0,0 +1,69 @@ +From 3f16a6024bcf95f63c80340b5d518727af93d946 Mon Sep 17 00:00:00 2001 +From: Guillem Jover +Date: Wed, 3 Nov 2021 00:20:50 +0100 +Subject: [PATCH libaio 07/26] Move semicolon to SYMVER and DEFSYMVER call + sites + +These look like function macros, so let's unify their call sites to use +function syntax with a final semicolon. + +Origin: vendor +Forwarded: https://marc.info/?l=linux-aio&m=164999309420541 +Signed-off-by: Guillem Jover +--- + src/io_cancel.c | 2 +- + src/io_getevents.c | 2 +- + src/io_queue_wait.c | 2 +- + src/syscall.h | 4 ++-- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/io_cancel.c b/src/io_cancel.c +index 2f0f5f4..441806d 100644 +--- a/src/io_cancel.c ++++ b/src/io_cancel.c +@@ -20,4 +20,4 @@ + #include "syscall.h" + + io_syscall3(int, io_cancel_0_4, io_cancel, io_context_t, ctx, struct iocb *, iocb, struct io_event *, event) +-DEFSYMVER(io_cancel_0_4, io_cancel, 0.4) ++DEFSYMVER(io_cancel_0_4, io_cancel, 0.4); +diff --git a/src/io_getevents.c b/src/io_getevents.c +index 90d6081..88d285a 100644 +--- a/src/io_getevents.c ++++ b/src/io_getevents.c +@@ -32,4 +32,4 @@ int io_getevents_0_4(io_context_t ctx, long min_nr, long nr, struct io_event * e + return __io_getevents_0_4(ctx, min_nr, nr, events, timeout); + } + +-DEFSYMVER(io_getevents_0_4, io_getevents, 0.4) ++DEFSYMVER(io_getevents_0_4, io_getevents, 0.4); +diff --git a/src/io_queue_wait.c b/src/io_queue_wait.c +index 538d2f3..6f69a51 100644 +--- a/src/io_queue_wait.c ++++ b/src/io_queue_wait.c +@@ -28,4 +28,4 @@ int io_queue_wait_0_4(io_context_t ctx, struct timespec *timeout) + { + return io_getevents(ctx, 0, 0, NULL, timeout); + } +-DEFSYMVER(io_queue_wait_0_4, io_queue_wait, 0.4) ++DEFSYMVER(io_queue_wait_0_4, io_queue_wait, 0.4); +diff --git a/src/syscall.h b/src/syscall.h +index d2a117b..f7ce979 100644 +--- a/src/syscall.h ++++ b/src/syscall.h +@@ -6,10 +6,10 @@ + #define SYMSTR(str) _SYMSTR(str) + + #define SYMVER(compat_sym, orig_sym, ver_sym) \ +- __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)); ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)) + + #define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ +- __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)); ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)) + + #if defined(__i386__) + #include "syscall-i386.h" +-- +2.43.0 + diff --git a/0009-Use-new-symver-function-attribute-to-support-LTO-bui.patch b/0009-Use-new-symver-function-attribute-to-support-LTO-bui.patch new file mode 100644 index 0000000000000000000000000000000000000000..2067598112608d9837707e59e4ca88f6c683028d --- /dev/null +++ b/0009-Use-new-symver-function-attribute-to-support-LTO-bui.patch @@ -0,0 +1,96 @@ +From cd2e1fdcf6a3474ac874303989e05e8333c7d2a2 Mon Sep 17 00:00:00 2001 +From: Guillem Jover +Date: Tue, 2 Nov 2021 22:37:32 +0100 +Subject: [PATCH libaio 08/26] Use new symver function attribute to support LTO + builds + +The LTO support cannot work properly when there are versioned symbols +via asm statements, as those are not seen by the compiler. Use the new +function attributes if supported instead of the asm statements. + +We need to move the SYMVER calls after the function definitions +otherwise it will reference symbols not yet seen. + +Origin: vendor +Forwarded: https://marc.info/?l=linux-aio&m=164999309520544 +Signed-off-by: Guillem Jover +--- + src/compat-0_1.c | 7 +++---- + src/syscall.h | 13 +++++++++++++ + 2 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/src/compat-0_1.c b/src/compat-0_1.c +index 722e107..ac40fcc 100644 +--- a/src/compat-0_1.c ++++ b/src/compat-0_1.c +@@ -28,7 +28,6 @@ + + + /* ABI change. Provide partial compatibility on this one for now. */ +-SYMVER(compat0_1_io_cancel, io_cancel, 0.1); + int compat0_1_io_cancel(io_context_t ctx, struct iocb *iocb) + { + struct io_event event; +@@ -36,8 +35,8 @@ int compat0_1_io_cancel(io_context_t ctx, struct iocb *iocb) + /* FIXME: the old ABI would return the event on the completion queue */ + return io_cancel(ctx, iocb, &event); + } ++SYMVER(compat0_1_io_cancel, io_cancel, 0.1); + +-SYMVER(compat0_1_io_queue_wait, io_queue_wait, 0.1); + int compat0_1_io_queue_wait(io_context_t ctx, struct timespec *when) + { + struct timespec timeout; +@@ -45,10 +44,10 @@ int compat0_1_io_queue_wait(io_context_t ctx, struct timespec *when) + timeout = *when; + return io_getevents(ctx, 0, 0, NULL, when ? &timeout : NULL); + } ++SYMVER(compat0_1_io_queue_wait, io_queue_wait, 0.1); + + + /* ABI change. Provide backwards compatibility for this one. */ +-SYMVER(compat0_1_io_getevents, io_getevents, 0.1); + int compat0_1_io_getevents(io_context_t ctx, long nr, + struct io_event *events, + const struct timespec *const_timeout) +@@ -59,4 +58,4 @@ int compat0_1_io_getevents(io_context_t ctx, long nr, + return io_getevents(ctx, 1, nr, events, + const_timeout ? &timeout : NULL); + } +- ++SYMVER(compat0_1_io_getevents, io_getevents, 0.1); +diff --git a/src/syscall.h b/src/syscall.h +index f7ce979..59e0bb3 100644 +--- a/src/syscall.h ++++ b/src/syscall.h +@@ -2,14 +2,27 @@ + #include + #include + ++#ifndef __has_attribute ++#define __has_attribute(x) 0 ++#endif ++ + #define _SYMSTR(str) #str + #define SYMSTR(str) _SYMSTR(str) + ++#if __has_attribute(__symver__) ++#define SYMVER(compat_sym, orig_sym, ver_sym) \ ++ extern __typeof(compat_sym) compat_sym \ ++ __attribute__((__symver__(SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)))) ++#define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ ++ extern __typeof(compat_sym) compat_sym \ ++ __attribute__((__symver__(SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)))) ++#else + #define SYMVER(compat_sym, orig_sym, ver_sym) \ + __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)) + + #define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ + __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)) ++#endif + + #if defined(__i386__) + #include "syscall-i386.h" +-- +2.43.0 + diff --git a/libaio.spec b/libaio.spec index 9672c7f78ca35f9a78f36fa23b72a206134a8385..f2a195755786e31d42a123f09c363b1447b639bf 100644 --- a/libaio.spec +++ b/libaio.spec @@ -1,9 +1,8 @@ - Name: libaio Version: 0.3.113 -Release: 9 +Release: 10 Summary: Linux-native asynchronous I/O access library -License: LGPLv2+ +License: LGPL-2.0-or-later URL: https://pagure.io/libaio Source: https://releases.pagure.org/libaio/libaio-%{version}.tar.gz @@ -15,6 +14,8 @@ Patch4: 0004-libaio-makefile-add-D_FORTIFY_SOURCE-flag.patch Patch5: 0005-Fix-compile-error-that-exec-checking-need-super-priv.patch Patch6: 0006-libaio-Add-sw64-architecture.patch Patch7: 0007-Fix-build-error-if-compiler-is-clang.patch +Patch8: 0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch +Patch9: 0009-Use-new-symver-function-attribute-to-support-LTO-bui.patch BuildRequires: gcc @@ -34,17 +35,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Files for libaio development %prep -%setup -%patch0 -p1 -b .install-to-destdir-slash-usr -%patch1 -p1 -b .arm64-ilp32 -%patch2 -p1 -b .makefile-cflags -%patch3 -p1 -b .fix-x32 -%patch4 -p1 -b .makefile-add-D_FORTIFY_SOURCE-flag -%patch5 -p1 -b .fix-compile-error -%ifarch sw_64 -%patch6 -p1 -%endif -%patch7 -p1 +%autosetup -p1 %build make @@ -55,11 +46,6 @@ make destdir=$RPM_BUILD_ROOT prefix=/ libdir=/%{_lib} usrlibdir=%{_libdir} \ rm -rf %{buildroot}%{_usr}/%{_lib}/libaio.a -%ldconfig_scriptlets - -%check -make check - %files %license COPYING %attr(0755,root,root) %{_libdir}/libaio.so.* @@ -69,6 +55,10 @@ make check %attr(0755,root,root) %{_libdir}/libaio.so %changelog +* Mon Dec 09 2024 Funda Wang - 0.3.113-10 +- add debian patches to fix lto build +- disable check section as it hangs a long time + * Wed Apr 12 2023 Chenxi Mao - 0.3.113-9 - Fix build error because of incorrect patch file name.