82 lines
2.8 KiB
Diff
82 lines
2.8 KiB
Diff
|
From 3bac4caa2bc64db313aaee54fffb90383e118517 Mon Sep 17 00:00:00 2001
|
||
|
From: Felix Janda <felix.janda@posteo.de>
|
||
|
Date: Thu, 22 Jan 2015 19:54:36 +0100
|
||
|
Subject: [PATCH] Remove direct _llseek code and require long filesystem libc.
|
||
|
|
||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||
|
---
|
||
|
Upstream-Status: Backport
|
||
|
configure.ac | 8 ++++++++
|
||
|
grub-core/osdep/unix/hostdisk.c | 24 ------------------------
|
||
|
4 files changed, 13 insertions(+), 24 deletions(-)
|
||
|
|
||
|
Index: grub-2.00/configure.ac
|
||
|
===================================================================
|
||
|
--- grub-2.00.orig/configure.ac
|
||
|
+++ grub-2.00/configure.ac
|
||
|
@@ -306,6 +306,14 @@ if test x$grub_cv_apple_cc = xyes ; then
|
||
|
HOST_LDFLAGS="$HOST_LDFLAGS -Wl,-allow_stack_execute"
|
||
|
fi
|
||
|
|
||
|
+case "$host_os" in
|
||
|
+ cygwin | windows* | mingw32* | aros*)
|
||
|
+ ;;
|
||
|
+ *)
|
||
|
+ AC_CHECK_SIZEOF(off_t)
|
||
|
+ test x"$ac_cv_sizeof_off_t" = x8 || AC_MSG_ERROR([Large file support is required]);;
|
||
|
+esac
|
||
|
+
|
||
|
if test x$USE_NLS = xno; then
|
||
|
HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
|
||
|
fi
|
||
|
Index: grub-2.00/grub-core/kern/emu/hostdisk.c
|
||
|
===================================================================
|
||
|
--- grub-2.00.orig/grub-core/kern/emu/hostdisk.c
|
||
|
+++ grub-2.00/grub-core/kern/emu/hostdisk.c
|
||
|
@@ -44,11 +44,6 @@
|
||
|
#ifdef __linux__
|
||
|
# include <sys/ioctl.h> /* ioctl */
|
||
|
# include <sys/mount.h>
|
||
|
-# if !defined(__GLIBC__) || \
|
||
|
- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))
|
||
|
-/* Maybe libc doesn't have large file support. */
|
||
|
-# include <linux/unistd.h> /* _llseek */
|
||
|
-# endif /* (GLIBC < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR < 1)) */
|
||
|
# ifndef BLKFLSBUF
|
||
|
# define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */
|
||
|
# endif /* ! BLKFLSBUF */
|
||
|
@@ -761,25 +756,6 @@ linux_find_partition (char *dev, grub_di
|
||
|
}
|
||
|
#endif /* __linux__ */
|
||
|
|
||
|
-#if defined(__linux__) && (!defined(__GLIBC__) || \
|
||
|
- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))))
|
||
|
- /* Maybe libc doesn't have large file support. */
|
||
|
-grub_err_t
|
||
|
-grub_util_fd_seek (int fd, const char *name, grub_uint64_t off)
|
||
|
-{
|
||
|
- loff_t offset, result;
|
||
|
- static int _llseek (uint filedes, ulong hi, ulong lo,
|
||
|
- loff_t *res, uint wh);
|
||
|
- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo,
|
||
|
- loff_t *, res, uint, wh);
|
||
|
-
|
||
|
- offset = (loff_t) off;
|
||
|
- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET))
|
||
|
- return grub_error (GRUB_ERR_BAD_DEVICE, N_("cannot seek `%s': %s"),
|
||
|
- name, strerror (errno));
|
||
|
- return GRUB_ERR_NONE;
|
||
|
-}
|
||
|
-#else
|
||
|
grub_err_t
|
||
|
grub_util_fd_seek (int fd, const char *name, grub_uint64_t off)
|
||
|
{
|
||
|
@@ -790,7 +766,6 @@ grub_util_fd_seek (int fd, const char *n
|
||
|
name, strerror (errno));
|
||
|
return 0;
|
||
|
}
|
||
|
-#endif
|
||
|
|
||
|
static void
|
||
|
flush_initial_buffer (const char *os_dev __attribute__ ((unused)))
|