posix: Consolidate Linux glob implementation

System Internals / glibc - Adhemerval Zanella [linaro.org] - 8 September 2017 10:34 EDT

This patch consolidates the glob implementation. The main changes are:

- On Linux all implementation now uses the default one at sysdeps/unix/sysv/linux/glob{free}{64}.c with the exception of alpha (which requires specific versioning) and s390-32 (which different than other 32 bits ports it does not add a compat one symbol for 2.1 version).

- The default implementation uses XSTAT_IS_XSTAT64 to define whether both glob{free} and glob{free}64 should be different implementations. For archictures that define XSTAT_IS_XSTAT64, glob{free} is an alias to glob{free}64.

- Move i386 olddirent.h header to Linux default directory, since it is the only header with this name and it is shared among different architectures (and used on compat glob symbol as well).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py for all major architectures.

- sysdeps/unix/sysv/linux/arm/glob64.c: Remove file.
- sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/m68k/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/mips/mips64/n64/globfree64.c: Likewise.
- sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/wordsize-64/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/wordsize-64/globfree64.c: Likewise.
- sysdeps/unix/sysv/linux/x86_64/x32/glob.c: Likewise.
- sysdeps/unix/sysv/linux/x86_64/x32/globfree.c: Likewise.
- sysdeps/wordsize-64/glob.c: Likewise.
- sysdeps/wordsize-64/glob64.c: Likewise.
- sysdeps/wordsize-64/globfree64.c: Likewise.
- sysdeps/unix/sysv/linux/glob.c: New file.
- sysdeps/unix/sysv/linux/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/globfree.c: Likewise.
- sysdeps/unix/sysv/linux/globfree64.c: Likewise.
- sysdeps/unix/sysv/linux/s390/s390-32/glob64.c: Likewise.
- sysdeps/unix/sysv/linux/oldglob.c [SHLIB_COMPAT]: Also adds !GLOB_NO_OLD_VERSION as an extra condition.
- sysdeps/unix/sysv/linux/i386/alphasort64.c: Include olddirent.h using relative path instead of absolute one.
- sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise.
- sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise.
- sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
- sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.
- sysdeps/unix/sysv/linux/i386/olddirent.h: Move to ...
- sysdeps/unix/sysv/linux//olddirent.h: ... here.

116f1c6 posix: Consolidate Linux glob implementation
ChangeLog | 31 ++++++++++++++++
sysdeps/unix/sysv/linux/arm/glob64.c | 1 -
sysdeps/unix/sysv/linux/glob.c | 28 +++++++++++++++
sysdeps/unix/sysv/linux/{i386 => }/glob64.c | 41 +++++++++++++---------
sysdeps/unix/sysv/linux/globfree.c | 30 ++++++++++++++++
sysdeps/unix/sysv/linux/globfree64.c | 36 +++++++++++++++++++
sysdeps/unix/sysv/linux/i386/alphasort64.c | 2 +-
sysdeps/unix/sysv/linux/i386/getdents64.c | 2 +-
sysdeps/unix/sysv/linux/i386/readdir64.c | 2 +-
sysdeps/unix/sysv/linux/i386/readdir64_r.c | 2 +-
sysdeps/unix/sysv/linux/i386/versionsort64.c | 2 +-
sysdeps/unix/sysv/linux/m68k/glob64.c | 1 -
sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c | 1 -
.../unix/sysv/linux/mips/mips64/n64/globfree64.c | 1 -
sysdeps/unix/sysv/linux/{i386 => }/olddirent.h | 0
sysdeps/unix/sysv/linux/oldglob.c | 5 +--
sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c | 1 -
sysdeps/unix/sysv/linux/s390/s390-32/glob64.c | 2 ++
sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c | 1 -
sysdeps/unix/sysv/linux/wordsize-64/glob64.c | 2 --
sysdeps/unix/sysv/linux/wordsize-64/globfree64.c | 2 --
sysdeps/unix/sysv/linux/x86_64/x32/glob.c | 1 -
sysdeps/unix/sysv/linux/x86_64/x32/globfree.c | 1 -
sysdeps/wordsize-64/glob.c | 6 ----
sysdeps/wordsize-64/glob64.c | 1 -
sysdeps/wordsize-64/globfree.c | 5 ---
sysdeps/wordsize-64/globfree64.c | 1 -
27 files changed, 160 insertions(+), 48 deletions(-)

Upstream: sourceware.org


  • Share