]> git.ipfire.org Git - thirdparty/glibc.git/commit
Post-cleanup 2: minimize _G_config.h.
authorZack Weinberg <zackw@panix.com>
Mon, 5 Feb 2018 19:13:41 +0000 (14:13 -0500)
committerZack Weinberg <zackw@panix.com>
Wed, 7 Feb 2018 15:10:32 +0000 (10:10 -0500)
commit63fb8f9aa9d19f85599afe4b849b567aefd70a36
tree607f89b682d7c7200b389cba7de7e4496806565f
parent6c6c962a202299b55d180e04f44a63ffb748096c
Post-cleanup 2: minimize _G_config.h.

Nearly everything in _G_config.h is either junk or more appropriately
defined elsewhere:

 * _G_fpos_t, _G_fpos64_t, and _G_BUFSIZ are already completely unused.
 * All remaining uses of _G_va_list have been changed to __gnuc_va_list.
 * The definition of _G_HAVE_ST_BLKSIZE/_IO_HAVE_ST_BLKSIZE has
   been inlined into its sole use.
 * The complete definition of _G_iconv_t has been moved to libio.h and
   renamed _IO_iconv_t (all actual users used that name).
 * _G_IO_IO_FILE_VERSION is vestigial; some code cares whether
   _IO_stdin_used exists, but nothing looks at its value.  I've
   preserved the value as a hardwired constant in csu/init.c.
   This means csu/init.c no longer needs to include anything.
 * Many of the headers included by _G_config.h were already being
   included directly by either either libio.h or stdio.h; the
   remaining ones were moved to libio.h.
 * _G_HAVE_MREMAP is still relevant, because mremap genuinely is a
   Linux extension; it's not in POSIX and as far as I can tell it's
   not available on the Hurd either.  I also preserved _G_HAVE_MMAP,
   since it's conceivable someone would want to port glibc to a
   MMU-less, mmap-less environment in the future.  Both are now always
   defined to 1/0 as is the current convention, instead of the older
   1/undef convention.  These are the only symbols still defined in
   _G_config.h.
 * The actual inclusion of _G_config.h moves from libio.h to libioP.h,
   as this is where a potential override of _G_HAVE_MMAP happens.
 * The #ifdef logic in libioP.h controlling _IO_JUMPS_OFFSET has been
   simplified.

After this patch, the only surviving _G_ symbols are the struct tag
names _G_fpos_t and _G_fpos64_t, which are preserved for the sake of
C++ mangled names in applications, and _G_HAVE_MMAP and _G_HAVE_MREMAP,
which do not seem worth renaming.

Installed stripped libraries are unchanged by this patch.

* bits/_G_config.h: Move back to sysdeps/generic/_G_config.h.
Delete all contents except for definitions of _G_HAVE_MMAP and
_G_HAVE_MREMAP.  Add commentary explaining those two symbols.
* sysdeps/unix/sysv/linux/bits/_G_config.h: Move back to
sysdeps/unix/sysv/linux/_G_config.h.  Make same content
change as above.

* libio/libio.h: Don't include bits/_G_config.h here.
Include stddef.h with __need_wchar_t defined.  Include
bits/types/__mbstate_t.h, bits/types/wint_t.h, and gconv.h.
Define _IO_iconv_t here, directly.
Don't define _IO_HAVE_ST_BLKSIZE.
* libio/libioP.h: Include _G_config.h here.  Move include of
shlib-compat.h up with rest of includes.  Simplify conditionals
controlling definition of _IO_JUMPS_OFFSET.

* csu/init.c: Remove always-true #if around entire file.
Don't include stdio.h.  Set _IO_stdin_used to hardwired
constant 0x20001, and update commentary.
* include/stdio.h, sysdeps/ieee754/ldbl-opt/nldbl-compat.h:
Replace all uses of _G_va_list with __gnuc_va_list.
* libio/filedoalloc.c: Use #if defined _STATBUF_ST_BLKSIZE
instead of #if _IO_HAVE_ST_BLKSIZE.
* libio/fileops.c: Test _G_HAVE_MREMAP with #if, not #ifdef.
* libio/iofdopen.c, libio/iofopen.c: Test _G_HAVE_MMAP with #if,
not #ifdef.
14 files changed:
ChangeLog
bits/_G_config.h [deleted file]
csu/init.c
include/stdio.h
libio/filedoalloc.c
libio/fileops.c
libio/iofdopen.c
libio/iofopen.c
libio/libio.h
libio/libioP.h
sysdeps/generic/_G_config.h [new file with mode: 0644]
sysdeps/ieee754/ldbl-opt/nldbl-compat.h
sysdeps/unix/sysv/linux/_G_config.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/_G_config.h [deleted file]