aboutsummaryrefslogtreecommitdiff
path: root/bits
AgeCommit message (Collapse)AuthorFilesLines
2019-10-24Define __STATFS_MATCHES_STATFS64Alistair Francis1-0/+5
Add a new macro __STATFS_MATCHES_STATFS64 that specifies if fsblkcnt_t matches fsblkcnt64_t and if fsfilcnt_t matches fsfilcnt64_t. As we don't have the padding we also need to update the overflow checker to not access the undefined members.
2019-10-21Remove math-finite.hWilco Dijkstra1-197/+0
Remove math-finite.h redirections for math functions. Passes buildmanyglibc. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2019-09-07Prefer https to http for gnu.org and fsf.org URLsPaul Eggert76-76/+76
Also, change sources.redhat.com to sourceware.org. This patch was automatically generated by running the following shell script, which uses GNU sed, and which avoids modifying files imported from upstream: sed -ri ' s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g ' \ $(find $(git ls-files) -prune -type f \ ! -name '*.po' \ ! -name 'ChangeLog*' \ ! -path COPYING ! -path COPYING.LIB \ ! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \ ! -path manual/texinfo.tex ! -path scripts/config.guess \ ! -path scripts/config.sub ! -path scripts/install-sh \ ! -path scripts/mkinstalldirs ! -path scripts/move-if-change \ ! -path INSTALL ! -path locale/programs/charmap-kw.h \ ! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \ ! '(' -name configure \ -execdir test -f configure.ac -o -f configure.in ';' ')' \ ! '(' -name preconfigure \ -execdir test -f preconfigure.ac ';' ')' \ -print) and then by running 'make dist-prepare' to regenerate files built from the altered files, and then executing the following to cleanup: chmod a+x sysdeps/unix/sysv/linux/riscv/configure # Omit irrelevant whitespace and comment-only changes, # perhaps from a slightly-different Autoconf version. git checkout -f \ sysdeps/csky/configure \ sysdeps/hppa/configure \ sysdeps/riscv/configure \ sysdeps/unix/sysv/linux/csky/configure # Omit changes that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines git checkout -f \ sysdeps/powerpc/powerpc64/ppc-mcount.S \ sysdeps/unix/sysv/linux/s390/s390-64/syscall.S # Omit change that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-08-15login: Add nonstring attributes to struct utmp, struct utmpx [BZ #24899]Florian Weimer1-1/+2
Commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c ("The -Wstringop-truncation option new in GCC 8 detects common misuses") added __attribute_nonstring__ to bits/utmp.h, but it did not update the parallel bits/utmpx.h header. In struct utmp, the nonstring attribute for ut_id was missing.
2019-08-13Declare some TS 18661-4 interfaces for C2X.Joseph Myers2-2/+10
C2X (current version in git, postdating the most recent public draft available as a PDF on the WG14 website) adds the interfaces from TS 18661-4, other than the reduction functions, as unconditionally required and visible in <math.h> for hosted implementations; the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro is not included in C2X at all (as the reduction functions aren't included at all, expected to end up in a version of the TS updated to be relative to C2X). This patch updates the glibc headers accordingly, following the same pattern used for 18661-1 functions. As the only 18661-4 functions currently supported are the exp10 functions that have been in glibc for a very long time, this means that in fact __GLIBC_USE (IEC_60559_FUNCS_EXT) ends up being used only to determine the definition of __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X, not yet in any headers other than bits/libc-header-start.h. (I hope to add the other 18661-4 functions to glibc at some point; the main complication is the current lack of MPFR support for many of these functions.) Tested for x86_64. * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_FUNCS_EXT): Update comment. (__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X): New macro. * bits/math-finite.h [__GLIBC_USE (IEC_60559_FUNCS_EXT)]: Change to [__GLIBC_USE (IEC_60559_FUNCS_EXT_C2X)]. * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_FUNCS_EXT)]: Likewise.
2019-08-13Declare most TS 18661-1 interfaces for C2X.Joseph Myers2-2/+10
C2X adds the interfaces from TS 18661-1, and all except a handful in Annex F are unconditionally visible in C2X rather than only visible when __STDC_WANT_IEC_60559_BFP_EXT__ is defined. This patch updates glibc headers accordingly: most uses of __GLIBC_USE (IEC_60559_BFP_EXT) are changed to a new __GLIBC_USE (IEC_60559_BFP_EXT_C2X). (Regarding totalorder and totalordermag, the type-generic macros in tgmath.h will go away when the functions are changed to take pointer arguments.) * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): Update comment. (__GLIBC_USE_IEC_60559_BFP_EXT_C2X): New macro. * bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Change to [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)]. * include/limits.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/bits/stdlib-ldbl.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/stdint.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/stdlib.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/aarch64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/alpha/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/arm/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/csky/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/hppa/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/ia64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/m68k/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/microblaze/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/mips/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/nios2/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/powerpc/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/riscv/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/s390/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/sh/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/sparc/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/x86/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise, except for totalorder, totalordermag, getpayload, setpayload and setpayloadsig. * math/tgmath.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise, except for totalorder and totalordermag.
2019-08-13login: Assume that _HAVE_UT_* constants are trueFlorian Weimer1-13/+90
Make the GNU version of bits/utmp.h the generic version because all remaining ports use it (with a sysdeps override for Linux s390/s390x).
2019-07-29Linux: Move getdents64 to <dirent.h>Florian Weimer1-0/+21
This matches the location of the declaration in musl. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-05-14Linux: Add the tgkill functionFlorian Weimer1-0/+21
The tgkill function is sometimes used in crash handlers. <bits/signal_ext.h> follows the same approach as <bits/unistd_ext.h> (which was added for the gettid system call wrapper). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-03-14Remove obsolete, never-implemented XSI STREAMS declarationsFlorian Weimer2-263/+0
The stub implementations are turned into compat symbols. Linux actually has two reserved system call numbers (for getpmsg and putpmsg), but these system calls have never been implemented, and there are no plans to implement them, so this patch replaces the wrappers with the generic stubs. According to <https://bugzilla.redhat.com/show_bug.cgi?id=436349>, the presence of the XSI STREAMS declarations is a minor portability hazard because they are not actually implemented. This commit does not change the TIRPC support code in sunrpc/rpc_svcout.c. It uses additional XTI functionality and therefore never worked with glibc. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-03-07Fix location where math-vector-fortran.h is installed.marxin1-19/+0
2019-03-07 Martin Liska <mliska@suse.cz> * math/Makefile: Change location where math-vector-fortran.h is installed. * math/finclude/math-vector-fortran.h: Move from bits/math-vector-fortran.h. * sysdeps/x86/fpu/finclude/math-vector-fortran.h: Move from sysdeps/x86/fpu/bits/math-vector-fortran.h. * scripts/check-installed-headers.sh: Skip Fortran header files. * scripts/check-wrapper-headers.py: Likewise.
2019-02-20Add new Fortran vector math header file.marxin1-0/+19
2019-02-08math: Enable <bits/math-finite.h> sysdeps overrideFlorian Weimer1-0/+197
sysdeps/ia64/fpu/bits/math-finite.h exists and will be installed on ia64, but during the build, the default math/bits/math-finite.h file is used, which is wrong. Fixes commit 0ac5ae2335292908f39031b1ea9fe8edce433c0f ("Optimize libm").
2019-02-08Move generic <bits/unistd_ext.h> to a more regular locationFlorian Weimer1-0/+21
No functional change; the previous path worked as well, but it re-added the obsolete sysdeps/generic/bits directory, which was removed (for the first time) in commit c72565e5f1124c2dc72573e83406fe999e56091f. Fixes commit e47d82c99a6db060419b421768aced76bea92997 ("Provide <bits/unistd_ext.h> as a sysdeps header exclusively").
2019-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers74-74/+74
* All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
2018-10-24Y2038: Add 64-bit time for all architecturesAlbert ARIBAUD (3ADEV)1-0/+36
glibc support for 64-bit time_t on 32-bit architectures will involve: - Using 64-bit times inside glibc, with conversions to and from 32-bit times taking place as necessary for interfaces using such times. - Adding 64-bit-time support in the glibc public API. This support should be dynamic, i.e. glibc should provide both 32-bit and 64-bit implementations and let user code choose at compile time whether to use the 32-bit or 64-bit interfaces. This requires a glibc-internal name for a type for times that are always 64-bit. Based on __TIMESIZE, a new macro is defined, __TIME64_T_TYPE, which is always the right __*_T_TYPE to hold a 64-bit-time. __TIME64_T_TYPE equals __TIME_T_TYPE if __TIMESIZE equals 64 and equals __SQUAD_T_TYPE otherwise. __time64_t can then replace uses of internal_time_t. This patch was tested by running 'make check' on branch master then applying this patch and its predecessor and running 'make check' again, and checking that both 'make check' yield identical results. This was done on x86_64-linux-gnu and i686-linux-gnu. * bits/time64.h: New file. * include/time.h: Replace internal_time_t with __time64_t. * posix/bits/types (__time64_t): Add. * stdlib/Makefile: Add bits/time64.h to includes. * time/tzfile.c: Replace internal_time_t with __time64_t.
2018-10-24 Y2038: provide size of default time_t for target architectureAlbert ARIBAUD (3ADEV)1-0/+22
To determine whether the default time_t interfaces are 32-bit and so need conversions, or are 64-bit and so are compatible with the internal 64-bit type without conversions, a macro giving the size of the default time_t is also required. This macro is called __TIMESIZE. This macro can then be used instead of __WORDSIZE in msq-pad.h and shm-pad.h files, which in turn allows removing their x86 variants, and in sem-pad.h files but keeping the x86 variant. This patch was tested by running 'make check' on branch master then applying this patch and running 'make check' again, and checking that both 'make check' yield identical results. This was done on x86_64-linux-gnu and i686-linux-gnu. * bits/timesize.h: New file. * stdlib/Makefile (headers): Add bits/timesize.h. * sysdeps/unix/sysv/linux/bits/msq-pad.h (__MSQ_PAD_AFTER_TIME): Use __TIMESIZE instead of __WORDSIZE. * sysdeps/unix/sysv/linux/bits/sem-pad.h (__SEM_PAD_AFTER_TIME): Likewise. * sysdeps/unix/sysv/linux/bits/shm-pad.h (__SHM_PAD_AFTER_TIME): Likewise. * sysdeps/unix/sysv/linux/hppa/bits/msq-pad.h (__MSQ_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h (__SEM_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h (__SHM_PAD_BEFORE_TIME, __SHM_PAD_BETWEEN_TIME_AND_SEGSZ): Likewise. * sysdeps/unix/sysv/linux/mips/bits/msq-pad.h (__MSQ_PAD_AFTER_TIME, __MSQ_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/msq-pad.h (__MSQ_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h (__SEM_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h (__SHM_PAD_BEFORE_TIME, __SHM_PAD_BETWEEN_TIME_AND_SEGSZ): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/msq-pad.h (__MSQ_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h (__SEM_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h (__SHM_PAD_BEFORE_TIME): Likewise. * sysdeps/unix/sysv/linux/x86/bits/msq-pad.h: Delete file. * sysdeps/unix/sysv/linux/x86/bits/shm-pad.h: Likewise. * sysdeps/unix/sysv/linux/x86/bits/timesize.h: New file.
2018-07-24Add <bits/indirect-return.h>H.J. Lu1-0/+25
Add <bits/indirect-return.h> and include it in <ucontext.h>. __INDIRECT_RETURN defined in <bits/indirect-return.h> indicates if swapcontext requires special compiler treatment. The default __INDIRECT_RETURN is empty. On x86, when shadow stack is enabled, __INDIRECT_RETURN is defined with indirect_return attribute, which has been added to GCC 9, to indicate that swapcontext returns via indirect branch. Otherwise __INDIRECT_RETURN is defined with returns_twice attribute. When shadow stack is enabled, remove always_inline attribute from prepare_test_buffer in string/tst-xbzero-opt.c to avoid: tst-xbzero-opt.c: In function ‘prepare_test_buffer’: tst-xbzero-opt.c:105:1: error: function ‘prepare_test_buffer’ can never be inlined because it uses setjmp prepare_test_buffer (unsigned char *buf) when indirect_return attribute isn't available. Reviewed-by: Carlos O'Donell <carlos@redhat.com> * bits/indirect-return.h: New file. * misc/sys/cdefs.h (__glibc_has_attribute): New. * sysdeps/x86/bits/indirect-return.h: Likewise. * stdlib/Makefile (headers): Add bits/indirect-return.h. * stdlib/ucontext.h: Include <bits/indirect-return.h>. (swapcontext): Add __INDIRECT_RETURN. * string/tst-xbzero-opt.c (ALWAYS_INLINE): New. (prepare_test_buffer): Use it.
2018-06-02hurd: Fix shmid_ds's shm_segsz field typeSamuel Thibault1-1/+1
* bits/shm.h (struct shmid_ds): Make shm_segsz field size_t instead of int. * sysdeps/gnu/bits/shm.h (struct shmid_ds): Likewise.
2018-05-11powerpc: Fix the compiler type used with C++ when -mabi=ieeelongdoubleTulio Magno Quites Machado Filho1-0/+7
When compiling C++ code with -mabi=ieeelongdouble, KCtype is unavailable and the long double type should be used instead. This is also providing macro __HAVE_FLOAT128_UNLIKE_LDBL in order to identify the kind of long double type is being used in the current compilation unit. Notice that bits/floatn.h cannot benefit from the new macro due to order of header inclusion. * bits/floatn-common.h: Define __HAVE_FLOAT128_UNLIKE_LDBL. * math/math.h: Restrict the prototype definition for the functions issignaling(_Float128) and iszero(_Float128); and template __iseqsig_type<_Float128>, from __HAVE_DISTINCT_FLOAT128 to __HAVE_FLOAT128_UNLIKE_LDBL. * sysdeps/powerpc/bits/floatn.h [__HAVE_FLOAT128 && (!__GNUC_PREREQ (7, 0) || defined __cplusplus) && __LDBL_MANT_DIG__ == 113]: Use long double suffix for __f128() constants; define the type _Float128 as long double; and reuse long double in __CFLOAT128. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2018-05-02Deprecate ustat syscall interfaceAdhemerval Zanella1-30/+0
As for sysctl, ustat has been deprecated in favor of {f}statfs. Also some newer ports which uses generic interface builds a stub version that returns ENOSYS. This patch deprecates ustat interface by removing ustat.h related headers, adding a compatibility symbol, and avoiding new ports to build and provide the symbol. Checked on x86_64-linux-gnu and i686-linux-gnu. Also checked with a check-abi on all affected ABIs. * NEWS: Add ustat.h deprecation entry. * bits/ustat.h: Remove file. * misc/sys/ustat.h: Likewise. * misc/ustat.h: Likewise. * sysdeps/unix/sysv/linux/generic/ustat.c: Likewise. * misc/Makefile (headers): Remove ustat.h and sys/ustat.h. * misc/ustat.c (__ustat): Rename to __old_ustat and export only in compatibility mode. * sysdeps/unix/sysv/linux/ustat.c (__ustat): Likewise. * sysdeps/unix/sysv/linux/mips/ustat.c: Define DEV_TO_KDEV and use generic Linux implementation.
2018-04-19hurd: Add missing RLIM_SAVED_MAX/CURSamuel Thibault1-0/+4
* bits/resource.h (RLIM_SAVED_MAX, RLIM_SAVED_CUR): New macros.
2018-04-19hurd: Fix termios.h symbolsSamuel Thibault1-3/+9
* bits/termios.h [__USE_XOPEN || __USE_XOPEN2K8] (IXANY): Define. [__USE_XOPEN && !__USE_XOPEN2K] (IUCLC, OLCUC): Define. [__USE_XOPEN] (OFDEL): New macro. [__USE_XOPEN && !__USE_XOPEN2K] (XCASE): New macro.
2018-04-19hurd: remove non-standard siginfo symbolSamuel Thibault1-1/+1
* bits/types/siginfo_t.h: Remove siginfo struct name, unused and non-compliant.
2018-04-19hurd: Avoid exposing all <sched.h> symbols from sys/types.hSamuel Thibault2-5/+29
* bits/sched.h: Include <bits/types/struct_sched_param.h> and move struct sched_param definition to it. * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. * bits/types/struct_sched_param.h: New file. * sysdeps/htl/bits/types/struct___pthread_attr.h: Include <bits/types/struct_sched_param.h> instead of <sched.h>. * posix/Makefile (headers): Add bits/types/struct_sched_param.h.
2018-04-19hurd: Fix symbols expositionSamuel Thibault1-0/+2
* bits/in.h [!__USE_MISC]: Do not define struct ip_opts. * conform/data/netinet/in.h-data: Allow sin_ and sin6_ prefix. * sysdeps/gnu/bits/msq.h (struct msqid_ds): Use __wait_queue struct instead of wait_queue. * sysdeps/gnu/bits/shm.h (struct shmid_ds): Use __vm_area_struct instead of vm_area_struct.
2018-04-19Revert "Fix sched_param"Samuel Thibault3-57/+5
This reverts commit 783c4820303fb6b031d401564f8089ecaf154b62 which accidentaly flew out.
2018-04-18Fix sched_paramSamuel Thibault3-5/+57
2018-04-03Update RWF_SUPPORTED for Linux kernel 4.16 [BZ #22947]H.J. Lu1-0/+1
Add RWF_APPEND to RWF_SUPPORTED to support Linux kernel 4.16. [BZ #22947] * bits/uio-ext.h (RWF_APPEND): New. * sysdeps/unix/sysv/linux/bits/uio-ext.h (RWF_APPEND): Likewise. * manual/llio.texi: Document RWF_APPEND. * misc/tst-preadvwritev2-common.c (RWF_APPEND): New. (RWF_SUPPORTED): Add RWF_APPEND.
2018-03-05hurd: Fix includability of <hurd/signal.h> in all standardsSamuel Thibault1-0/+5
* bits/sigaction.h: Add include guard. * sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/tile/bits/sigaction.h: Likewise. * hurd/hurd/signal.h: Include <bits/sigaction.h>.
2018-03-05Define _DIRENT_MATCHES_DIRENT64 regardlessAdhemerval Zanella1-0/+2
This patch defines _DIRENT_MATCHES_DIRENT64 to either 0 or 1 and adjust its usage from checking its definition to its value. Checked on a build for major Linux abis. * bits/dirent.h (__INO_T_MATCHES_INO64_T): Define regardless whether __INO_T_MATCHES_INO64_T is defined. * sysdeps/unix/sysv/linux/bits/dirent.h: Likewise. * dirent/alphasort.c: Check _DIRENT_MATCHES_DIRENT64 value instead of definition. * dirent/alphasort64.c: Likewise. * dirent/scandir.c: Likewise. * dirent/scandir64-tail.c: Likewise. * dirent/scandir64.c: Likewise. * dirent/scandirat.c: Likewise. * dirent/scandirat64.c: Likewise. * dirent/versionsort.c: Likewise. * dirent/versionsort64.c: Likewise. * include/dirent.h: Likewise.
2018-03-04Separate out error_t definitionSamuel Thibault1-0/+24
so interfaces needing it can get it. * stdlib/errno.h (error_t): Move definition to... * bits/types/error_t.h: ... new header. * stdlib/Makefile (headers): Add bits/types/error_t.h. * sysdeps/mach/hurd/bits/errno.h (error_t): Move definition to... * sysdeps/mach/hurd/bits/types/error_t.h: ... new header. * sysdeps/mach/hurd/errnos.awk (error_t): Likewise. * hurd/hurd.h: Include <bits/types/error_t.h> * hurd/hurd/fd.h: Include <bits/types/error_t.h> * hurd/hurd/id.h: Include <errno.h> and <bits/types/error_t.h> * hurd/hurd/lookup.h: Include <errno.h> and <bits/types/error_t.h> * hurd/hurd/resource.h: Include <bits/types/error_t.h> * hurd/hurd/signal.h: Include <bits/types/error_t.h> * hurd/hurd/sigpreempt.h: Include <bits/types/error_t.h>
2018-02-07Post-cleanup 2: minimize _G_config.h.Zack Weinberg1-54/+0
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.
2018-02-07Don't install libio.h or _G_config.h.Zack Weinberg1-14/+6
We shipped 2.27 with libio.h and _G_config.h still installed but issuing warnings when used. Let's stop installing them early in 2.28 so that we have plenty of time to think of another plan if there are problems. The public stdio.h had a genuine dependency on libio.h for the complete definitions of FILE and cookie_io_functions_t, and a genuine dependency on _G_config.h for the complete definitions of fpos_t and fpos64_t; these are moved to single-type headers. bits/types/struct_FILE.h also provides a handful of accessor and bitflags macros so that code is not duplicated between bits/stdio.h and libio.h. All the other _IO_ and _G_ names used by the public stdio.h can be replaced with either public names or __-names. In order to minimize the risk of breaking our own compatibility code, bits/types/struct_FILE.h preserves the _IO_USE_OLD_IO_FILE mechanism exactly as it was in libio.h, but you have to define _LIBC to use it, or it'll error out. Similarly, _IO_lock_t_defined is preserved exactly, but will error out if used without defining _LIBC. Internally, include/stdio.h continues to include libio.h, and libio.h scrupulously provides every _IO_* and _G_* name that it always did, perhaps now defined in terms of the public names. This is how this patch avoids touching dozens of files throughout glibc and becoming entangled with the _IO_MTSAFE_IO mess. The remaining patches in this series eliminate most of the _G_ names. Tested on x86_64-linux; in addition to the test suite, I installed the library in a sysroot and verified that a simple program that uses stdio.h could be compiled against the installed library, and I also verified that installed stripped libraries are unchanged. * libio/bits/types/__fpos_t.h, libio/bits/types/__fpos64_t.h: New single-type headers split from _G_config.h. * libio/bits/types/cookie_io_functions_t.h * libio/bits/types/struct_FILE.h New single-type headers split from libio.h. * libio/Makefile: Install the above new headers. Don't install libio.h, _G_config.h, bits/libio.h, bits/_G_config.h, or bits/libio-ldbl.h. * libio/_G_config.h, libio/libio.h: Delete file. * libio/bits/libio.h: Remove improper-inclusion guard. Include stdio.h and don't repeat anything that it does. Define _IO_fpos_t as __fpos_t, _IO_fpos64_t as __fpos64_t, _IO_BUFSIZ as BUFSIZ, _IO_va_list as __gnuc_va_list, __io_read_fn as cookie_read_function_t, __io_write_fn as cookie_write_function_t, __io_seek_fn as cookie_seek_function_t, __io_close_fn as cookie_close_function_t, and _IO_cookie_io_functions_t as cookie_io_functions_t. Define _STDIO_USES_IOSTREAM, __HAVE_COLUMN, and _IO_file_flags here, in the "compatibility defines" section. Remove an #if 0 block. Use the "body" macros from bits/types/struct_FILE.h to define _IO_getc_unlocked, _IO_putc_unlocked, _IO_feof_unlocked, and _IO_ferror_unlocked. Move prototypes of __uflow and __overflow... * libio/stdio.h: ...here. Don't include bits/libio.h. Don't define _STDIO_USES_IOSTREAM. Get __gnuc_va_list directly from stdarg.h. Include bits/types/__fpos_t.h, bits/types/__fpos64_t.h, bits/types/struct_FILE.h, and, when __USE_GNU, bits/types/cookie_io_functions_t.h. Use __gnuc_va_list, not _G_va_list; __fpos_t, not _G_fpos_t; __fpos64_t, not _G_fpos64_t; FILE, not struct _IO_FILE; cookie_io_functions_t, not _IO_cookie_io_functions_t; __ssize_t, not _IO_ssize_t. Unconditionally define BUFSIZ as 8192 and EOF as (-1). * libio/bits/stdio.h: Add multiple-include guard. Use the "body" macros from bits/types/struct_FILE.h instead of _IO_* macros from libio.h; use __gnuc_va_list instead of va_list and __ssize_t instead of _IO_ssize_t. * libio/bits/stdio2.h: Similarly. * libio/iolibio.h: Add multiple-include guard. Include bits/libio.h after stdio.h. * libio/libioP.h: Add multiple-include guard. Include stdio.h and bits/libio.h before iolibio.h. * include/bits/types/__fpos_t.h, include/bits/types/__fpos64_t.h * include/bits/types/cookie_io_functions_t.h * include/bits/types/struct_FILE.h: New wrappers. * bits/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h: Get definitions of _G_fpos_t and _G_fpos64_t from bits/types/__fpos_t.h and bits/types/__fpos64_t.h respectively. Remove improper-inclusion guards. * conform/data/stdio.h-data: Update expectations of va_list. * scripts/check-installed-headers.sh: Remove special case for libio.h and _G_config.h.
2018-02-06