This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/14138] Move some functions to syscalls.list


https://sourceware.org/bugzilla/show_bug.cgi?id=14138

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  809fdf0d23ddb683eb60672465d7a39d02ef272b (commit)
      from  224c6c51c5503aecfb81cfca716df3883ee09526 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=809fdf0d23ddb683eb60672465d7a39d02ef272b

commit 809fdf0d23ddb683eb60672465d7a39d02ef272b
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Fri Jun 20 15:41:35 2014 +0000

    Remove __ASSUME_ATFCTS conditionals in sysdeps/unix/sysv/linux/.

    This patch cleans up for __ASSUME_ATFCTS now always being true for the
    supported Linux kernel versions by removing conditional code in
    sysdeps/unix/sysv/linux.  Several fchownat.c files that were only
    present because of differences in the fallback syscalls used
    (depending on the architecture-specific names of chown-related
    syscalls for 32-bit uids) are removed.  Files that looks like they
    could be replaced by syscalls.list entries have the standard "Consider
    moving to syscalls.list." comment (see bug 14138) added.  Conditionals
    on the relevant __NR_* syscall numbers being defined are also removed,
    since my analysis indicated that the relevant syscalls are always
    defined for all relevant kernel versions using any affected file.
    Much of the removed fallback code had unbounded stack allocations, so
    this reduces the number of cases to consider for anyone reviewing uses
    of alloca and VLAs in glibc.

    There remain tests of __ASSUME_ATFCTS in io/openat.c (to determine
    whether to define __have_atfcts) and sysdeps/posix/getcwd.c (which
    also uses __have_atfcts); thus, the definition of __ASSUME_ATFCTS
    remains in kernel-features.h.  The logical condition relevant there is
    whether openat64_not_cancel_3 is known to work.  Hurd doesn't use this
    version of getcwd at all, so the conditionals in getcwd.c are always
    true in glibc.  However, this code is also used in gnulib.  So the
    best way to deal with the conditionals there may be for gnulib people
    to deal with merging all relevant changes in both directions between
    the glibc and gnulib versions of this file, at the end of which the
    openat conditionals should be in whatever form is best for gnulib, and
    hardcoded in the _LIBC case to having openat supported.

    Tested by comparing before-and-after disassembly of installed
    (stripped) shared libraries, on x86_64 and x86.  On x86 the patch made
    no change to the disassembly; on x86_64, the only changes were in
    readlinkat, where formerly the return value from the readlinkat
    syscall was stored in an int variable before being converted to
    ssize_t for the return, and now the return value is returned directly
    without truncation to int.  I think it's clearly correct not to
    truncate the return value (although I also think the truncation would
    not have been a user-visible bug because the kernel would never have
    returned a value it could have affected).

        * include/fcntl.h (__atfct_seterrno): Remove prototype.
        (__atfct_seterrno_2): Likewise.
        * sysdeps/unix/sysv/linux/alpha/dl-fxstatat64.c: Do not include
        <kernel-features.h>.
        (__ASSUME_ATFCTS): Do not undefine and redefine.
        * sysdeps/unix/sysv/linux/alpha/fxstatat.c [__ASSUME_ATFCTS]
        (__have_atfcts): Remove conditional definition.
        (__fxstatat([__NR_fstatat64]: Make code unconditional.
        (__fxstatat) [!__ASSUME_ATFCTS]: Remove conditional code and code
        unreachable if [__ASSUME_ATFCTS].
        * sysdeps/unix/sysv/linux/dl-fxstatat64.c (__ASSUME_ATFCTS): Do
        not undefine and redefine.
        * sysdeps/unix/sysv/linux/faccessat.c: Do not include
        <kernel-features.h>.
        (faccessat) [__NR_faccessat]: Make code unconditional.
        (faccessat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/fchmodat.c: Do not include
        <kernel-features.h>.
        (fchmodat) [__NR_fchmodat]: Make code unconditional.
        (fchmodat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/fchownat.c: Do not include
        <kernel-features.h>.
        (fchownat) [__NR_fchownat]: Make code unconditional.
        (fchownat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/futimesat.c: Do not include
        <kernel-features.h>.
        (futimesat) [__NR_futimesat]: Make code unconditional.
        (futimesat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/fxstatat.c: Do not include
        <kernel-features.h>.
        (__fxstatat) [__NR_newfstatat]: Make code unconditional.
        (__fxstatat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/fxstatat64.c: Do not include
        <kernel-features.h>.
        (__fxstatat64) [__NR_fstatat64]: Make code unconditional.
        (__fxstatat64) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/i386/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/i386/fxstatat.c: Do not include
        <kernel-features.h>.
        (__fxstatat) [__NR_fstatat64]: Make code unconditional.
        (__fxstatat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/linkat.c: Do not include
        <kernel-features.h>.
        (linkat) [__NR_linkat]: Make code unconditional.
        (linkat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/m68k/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c: Do not include
        <kernel-features.h>.
        (__fxstatat64) [__NR_newfstatat]: Make code unconditional.
        (__fxstatat64) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/mkdirat.c: Do not include
        <kernel-features.h>.
        (mkdirat) [__NR_mkdirat]: Make code unconditional.
        (mkdirat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/openat.c: Do not include
        <kernel-features.h>.
        [!__ASSUME_ATFCTS] (__atfct_seterrno): Remove function.
        [!__ASSUME_ATFCTS] (__have_atfcts): Remove variable.
        (OPENAT_NOT_CANCEL) [__NR_openat]: Make code unconditional.
        (OPENAT_NOT_CANCEL) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/powerpc/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/readlinkat.c: Do not include
        <kernel-features.h>.
        (readlinkat) [__NR_readlinkat]: Make code unconditional.
        (readlinkat) [!__ASSUME_ATFCTS]: Remove conditional code.  Return
        result of INLINE_SYSCALL directly, not via int variable.
        * sysdeps/unix/sysv/linux/renameat.c: Do not include
        <kernel-features.h>.
        [!__ASSUME_ATFCTS] (__atfct_seterrno_2): Remove function.
        (renameat) [__NR_renameat]: Make code unconditional.
        (renameat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/sh/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c: Remove file.
        * sysdeps/unix/sysv/linux/sparc/sparc64/dl-fxstatat64.c
        (__ASSUME_ATFCTS): Do not undefine and redefine.
        * sysdeps/unix/sysv/linux/symlinkat.c: Do not include
        <kernel-features.h>.
        (symlinkat) [__NR_symlinkat]: Make code unconditional.
        (symlinkat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/unlinkat.c: Do not include
        <kernel-features.h>.
        (unlinkat) [__NR_unlinkat]: Make code unconditional.
        (unlinkat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/wordsize-64/dl-fxstatat64.c
        (__ASSUME_ATFCTS): Do not undefine and redefine.
        * sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c: Do not include
        <kernel-features.h>.
        (__fxstatat) [__NR_newfstatat]: Make code unconditional.
        (__fxstatat) [!__ASSUME_ATFCTS]: Remove conditional code.
        * sysdeps/unix/sysv/linux/xmknodat.c: Do not include
        <kernel-features.h>.
        (__xmknodat) [__NR_mknodat]: Make code unconditional.
        (__xmknodat) [!__ASSUME_ATFCTS]: Remove conditional code.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   97 ++++++++++++
 include/fcntl.h                                    |    8 -
 sysdeps/unix/sysv/linux/alpha/dl-fxstatat64.c      |    8 -
 sysdeps/unix/sysv/linux/alpha/fxstatat.c           |   64 +--------
 sysdeps/unix/sysv/linux/dl-fxstatat64.c            |    5 -
 sysdeps/unix/sysv/linux/faccessat.c                |   73 +---------
 sysdeps/unix/sysv/linux/fchmodat.c                 |   63 +--------
 sysdeps/unix/sysv/linux/fchownat.c                 |   69 +--------
 sysdeps/unix/sysv/linux/futimesat.c                |  103 +------------
 sysdeps/unix/sysv/linux/fxstatat.c                 |   88 +----------
 sysdeps/unix/sysv/linux/fxstatat64.c               |   75 +---------
 sysdeps/unix/sysv/linux/i386/fchownat.c            |  101 ------------
 sysdeps/unix/sysv/linux/i386/fxstatat.c            |   86 +----------
 sysdeps/unix/sysv/linux/linkat.c                   |   87 +----------
 sysdeps/unix/sysv/linux/m68k/fchownat.c            |    1 -
 sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c   |   64 +-------
 sysdeps/unix/sysv/linux/mkdirat.c                  |   59 +-------
 sysdeps/unix/sysv/linux/openat.c                   |   92 +-----------
 sysdeps/unix/sysv/linux/powerpc/fchownat.c         |  105 -------------
 sysdeps/unix/sysv/linux/readlinkat.c               |   60 +-------
 sysdeps/unix/sysv/linux/renameat.c                 |  163 +-------------------
 sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c    |    1 -
 sysdeps/unix/sysv/linux/sh/fchownat.c              |    1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c   |    1 -
 .../unix/sysv/linux/sparc/sparc64/dl-fxstatat64.c  |    5 -
 sysdeps/unix/sysv/linux/symlinkat.c                |   60 +-------
 sysdeps/unix/sysv/linux/unlinkat.c                 |   69 +--------
 .../unix/sysv/linux/wordsize-64/dl-fxstatat64.c    |    5 -
 sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c     |   67 +--------
 sysdeps/unix/sysv/linux/xmknodat.c                 |   47 +------
 30 files changed, 147 insertions(+), 1580 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/i386/fchownat.c
 delete mode 100644 sysdeps/unix/sysv/linux/m68k/fchownat.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/fchownat.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c
 delete mode 100644 sysdeps/unix/sysv/linux/sh/fchownat.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]