about summary refs log tree commit diff
path: root/include/libio.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove _IO_MTSAFE_IO from public headers.Zack Weinberg2017-05-111-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _IO_MTSAFE_IO controls whether stdio is *built* with support for multithreading. In the distant past it might also have worked as a feature selection macro, allowing library *users* to select thread-safe or lock-free stdio at application build time, I haven't done the archaeology. Nowadays, defining _IO_MTSAFE_IO while using the installed headers, or in _ISOMAC mode, will cause libio.h to throw syntax errors. This patch removes _IO_MTSAFE_IO from the public headers (specifically, from libio/libio.h). The most important thing it controlled in there was whether libio.h defines _IO_lock_t itself or expects stdio-lock.h to have done it, and we do still need a inter-header communication macro for that, because stdio-lock.h can only define _IO_lock_t as a typedef. I've invented _IO_lock_t_defined, which is defined by both versions of stdio-lock.h. _IO_MTSAFE_IO also controlled the definitions of a handful of macros that _might_ count as part of the public libio.h interface. They are now unconditionally given their non-_IO_MTSAFE_IO definition in libio/libio.h, and include/libio.h redefines them with the _IO_MTSAFE_IO definition. This should minimize the odds of breaking old software that actually uses those macros. I suspect that this entire mechanism is vestigial, and that glibc won't build anymore if you *don't* define _IO_MTSAFE_IO, but that's another patchset. The bulk of libio.h is internal-use-only stuff that no longer makes sense to expose (libstdc++ gave up on making a FILE the same object as a C++ filebuf *decades* ago) but that, too, is another patchset. * libio/libio.h: Condition dummy definition of _IO_lock_t on _IO_lock_t_defined, not _IO_MTSAFE_IO. Unconditionally use the non-_IO_MTSAFE_IO definitions for _IO_peekc, _IO_flockfile, _IO_funlockfile, and _IO_ftrylockfile. Only define _IO_cleanup_region_start and _IO_cleanup_region_end if not already defined. * include/libio.h: If _IO_MTSAFE_IO is defined, redefine _IO_peekc, _IO_flockfile, _IO_funlockfile, and _IO_ftrylockfile appropriately. * sysdeps/generic/stdio-lock.h, sysdeps/nptl/stdio-lock.h: Define _IO_lock_t_defined after defining _IO_lock_t.
* Rename bits/stdio-lock.h to stdio-lock.h (bug 14912).Joseph Myers2015-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | It was noted in <https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html> that the bits/*.h naming scheme should only be used for installed headers. This patch renames bits/stdio-lock.h to plain stdio-lock.h to follow that convention. Tested for x86_64 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #14912] * bits/stdio-lock.h: Move to ... * sysdeps/generic/stdio-lock.h: ...here. (_BITS_STDIO_LOCK_H): Rename macro to _STDIO_LOCK_H. * sysdeps/nptl/bits/stdio-lock.h: Move to ... * sysdeps/nptl/stdio-lock.h: ...here. (_BITS_STDIO_LOCK_H): Rename macro to _STDIO_LOCK_H. * include/libio.h: Include <stdio-lock.h> instead of <bits/stdio-lock.h>. * sysdeps/nptl/fork.c: Likewise. * sysdeps/pthread/flockfile.c: Likewise. * sysdeps/pthread/ftrylockfile.c: Likewise. * sysdeps/pthread/funlockfile.c: Likewise.
* Don't include <bits/stdio-lock.h> from installed <libio.h>.Joseph Myers2015-09-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Every so often someone gets confused by the fact that the installed <bits/stdio-lock.h> header includes the non-installed <lowlevellock.h> header. This inclusion is not in fact a bug, because <bits/stdio-lock.h> only gets included by any header that users should include directly if _IO_MTSAFE_IO is defined, and that's an internal define used when building libio, not a feature test macro it's valid for users to define. However, on general principles it's best to have as little as possible in the installed headers that is inapplicable for valid uses of the installed glibc. This patch moves the include of <bits/stdio-lock.h> to the internal header include/libio.h, so that even if someone defines _IO_MTSAFE_IO it won't get included. This is intended as preparation for stopping <bits/stdio-lock.h> and <bits/libc-lock.h> from being installed at all (after this patch they aren't used in any installed header; formally of course they don't need to be installed even before this patch, but stopping them being installed before removing the #include would just exacerbate the confusion described above), and then moving those out of the bits/ namespace in accordance with the principle that that namespace is only for installed headers. The tests scanf15.c and scanf17.c avoid the internal headers; after this patch that means they need to undefine _IO_MTSAFE_IO as well as _LIBC so as to get a working _IO_lock_t definition for libio.h. This brings them closer to using the headers as an installed program would, which clearly accords with the intent of those tests. Tested for x86_64 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * libio/libio.h [_IO_MTSAFE_IO]: Remove include of <bits/stdio-lock.h> and commented-out include of <comthread.h>. * include/libio.h [!_ISOMAC && _IO_MTSAFE_IO]: Include <bits/stdio-lock.h>. * stdio-common/scanf15.c (_IO_MTSAFE_IO): Undefine. * stdio-common/scanf17.c (_IO_MTSAFE_IO): Likewise.
* Remove use of INTDEF/INTUSE in libioAndreas Schwab2012-05-241-0/+7
|
* First steps to get conformtest fully workingUlrich Drepper2012-02-251-0/+2
|
* Update.Ulrich Drepper2002-12-201-0/+11
| | | | | * include/libio.h [_IO_MTSAFE_IO && _IO_lock_inexpensive]: Redefine _IO_flockifle and _IO_funlockfile as inlines.
* Update.Ulrich Drepper2002-08-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-08-04 Jakub Jelinek <jakub@redhat.com> * manual/debug.texi: Fix spelling to programmatically. Reported by <hayastan132@hotmail.com>. * include/libio.h: Add libc_hidden_proto for __uflow. * include/stdio.h: Map fopen, fdopen, fclose, fputs, fsetpos, and fgetpos to _IO_* names. Add libc_hidden_proto for fileno, fwrite, fseek, fflush_unlocked, fread_unlocked, fwrite_unlocked, fgets_unlocked, fputs_unlocked. * include/wchar.h: Add libc_hidden_proto for fputws_unlocked, putwc_unlocked, vswscanf. * libio/iolibio.h: Add libc_hidden_proto for _IO_fputs. * libio/fileno.c: Use <stdio.h> and libc_hidden_def. * libio/fseek.c: Likewise. * libio/fmemopen.c: Include "libioP.h". Call _IO_fopencookie and not fopencookie. * libio/genops.c (__uflow): Add libc_hidden_def. * libio/iofflush_u.c (fflush_unlocked): Likewise. * libio/iofgets_u.c (fgets_unlocked): Likewise. * libio/iofputs_u.c (fputs_unlocked): Likewise. * libio/iofputws_u.c (fputws_unlocked): Likewise. * libio/iofread_u.c (fread_unlocked): Likewise. * libio/iofwrite_u.c (fwrite_unlocked): Likewise. * libio/iovswscanf.c (vswscanf): Likewise. * libio/putwc_u.c (putwc_unlocked): Likewise. * libio/iofputs.c: Use libc_hidden_def instead of INTDEF. * malloc/malloc.c: Redirect fwrite calls to _IO_fwrite. * malloc/mtrace.c: Likewise. * sunrpc/clnt_perr.c: Remove fputs macro. * sunrpc/svc_simple.c: Likewise. * sunrpc/svc_tcp.c: Likewise. * sunrpc/svc_udp.c: Likewise. * sunrpc/xdr_rec.c: Likewise. * sunrpc/xdr_ref.c: Likewise. * iconv/Makefile: Add CPPFLAGS definitions with -DNOT_in_libc for iconv_prog, linereader, and charmap-dir. * locale/Makefile: Likewise for locale and charmap-dir. * malloc/Makefile: Likewise for memusagestat. * nscd/Makefile: Likewise for nscd, nscd_conf, and dbg_log. * sunrpc/Makefile: Likewise for rpc_main. * sysdeps/unix/sysv/linux/Makefile: Likewise for lddlibc4. * timezone/Makefile: Likewise for zic. * stdio-common/perror.c: Avoid multiple calls to fileno_unlocked.
* Update.Ulrich Drepper2002-08-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-08-04 Ulrich Drepper <drepper@redhat.com> * elf/dl-addr.c (_dl_addr): Add libc_hidden_def. * elf/dl-close.c (_dl_close): Add libc_hidden_def. * elf/dl-open.c (_dl_open): Add libc_hidden_def. * include/dlfcn.h: Add libc_hidden_proto for _dl_addr, _dl_open, _dl_close. * include/libio.h: Add libc_hidden_proto for __underflow, __wuflow, __wunderflow. * libio/genops.c (__underflow): Add libc_hidden_def. * libio/wgenops.c (__wuflow): Likewise. (__wunderflow): Likewise. * include/obstack.h: Add libc_hidden_proto for _obstack_newchunk. * malloc/obstack.c (_obstack_newchunk): Add libc_hidden_def. * include/stdio.h: Add libc_hidden_proto for __vfscanf. * stdio-common/vfscanf.c (__vfscanf): Add libc_hidden_def. * include/string.h: Add libc_hidden_proto for __strverscmp. * string/strverscmp.c (__strverscmp): Add libc_hidden_def. * include/unistd.h: Add libc_hidden_proto for __sysconf. * sysdeps/generic/sysconf.c (__sysconf): Add libc_hidden_def. * sysdeps/posix/sysconf.c: Likewise. * sysdeps/unix/sysv/irix4/sysconf.c: Likewise. * sysdeps/unix/sysv/sysv4/sysconf.c: Likewise. * include/wctype.h: Use libc_hidden_proto for __iswctype, __iswalnum_l, __iswalpha_l, __iswblank_l, __iswcntrl_l, __iswdigit_l, __iswlower_l, __iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l, __iswxdigit_l, __towlower_l, __towupper_l. * wcsmbs/wcstype.c (__iswctype): Use libc_hidden_def. * wcsmbs/wcfuncs_l.c: Use libc_hidden_def for all functions. * include/sys/wait.h: Add libc_hidden_proto for __xmknod. * sysdeps/generic/xmknod.c (__xmknod): Add libc_hidden_def. * sysdeps/mach/hurd/xmknod.c: Likewise. * sysdeps/unix/xmknod.c: Likewise. * sysdeps/unix/sysv/linux/xmknod.c: Likewise. * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise. * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. * sunrpc/svc.c: Add missing INTUSE for _authenticate.
* Update.Ulrich Drepper2002-08-031-0/+9
* include/libio.h: New file. * libio/libioP.h (__overflow, __woverflow): Remove libc_hidden_proto. * libio/iolibio.h: #include <libio.h>, not "libio.h". * sysdeps/generic/morecore.c (__sbrk): Add libc_hidden_proto. * sysdeps/unix/bsd/syscalls.list: Remove all __GI_* aliases. * sysdeps/unix/common/syscalls.list: Likewise. * sysdeps/unix/inet/syscalls.list: Likewise. * sysdeps/unix/sysv/irix4/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/syscalls.list: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/syscalls.list: Likewise. * sysdeps/unix/syscalls.list: Likewise. 2002-08-03 Jakub Jelinek <jakub@redhat.com> the arguments is big enough to cause an overflow.