diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-09-08 15:53:05 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-09-08 15:53:05 +0200 |
commit | c5d8e688dc79f8ea2094adf04d2274332cf5cb6c (patch) | |
tree | bd9164e5344c32a5e80324942c05b995d2c20034 /gnu | |
parent | 140b4bc6cd4cda79ab48c3fecc8c98afeb02cdf6 (diff) | |
download | guix-patches-c5d8e688dc79f8ea2094adf04d2274332cf5cb6c.tar guix-patches-c5d8e688dc79f8ea2094adf04d2274332cf5cb6c.tar.gz |
gnu: glibc: Patch 'openat64', which was buggy on 32-bit platforms.
* gnu/packages/patches/glibc-o-largefile.patch: New file.
* gnu/packages/base.scm (glibc)[source]: Add it to 'patches'.
* gnu-system.am (dist_patch_DATA): Add it.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/base.scm | 4 | ||||
-rw-r--r-- | gnu/packages/patches/glibc-o-largefile.patch | 25 |
2 files changed, 28 insertions, 1 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 76fd1115eb..e2d4727c9c 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -471,7 +471,9 @@ store.") (("use_ldconfig=yes") "use_ldconfig=no"))) (modules '((guix build utils))) - (patches (list (search-patch "glibc-ldd-x86_64.patch"))))) + (patches (map search-patch + '("glibc-ldd-x86_64.patch" + "glibc-o-largefile.patch"))))) (build-system gnu-build-system) ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc diff --git a/gnu/packages/patches/glibc-o-largefile.patch b/gnu/packages/patches/glibc-o-largefile.patch new file mode 100644 index 0000000000..2b0ae8c8bb --- /dev/null +++ b/gnu/packages/patches/glibc-o-largefile.patch @@ -0,0 +1,25 @@ +This fixes <https://sourceware.org/bugzilla/show_bug.cgi?id=18781> +whereby, on 32-bit platforms, libc 2.22 would fail to pass O_LARGEFILE +to 'openat'. This was caught by 'tests/sparse03.at' in the tar +test suite. + +commit eb32b0d40308166c4d8f6330cc2958cb1e545075 +Author: Andreas Schwab <schwab@suse.de> +Date: Mon Aug 10 14:12:47 2015 +0200 + + Readd O_LARGEFILE flag for openat64 (bug 18781) + +--- a/sysdeps/unix/sysv/linux/openat.c ++++ b/sysdeps/unix/sysv/linux/openat.c +@@ -68,6 +68,11 @@ __OPENAT (int fd, const char *file, int oflag, ...) + va_end (arg); + } + ++ /* We have to add the O_LARGEFILE flag for openat64. */ ++#ifdef MORE_OFLAGS ++ oflag |= MORE_OFLAGS; ++#endif ++ + return SYSCALL_CANCEL (openat, fd, file, oflag, mode); + } + libc_hidden_def (__OPENAT) |