diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2012-07-05 13:49:52 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2012-07-05 13:49:52 +0000 |
commit | d33928ad3fa562f54c1a649926623a96feae1c64 (patch) | |
tree | 6ab6fb47cd94d98d3555f82ef8a8c1195e6d30cb /main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch | |
parent | a20bdf6b1652bf2a1133b7be6e16e5f970392120 (diff) | |
download | aports-d33928ad3fa562f54c1a649926623a96feae1c64.tar.bz2 aports-d33928ad3fa562f54c1a649926623a96feae1c64.tar.xz |
main/libc0.9.32: backport the pread/pwrite fixes from master
The previous patch I did broke x86_64.
Diffstat (limited to 'main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch')
-rw-r--r-- | main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch | 385 |
1 files changed, 385 insertions, 0 deletions
diff --git a/main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch b/main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch new file mode 100644 index 0000000000..0f4091ffe9 --- /dev/null +++ b/main/libc0.9.32/0003-pread-pwrite-drop-fallback-funcs.patch @@ -0,0 +1,385 @@ +From eb5db626afa3dccbd5d2cb0f4fbec6a1606dcfff Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gentoo.org> +Date: Wed, 30 May 2012 01:40:33 -0400 +Subject: [PATCH 3/6] pread/pwrite: drop fallback funcs + +Linux has provided these functions since the 2.1.x era, so no need to +keep these around. We'd rather find out when things are missing (and +fix that) than fall back to the unsafe hacks. + +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +(cherry picked from commit 80c9bfc4668e2370b3434a801dc266f336265832) +--- + libc/sysdeps/linux/common/pread_write.c | 112 ----------------------------- + libc/sysdeps/linux/powerpc/pread_write.c | 117 ------------------------------- + libc/sysdeps/linux/xtensa/pread_write.c | 112 ----------------------------- + 3 files changed, 341 deletions(-) + +diff --git a/libc/sysdeps/linux/common/pread_write.c b/libc/sysdeps/linux/common/pread_write.c +index 089ee93..48fe7dd 100644 +--- a/libc/sysdeps/linux/common/pread_write.c ++++ b/libc/sysdeps/linux/common/pread_write.c +@@ -83,115 +83,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) + weak_alias(__libc_pwrite64,pwrite64) + # endif /* __UCLIBC_HAS_LFS__ */ + #endif /* __NR_pwrite */ +- +-#if ! defined __NR_pread || ! defined __NR_pwrite +- +-static ssize_t __fake_pread_write(int fd, void *buf, +- size_t count, off_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek(fd, offset, SEEK_SET) == (off_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. If this fails we +- * have to return this as an error. */ +- save_errno = errno; +- if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) +- { +- if (result == -1) +- __set_errno(save_errno); +- return -1; +- } +- __set_errno(save_errno); +- return(result); +-} +- +-# ifdef __UCLIBC_HAS_LFS__ +- +-static ssize_t __fake_pread_write64(int fd, void *buf, +- size_t count, off64_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off64_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. */ +- save_errno = errno; +- if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) { +- if (result == -1) +- __set_errno (save_errno); +- return -1; +- } +- __set_errno (save_errno); +- return result; +-} +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ +- +-#ifndef __NR_pread +-ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) +-{ +- return __fake_pread_write(fd, buf, count, offset, 0); +-} +-weak_alias(__libc_pread,pread) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) +-{ +- return __fake_pread_write64(fd, buf, count, offset, 0); +-} +-weak_alias(__libc_pread64,pread64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pread */ +- +-#ifndef __NR_pwrite +-ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) +-{ +- /* we won't actually be modifying the buffer, +- *just cast it to get rid of warnings */ +- return __fake_pread_write(fd, (void*)buf, count, offset, 1); +-} +-weak_alias(__libc_pwrite,pwrite) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) +-{ +- return __fake_pread_write64(fd, (void*)buf, count, offset, 1); +-} +-weak_alias(__libc_pwrite64,pwrite64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pwrite */ +diff --git a/libc/sysdeps/linux/powerpc/pread_write.c b/libc/sysdeps/linux/powerpc/pread_write.c +index 23f256f..92a184c 100644 +--- a/libc/sysdeps/linux/powerpc/pread_write.c ++++ b/libc/sysdeps/linux/powerpc/pread_write.c +@@ -77,120 +77,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) + weak_alias(__libc_pwrite64,pwrite64) + # endif /* __UCLIBC_HAS_LFS__ */ + #endif /* __NR_pwrite */ +- +- +- +-#if ! defined __NR_pread || ! defined __NR_pwrite +- +-static ssize_t __fake_pread_write(int fd, void *buf, +- size_t count, off_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek (fd, offset, SEEK_SET) == (off_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. If this fails we +- * have to return this as an error. */ +- save_errno = errno; +- if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) +- { +- if (result == -1) +- __set_errno(save_errno); +- return -1; +- } +- __set_errno(save_errno); +- return(result); +-} +- +-# ifdef __UCLIBC_HAS_LFS__ +- +-static ssize_t __fake_pread_write64(int fd, void *buf, +- size_t count, off64_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off64_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. */ +- save_errno = errno; +- if (lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) { +- if (result == -1) +- __set_errno (save_errno); +- return -1; +- } +- __set_errno (save_errno); +- return result; +-} +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ +- +-#ifndef __NR_pread +-ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset); +-ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) +-{ +- return(__fake_pread_write(fd, buf, count, offset, 0)); +-} +-weak_alias(__libc_pread,pread) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset); +-ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) +-{ +- return(__fake_pread_write64(fd, buf, count, offset, 0)); +-} +-weak_alias(__libc_pread64,pread64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pread */ +- +- +-#ifndef __NR_pwrite +-ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset); +-ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) +-{ +- return(__fake_pread_write(fd, (void*)buf, count, offset, 1)); +-} +-weak_alias(__libc_pwrite,pwrite) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset); +-ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) +-{ +- return(__fake_pread_write64(fd, (void*)buf, count, offset, 1)); +-} +-weak_alias(__libc_pwrite64,pwrite64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pwrite */ +diff --git a/libc/sysdeps/linux/xtensa/pread_write.c b/libc/sysdeps/linux/xtensa/pread_write.c +index bcf7dee..e8b39e9 100644 +--- a/libc/sysdeps/linux/xtensa/pread_write.c ++++ b/libc/sysdeps/linux/xtensa/pread_write.c +@@ -89,115 +89,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) + weak_alias(__libc_pwrite64,pwrite64) + # endif /* __UCLIBC_HAS_LFS__ */ + #endif /* __NR_pwrite */ +- +-#if ! defined __NR_pread || ! defined __NR_pwrite +- +-static ssize_t __fake_pread_write(int fd, void *buf, +- size_t count, off_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek(fd, offset, SEEK_SET) == (off_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. If this fails we +- * have to return this as an error. */ +- save_errno = errno; +- if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) +- { +- if (result == -1) +- __set_errno(save_errno); +- return -1; +- } +- __set_errno(save_errno); +- return(result); +-} +- +-# ifdef __UCLIBC_HAS_LFS__ +- +-static ssize_t __fake_pread_write64(int fd, void *buf, +- size_t count, off64_t offset, int do_pwrite) +-{ +- int save_errno; +- ssize_t result; +- off64_t old_offset; +- +- /* Since we must not change the file pointer preserve the +- * value so that we can restore it later. */ +- if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) +- return -1; +- +- /* Set to wanted position. */ +- if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) +- return -1; +- +- if (do_pwrite == 1) { +- /* Write the data. */ +- result = write(fd, buf, count); +- } else { +- /* Read the data. */ +- result = read(fd, buf, count); +- } +- +- /* Now we have to restore the position. */ +- save_errno = errno; +- if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) { +- if (result == -1) +- __set_errno (save_errno); +- return -1; +- } +- __set_errno (save_errno); +- return result; +-} +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ +- +-#ifndef __NR_pread +-ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) +-{ +- return __fake_pread_write(fd, buf, count, offset, 0); +-} +-weak_alias(__libc_pread,pread) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) +-{ +- return __fake_pread_write64(fd, buf, count, offset, 0); +-} +-weak_alias(__libc_pread64,pread64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pread */ +- +-#ifndef __NR_pwrite +-ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) +-{ +- /* we won't actually be modifying the buffer, +- *just cast it to get rid of warnings */ +- return __fake_pread_write(fd, (void*)buf, count, offset, 1); +-} +-weak_alias(__libc_pwrite,pwrite) +- +-# ifdef __UCLIBC_HAS_LFS__ +-ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) +-{ +- return __fake_pread_write64(fd, (void*)buf, count, offset, 1); +-} +-weak_alias(__libc_pwrite64,pwrite64) +-# endif /* __UCLIBC_HAS_LFS__ */ +-#endif /* ! __NR_pwrite */ +-- +1.7.11.1 + |