diff options
author | Timo Teräs <timo.teras@iki.fi> | 2014-12-04 10:43:32 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2014-12-04 10:44:14 +0200 |
commit | 8f2469e413757e12582b651b24f49b0fb0072a34 (patch) | |
tree | fa5a536a6d34dbce3b62881ec6041d5c48a5ef7a /main/musl | |
parent | 7086cc9b981d724f4b530ba21a844b602d947d7c (diff) | |
download | aports-8f2469e413757e12582b651b24f49b0fb0072a34.tar.bz2 aports-8f2469e413757e12582b651b24f49b0fb0072a34.tar.xz |
main/musl: cherry-pick fixes and compatibility improvements from upstream
Diffstat (limited to 'main/musl')
15 files changed, 894 insertions, 1 deletions
diff --git a/main/musl/0001-manually-shrink-wrap-fast-path-in-pthread_once.patch b/main/musl/0001-manually-shrink-wrap-fast-path-in-pthread_once.patch new file mode 100644 index 0000000000..b0e38d8441 --- /dev/null +++ b/main/musl/0001-manually-shrink-wrap-fast-path-in-pthread_once.patch @@ -0,0 +1,53 @@ +From dc95322e18615392eea69de355edd735a15a8f36 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Mon, 20 Oct 2014 00:22:51 -0400 +Subject: [PATCH] manually "shrink wrap" fast path in pthread_once + +this change is a workaround for the inability of current compilers to +perform "shrink wrapping" optimizations. in casual testing, it roughly +doubled the performance of pthread_once when called on an +already-finished once control object. +--- + src/thread/pthread_once.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +diff --git a/src/thread/pthread_once.c b/src/thread/pthread_once.c +index 7c47385..df655ef 100644 +--- a/src/thread/pthread_once.c ++++ b/src/thread/pthread_once.c +@@ -8,15 +8,8 @@ static void undo(void *control) + __wake(control, -1, 1); + } + +-int __pthread_once(pthread_once_t *control, void (*init)(void)) ++int __pthread_once_full(pthread_once_t *control, void (*init)(void)) + { +- /* Return immediately if init finished before, but ensure that +- * effects of the init routine are visible to the caller. */ +- if (*control == 2) { +- a_barrier(); +- return 0; +- } +- + /* Try to enter initializing state. Four possibilities: + * 0 - we're the first or the other cancelled; run init + * 1 - another thread is running init; wait +@@ -43,4 +36,15 @@ int __pthread_once(pthread_once_t *control, void (*init)(void)) + } + } + ++int __pthread_once(pthread_once_t *control, void (*init)(void)) ++{ ++ /* Return immediately if init finished before, but ensure that ++ * effects of the init routine are visible to the caller. */ ++ if (*control == 2) { ++ a_barrier(); ++ return 0; ++ } ++ return __pthread_once_full(control, init); ++} ++ + weak_alias(__pthread_once, pthread_once); +-- +2.2.0 + diff --git a/main/musl/0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch b/main/musl/0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch new file mode 100644 index 0000000000..887b38b32d --- /dev/null +++ b/main/musl/0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch @@ -0,0 +1,26 @@ +From 9d836ea7a69a6441fcdca815328d274e4ed6b707 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Thu, 30 Oct 2014 20:03:56 -0400 +Subject: [PATCH] fix failure of open to read variadic mode argument for + O_TMPFILE + +--- + src/fcntl/open.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fcntl/open.c b/src/fcntl/open.c +index 5e5be1d..3928a6e 100644 +--- a/src/fcntl/open.c ++++ b/src/fcntl/open.c +@@ -7,7 +7,7 @@ int open(const char *filename, int flags, ...) + { + mode_t mode = 0; + +- if (flags & O_CREAT) { ++ if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); +-- +2.2.0 + diff --git a/main/musl/0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch b/main/musl/0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch new file mode 100644 index 0000000000..c6f0340a37 --- /dev/null +++ b/main/musl/0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch @@ -0,0 +1,38 @@ +From 2da3ab1382ca8e39eb1e4428103764a81fba73d3 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Thu, 30 Oct 2014 20:08:40 -0400 +Subject: [PATCH] fix invalid access by openat to possibly-missing variadic + mode argument + +the mode argument is only required to be present when the O_CREAT or +O_TMPFILE flag is used. +--- + src/fcntl/openat.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/fcntl/openat.c b/src/fcntl/openat.c +index 634c4bf..4faeb29 100644 +--- a/src/fcntl/openat.c ++++ b/src/fcntl/openat.c +@@ -6,10 +6,14 @@ + int openat(int fd, const char *filename, int flags, ...) + { + mode_t mode; +- va_list ap; +- va_start(ap, flags); +- mode = va_arg(ap, mode_t); +- va_end(ap); ++ ++ if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { ++ va_list ap; ++ va_start(ap, flags); ++ mode = va_arg(ap, mode_t); ++ va_end(ap); ++ } ++ + return syscall_cp(SYS_openat, fd, filename, flags|O_LARGEFILE, mode); + } + +-- +2.2.0 + diff --git a/main/musl/0004-fix-uninitialized-mode-variable-in-openat-function.patch b/main/musl/0004-fix-uninitialized-mode-variable-in-openat-function.patch new file mode 100644 index 0000000000..9385bc7c56 --- /dev/null +++ b/main/musl/0004-fix-uninitialized-mode-variable-in-openat-function.patch @@ -0,0 +1,27 @@ +From e146e6035fecea080fb17450db3c8bb44d36e07d Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Fri, 31 Oct 2014 15:35:24 -0400 +Subject: [PATCH] fix uninitialized mode variable in openat function + +this was introduced in commit 2da3ab1382ca8e39eb1e4428103764a81fba73d3 +as an oversight while making the variadic argument access conditional. +--- + src/fcntl/openat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fcntl/openat.c b/src/fcntl/openat.c +index 4faeb29..e741336 100644 +--- a/src/fcntl/openat.c ++++ b/src/fcntl/openat.c +@@ -5,7 +5,7 @@ + + int openat(int fd, const char *filename, int flags, ...) + { +- mode_t mode; ++ mode_t mode = 0; + + if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { + va_list ap; +-- +2.2.0 + diff --git a/main/musl/0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch b/main/musl/0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch new file mode 100644 index 0000000000..807536be46 --- /dev/null +++ b/main/musl/0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch @@ -0,0 +1,159 @@ +From a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy <nsz@port70.net> +Date: Wed, 5 Nov 2014 21:40:29 +0100 +Subject: [PATCH] math: fix x86_64 and x32 asm not to use sahf instruction + +Some early x86_64 cpus (released before 2006) did not support sahf/lahf +instructions so they should be avoided (intel manual says they are only +supported if CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1). + +The workaround simplifies exp2l and expm1l because fucomip can be +used instead of the fucomp;fnstsw;sahf sequence copied from i386. + +In fmodl and remainderl sahf is replaced by a simple bit test. +--- + src/math/x32/exp2l.s | 13 +++---------- + src/math/x32/fmodl.s | 4 ++-- + src/math/x32/remainderl.s | 4 ++-- + src/math/x86_64/exp2l.s | 13 +++---------- + src/math/x86_64/fmodl.s | 4 ++-- + src/math/x86_64/remainderl.s | 4 ++-- + 6 files changed, 14 insertions(+), 28 deletions(-) + +diff --git a/src/math/x32/exp2l.s b/src/math/x32/exp2l.s +index d9f4d6e..dfb2bc7 100644 +--- a/src/math/x32/exp2l.s ++++ b/src/math/x32/exp2l.s +@@ -6,9 +6,7 @@ expm1l: + fmulp + movl $0xc2820000,-4(%esp) + flds -4(%esp) +- fucomp %st(1) +- fnstsw %ax +- sahf ++ fucomip %st(1) + fld1 + jb 1f + # x*log2e <= -65, return -1 without underflow +@@ -17,11 +15,8 @@ expm1l: + ret + 1: fld %st(1) + fabs +- fucom %st(1) +- fnstsw %ax ++ fucomip %st(1) + fstp %st(0) +- fstp %st(0) +- sahf + ja 1f + f2xm1 + ret +@@ -53,9 +48,7 @@ exp2l: + fld %st(1) + fsub %st(1) + faddp +- fucomp %st(1) +- fnstsw +- sahf ++ fucomip %st(1) + je 2f # x - 0x1p63 + 0x1p63 == x + movl $1,(%esp) + flds (%esp) # 0x1p-149 +diff --git a/src/math/x32/fmodl.s b/src/math/x32/fmodl.s +index 9e4378a..b951320 100644 +--- a/src/math/x32/fmodl.s ++++ b/src/math/x32/fmodl.s +@@ -5,7 +5,7 @@ fmodl: + fldt 8(%esp) + 1: fprem + fstsw %ax +- sahf +- jp 1b ++ testb $4,%ah ++ jnz 1b + fstp %st(1) + ret +diff --git a/src/math/x32/remainderl.s b/src/math/x32/remainderl.s +index c97f68a..79bf4fe 100644 +--- a/src/math/x32/remainderl.s ++++ b/src/math/x32/remainderl.s +@@ -5,7 +5,7 @@ remainderl: + fldt 8(%esp) + 1: fprem1 + fstsw %ax +- sahf +- jp 1b ++ testb $4,%ah ++ jnz 1b + fstp %st(1) + ret +diff --git a/src/math/x86_64/exp2l.s b/src/math/x86_64/exp2l.s +index 0d6cd56..0e9bdf9 100644 +--- a/src/math/x86_64/exp2l.s ++++ b/src/math/x86_64/exp2l.s +@@ -6,9 +6,7 @@ expm1l: + fmulp + movl $0xc2820000,-4(%rsp) + flds -4(%rsp) +- fucomp %st(1) +- fnstsw %ax +- sahf ++ fucomip %st(1) + fld1 + jb 1f + # x*log2e <= -65, return -1 without underflow +@@ -17,11 +15,8 @@ expm1l: + ret + 1: fld %st(1) + fabs +- fucom %st(1) +- fnstsw %ax ++ fucomip %st(1) + fstp %st(0) +- fstp %st(0) +- sahf + ja 1f + f2xm1 + ret +@@ -53,9 +48,7 @@ exp2l: + fld %st(1) + fsub %st(1) + faddp +- fucomp %st(1) +- fnstsw +- sahf ++ fucomip %st(1) + je 2f # x - 0x1p63 + 0x1p63 == x + movl $1,(%rsp) + flds (%rsp) # 0x1p-149 +diff --git a/src/math/x86_64/fmodl.s b/src/math/x86_64/fmodl.s +index ca81e60..cd8d2b7 100644 +--- a/src/math/x86_64/fmodl.s ++++ b/src/math/x86_64/fmodl.s +@@ -5,7 +5,7 @@ fmodl: + fldt 8(%rsp) + 1: fprem + fstsw %ax +- sahf +- jp 1b ++ testb $4,%ah ++ jnz 1b + fstp %st(1) + ret +diff --git a/src/math/x86_64/remainderl.s b/src/math/x86_64/remainderl.s +index 75c1237..2c337cf 100644 +--- a/src/math/x86_64/remainderl.s ++++ b/src/math/x86_64/remainderl.s +@@ -5,7 +5,7 @@ remainderl: + fldt 8(%rsp) + 1: fprem1 + fstsw %ax +- sahf +- jp 1b ++ testb $4,%ah ++ jnz 1b + fstp %st(1) + ret +-- +2.2.0 + diff --git a/main/musl/0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch b/main/musl/0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch new file mode 100644 index 0000000000..2bd9dcd556 --- /dev/null +++ b/main/musl/0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch @@ -0,0 +1,168 @@ +From ec4318943a26d4bd4050481d11709853184f2794 Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy <nsz@port70.net> +Date: Wed, 5 Nov 2014 22:13:58 +0100 +Subject: [PATCH] math: use fnstsw consistently instead of fstsw in x87 asm + +fnstsw does not wait for pending unmasked x87 floating-point exceptions +and it is the same as fstsw when all exceptions are masked which is the +only environment libc supports. +--- + src/math/i386/fmod.s | 2 +- + src/math/i386/fmodf.s | 2 +- + src/math/i386/fmodl.s | 2 +- + src/math/i386/remainder.s | 2 +- + src/math/i386/remainderf.s | 2 +- + src/math/i386/remainderl.s | 2 +- + src/math/i386/sqrt.s | 2 +- + src/math/x32/fmodl.s | 2 +- + src/math/x32/remainderl.s | 2 +- + src/math/x86_64/fmodl.s | 2 +- + src/math/x86_64/remainderl.s | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/math/i386/fmod.s b/src/math/i386/fmod.s +index 069fbfe..2113b3c 100644 +--- a/src/math/i386/fmod.s ++++ b/src/math/i386/fmod.s +@@ -4,7 +4,7 @@ fmod: + fldl 12(%esp) + fldl 4(%esp) + 1: fprem +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/fmodf.s b/src/math/i386/fmodf.s +index d99c80f..e04e2a5 100644 +--- a/src/math/i386/fmodf.s ++++ b/src/math/i386/fmodf.s +@@ -4,7 +4,7 @@ fmodf: + flds 8(%esp) + flds 4(%esp) + 1: fprem +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/fmodl.s b/src/math/i386/fmodl.s +index 7e07e7b..0cb3fe9 100644 +--- a/src/math/i386/fmodl.s ++++ b/src/math/i386/fmodl.s +@@ -4,7 +4,7 @@ fmodl: + fldt 16(%esp) + fldt 4(%esp) + 1: fprem +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/remainder.s b/src/math/i386/remainder.s +index 7f4be05..ab1da95 100644 +--- a/src/math/i386/remainder.s ++++ b/src/math/i386/remainder.s +@@ -7,7 +7,7 @@ drem: + fldl 12(%esp) + fldl 4(%esp) + 1: fprem1 +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/remainderf.s b/src/math/i386/remainderf.s +index ac6e367..6a7378a 100644 +--- a/src/math/i386/remainderf.s ++++ b/src/math/i386/remainderf.s +@@ -7,7 +7,7 @@ dremf: + flds 8(%esp) + flds 4(%esp) + 1: fprem1 +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/remainderl.s b/src/math/i386/remainderl.s +index 0097872..b41518e 100644 +--- a/src/math/i386/remainderl.s ++++ b/src/math/i386/remainderl.s +@@ -4,7 +4,7 @@ remainderl: + fldt 16(%esp) + fldt 4(%esp) + 1: fprem1 +- fstsw %ax ++ fnstsw %ax + sahf + jp 1b + fstp %st(1) +diff --git a/src/math/i386/sqrt.s b/src/math/i386/sqrt.s +index 8289d09..57837e2 100644 +--- a/src/math/i386/sqrt.s ++++ b/src/math/i386/sqrt.s +@@ -2,7 +2,7 @@ + .type sqrt,@function + sqrt: fldl 4(%esp) + fsqrt +- fstsw %ax ++ fnstsw %ax + sub $12,%esp + fld %st(0) + fstpt (%esp) +diff --git a/src/math/x32/fmodl.s b/src/math/x32/fmodl.s +index b951320..c3f790c 100644 +--- a/src/math/x32/fmodl.s ++++ b/src/math/x32/fmodl.s +@@ -4,7 +4,7 @@ fmodl: + fldt 24(%esp) + fldt 8(%esp) + 1: fprem +- fstsw %ax ++ fnstsw %ax + testb $4,%ah + jnz 1b + fstp %st(1) +diff --git a/src/math/x32/remainderl.s b/src/math/x32/remainderl.s +index 79bf4fe..376ba0e 100644 +--- a/src/math/x32/remainderl.s ++++ b/src/math/x32/remainderl.s +@@ -4,7 +4,7 @@ remainderl: + fldt 24(%esp) + fldt 8(%esp) + 1: fprem1 +- fstsw %ax ++ fnstsw %ax + testb $4,%ah + jnz 1b + fstp %st(1) +diff --git a/src/math/x86_64/fmodl.s b/src/math/x86_64/fmodl.s +index cd8d2b7..ea07b40 100644 +--- a/src/math/x86_64/fmodl.s ++++ b/src/math/x86_64/fmodl.s +@@ -4,7 +4,7 @@ fmodl: + fldt 24(%rsp) + fldt 8(%rsp) + 1: fprem +- fstsw %ax ++ fnstsw %ax + testb $4,%ah + jnz 1b + fstp %st(1) +diff --git a/src/math/x86_64/remainderl.s b/src/math/x86_64/remainderl.s +index 2c337cf..cb3857b 100644 +--- a/src/math/x86_64/remainderl.s ++++ b/src/math/x86_64/remainderl.s +@@ -4,7 +4,7 @@ remainderl: + fldt 24(%rsp) + fldt 8(%rsp) + 1: fprem1 +- fstsw %ax ++ fnstsw %ax + testb $4,%ah + jnz 1b + fstp %st(1) +-- +2.2.0 + diff --git a/main/musl/0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch b/main/musl/0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch new file mode 100644 index 0000000000..c58122cfa5 --- /dev/null +++ b/main/musl/0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch @@ -0,0 +1,35 @@ +From b91cdbe2bc8b626aa04dc6e3e84345accf34e4b1 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Sat, 15 Nov 2014 12:16:19 -0500 +Subject: [PATCH] fix behavior of printf with alt-form octal, zero precision, + zero value + +in this case there are two conflicting rules in play: that an explicit +precision of zero with the value zero produces no output, and that the +'#' modifier for octal increases the precision sufficiently to yield a +leading zero. ISO C (7.19.6.1 paragraph 6 in C99+TC3) includes a +parenthetical remark to clarify that the precision-increasing behavior +takes precedence, but the corresponding text in POSIX off of which I +based the implementation is missing this remark. + +this issue was covered in WG14 DR#151. +--- + src/stdio/vfprintf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c +index ea25772..39c1e86 100644 +--- a/src/stdio/vfprintf.c ++++ b/src/stdio/vfprintf.c +@@ -570,7 +570,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, + if (0) { + case 'o': + a = fmt_o(arg.i, z); +- if ((fl&ALT_FORM) && arg.i) prefix+=5, pl=1; ++ if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1; + } if (0) { + case 'd': case 'i': + pl=1; +-- +2.2.0 + diff --git a/main/musl/0008-implement-a-private-state-for-the-uchar.h-functions.patch b/main/musl/0008-implement-a-private-state-for-the-uchar.h-functions.patch new file mode 100644 index 0000000000..5dfdae2044 --- /dev/null +++ b/main/musl/0008-implement-a-private-state-for-the-uchar.h-functions.patch @@ -0,0 +1,72 @@ +From 941644e98c3d05761b4639a8ae5afacd8586d1b9 Mon Sep 17 00:00:00 2001 +From: Jens Gustedt <Jens.Gustedt@inria.fr> +Date: Sun, 9 Nov 2014 11:18:08 +0100 +Subject: [PATCH] implement a private state for the uchar.h functions + +The C standard is imperative on that: + + 7.28.1 ... If ps is a null pointer, each function uses its own internal + mbstate_t object instead, which is initialized at program startup to + the initial conversion state; + +and these functions are also not supposed to implicitly use the state of +the wchar.h functions: + + 7.29.6.3 ... The implementation behaves as if no library function calls + these functions with a null pointer for ps. + +Previously this resulted in two bugs. + + - The functions c16rtomb and mbrtoc16 would crash when called with ps + set to null. + + - The function mbrtoc32 used the private state of mbrtowc, which it + is not allowed to do. +--- + src/multibyte/c16rtomb.c | 2 ++ + src/multibyte/mbrtoc16.c | 2 ++ + src/multibyte/mbrtoc32.c | 2 ++ + 3 files changed, 6 insertions(+) + +diff --git a/src/multibyte/c16rtomb.c b/src/multibyte/c16rtomb.c +index 2e8ec97..39ca375 100644 +--- a/src/multibyte/c16rtomb.c ++++ b/src/multibyte/c16rtomb.c +@@ -4,6 +4,8 @@ + + size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps) + { ++ static unsigned internal_state; ++ if (!ps) ps = (void *)&internal_state; + unsigned *x = (unsigned *)ps; + wchar_t wc; + +diff --git a/src/multibyte/mbrtoc16.c b/src/multibyte/mbrtoc16.c +index 74b7d77..765ff90 100644 +--- a/src/multibyte/mbrtoc16.c ++++ b/src/multibyte/mbrtoc16.c +@@ -3,6 +3,8 @@ + + size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbstate_t *restrict ps) + { ++ static unsigned internal_state; ++ if (!ps) ps = (void *)&internal_state; + unsigned *pending = (unsigned *)ps; + + if (!s) return mbrtoc16(0, "", 1, ps); +diff --git a/src/multibyte/mbrtoc32.c b/src/multibyte/mbrtoc32.c +index c6d2082..9b6b236 100644 +--- a/src/multibyte/mbrtoc32.c ++++ b/src/multibyte/mbrtoc32.c +@@ -3,6 +3,8 @@ + + size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps) + { ++ static unsigned internal_state; ++ if (!ps) ps = (void *)&internal_state; + if (!s) return mbrtoc32(0, "", 1, ps); + wchar_t wc; + size_t ret = mbrtowc(&wc, s, n, ps); +-- +2.2.0 + diff --git a/main/musl/0009-getopt-fix-optional-argument-processing.patch b/main/musl/0009-getopt-fix-optional-argument-processing.patch new file mode 100644 index 0000000000..e486d0c5d0 --- /dev/null +++ b/main/musl/0009-getopt-fix-optional-argument-processing.patch @@ -0,0 +1,38 @@ +From acccc93e084641861ca553317edb7da7791833b5 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau <nbd@openwrt.org> +Date: Tue, 21 Oct 2014 22:24:50 +0200 +Subject: [PATCH] getopt: fix optional argument processing + +Processing an option character with optional argument fails if the +option is last on the command line. This happens because the +if (optind >= argc) check runs first before testing for optional +argument. +--- + src/misc/getopt.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/misc/getopt.c b/src/misc/getopt.c +index 8a2e4d5..f94c4f7 100644 +--- a/src/misc/getopt.c ++++ b/src/misc/getopt.c +@@ -55,7 +55,8 @@ int getopt(int argc, char * const argv[], const char *optstring) + return '?'; + } + if (optstring[i+1] == ':') { +- if (optind >= argc) { ++ if (optstring[i+2] == ':') optarg = 0; ++ else if (optind >= argc) { + if (optstring[0] == ':') return ':'; + if (opterr) { + write(2, argv[0], strlen(argv[0])); +@@ -65,7 +66,6 @@ int getopt(int argc, char * const argv[], const char *optstring) + } + return '?'; + } +- if (optstring[i+2] == ':') optarg = 0; + if (optstring[i+2] != ':' || optpos) { + optarg = argv[optind++] + optpos; + optpos = 0; +-- +2.2.0 + diff --git a/main/musl/0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch b/main/musl/0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch new file mode 100644 index 0000000000..07a7083bf0 --- /dev/null +++ b/main/musl/0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch @@ -0,0 +1,31 @@ +From d8dc2b7c0289b12eeef4feff65e3c918111b0f55 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Sun, 23 Nov 2014 16:17:57 -0500 +Subject: [PATCH] adapt dynamic linker for new binutils versions that omit + DT_RPATH + +the new DT_RUNPATH semantics for search order are always used, and +since binutils had always set both DT_RPATH and DT_RUNPATH when the +latter was used, processing only DT_RPATH worked fine. however, recent +binutils has stopped generating DT_RPATH when DT_RUNPATH is used, +which broke support for this feature completely. +--- + src/ldso/dynlink.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c +index 1de430c..00af886 100644 +--- a/src/ldso/dynlink.c ++++ b/src/ldso/dynlink.c +@@ -645,6 +645,8 @@ static void decode_dyn(struct dso *p) + p->hashtab = (void *)(p->base + dyn[DT_HASH]); + if (dyn[0]&(1<<DT_RPATH)) + p->rpath_orig = (void *)(p->strings + dyn[DT_RPATH]); ++ if (dyn[0]&(1<<DT_RUNPATH)) ++ p->rpath_orig = (void *)(p->strings + dyn[DT_RUNPATH]); + if (search_vec(p->dynv, dyn, DT_GNU_HASH)) + p->ghashtab = (void *)(p->base + *dyn); + if (search_vec(p->dynv, dyn, DT_VERSYM)) +-- +2.2.0 + diff --git a/main/musl/0011-add-support-for-non-option-arguments-extension-to-ge.patch b/main/musl/0011-add-support-for-non-option-arguments-extension-to-ge.patch new file mode 100644 index 0000000000..7bf8e75e85 --- /dev/null +++ b/main/musl/0011-add-support-for-non-option-arguments-extension-to-ge.patch @@ -0,0 +1,71 @@ +From b72cd07f176b876aa51864d93aa8101477b1d732 Mon Sep 17 00:00:00 2001 +From: Gianluca Anzolin <gianluca@sottospazio.it> +Date: Tue, 25 Nov 2014 08:56:03 +0100 +Subject: [PATCH] add support for non-option arguments extension to getopt + +this is a GNU extension, activated by including '-' as the first +character of the options string, whereby non-option arguments are +processed as if they were arguments to an option character '\1' rather +than ending option processing. +--- + src/misc/getopt.c | 17 ++++++++++++++++- + src/misc/getopt_long.c | 7 ++++--- + 2 files changed, 20 insertions(+), 4 deletions(-) + +diff --git a/src/misc/getopt.c b/src/misc/getopt.c +index f94c4f7..a698c8d 100644 +--- a/src/misc/getopt.c ++++ b/src/misc/getopt.c +@@ -24,8 +24,20 @@ int getopt(int argc, char * const argv[], const char *optstring) + optind = 1; + } + +- if (optind >= argc || !argv[optind] || argv[optind][0] != '-' || !argv[optind][1]) ++ if (optind >= argc || !argv[optind]) + return -1; ++ ++ if (argv[optind][0] != '-') { ++ if (optstring[0] == '-') { ++ optarg = argv[optind++]; ++ return 1; ++ } ++ return -1; ++ } ++ ++ if (!argv[optind][1]) ++ return -1; ++ + if (argv[optind][1] == '-' && !argv[optind][2]) + return optind++, -1; + +@@ -43,6 +55,9 @@ int getopt(int argc, char * const argv[], const char *optstring) + optpos = 0; + } + ++ if (optstring[0] == '-') ++ optstring++; ++ + for (i=0; (l = mbtowc(&d, optstring+i, MB_LEN_MAX)) && d!=c; i+=l>0?l:1); + + if (d != c) { +diff --git a/src/misc/getopt_long.c b/src/misc/getopt_long.c +index 4ef5a5c..3d318ce 100644 +--- a/src/misc/getopt_long.c ++++ b/src/misc/getopt_long.c +@@ -12,9 +12,10 @@ static int __getopt_long(int argc, char *const *argv, const char *optstring, con + __optpos = 0; + optind = 1; + } +- if (optind >= argc || !argv[optind] || argv[optind][0] != '-') return -1; +- if ((longonly && argv[optind][1]) || +- (argv[optind][1] == '-' && argv[optind][2])) ++ if (optind >= argc || !argv[optind]) return -1; ++ if (argv[optind][0] == '-' && ++ ((longonly && argv[optind][1]) || ++ (argv[optind][1] == '-' && argv[optind][2]))) + { + int i; + for (i=0; longopts[i].name; i++) { +-- +2.2.0 + diff --git a/main/musl/0012-fix-uninitialized-output-from-sched_getaffinity.patch b/main/musl/0012-fix-uninitialized-output-from-sched_getaffinity.patch new file mode 100644 index 0000000000..8e99597be3 --- /dev/null +++ b/main/musl/0012-fix-uninitialized-output-from-sched_getaffinity.patch @@ -0,0 +1,39 @@ +From a56e339419c1a90f8a85f86621f3c73945e07b23 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Tue, 2 Dec 2014 21:54:36 -0500 +Subject: [PATCH] fix uninitialized output from sched_getaffinity + +the sched_getaffinity syscall only fills a cpu set up to the set size +used/supported by the kernel. the rest is left untouched and userspace +is responsible for zero-filling it based on the return value of the +syscall. +--- + src/sched/affinity.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/sched/affinity.c b/src/sched/affinity.c +index 3b40211..737e41b 100644 +--- a/src/sched/affinity.c ++++ b/src/sched/affinity.c +@@ -1,5 +1,6 @@ + #define _GNU_SOURCE + #include <sched.h> ++#include <string.h> + #include "pthread_impl.h" + #include "syscall.h" + +@@ -16,7 +17,10 @@ int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set) + int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) + { + long ret = __syscall(SYS_sched_getaffinity, tid, size, set); +- if (ret > 0) ret = 0; ++ if (ret > 0) { ++ if (ret < size) memset((char *)set+ret, 0, size-ret); ++ ret = 0; ++ } + return __syscall_ret(ret); + } + +-- +2.2.0 + diff --git a/main/musl/0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch b/main/musl/0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch new file mode 100644 index 0000000000..a38ab2f496 --- /dev/null +++ b/main/musl/0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch @@ -0,0 +1,51 @@ +From 66140b0c926ed097f2cb7474863523e4af351f5b Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Tue, 2 Dec 2014 22:17:52 -0500 +Subject: [PATCH] fix return value of pthread_getaffinity_np and + pthread_setaffinity_np + +these functions are expected to return an error code rather than +setting errno and returning -1. +--- + src/sched/affinity.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +diff --git a/src/sched/affinity.c b/src/sched/affinity.c +index 737e41b..948ece4 100644 +--- a/src/sched/affinity.c ++++ b/src/sched/affinity.c +@@ -11,20 +11,23 @@ int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set) + + int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set) + { +- return syscall(SYS_sched_setaffinity, td->tid, size, set); ++ return -__syscall(SYS_sched_setaffinity, td->tid, size, set); + } + +-int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) ++static int do_getaffinity(pid_t tid, size_t size, cpu_set_t *set) + { + long ret = __syscall(SYS_sched_getaffinity, tid, size, set); +- if (ret > 0) { +- if (ret < size) memset((char *)set+ret, 0, size-ret); +- ret = 0; +- } +- return __syscall_ret(ret); ++ if (ret < 0) return ret; ++ if (ret < size) memset((char *)set+ret, 0, size-ret); ++ return 0; ++} ++ ++int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) ++{ ++ return __syscall_ret(do_getaffinity(tid, size, set)); + } + + int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t *set) + { +- return sched_getaffinity(td->tid, size, set); ++ return -do_getaffinity(td->tid, size, set); + } +-- +2.2.0 + diff --git a/main/musl/0014-add-arm-private-syscall-numbers.patch b/main/musl/0014-add-arm-private-syscall-numbers.patch new file mode 100644 index 0000000000..408b65d792 --- /dev/null +++ b/main/musl/0014-add-arm-private-syscall-numbers.patch @@ -0,0 +1,29 @@ +From be1f67ab6fde1989af7b2e2946804e9009931a8a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Wed, 3 Dec 2014 16:09:37 +0200 +Subject: [PATCH] add arm private syscall numbers + +it is part of kernel uapi, and some programs (e.g. nodejs) do use them +--- + arch/arm/bits/syscall.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm/bits/syscall.h b/arch/arm/bits/syscall.h +index d1b1c99..df23b83 100644 +--- a/arch/arm/bits/syscall.h ++++ b/arch/arm/bits/syscall.h +@@ -340,6 +340,11 @@ + #define __NR_getrandom 384 + #define __NR_memfd_create 385 + ++#define __ARM_NR_breakpoint 0x0f0001 ++#define __ARM_NR_cacheflush 0x0f0002 ++#define __ARM_NR_usr26 0x0f0003 ++#define __ARM_NR_usr32 0x0f0004 ++#define __ARM_NR_set_tls 0x0f0005 + + /* Repeated with SYS_ prefix */ + +-- +2.2.0 + diff --git a/main/musl/APKBUILD b/main/musl/APKBUILD index d8f8c9fda8..0c77871f9e 100644 --- a/main/musl/APKBUILD +++ b/main/musl/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Timo Teräs <timo.teras@iki.fi> pkgname=musl pkgver=1.1.5 -pkgrel=0 +pkgrel=1 pkgdesc="the musl c library (libc) implementation" url="http://www.musl-libc.org/" arch="all" @@ -13,6 +13,20 @@ makedepends="$depends_dev" install="$pkgname.post-upgrade" subpackages="$pkgname-dev $pkgname-utils $pkgname-dbg" source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz + 0001-manually-shrink-wrap-fast-path-in-pthread_once.patch + 0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch + 0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch + 0004-fix-uninitialized-mode-variable-in-openat-function.patch + 0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch + 0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch + 0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch + 0008-implement-a-private-state-for-the-uchar.h-functions.patch + 0009-getopt-fix-optional-argument-processing.patch + 0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch + 0011-add-support-for-non-option-arguments-extension-to-ge.patch + 0012-fix-uninitialized-output-from-sched_getaffinity.patch + 0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch + 0014-add-arm-private-syscall-numbers.patch 1001-add-basic-dns-record-parsing-functions.patch 1003-remove-ulimit-fiddling-from-setxid.patch @@ -118,6 +132,20 @@ utils() { } md5sums="94f8aa9dab80229fed68991bb9984cc5 musl-1.1.5.tar.gz +facc7c96b21a72bc3ef3917f4add88ca 0001-manually-shrink-wrap-fast-path-in-pthread_once.patch +4ef3fa8b6fdc78515b83b7680b55a55f 0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch +70f9b257bcc76d6d9fa1e4d55327c220 0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch +7d1b8c611caafaf3b6c77359c7bf521e 0004-fix-uninitialized-mode-variable-in-openat-function.patch +bdd96730e9f4ce664502bc31336f4941 0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch +feba13393b07c4ce0a87cba7e3de49e1 0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch +859ca10150b56fb1ec046c75554c8aed 0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch +d7cc03dbd77755b25c7108aada242980 0008-implement-a-private-state-for-the-uchar.h-functions.patch +5ff1064dd67d75814b08270d1448042e 0009-getopt-fix-optional-argument-processing.patch +518c3b3a9819bf7ce1743a3fe58b970e 0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch +3896f988be70fad4ff9a774580b23e6c 0011-add-support-for-non-option-arguments-extension-to-ge.patch +d9b4d921348fa86e57c44bf4c95714bd 0012-fix-uninitialized-output-from-sched_getaffinity.patch +4ac6a08107b65927400f59f8f5e07f15 0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch +5d8dde8258654d404d0b7a06c5046829 0014-add-arm-private-syscall-numbers.patch 2371eb1ce057fcb709a0e6a81f0d356c 1001-add-basic-dns-record-parsing-functions.patch 71b2a4dcc39c436a6b89173943424043 1003-remove-ulimit-fiddling-from-setxid.patch 830d01f7821b978df770b06db3790921 ldconfig @@ -127,6 +155,20 @@ md5sums="94f8aa9dab80229fed68991bb9984cc5 musl-1.1.5.tar.gz 2b941c4251cac44988a4abfc50e21267 getent.c 45f92f8d59cf84d765de698a9578dbf4 iconv.c" sha256sums="352362b1724cc9740f4c3ce0fe02aae45e4de9809ea4ac961f31aedc11b87393 musl-1.1.5.tar.gz +dec352852801f8a5c7e6957014f761efce21e4b6c3223cf8ee6f7cac24c12c01 0001-manually-shrink-wrap-fast-path-in-pthread_once.patch +83168c779dbc575ab240aa360c320bdca8de41cbbd0ad8b9a26fbd74466ca58d 0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch +c04a1272b934d968a1fbec30269d02171ae5d6b7d4f3cd5d49cbd905c975341c 0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch +7d16772140a3f0811c0cf6822eb713e7a77b8974b609f9c7634ae42c3ca25a95 0004-fix-uninitialized-mode-variable-in-openat-function.patch +6052e3b1e0f489edcba648a78122ec21f0e2e2085917b1d2544e5802b2c83e0d 0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch +44905edc8b8c66b94c3428f029cd6aa5147074a02ca7f795bc8f92866ba328cf 0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch +46306557a669ac4e78a44664b49374a4a30eb041bba5f988bc666f29a2bba3d6 0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch +a3ac50a13d60ed7115fa423030029513d0f5889b63b7047356234e05095d306c 0008-implement-a-private-state-for-the-uchar.h-functions.patch +9300e0b2c7095fb070a43097c79aad34f019015dfcfae32ef946411537471d2f 0009-getopt-fix-optional-argument-processing.patch +bb48d16025f1a8323673141a0d6e5b5e54ddfbf7056cf8e2e38343e55a85a67e 0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch +44801a22c3cabc457043073a707412396c97fef0d0f49984818ee8df69f1b3d3 0011-add-support-for-non-option-arguments-extension-to-ge.patch +e3622c3b84c0f984b864ecdf5d26f602723d81afee0c9c5dd5a2f0f1b6325965 0012-fix-uninitialized-output-from-sched_getaffinity.patch +a6fa226f2bc0b2f56ef38df09bfe066b70e00d915b99657c2ced29c1262dfce4 0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch +fa2306adeda1a2ee733fcbc64fc8e0bb377b3c0dd6870ea15322722f08d135e1 0014-add-arm-private-syscall-numbers.patch 75053a31f6b84a64846d92c0ec631c76d7f747a9c0dc92a6dc1aa1bddfe2ea76 1001-add-basic-dns-record-parsing-functions.patch fb542c2bd5081ff2f601c519edb3dac8f54ca5c888f44bc6cfb84e6565472025 1003-remove-ulimit-fiddling-from-setxid.patch b4a2c06db38742e8c42c3c9838b285a7d8cdac6c091ff3df5ff9a15f1e41b9c7 ldconfig @@ -136,6 +178,20 @@ d87d0cbb3690ae2c5d8cc218349fd8278b93855dd625deaf7ae50e320aad247c getconf.c 68373a55e89ce85c562d941ccf588337d6cc6c9c17689d695f65cd7607134bbe getent.c f79a2930a2e5bb0624321589edf8b889d1e9b603e01e6b7ae214616605b3fdd7 iconv.c" sha512sums="4436887367137cbfc6d34e0f403b8dd36db2a55a5160681fef4de7cc0cb1be38487ea708e6aa6dc1328b61c62868b6cc19f099649c9d12e1ba812dfa8844b772 musl-1.1.5.tar.gz +665cdf9e616493629759ee8184863c124bd042c343f9408e93c5e87d9ed63ded1dce875cd659270d6bcb4453833ec578c81636c80aac15b6bb98f73295087e62 0001-manually-shrink-wrap-fast-path-in-pthread_once.patch +e650cf51c88204fad1dc29f8df8ec2faa5f746fa7b818e8b695ed8bb5c3788e7144e342e793731e0ebeaa7bc836b6b0d0f8006e33b802b96450f6cdc9bbdb0cc 0002-fix-failure-of-open-to-read-variadic-mode-argument-f.patch +96d884faff0b54e1cca9673faa26041c600148e86069ca029fa08fcba25423adc81ada03a3039000f6dfaa3f57f97197b2b54d231b08a051a61ce992e4aaa796 0003-fix-invalid-access-by-openat-to-possibly-missing-var.patch +15ba4fa68e8d7b890672789b03f7772bb150b1143883b2e77ade3b7d19ecf9ce2220b34a9ab00bd58e255880ee4cd79278986683ca5af32f84df3c3d09a79c58 0004-fix-uninitialized-mode-variable-in-openat-function.patch +ab26de82db2cb9d36bc8f21e5d1a9e89b8e55f189ec67e87d036911ed4bed6e22a78c06ca676136d9c3903f3702f517785566b3aec67d3cb8f861676dc795283 0005-math-fix-x86_64-and-x32-asm-not-to-use-sahf-instruct.patch +79a082aa9a8588a1778f6d447cd938db7c8c0564fbded6dfd795a96d2c8cc1080b9553cf3a68d951a349c7eae40fd854cdf241a2633afbd456f61d077a9c0f43 0006-math-use-fnstsw-consistently-instead-of-fstsw-in-x87.patch +564c590cc88eaf85a9c2d65c179589acfd6590639d51227375e46ebe0aa95421ac21c9042aae729a07e6ff8373a81e5c2f1e1776a76372d6a051b23f2e44df69 0007-fix-behavior-of-printf-with-alt-form-octal-zero-prec.patch +c4fa58663099b5a322557e7f59bdfbe13082baaa07fd387e62a0a72ed89b41b10d766d9e5c7fac8c1d56dc85c1528c7155bfa9e72bd29fe989ff88d56e8b6184 0008-implement-a-private-state-for-the-uchar.h-functions.patch +c8e8d9234993756822036e6854a5a9b80319a3c568f0ffb61efc7d5e963d008e0eb4b581535a257280759bedbba131d4cd9772dea6e8b1fa8edb41a4c08cd985 0009-getopt-fix-optional-argument-processing.patch +542173281f5c424922157833aa142bec567d99e402299f59a63685cef31434a5f19fbe55d6858250fc4d930a755855c0cc6946074869cf58777c551ceff4b9a9 0010-adapt-dynamic-linker-for-new-binutils-versions-that-.patch +c15f3a2cbc7e83efbad86930d64e3dd131a4ecc0c0956a395d344ef7e6d2e60d70b2181aefe7c2dddb866cb854d5d77d211ded6344784ddc789409dc1572c5d9 0011-add-support-for-non-option-arguments-extension-to-ge.patch +fcd04e66c812d108712d2ad937f117500d73311a0d1390bd6834d2093d844751bb0644f8b4ea820a3430b7b73e318a84e58f26419d5e664fb56b4507f5cf8e9c 0012-fix-uninitialized-output-from-sched_getaffinity.patch +85c3082a4fde1ec2739eb78b820792430cba9aeb082c53718698681b929675ee73546968cc3a41b38711afa2d140296bee7d9e7f43e9d5279cc7fd508835b1fc 0013-fix-return-value-of-pthread_getaffinity_np-and-pthre.patch +3374b983f6a5e4f8f0dc3e67c0cfb0d6fac153c6d5f7e604381e898b318f183faf8fc3995b960cd5a5fd7df0127b16cc6a98e3b0a534b1f156412af492f90ba1 0014-add-arm-private-syscall-numbers.patch 5b8ffa0a50419581adbf6ce2dae5797774022551c6331fa5aa2ff13635eb72b74eedd8a92cb478d45d73e1956af2f588669681ac414f3a255abd4d8ba8579448 1001-add-basic-dns-record-parsing-functions.patch dae010b45419fcab64410568466f659cdc874e63113025e2cbc2fbab047b470fec23851ecbef08886505924482a069caf37c16b483b6922535fbd31832f1c4a3 1003-remove-ulimit-fiddling-from-setxid.patch 8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig |