diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-04-27 21:29:55 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2006-04-27 21:29:55 +0000 |
commit | 0ad70fc14340d1e3ac2976014766c6eb6d5d3715 (patch) | |
tree | 31c5833023f6399a6bada4016306a5a417461ed7 | |
parent | 9b356005b4dca9c57af7cb1f5313a13a728c6310 (diff) | |
download | glibc-0ad70fc14340d1e3ac2976014766c6eb6d5d3715.tar glibc-0ad70fc14340d1e3ac2976014766c6eb6d5d3715.tar.gz glibc-0ad70fc14340d1e3ac2976014766c6eb6d5d3715.tar.bz2 glibc-0ad70fc14340d1e3ac2976014766c6eb6d5d3715.zip |
Updated to fedora-glibc-20060427T2122
-rw-r--r-- | ChangeLog | 38 | ||||
-rw-r--r-- | Makeconfig | 3 | ||||
-rw-r--r-- | fedora/branch.mk | 4 | ||||
-rw-r--r-- | iconvdata/ibm932.c | 16 | ||||
-rw-r--r-- | iconvdata/ibm943.c | 16 | ||||
-rw-r--r-- | localedata/ChangeLog | 14 | ||||
-rw-r--r-- | nptl/ChangeLog | 10 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/timer_routines.c | 36 | ||||
-rw-r--r-- | nptl/sysdeps/x86_64/tls.h | 4 | ||||
-rw-r--r-- | nscd/connections.c | 17 | ||||
-rw-r--r-- | nscd/nscd.conf | 2 | ||||
-rw-r--r-- | stdio-common/renameat.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Versions | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/bits/fcntl.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/uio.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/bits/fcntl.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/bits/fcntl.h | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/bits/fcntl.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/bits/fcntl.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/fcntl.h | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h | 9 |
23 files changed, 179 insertions, 64 deletions
@@ -1,10 +1,48 @@ +2006-04-27 Ulrich Drepper <drepper@redhat.com> + + * nscd/connections.c (restart): If we want to switch back to the + old ID use setresuid and setresgid. + (finish_drop_privileges): Likewise. + +2006-04-27 Jakub Jelinek <jakub@redhat.com> + + * nscd/nscd.conf: Fix a typo. + +2006-04-27 Ulrich Drepper <drepper@redhat.com> + + [BZ #2611] + * stdio-common/renameat.c (renameat): Fix typo. + 2006-04-27 Jakub Jelinek <jakub@redhat.com> * nscd/connections.c (sighup_handler): Only run prune_cache on enabled databases. +2006-04-26 Roland McGrath <roland@redhat.com> + + * Makeconfig (%.v.i rule): Don't use -DASSEMBLER. + The predefined __ASSEMBLER__ is sufficient. + 2006-04-26 Ulrich Drepper <drepper@redhat.com> + [BZ #1386] + * iconvdata/ibm932.c: Change mapping to allow round-trips. + * iconvdata/ibm943.c: Likewise. + Patch by Masahide Washizawa <WASHI@jp.ibm.com>. + + * sysdeps/unix/sysv/linux/syscalls.list: Add vmsplice. + * sysdeps/unix/sysv/linux/Versions: Export vmsplice@@GLIBC_2.5. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Declare vmsplice. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. + + * sysdeps/unix/sysv/linux/bits/uio.h: Fix a typo in a comment. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix typo which caused bugs not to be reported. diff --git a/Makeconfig b/Makeconfig index 1f4b62822a..87f8ba7fbe 100644 --- a/Makeconfig +++ b/Makeconfig @@ -783,8 +783,7 @@ ifeq (yes, $(build-shared)) # (but no commands). %.v.i: $(common-objpfx)config.h sed '/^[ ]*#/d;s/^[ ]*%/#/' $(filter-out FORCE %.h,$^) \ - | $(CC) -E -undef $(CPPFLAGS) \ - -DASSEMBLER -x assembler-with-cpp - \ + | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \ > $@T mv -f $@T $@ %.v: %.v.i diff --git a/fedora/branch.mk b/fedora/branch.mk index 3c74097cd1..60cebf722c 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc4 -fedora-sync-date := 2006-04-26 20:00 UTC -fedora-sync-tag := fedora-glibc-20060426T2000 +fedora-sync-date := 2006-04-27 21:22 UTC +fedora-sync-tag := fedora-glibc-20060427T2122 diff --git a/iconvdata/ibm932.c b/iconvdata/ibm932.c index 8f05581c13..4fb1582e79 100644 --- a/iconvdata/ibm932.c +++ b/iconvdata/ibm932.c @@ -94,16 +94,10 @@ } \ else \ { \ - if (res == 0x1c) \ - res = 0x1a; \ - else if (res == 0x7f) \ - res = 0x1c; \ - else if (res == 0xa5) \ + if (res == 0xa5) \ res = 0x5c; \ else if (res == 0x203e) \ res = 0x7e; \ - else if (res == 0x1a) \ - res = 0x7f; \ put32 (outptr, res); \ outptr += 4; \ inptr++; \ @@ -117,16 +111,10 @@ uint32_t res = __ibm932sb_to_ucs4[c]; \ if (res == 0 && c != 0) \ return WEOF; \ - if (res == 0x1c) \ - res = 0x1a; \ - else if (res == 0x7f) \ - res = 0x1c; \ - else if (res == 0xa5) \ + if (res == 0xa5) \ res = 0x5c; \ else if (res == 0x203e) \ res = 0x7e; \ - else if (res == 0x1a) \ - res = 0x7f; \ return res; \ } #include <iconv/loop.c> diff --git a/iconvdata/ibm943.c b/iconvdata/ibm943.c index daeac1d8b2..119bb1f4b9 100644 --- a/iconvdata/ibm943.c +++ b/iconvdata/ibm943.c @@ -95,16 +95,10 @@ } \ else \ { \ - if (res == 0x1c) \ - res = 0x1a; \ - else if (res == 0x7f) \ - res = 0x1c; \ - else if (res == 0xa5) \ + if (res == 0xa5) \ res = 0x5c; \ else if (res == 0x203e) \ res = 0x7e; \ - else if (res == 0x1a) \ - res = 0x7f; \ put32 (outptr, res); \ outptr += 4; \ inptr++; \ @@ -118,16 +112,10 @@ uint32_t res = __ibm943sb_to_ucs4[c]; \ if (res == 0 && c != 0) \ return WEOF; \ - if (res == 0x1c) \ - res = 0x1a; \ - else if (res == 0x7f) \ - res = 0x1c; \ - else if (res == 0xa5) \ + if (res == 0xa5) \ res = 0x5c; \ else if (res == 0x203e) \ res = 0x7e; \ - else if (res == 0x1a) \ - res = 0x7f; \ return res; \ } #include <iconv/loop.c> diff --git a/localedata/ChangeLog b/localedata/ChangeLog index addfec9c9d..423a3bac62 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,11 +1,11 @@ 2006-04-26 Ulrich Drepper <drepper@redhat.com> - * bg_BG: Update after iso-4217.def update. - * bs_BA: Likewise. - * es_MX: Likewise. - * ru_RU: Likewise. - * tg_TJ: Likewise. - * tt_RU: Likewise. + * locales/bg_BG: Update after iso-4217.def update. + * locales/bs_BA: Likewise. + * locales/es_MX: Likewise. + * locales/ru_RU: Likewise. + * locales/tg_TJ: Likewise. + * locales/tt_RU: Likewise. 2006-04-25 Ulrich Drepper <drepper@redhat.com> @@ -24,7 +24,7 @@ * locales/ca_AD: New file. * locales/ca_FR: New file. * locales/ca_IT: New file. - + 2006-04-23 Ulrich Drepper <drepper@redhat.com> [BZ #2134] diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 2418fa8106..41a1d7f594 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,13 @@ +2006-04-27 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread): + Allocate new object which is passed to timer_sigev_thread so that + the timer can be deleted before the new thread is scheduled. + +2006-04-26 Roland McGrath <roland@redhat.com> + + * sysdeps/x86_64/tls.h: Include <asm/prctl.h> inside [! __ASSEMBLER__]. + 2006-04-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove branch predicion diff --git a/nptl/sysdeps/unix/sysv/linux/timer_routines.c b/nptl/sysdeps/unix/sysv/linux/timer_routines.c index c180b27c96..a5eb442251 100644 --- a/nptl/sysdeps/unix/sysv/linux/timer_routines.c +++ b/nptl/sysdeps/unix/sysv/linux/timer_routines.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. @@ -27,6 +27,13 @@ #include "kernel-posix-timers.h" +struct thread_start_data +{ + void (*thrfunc) (sigval_t); + sigval_t sival; +}; + + #ifdef __NR_timer_create /* Helper thread to call the user-provided function. */ static void * @@ -40,10 +47,16 @@ timer_sigev_thread (void *arg) INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, NULL, _NSIG / 8); - struct timer *tk = (struct timer *) arg; + struct thread_start_data *td = (struct thread_start_data *) arg; + + void (*thrfunc) (sigval_t) = td->thrfunc; + sigval_t sival = td->sival; + + /* The TD object was allocated in timer_helper_thread. */ + free (td); /* Call the user-provided function. */ - tk->thrfunc (tk->sival); + thrfunc (sival); return NULL; } @@ -82,10 +95,19 @@ timer_helper_thread (void *arg) if (si.si_code == SI_TIMER) { struct timer *tk = (struct timer *) si.si_ptr; - - /* That the signal we are waiting for. */ - pthread_t th; - (void) pthread_create (&th, &tk->attr, timer_sigev_thread, tk); + struct thread_start_data *td = malloc (sizeof (*td)); + + /* There is not much we can do if the allocation fails. */ + if (td != NULL) + { + /* That is the signal we are waiting for. */ + td->thrfunc = tk->thrfunc; + td->sival = tk->sival; + + pthread_t th; + (void) pthread_create (&th, &tk->attr, timer_sigev_thread, + td); + } } else if (si.si_code == SI_TKILL) /* The thread is canceled. */ diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h index 13cf6fb3f5..65ff0639b6 100644 --- a/nptl/sysdeps/x86_64/tls.h +++ b/nptl/sysdeps/x86_64/tls.h @@ -1,5 +1,5 @@ /* Definition for thread-local data handling. nptl/x86_64 version. - Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,8 +20,8 @@ #ifndef _TLS_H #define _TLS_H 1 -#include <asm/prctl.h> /* For ARCH_SET_FS. */ #ifndef __ASSEMBLER__ +# include <asm/prctl.h> /* For ARCH_SET_FS. */ # include <stdbool.h> # include <stddef.h> # include <stdint.h> diff --git a/nscd/connections.c b/nscd/connections.c index f8e66c20a6..167b9913f4 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -1176,7 +1176,7 @@ cannot open /proc/self/cmdline: %s; disabling paranoia mode"), /* Second, change back to the old user if we changed it. */ if (server_user != NULL) { - if (setuid (old_uid) != 0) + if (setresuid (old_uid, old_uid, old_uid) != 0) { dbg_log (_("\ cannot change to old UID: %s; disabling paranoia mode"), @@ -1186,7 +1186,7 @@ cannot change to old UID: %s; disabling paranoia mode"), return; } - if (setgid (old_gid) != 0) + if (setresgid (old_gid, old_gid, old_gid) != 0) { dbg_log (_("\ cannot change to old GID: %s; disabling paranoia mode"), @@ -1873,14 +1873,23 @@ finish_drop_privileges (void) error (EXIT_FAILURE, errno, _("setgroups failed")); } - if (setgid (server_gid) == -1) + int res; + if (paranoia) + res = setresgid (server_gid, server_gid, old_gid); + else + res = setgid (server_gid); + if (res == -1) { dbg_log (_("Failed to run nscd as user '%s'"), server_user); perror ("setgid"); exit (4); } - if (setuid (server_uid) == -1) + if (paranoia) + res = setresuid (server_uid, server_uid, old_uid); + else + res = setuid (server_uid); + if (res == -1) { dbg_log (_("Failed to run nscd as user '%s'"), server_user); perror ("setuid"); diff --git a/nscd/nscd.conf b/nscd/nscd.conf index 4cdcb7dc9e..954eafd554 100644 --- a/nscd/nscd.conf +++ b/nscd/nscd.conf @@ -24,7 +24,7 @@ # persistent <service> <yes|no> # shared <service> <yes|no> # max-db-size <service> <number bytes> -* auto-propagate <service> <yes|no> +# auto-propagate <service> <yes|no> # # Currently supported cache names (services): passwd, group, hosts # diff --git a/stdio-common/renameat.c b/stdio-common/renameat.c index e09c5933ed..1261da88a4 100644 --- a/stdio-common/renameat.c +++ b/stdio-common/renameat.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -29,7 +29,7 @@ renameat (oldfd, old, newfd, new) int newfd; const char *new; { - if ((oldfd < 0 & oldfd != AT_FDCWD) || (newfd < 0 && newfd != AT_FDCWD)) + if ((oldfd < 0 && oldfd != AT_FDCWD) || (newfd < 0 && newfd != AT_FDCWD)) { __set_errno (EBADF); return -1; diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index ad7a8701fd..7c015b1d62 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -124,7 +124,7 @@ libc { _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; } GLIBC_2.5 { - splice; sync_file_range; tee; + splice; sync_file_range; tee; vmsplice; } GLIBC_PRIVATE { # functions used in other libraries diff --git a/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h index 6898fe8743..4a20f1d673 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h @@ -21,8 +21,10 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif /* open/fcntl - O_SYNC is only implemented on blocks devices and on files @@ -200,6 +202,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/bits/uio.h b/sysdeps/unix/sysv/linux/bits/uio.h index 84b4805fe8..6a283ed771 100644 --- a/sysdeps/unix/sysv/linux/bits/uio.h +++ b/sysdeps/unix/sysv/linux/bits/uio.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,10 +16,12 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef _SYS_UIO_H +#if !defined _SYS_UIO_H && !defined _FCNTL_H # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead." #endif +#ifndef _BITS_UIO_H +#define _BITS_UIO_H 1 #include <sys/types.h> @@ -31,7 +33,7 @@ /* Size of object which can be written atomically. This macro has different values in different kernel versions. The - latest versions of ther kernel use 1024 and this is good choice. Since + latest versions of the kernel use 1024 and this is good choice. Since the C library implementation of readv/writev is able to emulate the functionality even if the currently running kernel does not support this large value the readv/writev call will not fail because of this. */ @@ -44,3 +46,5 @@ struct iovec void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; + +#endif diff --git a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h index a375888106..82f06332be 100644 --- a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h @@ -22,8 +22,11 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -207,6 +210,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h b/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h index 63a771ddb9..1d684ad367 100644 --- a/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h @@ -23,6 +23,9 @@ #include <sys/types.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -201,6 +204,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h index 2219271a1b..2843c6e9cc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h @@ -22,8 +22,11 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -207,6 +210,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h index ad3ef420a1..7a9aa5738e 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h @@ -23,6 +23,10 @@ #include <sys/types.h> #include <bits/wordsize.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -226,6 +230,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h index a375888106..82f06332be 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h @@ -22,8 +22,11 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -207,6 +210,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h index b3788f0daf..e8cc3987e3 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h @@ -24,6 +24,9 @@ #include <sys/types.h> #include <bits/wordsize.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -226,6 +229,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 6bfccd26aa..969d054c62 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -77,6 +77,7 @@ swapoff - swapoff i:s __swapoff swapoff tee EXTRA tee i:iiii tee unshare EXTRA unshare i:i unshare uselib EXTRA uselib i:s uselib +vmsplice EXTRA vmsplice i:iPii vmsplice wait4 - wait4 i:iWiP __wait4 wait4 chown - chown i:sii __libc_chown __chown chown diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h b/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h index 2351737f7c..ad4c1443e4 100644 --- a/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h @@ -21,9 +21,12 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> #include <bits/wordsize.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -221,6 +224,10 @@ extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, unsigned int __flags); +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + /* Splice two files together. */ extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) __THROW; |