diff options
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | PKGBUILD | 28 | ||||
-rw-r--r-- | glibc-linux4.patch | 68 |
3 files changed, 48 insertions, 62 deletions
@@ -1,6 +1,6 @@ pkgbase = glibc-linux4 - pkgver = 2.36 - pkgrel = 3 + pkgver = 2.38 + pkgrel = 1 url = https://www.gnu.org/software/libc/ arch = x86_64 license = GPL @@ -11,7 +11,7 @@ pkgbase = glibc-linux4 makedepends = python options = staticlibs options = !lto - source = git+https://sourceware.org/git/glibc.git#commit=93967a2a7bbdcedb73e0b246713580c7c84d001e + source = git+https://sourceware.org/git/glibc.git#commit=1aed90c9c8f8be9f68b58e96b6e4cd0fc08eb2b1 source = glibc-linux4.patch source = locale.gen.txt source = locale-gen @@ -21,7 +21,7 @@ pkgbase = glibc-linux4 validpgpkeys = 7273542B39962DF7B299931416792B4EA25340F8 validpgpkeys = BC7C7372637EC10C57D7AA6579C43DFBF1CF2187 sha256sums = SKIP - sha256sums = 69573c1c4eee6216f4f345647aed938d13994bf19a7e3a6ba9ed8bab85f23bef + sha256sums = e105e7788b068f364178eaaa6cd2e150047fec7a79138fda32a5410cbdf1c1b4 sha256sums = 2a7dd6c906b6c54a68f48a21898664a32fdb136cbd9ff7bfd48f01d1aaa649ae sha256sums = 7503947e23cecc8307e8f7ce2a792eecb6f72f22d6838b34417c2489a259fde9 sha256sums = c27424154a6096ae32c0824b785e05de6acef33d9224fd6147d1936be9b4962b @@ -36,7 +36,7 @@ pkgname = glibc-linux4 depends = filesystem optdepends = gd: for memusagestat optdepends = perl: for mtrace - provides = glibc=2.36 + provides = glibc=2.38 conflicts = glibc backup = etc/gai.conf backup = etc/locale.gen @@ -44,8 +44,8 @@ pkgname = glibc-linux4 pkgname = lib32-glibc-linux4 pkgdesc = GNU C Library (linux 4.x compat, 32-bit) - depends = glibc=2.36 - provides = lib32-glibc=2.36 + depends = glibc=2.38 + provides = lib32-glibc=2.38 conflicts = lib32-glibc options = staticlibs options = !lto @@ -9,9 +9,9 @@ pkgbase=glibc-linux4 pkgname=(glibc-linux4 lib32-glibc-linux4) -pkgver_=93967a2a7bbdcedb73e0b246713580c7c84d001e -pkgver=2.36 -pkgrel=3 +pkgver_=1aed90c9c8f8be9f68b58e96b6e4cd0fc08eb2b1 +pkgver=2.38 +pkgrel=1 arch=(x86_64) url="https://www.gnu.org/software/libc/" license=(GPL LGPL) @@ -33,8 +33,8 @@ source=( ) sha256sums=( "SKIP" - # "1c959fea240906226062cb4b1e7ebce71a9f0e3c0836c09e7e3423d434fcfe75" "SKIP" - "69573c1c4eee6216f4f345647aed938d13994bf19a7e3a6ba9ed8bab85f23bef" + # "fb82998998b2b29965467bc1b69d152e9c307d2cf301c9eafb4555b770ef3fd2" "SKIP" + "e105e7788b068f364178eaaa6cd2e150047fec7a79138fda32a5410cbdf1c1b4" "2a7dd6c906b6c54a68f48a21898664a32fdb136cbd9ff7bfd48f01d1aaa649ae" "7503947e23cecc8307e8f7ce2a792eecb6f72f22d6838b34417c2489a259fde9" "c27424154a6096ae32c0824b785e05de6acef33d9224fd6147d1936be9b4962b" @@ -59,11 +59,11 @@ build() { --with-bugurl=https://bugs.archlinux.org/ --enable-bind-now --enable-cet + --enable-fortify-source --enable-kernel=4.4.0 --enable-multi-arch --enable-stack-protector=strong --enable-systemtap - --disable-crypt --disable-profile --disable-werror ) @@ -78,20 +78,13 @@ build() { # Credits @allanmcrae # https://github.com/allanmcrae/toolchain/blob/f18604d70c5933c31b51a320978711e4e6791cf1/glibc/PKGBUILD # remove fortify for building libraries - CFLAGS=${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2/} + # CFLAGS=${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2/} "${srcdir}"/glibc/configure \ --libdir=/usr/lib \ --libexecdir=/usr/lib \ "${_configure_flags[@]}" - # build libraries with fortify disabled - echo "build-programs=no" >> configparms - make -O - - # re-enable fortify for programs - sed -i "/build-programs=/s#no#yes#" configparms - echo "CFLAGS += -Wp,-D_FORTIFY_SOURCE=2" >> configparms make -O # build info pages manually for reproducibility @@ -112,13 +105,6 @@ build() { --libexecdir=/usr/lib32 \ "${_configure_flags[@]}" - # build libraries with fortify disabled - echo "build-programs=no" >> configparms - make -O - - # re-enable fortify for programs - sed -i "/build-programs=/s#no#yes#" configparms - echo "CFLAGS += -Wp,-D_FORTIFY_SOURCE=2" >> configparms make -O cd "${srcdir}"/glibc-build diff --git a/glibc-linux4.patch b/glibc-linux4.patch index 7ad3ff7f5ad1..cd9248f618a9 100644 --- a/glibc-linux4.patch +++ b/glibc-linux4.patch @@ -1,5 +1,5 @@ diff --git a/nptl/futex-internal.c b/nptl/futex-internal.c -index 7ec228e8fb..e7d5058eeb 100644 +index 5a64d14338..e9fb108111 100644 --- a/nptl/futex-internal.c +++ b/nptl/futex-internal.c @@ -54,13 +54,9 @@ __futex_abstimed_wait_common64 (unsigned int* futex_word, @@ -12,14 +12,14 @@ index 7ec228e8fb..e7d5058eeb 100644 + return -ENOSYS; // INTERNAL_SYSCALL_CANCEL (futex_time64, futex_word, op, expected, abstime, NULL /* Unused. */, FUTEX_BITSET_MATCH_ANY); else - return INTERNAL_SYSCALL_CALL (futex_time64, futex_word, op, expected, -- abstime, NULL /* Ununsed. */, +- abstime, NULL /* Unused. */, - FUTEX_BITSET_MATCH_ANY); -+ return -ENOSYS; // INTERNAL_SYSCALL_CALL (futex_time64, futex_word, op, expected, abstime, NULL /* Ununsed. */, FUTEX_BITSET_MATCH_ANY); ++ return -ENOSYS; // INTERNAL_SYSCALL_CALL (futex_time64, futex_word, op, expected, abstime, NULL /* Unused. */, FUTEX_BITSET_MATCH_ANY); } static int diff --git a/sysdeps/unix/sysv/linux/clock_adjtime.c b/sysdeps/unix/sysv/linux/clock_adjtime.c -index 5ded82f506..0955222329 100644 +index bd6663431c..fd771e9ad5 100644 --- a/sysdeps/unix/sysv/linux/clock_adjtime.c +++ b/sysdeps/unix/sysv/linux/clock_adjtime.c @@ -29,7 +29,8 @@ __clock_adjtime64 (const clockid_t clock_id, struct __timex64 *tx64) @@ -33,7 +33,7 @@ index 5ded82f506..0955222329 100644 if (r >= 0 || errno != ENOSYS) return r; diff --git a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c -index 5534127ed7..7ec0690061 100644 +index 5f01225542..ae1e9abc0b 100644 --- a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c +++ b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c @@ -34,7 +34,7 @@ __clock_getcpuclockid (pid_t pid, clockid_t *clock_id) @@ -46,7 +46,7 @@ index 5534127ed7..7ec0690061 100644 #ifndef __ASSUME_TIME64_SYSCALLS if (r != 0 && r == -ENOSYS) diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c -index 38304db3cc..2b64c53d9f 100644 +index da2cb90f5c..39ee38a078 100644 --- a/sysdeps/unix/sysv/linux/clock_getres.c +++ b/sysdeps/unix/sysv/linux/clock_getres.c @@ -35,9 +35,9 @@ __clock_getres64 (clockid_t clock_id, struct __timespec64 *res) @@ -62,12 +62,12 @@ index 38304db3cc..2b64c53d9f 100644 if (r == 0 || errno != ENOSYS) return r; diff --git a/sysdeps/unix/sysv/linux/clock_nanosleep.c b/sysdeps/unix/sysv/linux/clock_nanosleep.c -index befe6ecb8c..f9692363c6 100644 +index ac2d810632..12c1c976f5 100644 --- a/sysdeps/unix/sysv/linux/clock_nanosleep.c +++ b/sysdeps/unix/sysv/linux/clock_nanosleep.c @@ -50,8 +50,7 @@ __clock_nanosleep_time64 (clockid_t clock_id, int flags, #else - if (!in_time_t_range (req->tv_sec)) + if (!in_int32_t_range (req->tv_sec)) { - r = INTERNAL_SYSCALL_CANCEL (clock_nanosleep_time64, clock_id, flags, - req, rem); @@ -76,7 +76,7 @@ index befe6ecb8c..f9692363c6 100644 r = -EOVERFLOW; } diff --git a/sysdeps/unix/sysv/linux/clock_settime.c b/sysdeps/unix/sysv/linux/clock_settime.c -index 2a32e2eb13..0c15ef3260 100644 +index 68e8b0ce12..26e1e75a35 100644 --- a/sysdeps/unix/sysv/linux/clock_settime.c +++ b/sysdeps/unix/sysv/linux/clock_settime.c @@ -35,7 +35,8 @@ __clock_settime64 (clockid_t clock_id, const struct __timespec64 *tp) @@ -90,7 +90,7 @@ index 2a32e2eb13..0c15ef3260 100644 #ifndef __ASSUME_TIME64_SYSCALLS if (ret == 0 || errno != ENOSYS) diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c -index 1378bb2db8..c4944f65b0 100644 +index 0ccbd778b5..f373741afe 100644 --- a/sysdeps/unix/sysv/linux/faccessat.c +++ b/sysdeps/unix/sysv/linux/faccessat.c @@ -26,7 +26,8 @@ @@ -104,10 +104,10 @@ index 1378bb2db8..c4944f65b0 100644 return ret; #else diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h -index 74adc3956b..da28b563c7 100644 +index 07b440f4ee..3be0f500a4 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h -@@ -203,7 +203,7 @@ +@@ -210,7 +210,7 @@ #if __LINUX_KERNEL_VERSION >= 0x050100 \ || __WORDSIZE == 64 \ || (defined __SYSCALL_WORDSIZE && __SYSCALL_WORDSIZE == 64) @@ -116,7 +116,7 @@ index 74adc3956b..da28b563c7 100644 #endif /* Linux waitid prior kernel 5.4 does not support waiting for the current -@@ -215,7 +215,7 @@ +@@ -222,7 +222,7 @@ /* The faccessat2 system call was introduced across all architectures in Linux 5.8. */ #if __LINUX_KERNEL_VERSION >= 0x050800 @@ -126,11 +126,11 @@ index 74adc3956b..da28b563c7 100644 # define __ASSUME_FACCESSAT2 0 #endif diff --git a/sysdeps/unix/sysv/linux/mq_timedreceive.c b/sysdeps/unix/sysv/linux/mq_timedreceive.c -index 5bf1e0a83b..8abea336b9 100644 +index 6391e0026b..89815deb5d 100644 --- a/sysdeps/unix/sysv/linux/mq_timedreceive.c +++ b/sysdeps/unix/sysv/linux/mq_timedreceive.c @@ -39,8 +39,8 @@ ___mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len - && !in_time_t_range (abs_timeout->tv_sec); + && !in_int32_t_range (abs_timeout->tv_sec); if (need_time64) { - int r = SYSCALL_CANCEL (mq_timedreceive_time64, mqdes, msg_ptr, msg_len, @@ -141,11 +141,11 @@ index 5bf1e0a83b..8abea336b9 100644 return r; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/mq_timedsend.c b/sysdeps/unix/sysv/linux/mq_timedsend.c -index 3ca5050976..753ffbb328 100644 +index 40d475a141..b7d19f6b7a 100644 --- a/sysdeps/unix/sysv/linux/mq_timedsend.c +++ b/sysdeps/unix/sysv/linux/mq_timedsend.c @@ -39,8 +39,8 @@ ___mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len, - && !in_time_t_range (abs_timeout->tv_sec); + && !in_int32_t_range (abs_timeout->tv_sec); if (need_time64) { - int r = SYSCALL_CANCEL (mq_timedsend_time64, mqdes, msg_ptr, msg_len, @@ -156,11 +156,11 @@ index 3ca5050976..753ffbb328 100644 return r; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/ppoll.c b/sysdeps/unix/sysv/linux/ppoll.c -index 1105e29b00..3d5d7e3157 100644 +index 078eba3031..3f27c3d485 100644 --- a/sysdeps/unix/sysv/linux/ppoll.c +++ b/sysdeps/unix/sysv/linux/ppoll.c @@ -46,8 +46,8 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout, - bool need_time64 = timeout != NULL && !in_time_t_range (timeout->tv_sec); + bool need_time64 = timeout != NULL && !in_int32_t_range (timeout->tv_sec); if (need_time64) { - ret = SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, @@ -171,11 +171,11 @@ index 1105e29b00..3d5d7e3157 100644 return ret; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/pselect.c b/sysdeps/unix/sysv/linux/pselect.c -index eba1c111f8..2a522d4e80 100644 +index 7fab25c19e..54ad5d0364 100644 --- a/sysdeps/unix/sysv/linux/pselect.c +++ b/sysdeps/unix/sysv/linux/pselect.c @@ -59,8 +59,8 @@ __pselect64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - bool need_time64 = timeout != NULL && !in_time_t_range (timeout->tv_sec); + bool need_time64 = timeout != NULL && !in_int32_t_range (timeout->tv_sec); if (need_time64) { - int r = pselect64_syscall (nfds, readfds, writefds, exceptfds, timeout, @@ -186,7 +186,7 @@ index eba1c111f8..2a522d4e80 100644 return r; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c -index d9664d61c4..1775c1d38f 100644 +index e3561f2f60..8c14128869 100644 --- a/sysdeps/unix/sysv/linux/recvmmsg.c +++ b/sysdeps/unix/sysv/linux/recvmmsg.c @@ -26,8 +26,8 @@ recvmmsg_syscall (int fd, struct mmsghdr *vmessages, unsigned int vlen, @@ -201,7 +201,7 @@ index d9664d61c4..1775c1d38f 100644 if (r >= 0 || errno != ENOSYS) return r; diff --git a/sysdeps/unix/sysv/linux/sched_rr_gi.c b/sysdeps/unix/sysv/linux/sched_rr_gi.c -index 19abc995b9..2426cba814 100644 +index 0f725cafc8..4a7b5eb0d6 100644 --- a/sysdeps/unix/sysv/linux/sched_rr_gi.c +++ b/sysdeps/unix/sysv/linux/sched_rr_gi.c @@ -28,7 +28,8 @@ __sched_rr_get_interval64 (pid_t pid, struct __timespec64 *tp) @@ -215,11 +215,11 @@ index 19abc995b9..2426cba814 100644 if (ret == 0 || errno != ENOSYS) return ret; diff --git a/sysdeps/unix/sysv/linux/select.c b/sysdeps/unix/sysv/linux/select.c -index a3f0a2eba7..63c4a5991b 100644 +index 556165c11c..976ca7d0fd 100644 --- a/sysdeps/unix/sysv/linux/select.c +++ b/sysdeps/unix/sysv/linux/select.c @@ -75,8 +75,8 @@ __select64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - bool need_time64 = timeout != NULL && !in_time_t_range (timeout->tv_sec); + bool need_time64 = timeout != NULL && !in_int32_t_range (timeout->tv_sec); if (need_time64) { - int r = SYSCALL_CANCEL (pselect6_time64, nfds, readfds, writefds, @@ -230,11 +230,11 @@ index a3f0a2eba7..63c4a5991b 100644 { TIMESPEC_TO_TIMEVAL (timeout, &ts64); diff --git a/sysdeps/unix/sysv/linux/semtimedop.c b/sysdeps/unix/sysv/linux/semtimedop.c -index 38a401bb6f..8f2e7ea99b 100644 +index 4cff1f982a..9fa0300add 100644 --- a/sysdeps/unix/sysv/linux/semtimedop.c +++ b/sysdeps/unix/sysv/linux/semtimedop.c @@ -45,7 +45,8 @@ __semtimedop64 (int semid, struct sembuf *sops, size_t nsops, - bool need_time64 = timeout != NULL && !in_time_t_range (timeout->tv_sec); + bool need_time64 = timeout != NULL && !in_int32_t_range (timeout->tv_sec); if (need_time64) { - int r = semtimedop_syscall (semid, sops, nsops, timeout); @@ -244,7 +244,7 @@ index 38a401bb6f..8f2e7ea99b 100644 return r; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c -index 3ac39979da..aca910450e 100644 +index 091a03ef36..b965c94457 100644 --- a/sysdeps/unix/sysv/linux/timer_gettime.c +++ b/sysdeps/unix/sysv/linux/timer_gettime.c @@ -32,7 +32,8 @@ ___timer_gettime64 (timer_t timerid, struct __itimerspec64 *value) @@ -258,7 +258,7 @@ index 3ac39979da..aca910450e 100644 if (ret == 0 || errno != ENOSYS) return ret; diff --git a/sysdeps/unix/sysv/linux/timer_settime.c b/sysdeps/unix/sysv/linux/timer_settime.c -index 518fed9c59..6f4b8fd699 100644 +index 148eb4c0f2..ecb9bf99e9 100644 --- a/sysdeps/unix/sysv/linux/timer_settime.c +++ b/sysdeps/unix/sysv/linux/timer_settime.c @@ -39,8 +39,7 @@ ___timer_settime64 (timer_t timerid, int flags, @@ -272,7 +272,7 @@ index 518fed9c59..6f4b8fd699 100644 return ret; # endif diff --git a/sysdeps/unix/sysv/linux/timerfd_gettime.c b/sysdeps/unix/sysv/linux/timerfd_gettime.c -index 9bd0e02621..989f24eff3 100644 +index 2c8db1003d..9c3683bea9 100644 --- a/sysdeps/unix/sysv/linux/timerfd_gettime.c +++ b/sysdeps/unix/sysv/linux/timerfd_gettime.c @@ -32,7 +32,8 @@ __timerfd_gettime64 (int fd, struct __itimerspec64 *value) @@ -286,11 +286,11 @@ index 9bd0e02621..989f24eff3 100644 return ret; struct itimerspec its32; diff --git a/sysdeps/unix/sysv/linux/timerfd_settime.c b/sysdeps/unix/sysv/linux/timerfd_settime.c -index 59282bf1ad..bdd4e31171 100644 +index 4f6148ea30..ab7eb0b568 100644 --- a/sysdeps/unix/sysv/linux/timerfd_settime.c +++ b/sysdeps/unix/sysv/linux/timerfd_settime.c @@ -37,8 +37,8 @@ __timerfd_settime64 (int fd, int flags, const struct __itimerspec64 *value, - || !in_time_t_range (value->it_interval.tv_sec); + || !in_int32_t_range (value->it_interval.tv_sec); if (need_time64) { - int r = INLINE_SYSCALL_CALL (timerfd_settime64, fd, flags, value, @@ -301,11 +301,11 @@ index 59282bf1ad..bdd4e31171 100644 return r; __set_errno (EOVERFLOW); diff --git a/sysdeps/unix/sysv/linux/utimensat.c b/sysdeps/unix/sysv/linux/utimensat.c -index 5662ecc9aa..25bc1e9c58 100644 +index 6075e1e006..8b931cdc35 100644 --- a/sysdeps/unix/sysv/linux/utimensat.c +++ b/sysdeps/unix/sysv/linux/utimensat.c @@ -46,8 +46,8 @@ __utimensat64_helper (int fd, const char *file, - && !in_time_t_range (tsp64[1].tv_sec))); + && !in_int32_t_range (tsp64[1].tv_sec))); if (need_time64) { - int r = INLINE_SYSCALL_CALL (utimensat_time64, fd, file, &tsp64[0], |