M gnu-system.am => gnu-system.am +1 -0
@@ 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 \
M gnu/packages/base.scm => gnu/packages/base.scm +3 -1
@@ 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
A gnu/packages/patches/glibc-o-largefile.patch => gnu/packages/patches/glibc-o-largefile.patch +25 -0
@@ 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)