diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-07-06 04:26:42 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-07-06 04:26:42 +0000 |
commit | ce6e047fbb353e1d2faf15ab104a19db609b622b (patch) | |
tree | 3cf56ba767e54e26c5a7bfedc235728d457c9093 /sysdeps/unix/sysv/linux/i386 | |
parent | 2dd18ce2b2dfecc737479548f5b6d1784d90fe79 (diff) | |
download | glibc-ce6e047fbb353e1d2faf15ab104a19db609b622b.tar glibc-ce6e047fbb353e1d2faf15ab104a19db609b622b.tar.gz glibc-ce6e047fbb353e1d2faf15ab104a19db609b622b.tar.bz2 glibc-ce6e047fbb353e1d2faf15ab104a19db609b622b.zip |
Update.
2004-07-05 Ulrich Drepper <drepper@redhat.com>
* elf/dl-init.c: Don't define and use _dl_starting_up if
HAVE_INLINED_SYSCALLS is defined and the variable is not used.
* elf/dl-support.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
if HAVE_INLINED_SYSCALLS is defined.
* sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up
here.
* sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
* sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
* config.h.in: Add entry for HAVE_INLINED_SYSCALLS.
* sysdeps/posix/profil.c: If compiled for ld.so, omit code which
is needed to stop profiling.
* elf/dl-open.c (dl_open_worker): If a newly opened object is to be
profile make sure it cannot be unloaded.
* sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.
* sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
support, make sure the helper function is inlined.
* sysdeps/unix/sysv/linux/pread.c: Likewise.
* sysdeps/unix/sysv/linux/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/fcntl.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/fcntl.c b/sysdeps/unix/sysv/linux/i386/fcntl.c index f47d98e6bf..2b3db38e53 100644 --- a/sysdeps/unix/sysv/linux/i386/fcntl.c +++ b/sysdeps/unix/sysv/linux/i386/fcntl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2002, 2003, 2004 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 @@ -32,6 +32,9 @@ int __have_no_fcntl64; int +#ifdef NO_CANCELLATION +static inline __attribute ((always_inline)) +#endif __fcntl_nocancel (int fd, int cmd, ...) { va_list ap; @@ -65,16 +68,15 @@ __fcntl_nocancel (int fd, int cmd, ...) /* Check if we can represent the values with the smaller type. */ if ((off64_t) fl.l_start != fl64->l_start) { + eoverflow: __set_errno (EOVERFLOW); return -1; } fl.l_len = (off_t) fl64->l_len; /* Check if we can represent the values with the smaller type. */ if ((off64_t) fl.l_len != fl64->l_len) - { - __set_errno (EOVERFLOW); - return -1; - } + goto eoverflow: + fl.l_type = fl64->l_type; fl.l_whence = fl64->l_whence; fl.l_pid = fl64->l_pid; @@ -101,10 +103,8 @@ __fcntl_nocancel (int fd, int cmd, ...) fl.l_start = (off_t) fl64->l_start; /* Check if we can represent the values with the smaller type. */ if ((off64_t) fl.l_start != fl64->l_start) - { - __set_errno (EOVERFLOW); - return -1; - } + goto eoverflow: + fl.l_len = (off_t)fl64->l_len; /* Check if we can represent the values with the smaller type. */ if ((off64_t) fl.l_len != fl64->l_len) |