diff --git a/gnu-system.am b/gnu-system.am index 72ec9fc666..e98ae208a4 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -473,6 +473,7 @@ dist_patch_DATA = \ gnu/packages/patches/glibc-bootstrap-system.patch \ gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/glibc-locales.patch \ + gnu/packages/patches/glibc-o-largefile.patch \ gnu/packages/patches/gmp-arm-asm-nothumb.patch \ gnu/packages/patches/gnutls-doc-fix.patch \ gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \ 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 refers to , 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 +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 +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)