musl: backport reallocarray and others.
It's in POSIX-future and some applications have started depending on it. It's easier to backport into musl than fix each individual package. Since we are adding a new interface to libc, update common/shlibs entry as well. This should probably have been done for all musl updates. And since we are here, also backport: - isascii fix (removes the need for a patch in fceux) - make epoll a cancellation point (fixes a bug in jack pipewire utilities)
This commit is contained in:
parent
064a51eead
commit
beb3f7fb1f
5 changed files with 93 additions and 2 deletions
|
@ -16,7 +16,7 @@
|
|||
# PLEASE NOTE: when multiple packages provide the same SONAME, the first
|
||||
# one (order top->bottom) is preferred over the next ones.
|
||||
#
|
||||
libc.so musl-1.1.21_1
|
||||
libc.so musl-1.1.24_7
|
||||
libc.so.6 glibc-2.32_1
|
||||
libm.so.6 glibc-2.32_1
|
||||
libpthread.so.0 glibc-2.32_1
|
||||
|
|
28
srcpkgs/musl/patches/epoll_cp.patch
Normal file
28
srcpkgs/musl/patches/epoll_cp.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
From 2c00f95c1ac7dd50f53d9e361847ebd2513c8da0 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Felker <dalias@aerifal.cx>
|
||||
Date: Sat, 3 Apr 2021 21:16:41 -0400
|
||||
Subject: [PATCH] make epoll_[p]wait a cancellation point
|
||||
|
||||
this is a Linux-specific function and not covered by POSIX's
|
||||
requirements for which interfaces are cancellation points, but glibc
|
||||
makes it one and existing software relies on it being one.
|
||||
|
||||
at some point a review for similar functions that should be made
|
||||
cancellation points should be done.
|
||||
|
||||
diff --git src/linux/epoll.c src/linux/epoll.c
|
||||
index deff5b10..93baa814 100644
|
||||
--- src/linux/epoll.c
|
||||
+++ src/linux/epoll.c
|
||||
@@ -24,9 +24,9 @@ int epoll_ctl(int fd, int op, int fd2, struct epoll_event *ev)
|
||||
|
||||
int epoll_pwait(int fd, struct epoll_event *ev, int cnt, int to, const sigset_t *sigs)
|
||||
{
|
||||
- int r = __syscall(SYS_epoll_pwait, fd, ev, cnt, to, sigs, _NSIG/8);
|
||||
+ int r = __syscall_cp(SYS_epoll_pwait, fd, ev, cnt, to, sigs, _NSIG/8);
|
||||
#ifdef SYS_epoll_wait
|
||||
- if (r==-ENOSYS && !sigs) r = __syscall(SYS_epoll_wait, fd, ev, cnt, to);
|
||||
+ if (r==-ENOSYS && !sigs) r = __syscall_cp(SYS_epoll_wait, fd, ev, cnt, to);
|
||||
#endif
|
||||
return __syscall_ret(r);
|
||||
}
|
21
srcpkgs/musl/patches/isascii.patch
Normal file
21
srcpkgs/musl/patches/isascii.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
From e48e99c112246fb580596404074445cb25d7858d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=89rico=20Rolim?= <ericonr@disroot.org>
|
||||
Date: Mon, 4 Jan 2021 22:48:34 -0300
|
||||
Subject: [PATCH] suppress isascii() macro for C++
|
||||
|
||||
analogous to commit a60457c84a4b59ab564d7f4abb660a70283ba98d.
|
||||
|
||||
diff --git include/ctype.h include/ctype.h
|
||||
index 7936536f..32bcef4d 100644
|
||||
--- include/ctype.h
|
||||
+++ include/ctype.h
|
||||
@@ -64,7 +64,9 @@ int isascii(int);
|
||||
int toascii(int);
|
||||
#define _tolower(a) ((a)|0x20)
|
||||
#define _toupper(a) ((a)&0x5f)
|
||||
+#ifndef __cplusplus
|
||||
#define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128)
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
|
42
srcpkgs/musl/patches/reallocarray.patch
Normal file
42
srcpkgs/musl/patches/reallocarray.patch
Normal file
|
@ -0,0 +1,42 @@
|
|||
From 821083ac7b54eaa040d5a8ddc67c6206a175e0ca Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Sat, 1 Aug 2020 08:26:35 -0600
|
||||
Subject: [PATCH] implement reallocarray
|
||||
|
||||
reallocarray is an extension introduced by OpenBSD, which introduces
|
||||
calloc overflow checking to realloc.
|
||||
|
||||
glibc 2.28 introduced support for this function behind _GNU_SOURCE,
|
||||
while glibc 2.29 allows its usage in _DEFAULT_SOURCE.
|
||||
|
||||
diff --git a/include/stdlib.h b/include/stdlib.h
|
||||
index 194c2033..b54a051f 100644
|
||||
--- include/stdlib.h
|
||||
+++ include/stdlib.h
|
||||
@@ -145,6 +145,7 @@ int getloadavg(double *, int);
|
||||
int clearenv(void);
|
||||
#define WCOREDUMP(s) ((s) & 0x80)
|
||||
#define WIFCONTINUED(s) ((s) == 0xffff)
|
||||
+void *reallocarray (void *, size_t, size_t);
|
||||
#endif
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
diff --git a/src/malloc/reallocarray.c b/src/malloc/reallocarray.c
|
||||
new file mode 100644
|
||||
index 00000000..4a6ebe46
|
||||
--- /dev/null
|
||||
+++ src/malloc/reallocarray.c
|
||||
@@ -0,0 +1,13 @@
|
||||
+#define _BSD_SOURCE
|
||||
+#include <errno.h>
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+void *reallocarray(void *ptr, size_t m, size_t n)
|
||||
+{
|
||||
+ if (n && m > -1 / n) {
|
||||
+ errno = ENOMEM;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ return realloc(ptr, m * n);
|
||||
+}
|
|
@ -2,7 +2,7 @@
|
|||
pkgname=musl
|
||||
reverts="1.2.0_1"
|
||||
version=1.1.24
|
||||
revision=6
|
||||
revision=7
|
||||
archs="*-musl"
|
||||
bootstrap=yes
|
||||
build_style=gnu-configure
|
||||
|
|
Loading…
Reference in a new issue