From c30b12b9a5cc35b658e65b3ff54e9c877f1380ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 10 Apr 2017 11:13:00 +0200 Subject: [PATCH] glibc: fix i686 crashes via an upstream patch Fixes #23177. --- pkgs/development/libraries/glibc/common.nix | 2 ++ .../libraries/glibc/fix-i686-memchr.patch | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/development/libraries/glibc/fix-i686-memchr.patch diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 7128f5606193..3d146c543987 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -48,6 +48,8 @@ stdenv.mkDerivation ({ "/bin:/usr/bin", which is inappropriate on NixOS machines. This patch extends the search path by "/run/current-system/sw/bin". */ ./fix_path_attribute_in_getconf.patch + + ./fix-i686-memchr.patch ]; postPatch = diff --git a/pkgs/development/libraries/glibc/fix-i686-memchr.patch b/pkgs/development/libraries/glibc/fix-i686-memchr.patch new file mode 100644 index 000000000000..32564de9f3ae --- /dev/null +++ b/pkgs/development/libraries/glibc/fix-i686-memchr.patch @@ -0,0 +1,23 @@ +Fix i686 memchr overflow calculation (BZ#21182) + +https://sourceware.org/git/?p=glibc.git;a=commit;h=3abeeec5f46ff03 +diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2.S b/sysdeps/i386/i686/multiarch/memchr-sse2.S +index 910679c..e41f324 100644 +--- a/sysdeps/i386/i686/multiarch/memchr-sse2.S ++++ b/sysdeps/i386/i686/multiarch/memchr-sse2.S +@@ -117,7 +117,6 @@ L(crosscache): + + # ifndef USE_AS_RAWMEMCHR + jnz L(match_case2_prolog1) +- lea -16(%edx), %edx + /* Calculate the last acceptable address and check for possible + addition overflow by using satured math: + edx = ecx + edx +@@ -125,6 +124,7 @@ L(crosscache): + add %ecx, %edx + sbb %eax, %eax + or %eax, %edx ++ sub $16, %edx + jbe L(return_null) + lea 16(%edi), %edi + # else