From 3bac4caa2bc64db313aaee54fffb90383e118517 Mon Sep 17 00:00:00 2001 From: Felix Janda 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 --- 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 /* ioctl */ # include -# if !defined(__GLIBC__) || \ - ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))) -/* Maybe libc doesn't have large file support. */ -# include /* _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)))