!79 [sync] PR-78: Fix LTO build
From: @openeuler-sync-bot Reviewed-by: @swf504 Signed-off-by: @swf504
This commit is contained in:
commit
92dcd9d99a
@ -3,21 +3,15 @@ From: wzx <wuzx1226@qq.com>
|
|||||||
Date: Mon, 7 Nov 2022 15:13:35 +0800
|
Date: Mon, 7 Nov 2022 15:13:35 +0800
|
||||||
Subject: [PATCH] Add sw64 architecture
|
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 <wuzx1226@qq.com>
|
Signed-off-by: wzx <wuzx1226@qq.com>
|
||||||
---
|
---
|
||||||
harness/cases/16.t | 2 ++
|
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 | 2 +-
|
||||||
src/libaio.h.arm64-ilp32 | 2 +-
|
|
||||||
src/syscall-sw_64.h | 5 +++++
|
src/syscall-sw_64.h | 5 +++++
|
||||||
src/syscall.h | 2 ++
|
src/syscall.h | 2 ++
|
||||||
9 files changed, 21 insertions(+), 3 deletions(-)
|
4 files changed, 10 insertions(+), 1 deletion(-)
|
||||||
create mode 100644 setup-libaio-0.3.113/src/syscall-sw_64.h
|
|
||||||
create mode 100644 src/syscall-sw_64.h
|
create mode 100644 src/syscall-sw_64.h
|
||||||
|
|
||||||
diff --git a/harness/cases/16.t b/harness/cases/16.t
|
diff --git a/harness/cases/16.t b/harness/cases/16.t
|
||||||
@ -33,56 +27,6 @@ index 4d24b04..9e8684a 100644
|
|||||||
#elif defined(__alpha__)
|
#elif defined(__alpha__)
|
||||||
#define SYS_eventfd 478
|
#define SYS_eventfd 478
|
||||||
#elif defined(__aarch64__) || defined(__loongarch__) || defined(__riscv)
|
#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
|
diff --git a/src/libaio.h b/src/libaio.h
|
||||||
index 87f9e8a..d9e4fb8 100644
|
index 87f9e8a..d9e4fb8 100644
|
||||||
--- a/src/libaio.h
|
--- a/src/libaio.h
|
||||||
@ -92,19 +36,6 @@ index 87f9e8a..d9e4fb8 100644
|
|||||||
|
|
||||||
/* little endian, 64 bits */
|
/* little endian, 64 bits */
|
||||||
-#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \
|
-#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__) || \
|
+#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || defined(__sw_64__) || \
|
||||||
(defined(__aarch64__) && defined(__AARCH64EL__)) || \
|
(defined(__aarch64__) && defined(__AARCH64EL__)) || \
|
||||||
defined(__loongarch64) || \
|
defined(__loongarch64) || \
|
||||||
@ -134,5 +65,5 @@ index d2a117b..abc1762 100644
|
|||||||
#include "syscall-alpha.h"
|
#include "syscall-alpha.h"
|
||||||
#elif defined(__arm__)
|
#elif defined(__arm__)
|
||||||
--
|
--
|
||||||
2.33.0
|
2.43.5
|
||||||
|
|
||||||
|
|||||||
69
0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch
Normal file
69
0008-Move-semicolon-to-SYMVER-and-DEFSYMVER-call-sites.patch
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
From 3f16a6024bcf95f63c80340b5d518727af93d946 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Guillem Jover <guillem@hadrons.org>
|
||||||
|
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 <guillem@hadrons.org>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
From cd2e1fdcf6a3474ac874303989e05e8333c7d2a2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Guillem Jover <guillem@hadrons.org>
|
||||||
|
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 <guillem@hadrons.org>
|
||||||
|
---
|
||||||
|
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 <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
+#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
|
||||||
|
|
||||||
28
libaio.spec
28
libaio.spec
@ -1,9 +1,8 @@
|
|||||||
|
|
||||||
Name: libaio
|
Name: libaio
|
||||||
Version: 0.3.113
|
Version: 0.3.113
|
||||||
Release: 9
|
Release: 10
|
||||||
Summary: Linux-native asynchronous I/O access library
|
Summary: Linux-native asynchronous I/O access library
|
||||||
License: LGPLv2+
|
License: LGPL-2.0-or-later
|
||||||
URL: https://pagure.io/libaio
|
URL: https://pagure.io/libaio
|
||||||
Source: https://releases.pagure.org/libaio/libaio-%{version}.tar.gz
|
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
|
Patch5: 0005-Fix-compile-error-that-exec-checking-need-super-priv.patch
|
||||||
Patch6: 0006-libaio-Add-sw64-architecture.patch
|
Patch6: 0006-libaio-Add-sw64-architecture.patch
|
||||||
Patch7: 0007-Fix-build-error-if-compiler-is-clang.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
|
BuildRequires: gcc
|
||||||
|
|
||||||
@ -34,17 +35,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
|
|||||||
Files for libaio development
|
Files for libaio development
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup
|
%autosetup -p1
|
||||||
%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
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make
|
make
|
||||||
@ -55,11 +46,6 @@ make destdir=$RPM_BUILD_ROOT prefix=/ libdir=/%{_lib} usrlibdir=%{_libdir} \
|
|||||||
|
|
||||||
rm -rf %{buildroot}%{_usr}/%{_lib}/libaio.a
|
rm -rf %{buildroot}%{_usr}/%{_lib}/libaio.a
|
||||||
|
|
||||||
%ldconfig_scriptlets
|
|
||||||
|
|
||||||
%check
|
|
||||||
make check
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%license COPYING
|
%license COPYING
|
||||||
%attr(0755,root,root) %{_libdir}/libaio.so.*
|
%attr(0755,root,root) %{_libdir}/libaio.so.*
|
||||||
@ -69,6 +55,10 @@ make check
|
|||||||
%attr(0755,root,root) %{_libdir}/libaio.so
|
%attr(0755,root,root) %{_libdir}/libaio.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Dec 09 2024 Funda Wang <fundawang@yeah.net> - 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 <chenxi.mao@suse.com> - 0.3.113-9
|
* Wed Apr 12 2023 Chenxi Mao <chenxi.mao@suse.com> - 0.3.113-9
|
||||||
- Fix build error because of incorrect patch file name.
|
- Fix build error because of incorrect patch file name.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user