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 ports/23960] [2.28 Regression]: New getdents{64} implementation breaks qemu-user


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

--- Comment #8 from John Paul Adrian Glaubitz <glaubitz at physik dot fu-berlin.de> ---
Splitting the bug reports now since those are two different issues.

The shell expansion issue with dash affects all of qemu-user, not just m68k and
was introduced by:

298d0e3129c0b5137f4989275b13fe30d0733c4d is the first bad commit
commit 298d0e3129c0b5137f4989275b13fe30d0733c4d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 28 15:37:17 2018 -0300

    Consolidate Linux getdents{64} implementation

    This patch consolidates Linux getdents{64} implementation on just
    the default sysdeps/unix/sysv/linux/getdents{64}{_r}.c ones.

    Although this symbol is used only internally, the non-LFS version
    still need to be build due the non-LFS getdirentries which requires
    its semantic.

    The non-LFS default implementation now uses the wordsize-32 as base
    which uses getdents64 syscall plus adjustment for overflow (it allows
    to use the same code for architectures that does not support non-LFS
    getdents syscall).  It has two main differences to wordsize-32 one:

      - DIRENT_SET_DP_INO is added to handle alpha requirement to zero
        the padding.

      - alloca is removed by allocating a bounded temporary buffer (it
        increases stack usage by roughly 276 bytes).

    The default implementation handle the Linux requirements:

      * getdents is only built for _DIRENT_MATCHES_DIRENT64 being 0.

      * getdents64 is always built and aliased to getdents for ABIs
        that define _DIRENT_MATCHES_DIRENT64 to 1.

      * A compat symbol is added for getdents64 for ABI that used to
        export the old non-LFS version.

    Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
    sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
    powerpc64le-linux-gnu.

            * sysdeps/unix/sysv/linux/alpha/getdents.c: Add comments with alpha
            requirements.
             (_DIRENT_MATCHES_DIRENT64): Undef
            * sysdeps/unix/sysv/linux/alpha/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/arm/getdents64.c: Remove file.
            * sysdeps/unix/sysv/linux/generic/getdents.c: Likewise.
            * sysdeps/unix/sysv/linux/generic/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: Likewise.
            * sysdeps/unix/sysv/linux/getdents.c: Simplify implementation by
            use getdents64 syscalls as base.
            * sysdeps/unix/sysv/linux/getdents64.c: Likewise and add
compatibility
            symbol if required.
            * sysdeps/unix/sysv/linux/hppa/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/m68k/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/powerpc/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/wordsize-64/getdents.c: Likewise.
            * sysdeps/unix/sysv/linux/wordsize-64/getdents64.c: Likewise.
            * sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
            (__get_clockfreq_via_proc_openprom): Use __getdents64.
            * sysdeps/unix/sysv/linux/mips/mips64/getdents64.c: New file.

:100644 100644 5cc4dc9f635c36c136fbe1751c7f0d96e8b78dcb
93c82fef994b4a4c255ef91ec5016e79e4410f31 M      ChangeLog
:040000 040000 49467271d85e92ba455bf6b387fbfa0ffc58ca6c
5d449b9064aaa7f1c20c516a34af6b7b1084403f M      sysdeps

-- 
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]