summary refs log tree commit diff
path: root/gnu/packages/patches/glibc-o-largefile.patch
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-09-08 15:53:05 +0200
committerLudovic Courtès <ludo@gnu.org>2015-09-08 15:53:05 +0200
commitc5d8e688dc79f8ea2094adf04d2274332cf5cb6c (patch)
treebd9164e5344c32a5e80324942c05b995d2c20034 /gnu/packages/patches/glibc-o-largefile.patch
parent140b4bc6cd4cda79ab48c3fecc8c98afeb02cdf6 (diff)
downloadguix-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/packages/patches/glibc-o-largefile.patch')
-rw-r--r--gnu/packages/patches/glibc-o-largefile.patch25
1 files changed, 25 insertions, 0 deletions
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)