2025-04-27 10:37:43 +08:00

4592 lines
183 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This is libc.info, produced by makeinfo version 5.1 from libc.texinfo.
This is The GNU C Library Reference Manual, for version 2.36 (Arm).
Copyright © 19932022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being “Free Software Needs Free Documentation” and
“GNU Lesser General Public License”, the Front-Cover texts being “A GNU
Manual”, and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled "GNU Free Documentation
License".
(a) The FSFs Back-Cover Text is: “You have the freedom to copy and
modify this GNU manual. Buying copies from the FSF supports it in
developing GNU and promoting software freedom.”
INFO-DIR-SECTION Software libraries
START-INFO-DIR-ENTRY
* Libc: (libc). C library.
END-INFO-DIR-ENTRY
INFO-DIR-SECTION GNU C library functions and macros
START-INFO-DIR-ENTRY
* ALTWERASE: (libc)Local Modes.
* ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
* ARG_MAX: (libc)General Limits.
* BC_BASE_MAX: (libc)Utility Limits.
* BC_DIM_MAX: (libc)Utility Limits.
* BC_SCALE_MAX: (libc)Utility Limits.
* BC_STRING_MAX: (libc)Utility Limits.
* BRKINT: (libc)Input Modes.
* BUFSIZ: (libc)Controlling Buffering.
* CCTS_OFLOW: (libc)Control Modes.
* CHAR_BIT: (libc)Width of Type.
* CHILD_MAX: (libc)General Limits.
* CIGNORE: (libc)Control Modes.
* CLK_TCK: (libc)Processor Time.
* CLOCAL: (libc)Control Modes.
* CLOCKS_PER_SEC: (libc)CPU Time.
* CLOCK_MONOTONIC: (libc)Getting the Time.
* CLOCK_REALTIME: (libc)Getting the Time.
* COLL_WEIGHTS_MAX: (libc)Utility Limits.
* CPU_CLR: (libc)CPU Affinity.
* CPU_FEATURE_ACTIVE: (libc)X86.
* CPU_FEATURE_PRESENT: (libc)X86.
* CPU_ISSET: (libc)CPU Affinity.
* CPU_SET: (libc)CPU Affinity.
* CPU_SETSIZE: (libc)CPU Affinity.
* CPU_ZERO: (libc)CPU Affinity.
* CREAD: (libc)Control Modes.
* CRTS_IFLOW: (libc)Control Modes.
* CS5: (libc)Control Modes.
* CS6: (libc)Control Modes.
* CS7: (libc)Control Modes.
* CS8: (libc)Control Modes.
* CSIZE: (libc)Control Modes.
* CSTOPB: (libc)Control Modes.
* DLFO_EH_SEGMENT_TYPE: (libc)Dynamic Linker Introspection.
* DLFO_STRUCT_HAS_EH_COUNT: (libc)Dynamic Linker Introspection.
* DLFO_STRUCT_HAS_EH_DBASE: (libc)Dynamic Linker Introspection.
* DTTOIF: (libc)Directory Entries.
* E2BIG: (libc)Error Codes.
* EACCES: (libc)Error Codes.
* EADDRINUSE: (libc)Error Codes.
* EADDRNOTAVAIL: (libc)Error Codes.
* EADV: (libc)Error Codes.
* EAFNOSUPPORT: (libc)Error Codes.
* EAGAIN: (libc)Error Codes.
* EALREADY: (libc)Error Codes.
* EAUTH: (libc)Error Codes.
* EBACKGROUND: (libc)Error Codes.
* EBADE: (libc)Error Codes.
* EBADF: (libc)Error Codes.
* EBADFD: (libc)Error Codes.
* EBADMSG: (libc)Error Codes.
* EBADR: (libc)Error Codes.
* EBADRPC: (libc)Error Codes.
* EBADRQC: (libc)Error Codes.
* EBADSLT: (libc)Error Codes.
* EBFONT: (libc)Error Codes.
* EBUSY: (libc)Error Codes.
* ECANCELED: (libc)Error Codes.
* ECHILD: (libc)Error Codes.
* ECHO: (libc)Local Modes.
* ECHOCTL: (libc)Local Modes.
* ECHOE: (libc)Local Modes.
* ECHOK: (libc)Local Modes.
* ECHOKE: (libc)Local Modes.
* ECHONL: (libc)Local Modes.
* ECHOPRT: (libc)Local Modes.
* ECHRNG: (libc)Error Codes.
* ECOMM: (libc)Error Codes.
* ECONNABORTED: (libc)Error Codes.
* ECONNREFUSED: (libc)Error Codes.
* ECONNRESET: (libc)Error Codes.
* ED: (libc)Error Codes.
* EDEADLK: (libc)Error Codes.
* EDEADLOCK: (libc)Error Codes.
* EDESTADDRREQ: (libc)Error Codes.
* EDIED: (libc)Error Codes.
* EDOM: (libc)Error Codes.
* EDOTDOT: (libc)Error Codes.
* EDQUOT: (libc)Error Codes.
* EEXIST: (libc)Error Codes.
* EFAULT: (libc)Error Codes.
* EFBIG: (libc)Error Codes.
* EFTYPE: (libc)Error Codes.
* EGRATUITOUS: (libc)Error Codes.
* EGREGIOUS: (libc)Error Codes.
* EHOSTDOWN: (libc)Error Codes.
* EHOSTUNREACH: (libc)Error Codes.
* EHWPOISON: (libc)Error Codes.
* EIDRM: (libc)Error Codes.
* EIEIO: (libc)Error Codes.
* EILSEQ: (libc)Error Codes.
* EINPROGRESS: (libc)Error Codes.
* EINTR: (libc)Error Codes.
* EINVAL: (libc)Error Codes.
* EIO: (libc)Error Codes.
* EISCONN: (libc)Error Codes.
* EISDIR: (libc)Error Codes.
* EISNAM: (libc)Error Codes.
* EKEYEXPIRED: (libc)Error Codes.
* EKEYREJECTED: (libc)Error Codes.
* EKEYREVOKED: (libc)Error Codes.
* EL2HLT: (libc)Error Codes.
* EL2NSYNC: (libc)Error Codes.
* EL3HLT: (libc)Error Codes.
* EL3RST: (libc)Error Codes.
* ELIBACC: (libc)Error Codes.
* ELIBBAD: (libc)Error Codes.
* ELIBEXEC: (libc)Error Codes.
* ELIBMAX: (libc)Error Codes.
* ELIBSCN: (libc)Error Codes.
* ELNRNG: (libc)Error Codes.
* ELOOP: (libc)Error Codes.
* EMEDIUMTYPE: (libc)Error Codes.
* EMFILE: (libc)Error Codes.
* EMLINK: (libc)Error Codes.
* EMSGSIZE: (libc)Error Codes.
* EMULTIHOP: (libc)Error Codes.
* ENAMETOOLONG: (libc)Error Codes.
* ENAVAIL: (libc)Error Codes.
* ENEEDAUTH: (libc)Error Codes.
* ENETDOWN: (libc)Error Codes.
* ENETRESET: (libc)Error Codes.
* ENETUNREACH: (libc)Error Codes.
* ENFILE: (libc)Error Codes.
* ENOANO: (libc)Error Codes.
* ENOBUFS: (libc)Error Codes.
* ENOCSI: (libc)Error Codes.
* ENODATA: (libc)Error Codes.
* ENODEV: (libc)Error Codes.
* ENOENT: (libc)Error Codes.
* ENOEXEC: (libc)Error Codes.
* ENOKEY: (libc)Error Codes.
* ENOLCK: (libc)Error Codes.
* ENOLINK: (libc)Error Codes.
* ENOMEDIUM: (libc)Error Codes.
* ENOMEM: (libc)Error Codes.
* ENOMSG: (libc)Error Codes.
* ENONET: (libc)Error Codes.
* ENOPKG: (libc)Error Codes.
* ENOPROTOOPT: (libc)Error Codes.
* ENOSPC: (libc)Error Codes.
* ENOSR: (libc)Error Codes.
* ENOSTR: (libc)Error Codes.
* ENOSYS: (libc)Error Codes.
* ENOTBLK: (libc)Error Codes.
* ENOTCONN: (libc)Error Codes.
* ENOTDIR: (libc)Error Codes.
* ENOTEMPTY: (libc)Error Codes.
* ENOTNAM: (libc)Error Codes.
* ENOTRECOVERABLE: (libc)Error Codes.
* ENOTSOCK: (libc)Error Codes.
* ENOTSUP: (libc)Error Codes.
* ENOTTY: (libc)Error Codes.
* ENOTUNIQ: (libc)Error Codes.
* ENXIO: (libc)Error Codes.
* EOF: (libc)EOF and Errors.
* EOPNOTSUPP: (libc)Error Codes.
* EOVERFLOW: (libc)Error Codes.
* EOWNERDEAD: (libc)Error Codes.
* EPERM: (libc)Error Codes.
* EPFNOSUPPORT: (libc)Error Codes.
* EPIPE: (libc)Error Codes.
* EPROCLIM: (libc)Error Codes.
* EPROCUNAVAIL: (libc)Error Codes.
* EPROGMISMATCH: (libc)Error Codes.
* EPROGUNAVAIL: (libc)Error Codes.
* EPROTO: (libc)Error Codes.
* EPROTONOSUPPORT: (libc)Error Codes.
* EPROTOTYPE: (libc)Error Codes.
* EQUIV_CLASS_MAX: (libc)Utility Limits.
* ERANGE: (libc)Error Codes.
* EREMCHG: (libc)Error Codes.
* EREMOTE: (libc)Error Codes.
* EREMOTEIO: (libc)Error Codes.
* ERESTART: (libc)Error Codes.
* ERFKILL: (libc)Error Codes.
* EROFS: (libc)Error Codes.
* ERPCMISMATCH: (libc)Error Codes.
* ESHUTDOWN: (libc)Error Codes.
* ESOCKTNOSUPPORT: (libc)Error Codes.
* ESPIPE: (libc)Error Codes.
* ESRCH: (libc)Error Codes.
* ESRMNT: (libc)Error Codes.
* ESTALE: (libc)Error Codes.
* ESTRPIPE: (libc)Error Codes.
* ETIME: (libc)Error Codes.
* ETIMEDOUT: (libc)Error Codes.
* ETOOMANYREFS: (libc)Error Codes.
* ETXTBSY: (libc)Error Codes.
* EUCLEAN: (libc)Error Codes.
* EUNATCH: (libc)Error Codes.
* EUSERS: (libc)Error Codes.
* EWOULDBLOCK: (libc)Error Codes.
* EXDEV: (libc)Error Codes.
* EXFULL: (libc)Error Codes.
* EXIT_FAILURE: (libc)Exit Status.
* EXIT_SUCCESS: (libc)Exit Status.
* EXPR_NEST_MAX: (libc)Utility Limits.
* FD_CLOEXEC: (libc)Descriptor Flags.
* FD_CLR: (libc)Waiting for I/O.
* FD_ISSET: (libc)Waiting for I/O.
* FD_SET: (libc)Waiting for I/O.
* FD_SETSIZE: (libc)Waiting for I/O.
* FD_ZERO: (libc)Waiting for I/O.
* FE_SNANS_ALWAYS_SIGNAL: (libc)Infinity and NaN.
* FILENAME_MAX: (libc)Limits for Files.
* FLUSHO: (libc)Local Modes.
* FOPEN_MAX: (libc)Opening Streams.
* FP_ILOGB0: (libc)Exponents and Logarithms.
* FP_ILOGBNAN: (libc)Exponents and Logarithms.
* FP_LLOGB0: (libc)Exponents and Logarithms.
* FP_LLOGBNAN: (libc)Exponents and Logarithms.
* F_DUPFD: (libc)Duplicating Descriptors.
* F_GETFD: (libc)Descriptor Flags.
* F_GETFL: (libc)Getting File Status Flags.
* F_GETLK: (libc)File Locks.
* F_GETOWN: (libc)Interrupt Input.
* F_OFD_GETLK: (libc)Open File Description Locks.
* F_OFD_SETLK: (libc)Open File Description Locks.
* F_OFD_SETLKW: (libc)Open File Description Locks.
* F_OK: (libc)Testing File Access.
* F_SETFD: (libc)Descriptor Flags.
* F_SETFL: (libc)Getting File Status Flags.
* F_SETLK: (libc)File Locks.
* F_SETLKW: (libc)File Locks.
* F_SETOWN: (libc)Interrupt Input.
* HUGE_VAL: (libc)Math Error Reporting.
* HUGE_VALF: (libc)Math Error Reporting.
* HUGE_VALL: (libc)Math Error Reporting.
* HUGE_VAL_FN: (libc)Math Error Reporting.
* HUGE_VAL_FNx: (libc)Math Error Reporting.
* HUPCL: (libc)Control Modes.
* I: (libc)Complex Numbers.
* ICANON: (libc)Local Modes.
* ICRNL: (libc)Input Modes.
* IEXTEN: (libc)Local Modes.
* IFNAMSIZ: (libc)Interface Naming.
* IFTODT: (libc)Directory Entries.
* IGNBRK: (libc)Input Modes.
* IGNCR: (libc)Input Modes.
* IGNPAR: (libc)Input Modes.
* IMAXBEL: (libc)Input Modes.
* INADDR_ANY: (libc)Host Address Data Type.
* INADDR_BROADCAST: (libc)Host Address Data Type.
* INADDR_LOOPBACK: (libc)Host Address Data Type.
* INADDR_NONE: (libc)Host Address Data Type.
* INFINITY: (libc)Infinity and NaN.
* INLCR: (libc)Input Modes.
* INPCK: (libc)Input Modes.
* IPPORT_RESERVED: (libc)Ports.
* IPPORT_USERRESERVED: (libc)Ports.
* ISIG: (libc)Local Modes.
* ISTRIP: (libc)Input Modes.
* IXANY: (libc)Input Modes.
* IXOFF: (libc)Input Modes.
* IXON: (libc)Input Modes.
* LINE_MAX: (libc)Utility Limits.
* LINK_MAX: (libc)Limits for Files.
* L_ctermid: (libc)Identifying the Terminal.
* L_cuserid: (libc)Who Logged In.
* L_tmpnam: (libc)Temporary Files.
* MAXNAMLEN: (libc)Limits for Files.
* MAXSYMLINKS: (libc)Symbolic Links.
* MAX_CANON: (libc)Limits for Files.
* MAX_INPUT: (libc)Limits for Files.
* MB_CUR_MAX: (libc)Selecting the Conversion.
* MB_LEN_MAX: (libc)Selecting the Conversion.
* MDMBUF: (libc)Control Modes.
* MSG_DONTROUTE: (libc)Socket Data Options.
* MSG_OOB: (libc)Socket Data Options.
* MSG_PEEK: (libc)Socket Data Options.
* NAME_MAX: (libc)Limits for Files.
* NAN: (libc)Infinity and NaN.
* NCCS: (libc)Mode Data Types.
* NGROUPS_MAX: (libc)General Limits.
* NOFLSH: (libc)Local Modes.
* NOKERNINFO: (libc)Local Modes.
* NSIG: (libc)Standard Signals.
* NULL: (libc)Null Pointer Constant.
* ONLCR: (libc)Output Modes.
* ONOEOT: (libc)Output Modes.
* OPEN_MAX: (libc)General Limits.
* OPOST: (libc)Output Modes.
* OXTABS: (libc)Output Modes.
* O_ACCMODE: (libc)Access Modes.
* O_APPEND: (libc)Operating Modes.
* O_ASYNC: (libc)Operating Modes.
* O_CREAT: (libc)Open-time Flags.
* O_DIRECTORY: (libc)Open-time Flags.
* O_EXCL: (libc)Open-time Flags.
* O_EXEC: (libc)Access Modes.
* O_EXLOCK: (libc)Open-time Flags.
* O_FSYNC: (libc)Operating Modes.
* O_IGNORE_CTTY: (libc)Open-time Flags.
* O_NDELAY: (libc)Operating Modes.
* O_NOATIME: (libc)Operating Modes.
* O_NOCTTY: (libc)Open-time Flags.
* O_NOFOLLOW: (libc)Open-time Flags.
* O_NOLINK: (libc)Open-time Flags.
* O_NONBLOCK: (libc)Open-time Flags.
* O_NONBLOCK: (libc)Operating Modes.
* O_NOTRANS: (libc)Open-time Flags.
* O_PATH: (libc)Access Modes.
* O_RDONLY: (libc)Access Modes.
* O_RDWR: (libc)Access Modes.
* O_READ: (libc)Access Modes.
* O_SHLOCK: (libc)Open-time Flags.
* O_SYNC: (libc)Operating Modes.
* O_TMPFILE: (libc)Open-time Flags.
* O_TRUNC: (libc)Open-time Flags.
* O_WRITE: (libc)Access Modes.
* O_WRONLY: (libc)Access Modes.
* PARENB: (libc)Control Modes.
* PARMRK: (libc)Input Modes.
* PARODD: (libc)Control Modes.
* PATH_MAX: (libc)Limits for Files.
* PA_FLAG_MASK: (libc)Parsing a Template String.
* PENDIN: (libc)Local Modes.
* PF_FILE: (libc)Local Namespace Details.
* PF_INET6: (libc)Internet Namespace.
* PF_INET: (libc)Internet Namespace.
* PF_LOCAL: (libc)Local Namespace Details.
* PF_UNIX: (libc)Local Namespace Details.
* PIPE_BUF: (libc)Limits for Files.
* PTHREAD_ATTR_NO_SIGMASK_NP: (libc)Initial Thread Signal Mask.
* P_tmpdir: (libc)Temporary Files.
* RAND_MAX: (libc)ISO Random.
* RE_DUP_MAX: (libc)General Limits.
* RLIM_INFINITY: (libc)Limits on Resources.
* RSEQ_SIG: (libc)Restartable Sequences.
* R_OK: (libc)Testing File Access.
* SA_NOCLDSTOP: (libc)Flags for Sigaction.
* SA_ONSTACK: (libc)Flags for Sigaction.
* SA_RESTART: (libc)Flags for Sigaction.
* SEEK_CUR: (libc)File Positioning.
* SEEK_END: (libc)File Positioning.
* SEEK_SET: (libc)File Positioning.
* SIGABRT: (libc)Program Error Signals.
* SIGALRM: (libc)Alarm Signals.
* SIGBUS: (libc)Program Error Signals.
* SIGCHLD: (libc)Job Control Signals.
* SIGCLD: (libc)Job Control Signals.
* SIGCONT: (libc)Job Control Signals.
* SIGEMT: (libc)Program Error Signals.
* SIGFPE: (libc)Program Error Signals.
* SIGHUP: (libc)Termination Signals.
* SIGILL: (libc)Program Error Signals.
* SIGINFO: (libc)Miscellaneous Signals.
* SIGINT: (libc)Termination Signals.
* SIGIO: (libc)Asynchronous I/O Signals.
* SIGIOT: (libc)Program Error Signals.
* SIGKILL: (libc)Termination Signals.
* SIGLOST: (libc)Operation Error Signals.
* SIGPIPE: (libc)Operation Error Signals.
* SIGPOLL: (libc)Asynchronous I/O Signals.
* SIGPROF: (libc)Alarm Signals.
* SIGQUIT: (libc)Termination Signals.
* SIGSEGV: (libc)Program Error Signals.
* SIGSTOP: (libc)Job Control Signals.
* SIGSYS: (libc)Program Error Signals.
* SIGTERM: (libc)Termination Signals.
* SIGTRAP: (libc)Program Error Signals.
* SIGTSTP: (libc)Job Control Signals.
* SIGTTIN: (libc)Job Control Signals.
* SIGTTOU: (libc)Job Control Signals.
* SIGURG: (libc)Asynchronous I/O Signals.
* SIGUSR1: (libc)Miscellaneous Signals.
* SIGUSR2: (libc)Miscellaneous Signals.
* SIGVTALRM: (libc)Alarm Signals.
* SIGWINCH: (libc)Miscellaneous Signals.
* SIGXCPU: (libc)Operation Error Signals.
* SIGXFSZ: (libc)Operation Error Signals.
* SIG_ERR: (libc)Basic Signal Handling.
* SNAN: (libc)Infinity and NaN.
* SNANF: (libc)Infinity and NaN.
* SNANFN: (libc)Infinity and NaN.
* SNANFNx: (libc)Infinity and NaN.
* SNANL: (libc)Infinity and NaN.
* SOCK_DGRAM: (libc)Communication Styles.
* SOCK_RAW: (libc)Communication Styles.
* SOCK_RDM: (libc)Communication Styles.
* SOCK_SEQPACKET: (libc)Communication Styles.
* SOCK_STREAM: (libc)Communication Styles.
* SOL_SOCKET: (libc)Socket-Level Options.
* SSIZE_MAX: (libc)General Limits.
* STREAM_MAX: (libc)General Limits.
* SUN_LEN: (libc)Local Namespace Details.
* S_IFMT: (libc)Testing File Type.
* S_ISBLK: (libc)Testing File Type.
* S_ISCHR: (libc)Testing File Type.
* S_ISDIR: (libc)Testing File Type.
* S_ISFIFO: (libc)Testing File Type.
* S_ISLNK: (libc)Testing File Type.
* S_ISREG: (libc)Testing File Type.
* S_ISSOCK: (libc)Testing File Type.
* S_TYPEISMQ: (libc)Testing File Type.
* S_TYPEISSEM: (libc)Testing File Type.
* S_TYPEISSHM: (libc)Testing File Type.
* TMP_MAX: (libc)Temporary Files.
* TOSTOP: (libc)Local Modes.
* TZNAME_MAX: (libc)General Limits.
* VDISCARD: (libc)Other Special.
* VDSUSP: (libc)Signal Characters.
* VEOF: (libc)Editing Characters.
* VEOL2: (libc)Editing Characters.
* VEOL: (libc)Editing Characters.
* VERASE: (libc)Editing Characters.
* VINTR: (libc)Signal Characters.
* VKILL: (libc)Editing Characters.
* VLNEXT: (libc)Other Special.
* VMIN: (libc)Noncanonical Input.
* VQUIT: (libc)Signal Characters.
* VREPRINT: (libc)Editing Characters.
* VSTART: (libc)Start/Stop Characters.
* VSTATUS: (libc)Other Special.
* VSTOP: (libc)Start/Stop Characters.
* VSUSP: (libc)Signal Characters.
* VTIME: (libc)Noncanonical Input.
* VWERASE: (libc)Editing Characters.
* WCHAR_MAX: (libc)Extended Char Intro.
* WCHAR_MIN: (libc)Extended Char Intro.
* WCOREDUMP: (libc)Process Completion Status.
* WEOF: (libc)EOF and Errors.
* WEOF: (libc)Extended Char Intro.
* WEXITSTATUS: (libc)Process Completion Status.
* WIFEXITED: (libc)Process Completion Status.
* WIFSIGNALED: (libc)Process Completion Status.
* WIFSTOPPED: (libc)Process Completion Status.
* WSTOPSIG: (libc)Process Completion Status.
* WTERMSIG: (libc)Process Completion Status.
* W_OK: (libc)Testing File Access.
* X_OK: (libc)Testing File Access.
* _Complex_I: (libc)Complex Numbers.
* _Exit: (libc)Termination Internals.
* _Fork: (libc)Creating a Process.
* _IOFBF: (libc)Controlling Buffering.
* _IOLBF: (libc)Controlling Buffering.
* _IONBF: (libc)Controlling Buffering.
* _Imaginary_I: (libc)Complex Numbers.
* _PATH_UTMP: (libc)Manipulating the Database.
* _PATH_WTMP: (libc)Manipulating the Database.
* _POSIX2_C_DEV: (libc)System Options.
* _POSIX2_C_VERSION: (libc)Version Supported.
* _POSIX2_FORT_DEV: (libc)System Options.
* _POSIX2_FORT_RUN: (libc)System Options.
* _POSIX2_LOCALEDEF: (libc)System Options.
* _POSIX2_SW_DEV: (libc)System Options.
* _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
* _POSIX_JOB_CONTROL: (libc)System Options.
* _POSIX_NO_TRUNC: (libc)Options for Files.
* _POSIX_SAVED_IDS: (libc)System Options.
* _POSIX_VDISABLE: (libc)Options for Files.
* _POSIX_VERSION: (libc)Version Supported.
* __fbufsize: (libc)Controlling Buffering.
* __flbf: (libc)Controlling Buffering.
* __fpending: (libc)Controlling Buffering.
* __fpurge: (libc)Flushing Buffers.
* __freadable: (libc)Opening Streams.
* __freading: (libc)Opening Streams.
* __fsetlocking: (libc)Streams and Threads.
* __fwritable: (libc)Opening Streams.
* __fwriting: (libc)Opening Streams.
* __gconv_end_fct: (libc)glibc iconv Implementation.
* __gconv_fct: (libc)glibc iconv Implementation.
* __gconv_init_fct: (libc)glibc iconv Implementation.
* __ppc_get_timebase: (libc)PowerPC.
* __ppc_get_timebase_freq: (libc)PowerPC.
* __ppc_mdoio: (libc)PowerPC.
* __ppc_mdoom: (libc)PowerPC.
* __ppc_set_ppr_low: (libc)PowerPC.
* __ppc_set_ppr_med: (libc)PowerPC.
* __ppc_set_ppr_med_high: (libc)PowerPC.
* __ppc_set_ppr_med_low: (libc)PowerPC.
* __ppc_set_ppr_very_low: (libc)PowerPC.
* __ppc_yield: (libc)PowerPC.
* __riscv_flush_icache: (libc)RISC-V.
* __va_copy: (libc)Argument Macros.
* __x86_get_cpuid_feature_leaf: (libc)X86.
* _dl_find_object: (libc)Dynamic Linker Introspection.
* _exit: (libc)Termination Internals.
* _flushlbf: (libc)Flushing Buffers.
* _tolower: (libc)Case Conversion.
* _toupper: (libc)Case Conversion.
* a64l: (libc)Encode Binary Data.
* abort: (libc)Aborting a Program.
* abs: (libc)Absolute Value.
* accept: (libc)Accepting Connections.
* access: (libc)Testing File Access.
* acos: (libc)Inverse Trig Functions.
* acosf: (libc)Inverse Trig Functions.
* acosfN: (libc)Inverse Trig Functions.
* acosfNx: (libc)Inverse Trig Functions.
* acosh: (libc)Hyperbolic Functions.
* acoshf: (libc)Hyperbolic Functions.
* acoshfN: (libc)Hyperbolic Functions.
* acoshfNx: (libc)Hyperbolic Functions.
* acoshl: (libc)Hyperbolic Functions.
* acosl: (libc)Inverse Trig Functions.
* addmntent: (libc)mtab.
* addseverity: (libc)Adding Severity Classes.
* adjtime: (libc)Setting and Adjusting the Time.
* adjtimex: (libc)Setting and Adjusting the Time.
* aio_cancel64: (libc)Cancel AIO Operations.
* aio_cancel: (libc)Cancel AIO Operations.
* aio_error64: (libc)Status of AIO Operations.
* aio_error: (libc)Status of AIO Operations.
* aio_fsync64: (libc)Synchronizing AIO Operations.
* aio_fsync: (libc)Synchronizing AIO Operations.
* aio_init: (libc)Configuration of AIO.
* aio_read64: (libc)Asynchronous Reads/Writes.
* aio_read: (libc)Asynchronous Reads/Writes.
* aio_return64: (libc)Status of AIO Operations.
* aio_return: (libc)Status of AIO Operations.
* aio_suspend64: (libc)Synchronizing AIO Operations.
* aio_suspend: (libc)Synchronizing AIO Operations.
* aio_write64: (libc)Asynchronous Reads/Writes.
* aio_write: (libc)Asynchronous Reads/Writes.
* alarm: (libc)Setting an Alarm.
* aligned_alloc: (libc)Aligned Memory Blocks.
* alloca: (libc)Variable Size Automatic.
* alphasort64: (libc)Scanning Directory Content.
* alphasort: (libc)Scanning Directory Content.
* arc4random: (libc)High Quality Random.
* arc4random_buf: (libc)High Quality Random.
* arc4random_uniform: (libc)High Quality Random.
* argp_error: (libc)Argp Helper Functions.
* argp_failure: (libc)Argp Helper Functions.
* argp_help: (libc)Argp Help.
* argp_parse: (libc)Argp.
* argp_state_help: (libc)Argp Helper Functions.
* argp_usage: (libc)Argp Helper Functions.
* argz_add: (libc)Argz Functions.
* argz_add_sep: (libc)Argz Functions.
* argz_append: (libc)Argz Functions.
* argz_count: (libc)Argz Functions.
* argz_create: (libc)Argz Functions.
* argz_create_sep: (libc)Argz Functions.
* argz_delete: (libc)Argz Functions.
* argz_extract: (libc)Argz Functions.
* argz_insert: (libc)Argz Functions.
* argz_next: (libc)Argz Functions.
* argz_replace: (libc)Argz Functions.
* argz_stringify: (libc)Argz Functions.
* asctime: (libc)Formatting Calendar Time.
* asctime_r: (libc)Formatting Calendar Time.
* asin: (libc)Inverse Trig Functions.
* asinf: (libc)Inverse Trig Functions.
* asinfN: (libc)Inverse Trig Functions.
* asinfNx: (libc)Inverse Trig Functions.
* asinh: (libc)Hyperbolic Functions.
* asinhf: (libc)Hyperbolic Functions.
* asinhfN: (libc)Hyperbolic Functions.
* asinhfNx: (libc)Hyperbolic Functions.
* asinhl: (libc)Hyperbolic Functions.
* asinl: (libc)Inverse Trig Functions.
* asprintf: (libc)Dynamic Output.
* assert: (libc)Consistency Checking.
* assert_perror: (libc)Consistency Checking.
* atan2: (libc)Inverse Trig Functions.
* atan2f: (libc)Inverse Trig Functions.
* atan2fN: (libc)Inverse Trig Functions.
* atan2fNx: (libc)Inverse Trig Functions.
* atan2l: (libc)Inverse Trig Functions.
* atan: (libc)Inverse Trig Functions.
* atanf: (libc)Inverse Trig Functions.
* atanfN: (libc)Inverse Trig Functions.
* atanfNx: (libc)Inverse Trig Functions.
* atanh: (libc)Hyperbolic Functions.
* atanhf: (libc)Hyperbolic Functions.
* atanhfN: (libc)Hyperbolic Functions.
* atanhfNx: (libc)Hyperbolic Functions.
* atanhl: (libc)Hyperbolic Functions.
* atanl: (libc)Inverse Trig Functions.
* atexit: (libc)Cleanups on Exit.
* atof: (libc)Parsing of Floats.
* atoi: (libc)Parsing of Integers.
* atol: (libc)Parsing of Integers.
* atoll: (libc)Parsing of Integers.
* backtrace: (libc)Backtraces.
* backtrace_symbols: (libc)Backtraces.
* backtrace_symbols_fd: (libc)Backtraces.
* basename: (libc)Finding Tokens in a String.
* basename: (libc)Finding Tokens in a String.
* bcmp: (libc)String/Array Comparison.
* bcopy: (libc)Copying Strings and Arrays.
* bind: (libc)Setting Address.
* bind_textdomain_codeset: (libc)Charset conversion in gettext.
* bindtextdomain: (libc)Locating gettext catalog.
* brk: (libc)Resizing the Data Segment.
* bsearch: (libc)Array Search Function.
* btowc: (libc)Converting a Character.
* bzero: (libc)Copying Strings and Arrays.
* cabs: (libc)Absolute Value.
* cabsf: (libc)Absolute Value.
* cabsfN: (libc)Absolute Value.
* cabsfNx: (libc)Absolute Value.
* cabsl: (libc)Absolute Value.
* cacos: (libc)Inverse Trig Functions.
* cacosf: (libc)Inverse Trig Functions.
* cacosfN: (libc)Inverse Trig Functions.
* cacosfNx: (libc)Inverse Trig Functions.
* cacosh: (libc)Hyperbolic Functions.
* cacoshf: (libc)Hyperbolic Functions.
* cacoshfN: (libc)Hyperbolic Functions.
* cacoshfNx: (libc)Hyperbolic Functions.
* cacoshl: (libc)Hyperbolic Functions.
* cacosl: (libc)Inverse Trig Functions.
* call_once: (libc)Call Once.
* calloc: (libc)Allocating Cleared Space.
* canonicalize: (libc)FP Bit Twiddling.
* canonicalize_file_name: (libc)Symbolic Links.
* canonicalizef: (libc)FP Bit Twiddling.
* canonicalizefN: (libc)FP Bit Twiddling.
* canonicalizefNx: (libc)FP Bit Twiddling.
* canonicalizel: (libc)FP Bit Twiddling.
* carg: (libc)Operations on Complex.
* cargf: (libc)Operations on Complex.
* cargfN: (libc)Operations on Complex.
* cargfNx: (libc)Operations on Complex.
* cargl: (libc)Operations on Complex.
* casin: (libc)Inverse Trig Functions.
* casinf: (libc)Inverse Trig Functions.
* casinfN: (libc)Inverse Trig Functions.
* casinfNx: (libc)Inverse Trig Functions.
* casinh: (libc)Hyperbolic Functions.
* casinhf: (libc)Hyperbolic Functions.
* casinhfN: (libc)Hyperbolic Functions.
* casinhfNx: (libc)Hyperbolic Functions.
* casinhl: (libc)Hyperbolic Functions.
* casinl: (libc)Inverse Trig Functions.
* catan: (libc)Inverse Trig Functions.
* catanf: (libc)Inverse Trig Functions.
* catanfN: (libc)Inverse Trig Functions.
* catanfNx: (libc)Inverse Trig Functions.
* catanh: (libc)Hyperbolic Functions.
* catanhf: (libc)Hyperbolic Functions.
* catanhfN: (libc)Hyperbolic Functions.
* catanhfNx: (libc)Hyperbolic Functions.
* catanhl: (libc)Hyperbolic Functions.
* catanl: (libc)Inverse Trig Functions.
* catclose: (libc)The catgets Functions.
* catgets: (libc)The catgets Functions.
* catopen: (libc)The catgets Functions.
* cbrt: (libc)Exponents and Logarithms.
* cbrtf: (libc)Exponents and Logarithms.
* cbrtfN: (libc)Exponents and Logarithms.
* cbrtfNx: (libc)Exponents and Logarithms.
* cbrtl: (libc)Exponents and Logarithms.
* ccos: (libc)Trig Functions.
* ccosf: (libc)Trig Functions.
* ccosfN: (libc)Trig Functions.
* ccosfNx: (libc)Trig Functions.
* ccosh: (libc)Hyperbolic Functions.
* ccoshf: (libc)Hyperbolic Functions.
* ccoshfN: (libc)Hyperbolic Functions.
* ccoshfNx: (libc)Hyperbolic Functions.
* ccoshl: (libc)Hyperbolic Functions.
* ccosl: (libc)Trig Functions.
* ceil: (libc)Rounding Functions.
* ceilf: (libc)Rounding Functions.
* ceilfN: (libc)Rounding Functions.
* ceilfNx: (libc)Rounding Functions.
* ceill: (libc)Rounding Functions.
* cexp: (libc)Exponents and Logarithms.
* cexpf: (libc)Exponents and Logarithms.
* cexpfN: (libc)Exponents and Logarithms.
* cexpfNx: (libc)Exponents and Logarithms.
* cexpl: (libc)Exponents and Logarithms.
* cfgetispeed: (libc)Line Speed.
* cfgetospeed: (libc)Line Speed.
* cfmakeraw: (libc)Noncanonical Input.
* cfsetispeed: (libc)Line Speed.
* cfsetospeed: (libc)Line Speed.
* cfsetspeed: (libc)Line Speed.
* chdir: (libc)Working Directory.
* chmod: (libc)Setting Permissions.
* chown: (libc)File Owner.
* cimag: (libc)Operations on Complex.
* cimagf: (libc)Operations on Complex.
* cimagfN: (libc)Operations on Complex.
* cimagfNx: (libc)Operations on Complex.
* cimagl: (libc)Operations on Complex.
* clearenv: (libc)Environment Access.
* clearerr: (libc)Error Recovery.
* clearerr_unlocked: (libc)Error Recovery.
* clock: (libc)CPU Time.
* clock_getres: (libc)Getting the Time.
* clock_gettime: (libc)Getting the Time.
* clock_settime: (libc)Setting and Adjusting the Time.
* clog10: (libc)Exponents and Logarithms.
* clog10f: (libc)Exponents and Logarithms.
* clog10fN: (libc)Exponents and Logarithms.
* clog10fNx: (libc)Exponents and Logarithms.
* clog10l: (libc)Exponents and Logarithms.
* clog: (libc)Exponents and Logarithms.
* clogf: (libc)Exponents and Logarithms.
* clogfN: (libc)Exponents and Logarithms.
* clogfNx: (libc)Exponents and Logarithms.
* clogl: (libc)Exponents and Logarithms.
* close: (libc)Opening and Closing Files.
* close_range: (libc)Opening and Closing Files.
* closedir: (libc)Reading/Closing Directory.
* closefrom: (libc)Opening and Closing Files.
* closelog: (libc)closelog.
* cnd_broadcast: (libc)ISO C Condition Variables.
* cnd_destroy: (libc)ISO C Condition Variables.
* cnd_init: (libc)ISO C Condition Variables.
* cnd_signal: (libc)ISO C Condition Variables.
* cnd_timedwait: (libc)ISO C Condition Variables.
* cnd_wait: (libc)ISO C Condition Variables.
* confstr: (libc)String Parameters.
* conj: (libc)Operations on Complex.
* conjf: (libc)Operations on Complex.
* conjfN: (libc)Operations on Complex.
* conjfNx: (libc)Operations on Complex.
* conjl: (libc)Operations on Complex.
* connect: (libc)Connecting.
* copy_file_range: (libc)Copying File Data.
* copysign: (libc)FP Bit Twiddling.
* copysignf: (libc)FP Bit Twiddling.
* copysignfN: (libc)FP Bit Twiddling.
* copysignfNx: (libc)FP Bit Twiddling.
* copysignl: (libc)FP Bit Twiddling.
* cos: (libc)Trig Functions.
* cosf: (libc)Trig Functions.
* cosfN: (libc)Trig Functions.
* cosfNx: (libc)Trig Functions.
* cosh: (libc)Hyperbolic Functions.
* coshf: (libc)Hyperbolic Functions.
* coshfN: (libc)Hyperbolic Functions.
* coshfNx: (libc)Hyperbolic Functions.
* coshl: (libc)Hyperbolic Functions.
* cosl: (libc)Trig Functions.
* cpow: (libc)Exponents and Logarithms.
* cpowf: (libc)Exponents and Logarithms.
* cpowfN: (libc)Exponents and Logarithms.
* cpowfNx: (libc)Exponents and Logarithms.
* cpowl: (libc)Exponents and Logarithms.
* cproj: (libc)Operations on Complex.
* cprojf: (libc)Operations on Complex.
* cprojfN: (libc)Operations on Complex.
* cprojfNx: (libc)Operations on Complex.
* cprojl: (libc)Operations on Complex.
* creal: (libc)Operations on Complex.
* crealf: (libc)Operations on Complex.
* crealfN: (libc)Operations on Complex.
* crealfNx: (libc)Operations on Complex.
* creall: (libc)Operations on Complex.
* creat64: (libc)Opening and Closing Files.
* creat: (libc)Opening and Closing Files.
* crypt: (libc)Passphrase Storage.
* crypt_r: (libc)Passphrase Storage.
* csin: (libc)Trig Functions.
* csinf: (libc)Trig Functions.
* csinfN: (libc)Trig Functions.
* csinfNx: (libc)Trig Functions.
* csinh: (libc)Hyperbolic Functions.
* csinhf: (libc)Hyperbolic Functions.
* csinhfN: (libc)Hyperbolic Functions.
* csinhfNx: (libc)Hyperbolic Functions.
* csinhl: (libc)Hyperbolic Functions.
* csinl: (libc)Trig Functions.
* csqrt: (libc)Exponents and Logarithms.
* csqrtf: (libc)Exponents and Logarithms.
* csqrtfN: (libc)Exponents and Logarithms.
* csqrtfNx: (libc)Exponents and Logarithms.
* csqrtl: (libc)Exponents and Logarithms.
* ctan: (libc)Trig Functions.
* ctanf: (libc)Trig Functions.
* ctanfN: (libc)Trig Functions.
* ctanfNx: (libc)Trig Functions.
* ctanh: (libc)Hyperbolic Functions.
* ctanhf: (libc)Hyperbolic Functions.
* ctanhfN: (libc)Hyperbolic Functions.
* ctanhfNx: (libc)Hyperbolic Functions.
* ctanhl: (libc)Hyperbolic Functions.
* ctanl: (libc)Trig Functions.
* ctermid: (libc)Identifying the Terminal.
* ctime: (libc)Formatting Calendar Time.
* ctime_r: (libc)Formatting Calendar Time.
* cuserid: (libc)Who Logged In.
* daddl: (libc)Misc FP Arithmetic.
* dcgettext: (libc)Translation with gettext.
* dcngettext: (libc)Advanced gettext functions.
* ddivl: (libc)Misc FP Arithmetic.
* dfmal: (libc)Misc FP Arithmetic.
* dgettext: (libc)Translation with gettext.
* difftime: (libc)Calculating Elapsed Time.
* dirfd: (libc)Opening a Directory.
* dirname: (libc)Finding Tokens in a String.
* div: (libc)Integer Division.
* dlinfo: (libc)Dynamic Linker Introspection.
* dmull: (libc)Misc FP Arithmetic.
* dngettext: (libc)Advanced gettext functions.
* drand48: (libc)SVID Random.
* drand48_r: (libc)SVID Random.
* drem: (libc)Remainder Functions.
* dremf: (libc)Remainder Functions.
* dreml: (libc)Remainder Functions.
* dsqrtl: (libc)Misc FP Arithmetic.
* dsubl: (libc)Misc FP Arithmetic.
* dup2: (libc)Duplicating Descriptors.
* dup: (libc)Duplicating Descriptors.
* ecvt: (libc)System V Number Conversion.
* ecvt_r: (libc)System V Number Conversion.
* endfsent: (libc)fstab.
* endgrent: (libc)Scanning All Groups.
* endhostent: (libc)Host Names.
* endmntent: (libc)mtab.
* endnetent: (libc)Networks Database.
* endnetgrent: (libc)Lookup Netgroup.
* endprotoent: (libc)Protocols Database.
* endpwent: (libc)Scanning All Users.
* endservent: (libc)Services Database.
* endutent: (libc)Manipulating the Database.
* endutxent: (libc)XPG Functions.
* envz_add: (libc)Envz Functions.
* envz_entry: (libc)Envz Functions.
* envz_get: (libc)Envz Functions.
* envz_merge: (libc)Envz Functions.
* envz_remove: (libc)Envz Functions.
* envz_strip: (libc)Envz Functions.
* erand48: (libc)SVID Random.
* erand48_r: (libc)SVID Random.
* erf: (libc)Special Functions.
* erfc: (libc)Special Functions.
* erfcf: (libc)Special Functions.
* erfcfN: (libc)Special Functions.
* erfcfNx: (libc)Special Functions.
* erfcl: (libc)Special Functions.
* erff: (libc)Special Functions.
* erffN: (libc)Special Functions.
* erffNx: (libc)Special Functions.
* erfl: (libc)Special Functions.
* err: (libc)Error Messages.
* errno: (libc)Checking for Errors.
* error: (libc)Error Messages.
* error_at_line: (libc)Error Messages.
* errx: (libc)Error Messages.
* execl: (libc)Executing a File.
* execle: (libc)Executing a File.
* execlp: (libc)Executing a File.
* execv: (libc)Executing a File.
* execve: (libc)Executing a File.
* execvp: (libc)Executing a File.
* exit: (libc)Normal Termination.
* exp10: (libc)Exponents and Logarithms.
* exp10f: (libc)Exponents and Logarithms.
* exp10fN: (libc)Exponents and Logarithms.
* exp10fNx: (libc)Exponents and Logarithms.
* exp10l: (libc)Exponents and Logarithms.
* exp2: (libc)Exponents and Logarithms.
* exp2f: (libc)Exponents and Logarithms.
* exp2fN: (libc)Exponents and Logarithms.
* exp2fNx: (libc)Exponents and Logarithms.
* exp2l: (libc)Exponents and Logarithms.
* exp: (libc)Exponents and Logarithms.
* expf: (libc)Exponents and Logarithms.
* expfN: (libc)Exponents and Logarithms.
* expfNx: (libc)Exponents and Logarithms.
* expl: (libc)Exponents and Logarithms.
* explicit_bzero: (libc)Erasing Sensitive Data.
* expm1: (libc)Exponents and Logarithms.
* expm1f: (libc)Exponents and Logarithms.
* expm1fN: (libc)Exponents and Logarithms.
* expm1fNx: (libc)Exponents and Logarithms.
* expm1l: (libc)Exponents and Logarithms.
* fMaddfN: (libc)Misc FP Arithmetic.
* fMaddfNx: (libc)Misc FP Arithmetic.
* fMdivfN: (libc)Misc FP Arithmetic.
* fMdivfNx: (libc)Misc FP Arithmetic.
* fMfmafN: (libc)Misc FP Arithmetic.
* fMfmafNx: (libc)Misc FP Arithmetic.
* fMmulfN: (libc)Misc FP Arithmetic.
* fMmulfNx: (libc)Misc FP Arithmetic.
* fMsqrtfN: (libc)Misc FP Arithmetic.
* fMsqrtfNx: (libc)Misc FP Arithmetic.
* fMsubfN: (libc)Misc FP Arithmetic.
* fMsubfNx: (libc)Misc FP Arithmetic.
* fMxaddfN: (libc)Misc FP Arithmetic.
* fMxaddfNx: (libc)Misc FP Arithmetic.
* fMxdivfN: (libc)Misc FP Arithmetic.
* fMxdivfNx: (libc)Misc FP Arithmetic.
* fMxfmafN: (libc)Misc FP Arithmetic.
* fMxfmafNx: (libc)Misc FP Arithmetic.
* fMxmulfN: (libc)Misc FP Arithmetic.
* fMxmulfNx: (libc)Misc FP Arithmetic.
* fMxsqrtfN: (libc)Misc FP Arithmetic.
* fMxsqrtfNx: (libc)Misc FP Arithmetic.
* fMxsubfN: (libc)Misc FP Arithmetic.
* fMxsubfNx: (libc)Misc FP Arithmetic.
* fabs: (libc)Absolute Value.
* fabsf: (libc)Absolute Value.
* fabsfN: (libc)Absolute Value.
* fabsfNx: (libc)Absolute Value.
* fabsl: (libc)Absolute Value.
* fadd: (libc)Misc FP Arithmetic.
* faddl: (libc)Misc FP Arithmetic.
* fchdir: (libc)Working Directory.
* fchmod: (libc)Setting Permissions.
* fchown: (libc)File Owner.
* fclose: (libc)Closing Streams.
* fcloseall: (libc)Closing Streams.
* fcntl: (libc)Control Operations.
* fcvt: (libc)System V Number Conversion.
* fcvt_r: (libc)System V Number Conversion.
* fdatasync: (libc)Synchronizing I/O.
* fdim: (libc)Misc FP Arithmetic.
* fdimf: (libc)Misc FP Arithmetic.
* fdimfN: (libc)Misc FP Arithmetic.
* fdimfNx: (libc)Misc FP Arithmetic.
* fdiml: (libc)Misc FP Arithmetic.
* fdiv: (libc)Misc FP Arithmetic.
* fdivl: (libc)Misc FP Arithmetic.
* fdopen: (libc)Descriptors and Streams.
* fdopendir: (libc)Opening a Directory.
* feclearexcept: (libc)Status bit operations.
* fedisableexcept: (libc)Control Functions.
* feenableexcept: (libc)Control Functions.
* fegetenv: (libc)Control Functions.
* fegetexcept: (libc)Control Functions.
* fegetexceptflag: (libc)Status bit operations.
* fegetmode: (libc)Control Functions.
* fegetround: (libc)Rounding.
* feholdexcept: (libc)Control Functions.
* feof: (libc)EOF and Errors.
* feof_unlocked: (libc)EOF and Errors.
* feraiseexcept: (libc)Status bit operations.
* ferror: (libc)EOF and Errors.
* ferror_unlocked: (libc)EOF and Errors.
* fesetenv: (libc)Control Functions.
* fesetexcept: (libc)Status bit operations.
* fesetexceptflag: (libc)Status bit operations.
* fesetmode: (libc)Control Functions.
* fesetround: (libc)Rounding.
* fetestexcept: (libc)Status bit operations.
* fetestexceptflag: (libc)Status bit operations.
* feupdateenv: (libc)Control Functions.
* fexecve: (libc)Executing a File.
* fflush: (libc)Flushing Buffers.
* fflush_unlocked: (libc)Flushing Buffers.
* ffma: (libc)Misc FP Arithmetic.
* ffmal: (libc)Misc FP Arithmetic.
* fgetc: (libc)Character Input.
* fgetc_unlocked: (libc)Character Input.
* fgetgrent: (libc)Scanning All Groups.
* fgetgrent_r: (libc)Scanning All Groups.
* fgetpos64: (libc)Portable Positioning.
* fgetpos: (libc)Portable Positioning.
* fgetpwent: (libc)Scanning All Users.
* fgetpwent_r: (libc)Scanning All Users.
* fgets: (libc)Line Input.
* fgets_unlocked: (libc)Line Input.
* fgetwc: (libc)Character Input.
* fgetwc_unlocked: (libc)Character Input.
* fgetws: (libc)Line Input.
* fgetws_unlocked: (libc)Line Input.
* fileno: (libc)Descriptors and Streams.
* fileno_unlocked: (libc)Descriptors and Streams.
* finite: (libc)Floating Point Classes.
* finitef: (libc)Floating Point Classes.
* finitel: (libc)Floating Point Classes.
* flockfile: (libc)Streams and Threads.
* floor: (libc)Rounding Functions.
* floorf: (libc)Rounding Functions.
* floorfN: (libc)Rounding Functions.
* floorfNx: (libc)Rounding Functions.
* floorl: (libc)Rounding Functions.
* fma: (libc)Misc FP Arithmetic.
* fmaf: (libc)Misc FP Arithmetic.
* fmafN: (libc)Misc FP Arithmetic.
* fmafNx: (libc)Misc FP Arithmetic.
* fmal: (libc)Misc FP Arithmetic.
* fmax: (libc)Misc FP Arithmetic.
* fmaxf: (libc)Misc FP Arithmetic.
* fmaxfN: (libc)Misc FP Arithmetic.
* fmaxfNx: (libc)Misc FP Arithmetic.
* fmaximum: (libc)Misc FP Arithmetic.
* fmaximum_mag: (libc)Misc FP Arithmetic.
* fmaximum_mag_num: (libc)Misc FP Arithmetic.
* fmaximum_mag_numf: (libc)Misc FP Arithmetic.
* fmaximum_mag_numfN: (libc)Misc FP Arithmetic.
* fmaximum_mag_numfNx: (libc)Misc FP Arithmetic.
* fmaximum_mag_numl: (libc)Misc FP Arithmetic.
* fmaximum_magf: (libc)Misc FP Arithmetic.
* fmaximum_magfN: (libc)Misc FP Arithmetic.
* fmaximum_magfNx: (libc)Misc FP Arithmetic.
* fmaximum_magl: (libc)Misc FP Arithmetic.
* fmaximum_num: (libc)Misc FP Arithmetic.
* fmaximum_numf: (libc)Misc FP Arithmetic.
* fmaximum_numfN: (libc)Misc FP Arithmetic.
* fmaximum_numfNx: (libc)Misc FP Arithmetic.
* fmaximum_numl: (libc)Misc FP Arithmetic.
* fmaximumf: (libc)Misc FP Arithmetic.
* fmaximumfN: (libc)Misc FP Arithmetic.
* fmaximumfNx: (libc)Misc FP Arithmetic.
* fmaximuml: (libc)Misc FP Arithmetic.
* fmaxl: (libc)Misc FP Arithmetic.
* fmaxmag: (libc)Misc FP Arithmetic.
* fmaxmagf: (libc)Misc FP Arithmetic.
* fmaxmagfN: (libc)Misc FP Arithmetic.
* fmaxmagfNx: (libc)Misc FP Arithmetic.
* fmaxmagl: (libc)Misc FP Arithmetic.
* fmemopen: (libc)String Streams.
* fmin: (libc)Misc FP Arithmetic.
* fminf: (libc)Misc FP Arithmetic.
* fminfN: (libc)Misc FP Arithmetic.
* fminfNx: (libc)Misc FP Arithmetic.
* fminimum: (libc)Misc FP Arithmetic.
* fminimum_mag: (libc)Misc FP Arithmetic.
* fminimum_mag_num: (libc)Misc FP Arithmetic.
* fminimum_mag_numf: (libc)Misc FP Arithmetic.
* fminimum_mag_numfN: (libc)Misc FP Arithmetic.
* fminimum_mag_numfNx: (libc)Misc FP Arithmetic.
* fminimum_mag_numl: (libc)Misc FP Arithmetic.
* fminimum_magf: (libc)Misc FP Arithmetic.
* fminimum_magfN: (libc)Misc FP Arithmetic.
* fminimum_magfNx: (libc)Misc FP Arithmetic.
* fminimum_magl: (libc)Misc FP Arithmetic.
* fminimum_num: (libc)Misc FP Arithmetic.
* fminimum_numf: (libc)Misc FP Arithmetic.
* fminimum_numfN: (libc)Misc FP Arithmetic.
* fminimum_numfNx: (libc)Misc FP Arithmetic.
* fminimum_numl: (libc)Misc FP Arithmetic.
* fminimumf: (libc)Misc FP Arithmetic.
* fminimumfN: (libc)Misc FP Arithmetic.
* fminimumfNx: (libc)Misc FP Arithmetic.
* fminimuml: (libc)Misc FP Arithmetic.
* fminl: (libc)Misc FP Arithmetic.
* fminmag: (libc)Misc FP Arithmetic.
* fminmagf: (libc)Misc FP Arithmetic.
* fminmagfN: (libc)Misc FP Arithmetic.
* fminmagfNx: (libc)Misc FP Arithmetic.
* fminmagl: (libc)Misc FP Arithmetic.
* fmod: (libc)Remainder Functions.
* fmodf: (libc)Remainder Functions.
* fmodfN: (libc)Remainder Functions.
* fmodfNx: (libc)Remainder Functions.
* fmodl: (libc)Remainder Functions.
* fmtmsg: (libc)Printing Formatted Messages.
* fmul: (libc)Misc FP Arithmetic.
* fmull: (libc)Misc FP Arithmetic.
* fnmatch: (libc)Wildcard Matching.
* fopen64: (libc)Opening Streams.
* fopen: (libc)Opening Streams.
* fopencookie: (libc)Streams and Cookies.
* fork: (libc)Creating a Process.
* forkpty: (libc)Pseudo-Terminal Pairs.
* fpathconf: (libc)Pathconf.
* fpclassify: (libc)Floating Point Classes.
* fprintf: (libc)Formatted Output Functions.
* fputc: (libc)Simple Output.
* fputc_unlocked: (libc)Simple Output.
* fputs: (libc)Simple Output.
* fputs_unlocked: (libc)Simple Output.
* fputwc: (libc)Simple Output.
* fputwc_unlocked: (libc)Simple Output.
* fputws: (libc)Simple Output.
* fputws_unlocked: (libc)Simple Output.
* fread: (libc)Block Input/Output.
* fread_unlocked: (libc)Block Input/Output.
* free: (libc)Freeing after Malloc.
* freopen64: (libc)Opening Streams.
* freopen: (libc)Opening Streams.
* frexp: (libc)Normalization Functions.
* frexpf: (libc)Normalization Functions.
* frexpfN: (libc)Normalization Functions.
* frexpfNx: (libc)Normalization Functions.
* frexpl: (libc)Normalization Functions.
* fromfp: (libc)Rounding Functions.
* fromfpf: (libc)Rounding Functions.
* fromfpfN: (libc)Rounding Functions.
* fromfpfNx: (libc)Rounding Functions.
* fromfpl: (libc)Rounding Functions.
* fromfpx: (libc)Rounding Functions.
* fromfpxf: (libc)Rounding Functions.
* fromfpxfN: (libc)Rounding Functions.
* fromfpxfNx: (libc)Rounding Functions.
* fromfpxl: (libc)Rounding Functions.
* fscanf: (libc)Formatted Input Functions.
* fseek: (libc)File Positioning.
* fseeko64: (libc)File Positioning.
* fseeko: (libc)File Positioning.
* fsetpos64: (libc)Portable Positioning.
* fsetpos: (libc)Portable Positioning.
* fsqrt: (libc)Misc FP Arithmetic.
* fsqrtl: (libc)Misc FP Arithmetic.
* fstat64: (libc)Reading Attributes.
* fstat: (libc)Reading Attributes.
* fsub: (libc)Misc FP Arithmetic.
* fsubl: (libc)Misc FP Arithmetic.
* fsync: (libc)Synchronizing I/O.
* ftell: (libc)File Positioning.
* ftello64: (libc)File Positioning.
* ftello: (libc)File Positioning.
* ftruncate64: (libc)File Size.
* ftruncate: (libc)File Size.
* ftrylockfile: (libc)Streams and Threads.
* ftw64: (libc)Working with Directory Trees.
* ftw: (libc)Working with Directory Trees.
* funlockfile: (libc)Streams and Threads.
* futimes: (libc)File Times.
* fwide: (libc)Streams and I18N.
* fwprintf: (libc)Formatted Output Functions.
* fwrite: (libc)Block Input/Output.
* fwrite_unlocked: (libc)Block Input/Output.
* fwscanf: (libc)Formatted Input Functions.
* gamma: (libc)Special Functions.
* gammaf: (libc)Special Functions.
* gammal: (libc)Special Functions.
* gcvt: (libc)System V Number Conversion.
* get_avphys_pages: (libc)Query Memory Parameters.
* get_current_dir_name: (libc)Working Directory.
* get_nprocs: (libc)Processor Resources.
* get_nprocs_conf: (libc)Processor Resources.
* get_phys_pages: (libc)Query Memory Parameters.
* getauxval: (libc)Auxiliary Vector.
* getc: (libc)Character Input.
* getc_unlocked: (libc)Character Input.
* getchar: (libc)Character Input.
* getchar_unlocked: (libc)Character Input.
* getcontext: (libc)System V contexts.
* getcpu: (libc)CPU Affinity.
* getcwd: (libc)Working Directory.
* getdate: (libc)General Time String Parsing.
* getdate_r: (libc)General Time String Parsing.
* getdelim: (libc)Line Input.
* getdents64: (libc)Low-level Directory Access.
* getdomainnname: (libc)Host Identification.
* getegid: (libc)Reading Persona.
* getentropy: (libc)Unpredictable Bytes.
* getenv: (libc)Environment Access.
* geteuid: (libc)Reading Persona.
* getfsent: (libc)fstab.
* getfsfile: (libc)fstab.
* getfsspec: (libc)fstab.
* getgid: (libc)Reading Persona.
* getgrent: (libc)Scanning All Groups.
* getgrent_r: (libc)Scanning All Groups.
* getgrgid: (libc)Lookup Group.
* getgrgid_r: (libc)Lookup Group.
* getgrnam: (libc)Lookup Group.
* getgrnam_r: (libc)Lookup Group.
* getgrouplist: (libc)Setting Groups.
* getgroups: (libc)Reading Persona.
* gethostbyaddr: (libc)Host Names.
* gethostbyaddr_r: (libc)Host Names.
* gethostbyname2: (libc)Host Names.
* gethostbyname2_r: (libc)Host Names.
* gethostbyname: (libc)Host Names.
* gethostbyname_r: (libc)Host Names.
* gethostent: (libc)Host Names.
* gethostid: (libc)Host Identification.
* gethostname: (libc)Host Identification.
* getitimer: (libc)Setting an Alarm.
* getline: (libc)Line Input.
* getloadavg: (libc)Processor Resources.
* getlogin: (libc)Who Logged In.
* getmntent: (libc)mtab.
* getmntent_r: (libc)mtab.
* getnetbyaddr: (libc)Networks Database.
* getnetbyname: (libc)Networks Database.
* getnetent: (libc)Networks Database.
* getnetgrent: (libc)Lookup Netgroup.
* getnetgrent_r: (libc)Lookup Netgroup.
* getopt: (libc)Using Getopt.
* getopt_long: (libc)Getopt Long Options.
* getopt_long_only: (libc)Getopt Long Options.
* getpagesize: (libc)Query Memory Parameters.
* getpass: (libc)getpass.
* getpayload: (libc)FP Bit Twiddling.
* getpayloadf: (libc)FP Bit Twiddling.
* getpayloadfN: (libc)FP Bit Twiddling.
* getpayloadfNx: (libc)FP Bit Twiddling.
* getpayloadl: (libc)FP Bit Twiddling.
* getpeername: (libc)Who is Connected.
* getpgid: (libc)Process Group Functions.
* getpgrp: (libc)Process Group Functions.
* getpid: (libc)Process Identification.
* getppid: (libc)Process Identification.
* getpriority: (libc)Traditional Scheduling Functions.
* getprotobyname: (libc)Protocols Database.
* getprotobynumber: (libc)Protocols Database.
* getprotoent: (libc)Protocols Database.
* getpt: (libc)Allocation.
* getpwent: (libc)Scanning All Users.
* getpwent_r: (libc)Scanning All Users.
* getpwnam: (libc)Lookup User.
* getpwnam_r: (libc)Lookup User.
* getpwuid: (libc)Lookup User.
* getpwuid_r: (libc)Lookup User.
* getrandom: (libc)Unpredictable Bytes.
* getrlimit64: (libc)Limits on Resources.
* getrlimit: (libc)Limits on Resources.
* getrusage: (libc)Resource Usage.
* gets: (libc)Line Input.
* getservbyname: (libc)Services Database.
* getservbyport: (libc)Services Database.
* getservent: (libc)Services Database.
* getsid: (libc)Process Group Functions.
* getsockname: (libc)Reading Address.
* getsockopt: (libc)Socket Option Functions.
* getsubopt: (libc)Suboptions.
* gettext: (libc)Translation with gettext.
* gettid: (libc)Process Identification.
* gettimeofday: (libc)Getting the Time.
* getuid: (libc)Reading Persona.
* getumask: (libc)Setting Permissions.
* getutent: (libc)Manipulating the Database.
* getutent_r: (libc)Manipulating the Database.
* getutid: (libc)Manipulating the Database.
* getutid_r: (libc)Manipulating the Database.
* getutline: (libc)Manipulating the Database.
* getutline_r: (libc)Manipulating the Database.
* getutmp: (libc)XPG Functions.
* getutmpx: (libc)XPG Functions.
* getutxent: (libc)XPG Functions.
* getutxid: (libc)XPG Functions.
* getutxline: (libc)XPG Functions.
* getw: (libc)Character Input.
* getwc: (libc)Character Input.
* getwc_unlocked: (libc)Character Input.
* getwchar: (libc)Character Input.
* getwchar_unlocked: (libc)Character Input.
* getwd: (libc)Working Directory.
* glob64: (libc)Calling Glob.
* glob: (libc)Calling Glob.
* globfree64: (libc)More Flags for Globbing.
* globfree: (libc)More Flags for Globbing.
* gmtime: (libc)Broken-down Time.
* gmtime_r: (libc)Broken-down Time.
* grantpt: (libc)Allocation.
* gsignal: (libc)Signaling Yourself.
* gtty: (libc)BSD Terminal Modes.
* hasmntopt: (libc)mtab.
* hcreate: (libc)Hash Search Function.
* hcreate_r: (libc)Hash Search Function.
* hdestroy: (libc)Hash Search Function.
* hdestroy_r: (libc)Hash Search Function.
* hsearch: (libc)Hash Search Function.
* hsearch_r: (libc)Hash Search Function.
* htonl: (libc)Byte Order.
* htons: (libc)Byte Order.
* hypot: (libc)Exponents and Logarithms.
* hypotf: (libc)Exponents and Logarithms.
* hypotfN: (libc)Exponents and Logarithms.
* hypotfNx: (libc)Exponents and Logarithms.
* hypotl: (libc)Exponents and Logarithms.
* iconv: (libc)Generic Conversion Interface.
* iconv_close: (libc)Generic Conversion Interface.
* iconv_open: (libc)Generic Conversion Interface.
* if_freenameindex: (libc)Interface Naming.
* if_indextoname: (libc)Interface Naming.
* if_nameindex: (libc)Interface Naming.
* if_nametoindex: (libc)Interface Naming.
* ilogb: (libc)Exponents and Logarithms.
* ilogbf: (libc)Exponents and Logarithms.
* ilogbfN: (libc)Exponents and Logarithms.
* ilogbfNx: (libc)Exponents and Logarithms.
* ilogbl: (libc)Exponents and Logarithms.
* imaxabs: (libc)Absolute Value.
* imaxdiv: (libc)Integer Division.
* in6addr_any: (libc)Host Address Data Type.
* in6addr_loopback: (libc)Host Address Data Type.
* index: (libc)Search Functions.
* inet_addr: (libc)Host Address Functions.
* inet_aton: (libc)Host Address Functions.
* inet_lnaof: (libc)Host Address Functions.
* inet_makeaddr: (libc)Host Address Functions.
* inet_netof: (libc)Host Address Functions.
* inet_network: (libc)Host Address Functions.
* inet_ntoa: (libc)Host Address Functions.
* inet_ntop: (libc)Host Address Functions.
* inet_pton: (libc)Host Address Functions.
* initgroups: (libc)Setting Groups.
* initstate: (libc)BSD Random.
* initstate_r: (libc)BSD Random.
* innetgr: (libc)Netgroup Membership.
* ioctl: (libc)IOCTLs.
* isalnum: (libc)Classification of Characters.
* isalpha: (libc)Classification of Characters.
* isascii: (libc)Classification of Characters.
* isatty: (libc)Is It a Terminal.
* isblank: (libc)Classification of Characters.
* iscanonical: (libc)Floating Point Classes.
* iscntrl: (libc)Classification of Characters.
* isdigit: (libc)Classification of Characters.
* iseqsig: (libc)FP Comparison Functions.
* isfinite: (libc)Floating Point Classes.
* isgraph: (libc)Classification of Characters.
* isgreater: (libc)FP Comparison Functions.
* isgreaterequal: (libc)FP Comparison Functions.
* isinf: (libc)Floating Point Classes.
* isinff: (libc)Floating Point Classes.
* isinfl: (libc)Floating Point Classes.
* isless: (libc)FP Comparison Functions.
* islessequal: (libc)FP Comparison Functions.
* islessgreater: (libc)FP Comparison Functions.
* islower: (libc)Classification of Characters.
* isnan: (libc)Floating Point Classes.
* isnan: (libc)Floating Point Classes.
* isnanf: (libc)Floating Point Classes.
* isnanl: (libc)Floating Point Classes.
* isnormal: (libc)Floating Point Classes.
* isprint: (libc)Classification of Characters.
* ispunct: (libc)Classification of Characters.
* issignaling: (libc)Floating Point Classes.
* isspace: (libc)Classification of Characters.
* issubnormal: (libc)Floating Point Classes.
* isunordered: (libc)FP Comparison Functions.
* isupper: (libc)Classification of Characters.
* iswalnum: (libc)Classification of Wide Characters.
* iswalpha: (libc)Classification of Wide Characters.
* iswblank: (libc)Classification of Wide Characters.
* iswcntrl: (libc)Classification of Wide Characters.
* iswctype: (libc)Classification of Wide Characters.
* iswdigit: (libc)Classification of Wide Characters.
* iswgraph: (libc)Classification of Wide Characters.
* iswlower: (libc)Classification of Wide Characters.
* iswprint: (libc)Classification of Wide Characters.
* iswpunct: (libc)Classification of Wide Characters.
* iswspace: (libc)Classification of Wide Characters.
* iswupper: (libc)Classification of Wide Characters.
* iswxdigit: (libc)Classification of Wide Characters.
* isxdigit: (libc)Classification of Characters.
* iszero: (libc)Floating Point Classes.
* j0: (libc)Special Functions.
* j0f: (libc)Special Functions.
* j0fN: (libc)Special Functions.
* j0fNx: (libc)Special Functions.
* j0l: (libc)Special Functions.
* j1: (libc)Special Functions.
* j1f: (libc)Special Functions.
* j1fN: (libc)Special Functions.
* j1fNx: (libc)Special Functions.
* j1l: (libc)Special Functions.
* jn: (libc)Special Functions.
* jnf: (libc)Special Functions.
* jnfN: (libc)Special Functions.
* jnfNx: (libc)Special Functions.
* jnl: (libc)Special Functions.
* jrand48: (libc)SVID Random.
* jrand48_r: (libc)SVID Random.
* kill: (libc)Signaling Another Process.
* killpg: (libc)Signaling Another Process.
* l64a: (libc)Encode Binary Data.
* labs: (libc)Absolute Value.
* lcong48: (libc)SVID Random.
* lcong48_r: (libc)SVID Random.
* ldexp: (libc)Normalization Functions.
* ldexpf: (libc)Normalization Functions.
* ldexpfN: (libc)Normalization Functions.
* ldexpfNx: (libc)Normalization Functions.
* ldexpl: (libc)Normalization Functions.
* ldiv: (libc)Integer Division.
* lfind: (libc)Array Search Function.
* lgamma: (libc)Special Functions.
* lgamma_r: (libc)Special Functions.
* lgammaf: (libc)Special Functions.
* lgammafN: (libc)Special Functions.
* lgammafN_r: (libc)Special Functions.
* lgammafNx: (libc)Special Functions.
* lgammafNx_r: (libc)Special Functions.
* lgammaf_r: (libc)Special Functions.
* lgammal: (libc)Special Functions.
* lgammal_r: (libc)Special Functions.
* link: (libc)Hard Links.
* linkat: (libc)Hard Links.
* lio_listio64: (libc)Asynchronous Reads/Writes.
* lio_listio: (libc)Asynchronous Reads/Writes.
* listen: (libc)Listening.
* llabs: (libc)Absolute Value.
* lldiv: (libc)Integer Division.
* llogb: (libc)Exponents and Logarithms.
* llogbf: (libc)Exponents and Logarithms.
* llogbfN: (libc)Exponents and Logarithms.
* llogbfNx: (libc)Exponents and Logarithms.
* llogbl: (libc)Exponents and Logarithms.
* llrint: (libc)Rounding Functions.
* llrintf: (libc)Rounding Functions.
* llrintfN: (libc)Rounding Functions.
* llrintfNx: (libc)Rounding Functions.
* llrintl: (libc)Rounding Functions.
* llround: (libc)Rounding Functions.
* llroundf: (libc)Rounding Functions.
* llroundfN: (libc)Rounding Functions.
* llroundfNx: (libc)Rounding Functions.
* llroundl: (libc)Rounding Functions.
* localeconv: (libc)The Lame Way to Locale Data.
* localtime: (libc)Broken-down Time.
* localtime_r: (libc)Broken-down Time.
* log10: (libc)Exponents and Logarithms.
* log10f: (libc)Exponents and Logarithms.
* log10fN: (libc)Exponents and Logarithms.
* log10fNx: (libc)Exponents and Logarithms.
* log10l: (libc)Exponents and Logarithms.
* log1p: (libc)Exponents and Logarithms.
* log1pf: (libc)Exponents and Logarithms.
* log1pfN: (libc)Exponents and Logarithms.
* log1pfNx: (libc)Exponents and Logarithms.
* log1pl: (libc)Exponents and Logarithms.
* log2: (libc)Exponents and Logarithms.
* log2f: (libc)Exponents and Logarithms.
* log2fN: (libc)Exponents and Logarithms.
* log2fNx: (libc)Exponents and Logarithms.
* log2l: (libc)Exponents and Logarithms.
* log: (libc)Exponents and Logarithms.
* logb: (libc)Exponents and Logarithms.
* logbf: (libc)Exponents and Logarithms.
* logbfN: (libc)Exponents and Logarithms.
* logbfNx: (libc)Exponents and Logarithms.
* logbl: (libc)Exponents and Logarithms.
* logf: (libc)Exponents and Logarithms.
* logfN: (libc)Exponents and Logarithms.
* logfNx: (libc)Exponents and Logarithms.
* login: (libc)Logging In and Out.
* login_tty: (libc)Logging In and Out.
* logl: (libc)Exponents and Logarithms.
* logout: (libc)Logging In and Out.
* logwtmp: (libc)Logging In and Out.
* longjmp: (libc)Non-Local Details.
* lrand48: (libc)SVID Random.
* lrand48_r: (libc)SVID Random.
* lrint: (libc)Rounding Functions.
* lrintf: (libc)Rounding Functions.
* lrintfN: (libc)Rounding Functions.
* lrintfNx: (libc)Rounding Functions.
* lrintl: (libc)Rounding Functions.
* lround: (libc)Rounding Functions.
* lroundf: (libc)Rounding Functions.
* lroundfN: (libc)Rounding Functions.
* lroundfNx: (libc)Rounding Functions.
* lroundl: (libc)Rounding Functions.
* lsearch: (libc)Array Search Function.
* lseek64: (libc)File Position Primitive.
* lseek: (libc)File Position Primitive.
* lstat64: (libc)Reading Attributes.
* lstat: (libc)Reading Attributes.
* lutimes: (libc)File Times.
* madvise: (libc)Memory-mapped I/O.
* makecontext: (libc)System V contexts.
* mallinfo2: (libc)Statistics of Malloc.
* malloc: (libc)Basic Allocation.
* mallopt: (libc)Malloc Tunable Parameters.
* mblen: (libc)Non-reentrant Character Conversion.
* mbrlen: (libc)Converting a Character.
* mbrtowc: (libc)Converting a Character.
* mbsinit: (libc)Keeping the state.
* mbsnrtowcs: (libc)Converting Strings.
* mbsrtowcs: (libc)Converting Strings.
* mbstowcs: (libc)Non-reentrant String Conversion.
* mbtowc: (libc)Non-reentrant Character Conversion.
* mcheck: (libc)Heap Consistency Checking.
* memalign: (libc)Aligned Memory Blocks.
* memccpy: (libc)Copying Strings and Arrays.
* memchr: (libc)Search Functions.
* memcmp: (libc)String/Array Comparison.
* memcpy: (libc)Copying Strings and Arrays.
* memfd_create: (libc)Memory-mapped I/O.
* memfrob: (libc)Obfuscating Data.
* memmem: (libc)Search Functions.
* memmove: (libc)Copying Strings and Arrays.
* mempcpy: (libc)Copying Strings and Arrays.
* memrchr: (libc)Search Functions.
* memset: (libc)Copying Strings and Arrays.
* mkdir: (libc)Creating Directories.
* mkdtemp: (libc)Temporary Files.
* mkfifo: (libc)FIFO Special Files.
* mknod: (libc)Making Special Files.
* mkstemp: (libc)Temporary Files.
* mktemp: (libc)Temporary Files.
* mktime: (libc)Broken-down Time.
* mlock2: (libc)Page Lock Functions.
* mlock: (libc)Page Lock Functions.
* mlockall: (libc)Page Lock Functions.
* mmap64: (libc)Memory-mapped I/O.
* mmap: (libc)Memory-mapped I/O.
* modf: (libc)Rounding Functions.
* modff: (libc)Rounding Functions.
* modffN: (libc)Rounding Functions.
* modffNx: (libc)Rounding Functions.
* modfl: (libc)Rounding Functions.
* mount: (libc)Mount-Unmount-Remount.
* mprobe: (libc)Heap Consistency Checking.
* mprotect: (libc)Memory Protection.
* mrand48: (libc)SVID Random.
* mrand48_r: (libc)SVID Random.
* mremap: (libc)Memory-mapped I/O.
* msync: (libc)Memory-mapped I/O.
* mtrace: (libc)Tracing malloc.
* mtx_destroy: (libc)ISO C Mutexes.
* mtx_init: (libc)ISO C Mutexes.
* mtx_lock: (libc)ISO C Mutexes.
* mtx_timedlock: (libc)ISO C Mutexes.
* mtx_trylock: (libc)ISO C Mutexes.
* mtx_unlock: (libc)ISO C Mutexes.
* munlock: (libc)Page Lock Functions.
* munlockall: (libc)Page Lock Functions.
* munmap: (libc)Memory-mapped I/O.
* muntrace: (libc)Tracing malloc.
* nan: (libc)FP Bit Twiddling.
* nanf: (libc)FP Bit Twiddling.
* nanfN: (libc)FP Bit Twiddling.
* nanfNx: (libc)FP Bit Twiddling.
* nanl: (libc)FP Bit Twiddling.
* nanosleep: (libc)Sleeping.
* nearbyint: (libc)Rounding Functions.
* nearbyintf: (libc)Rounding Functions.
* nearbyintfN: (libc)Rounding Functions.
* nearbyintfNx: (libc)Rounding Functions.
* nearbyintl: (libc)Rounding Functions.
* nextafter: (libc)FP Bit Twiddling.
* nextafterf: (libc)FP Bit Twiddling.
* nextafterfN: (libc)FP Bit Twiddling.
* nextafterfNx: (libc)FP Bit Twiddling.
* nextafterl: (libc)FP Bit Twiddling.
* nextdown: (libc)FP Bit Twiddling.
* nextdownf: (libc)FP Bit Twiddling.
* nextdownfN: (libc)FP Bit Twiddling.
* nextdownfNx: (libc)FP Bit Twiddling.
* nextdownl: (libc)FP Bit Twiddling.
* nexttoward: (libc)FP Bit Twiddling.
* nexttowardf: (libc)FP Bit Twiddling.
* nexttowardl: (libc)FP Bit Twiddling.
* nextup: (libc)FP Bit Twiddling.
* nextupf: (libc)FP Bit Twiddling.
* nextupfN: (libc)FP Bit Twiddling.
* nextupfNx: (libc)FP Bit Twiddling.
* nextupl: (libc)FP Bit Twiddling.
* nftw64: (libc)Working with Directory Trees.
* nftw: (libc)Working with Directory Trees.
* ngettext: (libc)Advanced gettext functions.
* nice: (libc)Traditional Scheduling Functions.
* nl_langinfo: (libc)The Elegant and Fast Way.
* nrand48: (libc)SVID Random.
* nrand48_r: (libc)SVID Random.
* ntohl: (libc)Byte Order.
* ntohs: (libc)Byte Order.
* ntp_adjtime: (libc)Setting and Adjusting the Time.
* ntp_gettime: (libc)Setting and Adjusting the Time.
* obstack_1grow: (libc)Growing Objects.
* obstack_1grow_fast: (libc)Extra Fast Growing.
* obstack_alignment_mask: (libc)Obstacks Data Alignment.
* obstack_alloc: (libc)Allocation in an Obstack.
* obstack_base: (libc)Status of an Obstack.
* obstack_blank: (libc)Growing Objects.
* obstack_blank_fast: (libc)Extra Fast Growing.
* obstack_chunk_size: (libc)Obstack Chunks.
* obstack_copy0: (libc)Allocation in an Obstack.
* obstack_copy: (libc)Allocation in an Obstack.
* obstack_finish: (libc)Growing Objects.
* obstack_free: (libc)Freeing Obstack Objects.
* obstack_grow0: (libc)Growing Objects.
* obstack_grow: (libc)Growing Objects.
* obstack_init: (libc)Preparing for Obstacks.
* obstack_int_grow: (libc)Growing Objects.
* obstack_int_grow_fast: (libc)Extra Fast Growing.
* obstack_next_free: (libc)Status of an Obstack.
* obstack_object_size: (libc)Growing Objects.
* obstack_object_size: (libc)Status of an Obstack.
* obstack_printf: (libc)Dynamic Output.
* obstack_ptr_grow: (libc)Growing Objects.
* obstack_ptr_grow_fast: (libc)Extra Fast Growing.
* obstack_room: (libc)Extra Fast Growing.
* obstack_vprintf: (libc)Variable Arguments Output.
* offsetof: (libc)Structure Measurement.
* on_exit: (libc)Cleanups on Exit.
* open64: (libc)Opening and Closing Files.
* open: (libc)Opening and Closing Files.
* open_memstream: (libc)String Streams.
* opendir: (libc)Opening a Directory.
* openlog: (libc)openlog.
* openpty: (libc)Pseudo-Terminal Pairs.
* parse_printf_format: (libc)Parsing a Template String.
* pathconf: (libc)Pathconf.
* pause: (libc)Using Pause.
* pclose: (libc)Pipe to a Subprocess.
* perror: (libc)Error Messages.
* pipe: (libc)Creating a Pipe.
* pkey_alloc: (libc)Memory Protection.
* pkey_free: (libc)Memory Protection.
* pkey_get: (libc)Memory Protection.
* pkey_mprotect: (libc)Memory Protection.
* pkey_set: (libc)Memory Protection.
* popen: (libc)Pipe to a Subprocess.
* posix_fallocate64: (libc)Storage Allocation.
* posix_fallocate: (libc)Storage Allocation.
* posix_memalign: (libc)Aligned Memory Blocks.
* pow: (libc)Exponents and Logarithms.
* powf: (libc)Exponents and Logarithms.
* powfN: (libc)Exponents and Logarithms.
* powfNx: (libc)Exponents and Logarithms.
* powl: (libc)Exponents and Logarithms.
* pread64: (libc)I/O Primitives.
* pread: (libc)I/O Primitives.
* preadv2: (libc)Scatter-Gather.
* preadv64: (libc)Scatter-Gather.
* preadv64v2: (libc)Scatter-Gather.
* preadv: (libc)Scatter-Gather.
* printf: (libc)Formatted Output Functions.
* printf_size: (libc)Predefined Printf Handlers.
* printf_size_info: (libc)Predefined Printf Handlers.
* psignal: (libc)Signal Messages.
* pthread_attr_getsigmask_np: (libc)Initial Thread Signal Mask.
* pthread_attr_setsigmask_np: (libc)Initial Thread Signal Mask.
* pthread_clockjoin_np: (libc)Waiting with Explicit Clocks.
* pthread_cond_clockwait: (libc)Waiting with Explicit Clocks.
* pthread_getattr_default_np: (libc)Default Thread Attributes.
* pthread_getspecific: (libc)Thread-specific Data.
* pthread_key_create: (libc)Thread-specific Data.
* pthread_key_delete: (libc)Thread-specific Data.
* pthread_rwlock_clockrdlock: (libc)Waiting with Explicit Clocks.
* pthread_rwlock_clockwrlock: (libc)Waiting with Explicit Clocks.
* pthread_setattr_default_np: (libc)Default Thread Attributes.
* pthread_setspecific: (libc)Thread-specific Data.
* pthread_timedjoin_np: (libc)Waiting with Explicit Clocks.
* pthread_tryjoin_np: (libc)Waiting with Explicit Clocks.
* ptsname: (libc)Allocation.
* ptsname_r: (libc)Allocation.
* putc: (libc)Simple Output.
* putc_unlocked: (libc)Simple Output.
* putchar: (libc)Simple Output.
* putchar_unlocked: (libc)Simple Output.
* putenv: (libc)Environment Access.
* putpwent: (libc)Writing a User Entry.
* puts: (libc)Simple Output.
* pututline: (libc)Manipulating the Database.
* pututxline: (libc)XPG Functions.
* putw: (libc)Simple Output.
* putwc: (libc)Simple Output.
* putwc_unlocked: (libc)Simple Output.
* putwchar: (libc)Simple Output.
* putwchar_unlocked: (libc)Simple Output.
* pwrite64: (libc)I/O Primitives.
* pwrite: (libc)I/O Primitives.
* pwritev2: (libc)Scatter-Gather.
* pwritev64: (libc)Scatter-Gather.
* pwritev64v2: (libc)Scatter-Gather.
* pwritev: (libc)Scatter-Gather.
* qecvt: (libc)System V Number Conversion.
* qecvt_r: (libc)System V Number Conversion.
* qfcvt: (libc)System V Number Conversion.
* qfcvt_r: (libc)System V Number Conversion.
* qgcvt: (libc)System V Number Conversion.
* qsort: (libc)Array Sort Function.
* raise: (libc)Signaling Yourself.
* rand: (libc)ISO Random.
* rand_r: (libc)ISO Random.
* random: (libc)BSD Random.
* random_r: (libc)BSD Random.
* rawmemchr: (libc)Search Functions.
* read: (libc)I/O Primitives.
* readdir64: (libc)Reading/Closing Directory.
* readdir64_r: (libc)Reading/Closing Directory.
* readdir: (libc)Reading/Closing Directory.
* readdir_r: (libc)Reading/Closing Directory.
* readlink: (libc)Symbolic Links.
* readv: (libc)Scatter-Gather.
* realloc: (libc)Changing Block Size.
* reallocarray: (libc)Changing Block Size.
* realpath: (libc)Symbolic Links.
* recv: (libc)Receiving Data.
* recvfrom: (libc)Receiving Datagrams.
* recvmsg: (libc)Receiving Datagrams.
* regcomp: (libc)POSIX Regexp Compilation.
* regerror: (libc)Regexp Cleanup.
* regexec: (libc)Matching POSIX Regexps.
* regfree: (libc)Regexp Cleanup.
* register_printf_function: (libc)Registering New Conversions.
* remainder: (libc)Remainder Functions.
* remainderf: (libc)Remainder Functions.
* remainderfN: (libc)Remainder Functions.
* remainderfNx: (libc)Remainder Functions.
* remainderl: (libc)Remainder Functions.
* remove: (libc)Deleting Files.
* rename: (libc)Renaming Files.
* rewind: (libc)File Positioning.
* rewinddir: (libc)Random Access Directory.
* rindex: (libc)Search Functions.
* rint: (libc)Rounding Functions.
* rintf: (libc)Rounding Functions.
* rintfN: (libc)Rounding Functions.
* rintfNx: (libc)Rounding Functions.
* rintl: (libc)Rounding Functions.
* rmdir: (libc)Deleting Files.
* round: (libc)Rounding Functions.
* roundeven: (libc)Rounding Functions.
* roundevenf: (libc)Rounding Functions.
* roundevenfN: (libc)Rounding Functions.
* roundevenfNx: (libc)Rounding Functions.
* roundevenl: (libc)Rounding Functions.
* roundf: (libc)Rounding Functions.
* roundfN: (libc)Rounding Functions.
* roundfNx: (libc)Rounding Functions.
* roundl: (libc)Rounding Functions.
* rpmatch: (libc)Yes-or-No Questions.
* sbrk: (libc)Resizing the Data Segment.
* scalb: (libc)Normalization Functions.
* scalbf: (libc)Normalization Functions.
* scalbl: (libc)Normalization Functions.
* scalbln: (libc)Normalization Functions.
* scalblnf: (libc)Normalization Functions.
* scalblnfN: (libc)Normalization Functions.
* scalblnfNx: (libc)Normalization Functions.
* scalblnl: (libc)Normalization Functions.
* scalbn: (libc)Normalization Functions.
* scalbnf: (libc)Normalization Functions.
* scalbnfN: (libc)Normalization Functions.
* scalbnfNx: (libc)Normalization Functions.
* scalbnl: (libc)Normalization Functions.
* scandir64: (libc)Scanning Directory Content.
* scandir: (libc)Scanning Directory Content.
* scanf: (libc)Formatted Input Functions.
* sched_get_priority_max: (libc)Basic Scheduling Functions.
* sched_get_priority_min: (libc)Basic Scheduling Functions.
* sched_getaffinity: (libc)CPU Affinity.
* sched_getparam: (libc)Basic Scheduling Functions.
* sched_getscheduler: (libc)Basic Scheduling Functions.
* sched_rr_get_interval: (libc)Basic Scheduling Functions.
* sched_setaffinity: (libc)CPU Affinity.
* sched_setparam: (libc)Basic Scheduling Functions.
* sched_setscheduler: (libc)Basic Scheduling Functions.
* sched_yield: (libc)Basic Scheduling Functions.
* secure_getenv: (libc)Environment Access.
* seed48: (libc)SVID Random.
* seed48_r: (libc)SVID Random.
* seekdir: (libc)Random Access Directory.
* select: (libc)Waiting for I/O.
* sem_clockwait: (libc)Waiting with Explicit Clocks.
* sem_close: (libc)Semaphores.
* sem_destroy: (libc)Semaphores.
* sem_getvalue: (libc)Semaphores.
* sem_init: (libc)Semaphores.
* sem_open: (libc)Semaphores.
* sem_post: (libc)Semaphores.
* sem_timedwait: (libc)Semaphores.
* sem_trywait: (libc)Semaphores.
* sem_unlink: (libc)Semaphores.
* sem_wait: (libc)Semaphores.
* semctl: (libc)Semaphores.
* semget: (libc)Semaphores.
* semop: (libc)Semaphores.
* semtimedop: (libc)Semaphores.
* send: (libc)Sending Data.
* sendmsg: (libc)Receiving Datagrams.
* sendto: (libc)Sending Datagrams.
* setbuf: (libc)Controlling Buffering.
* setbuffer: (libc)Controlling Buffering.
* setcontext: (libc)System V contexts.
* setdomainname: (libc)Host Identification.
* setegid: (libc)Setting Groups.
* setenv: (libc)Environment Access.
* seteuid: (libc)Setting User ID.
* setfsent: (libc)fstab.
* setgid: (libc)Setting Groups.
* setgrent: (libc)Scanning All Groups.
* setgroups: (libc)Setting Groups.
* sethostent: (libc)Host Names.
* sethostid: (libc)Host Identification.
* sethostname: (libc)Host Identification.
* setitimer: (libc)Setting an Alarm.
* setjmp: (libc)Non-Local Details.
* setlinebuf: (libc)Controlling Buffering.
* setlocale: (libc)Setting the Locale.
* setlogmask: (libc)setlogmask.
* setmntent: (libc)mtab.
* setnetent: (libc)Networks Database.
* setnetgrent: (libc)Lookup Netgroup.
* setpayload: (libc)FP Bit Twiddling.
* setpayloadf: (libc)FP Bit Twiddling.
* setpayloadfN: (libc)FP Bit Twiddling.
* setpayloadfNx: (libc)FP Bit Twiddling.
* setpayloadl: (libc)FP Bit Twiddling.
* setpayloadsig: (libc)FP Bit Twiddling.
* setpayloadsigf: (libc)FP Bit Twiddling.
* setpayloadsigfN: (libc)FP Bit Twiddling.
* setpayloadsigfNx: (libc)FP Bit Twiddling.
* setpayloadsigl: (libc)FP Bit Twiddling.
* setpgid: (libc)Process Group Functions.
* setpgrp: (libc)Process Group Functions.
* setpriority: (libc)Traditional Scheduling Functions.
* setprotoent: (libc)Protocols Database.
* setpwent: (libc)Scanning All Users.
* setregid: (libc)Setting Groups.
* setreuid: (libc)Setting User ID.
* setrlimit64: (libc)Limits on Resources.
* setrlimit: (libc)Limits on Resources.
* setservent: (libc)Services Database.
* setsid: (libc)Process Group Functions.
* setsockopt: (libc)Socket Option Functions.
* setstate: (libc)BSD Random.
* setstate_r: (libc)BSD Random.
* settimeofday: (libc)Setting and Adjusting the Time.
* setuid: (libc)Setting User ID.
* setutent: (libc)Manipulating the Database.
* setutxent: (libc)XPG Functions.
* setvbuf: (libc)Controlling Buffering.
* shm_open: (libc)Memory-mapped I/O.
* shm_unlink: (libc)Memory-mapped I/O.
* shutdown: (libc)Closing a Socket.
* sigabbrev_np: (libc)Signal Messages.
* sigaction: (libc)Advanced Signal Handling.
* sigaddset: (libc)Signal Sets.
* sigaltstack: (libc)Signal Stack.
* sigblock: (libc)BSD Signal Handling.
* sigdelset: (libc)Signal Sets.
* sigdescr_np: (libc)Signal Messages.
* sigemptyset: (libc)Signal Sets.
* sigfillset: (libc)Signal Sets.
* siginterrupt: (libc)BSD Signal Handling.
* sigismember: (libc)Signal Sets.
* siglongjmp: (libc)Non-Local Exits and Signals.
* sigmask: (libc)BSD Signal Handling.
* signal: (libc)Basic Signal Handling.
* signbit: (libc)FP Bit Twiddling.
* significand: (libc)Normalization Functions.
* significandf: (libc)Normalization Functions.
* significandl: (libc)Normalization Functions.
* sigpause: (libc)BSD Signal Handling.
* sigpending: (libc)Checking for Pending Signals.
* sigprocmask: (libc)Process Signal Mask.
* sigsetjmp: (libc)Non-Local Exits and Signals.
* sigsetmask: (libc)BSD Signal Handling.
* sigstack: (libc)Signal Stack.
* sigsuspend: (libc)Sigsuspend.
* sin: (libc)Trig Functions.
* sincos: (libc)Trig Functions.
* sincosf: (libc)Trig Functions.
* sincosfN: (libc)Trig Functions.
* sincosfNx: (libc)Trig Functions.
* sincosl: (libc)Trig Functions.
* sinf: (libc)Trig Functions.
* sinfN: (libc)Trig Functions.
* sinfNx: (libc)Trig Functions.
* sinh: (libc)Hyperbolic Functions.
* sinhf: (libc)Hyperbolic Functions.
* sinhfN: (libc)Hyperbolic Functions.
* sinhfNx: (libc)Hyperbolic Functions.
* sinhl: (libc)Hyperbolic Functions.
* sinl: (libc)Trig Functions.
* sleep: (libc)Sleeping.
* snprintf: (libc)Formatted Output Functions.
* socket: (libc)Creating a Socket.
* socketpair: (libc)Socket Pairs.
* sprintf: (libc)Formatted Output Functions.
* sqrt: (libc)Exponents and Logarithms.
* sqrtf: (libc)Exponents and Logarithms.
* sqrtfN: (libc)Exponents and Logarithms.
* sqrtfNx: (libc)Exponents and Logarithms.
* sqrtl: (libc)Exponents and Logarithms.
* srand48: (libc)SVID Random.
* srand48_r: (libc)SVID Random.
* srand: (libc)ISO Random.
* srandom: (libc)BSD Random.
* srandom_r: (libc)BSD Random.
* sscanf: (libc)Formatted Input Functions.
* ssignal: (libc)Basic Signal Handling.
* stat64: (libc)Reading Attributes.
* stat: (libc)Reading Attributes.
* stime: (libc)Setting and Adjusting the Time.
* stpcpy: (libc)Copying Strings and Arrays.
* stpncpy: (libc)Truncating Strings.
* strcasecmp: (libc)String/Array Comparison.
* strcasestr: (libc)Search Functions.
* strcat: (libc)Concatenating Strings.
* strchr: (libc)Search Functions.
* strchrnul: (libc)Search Functions.
* strcmp: (libc)String/Array Comparison.
* strcoll: (libc)Collation Functions.
* strcpy: (libc)Copying Strings and Arrays.
* strcspn: (libc)Search Functions.
* strdup: (libc)Copying Strings and Arrays.
* strdupa: (libc)Copying Strings and Arrays.
* strerror: (libc)Error Messages.
* strerror_r: (libc)Error Messages.
* strerrordesc_np: (libc)Error Messages.
* strerrorname_np: (libc)Error Messages.
* strfmon: (libc)Formatting Numbers.
* strfromd: (libc)Printing of Floats.
* strfromf: (libc)Printing of Floats.
* strfromfN: (libc)Printing of Floats.
* strfromfNx: (libc)Printing of Floats.
* strfroml: (libc)Printing of Floats.
* strfry: (libc)Shuffling Bytes.
* strftime: (libc)Formatting Calendar Time.
* strlen: (libc)String Length.
* strncasecmp: (libc)String/Array Comparison.
* strncat: (libc)Truncating Strings.
* strncmp: (libc)String/Array Comparison.
* strncpy: (libc)Truncating Strings.
* strndup: (libc)Truncating Strings.
* strndupa: (libc)Truncating Strings.
* strnlen: (libc)String Length.
* strpbrk: (libc)Search Functions.
* strptime: (libc)Low-Level Time String Parsing.
* strrchr: (libc)Search Functions.
* strsep: (libc)Finding Tokens in a String.
* strsignal: (libc)Signal Messages.
* strspn: (libc)Search Functions.
* strstr: (libc)Search Functions.
* strtod: (libc)Parsing of Floats.
* strtof: (libc)Parsing of Floats.
* strtofN: (libc)Parsing of Floats.
* strtofNx: (libc)Parsing of Floats.
* strtoimax: (libc)Parsing of Integers.
* strtok: (libc)Finding Tokens in a String.
* strtok_r: (libc)Finding Tokens in a String.
* strtol: (libc)Parsing of Integers.
* strtold: (libc)Parsing of Floats.
* strtoll: (libc)Parsing of Integers.
* strtoq: (libc)Parsing of Integers.
* strtoul: (libc)Parsing of Integers.
* strtoull: (libc)Parsing of Integers.
* strtoumax: (libc)Parsing of Integers.
* strtouq: (libc)Parsing of Integers.
* strverscmp: (libc)String/Array Comparison.
* strxfrm: (libc)Collation Functions.
* stty: (libc)BSD Terminal Modes.
* swapcontext: (libc)System V contexts.
* swprintf: (libc)Formatted Output Functions.
* swscanf: (libc)Formatted Input Functions.
* symlink: (libc)Symbolic Links.
* sync: (libc)Synchronizing I/O.
* syscall: (libc)System Calls.
* sysconf: (libc)Sysconf Definition.
* syslog: (libc)syslog; vsyslog.
* system: (libc)Running a Command.
* sysv_signal: (libc)Basic Signal Handling.
* tan: (libc)Trig Functions.
* tanf: (libc)Trig Functions.
* tanfN: (libc)Trig Functions.
* tanfNx: (libc)Trig Functions.
* tanh: (libc)Hyperbolic Functions.
* tanhf: (libc)Hyperbolic Functions.
* tanhfN: (libc)Hyperbolic Functions.
* tanhfNx: (libc)Hyperbolic Functions.
* tanhl: (libc)Hyperbolic Functions.
* tanl: (libc)Trig Functions.
* tcdrain: (libc)Line Control.
* tcflow: (libc)Line Control.
* tcflush: (libc)Line Control.
* tcgetattr: (libc)Mode Functions.
* tcgetpgrp: (libc)Terminal Access Functions.
* tcgetsid: (libc)Terminal Access Functions.
* tcsendbreak: (libc)Line Control.
* tcsetattr: (libc)Mode Functions.
* tcsetpgrp: (libc)Terminal Access Functions.
* tdelete: (libc)Tree Search Function.
* tdestroy: (libc)Tree Search Function.
* telldir: (libc)Random Access Directory.
* tempnam: (libc)Temporary Files.
* textdomain: (libc)Locating gettext catalog.
* tfind: (libc)Tree Search Function.
* tgamma: (libc)Special Functions.
* tgammaf: (libc)Special Functions.
* tgammafN: (libc)Special Functions.
* tgammafNx: (libc)Special Functions.
* tgammal: (libc)Special Functions.
* tgkill: (libc)Signaling Another Process.
* thrd_create: (libc)ISO C Thread Management.
* thrd_current: (libc)ISO C Thread Management.
* thrd_detach: (libc)ISO C Thread Management.
* thrd_equal: (libc)ISO C Thread Management.
* thrd_exit: (libc)ISO C Thread Management.
* thrd_join: (libc)ISO C Thread Management.
* thrd_sleep: (libc)ISO C Thread Management.
* thrd_yield: (libc)ISO C Thread Management.
* time: (libc)Getting the Time.
* timegm: (libc)Broken-down Time.
* timelocal: (libc)Broken-down Time.
* times: (libc)Processor Time.
* tmpfile64: (libc)Temporary Files.
* tmpfile: (libc)Temporary Files.
* tmpnam: (libc)Temporary Files.
* tmpnam_r: (libc)Temporary Files.
* toascii: (libc)Case Conversion.
* tolower: (libc)Case Conversion.
* totalorder: (libc)FP Comparison Functions.
* totalorderf: (libc)FP Comparison Functions.
* totalorderfN: (libc)FP Comparison Functions.
* totalorderfNx: (libc)FP Comparison Functions.
* totalorderl: (libc)FP Comparison Functions.
* totalordermag: (libc)FP Comparison Functions.
* totalordermagf: (libc)FP Comparison Functions.
* totalordermagfN: (libc)FP Comparison Functions.
* totalordermagfNx: (libc)FP Comparison Functions.
* totalordermagl: (libc)FP Comparison Functions.
* toupper: (libc)Case Conversion.
* towctrans: (libc)Wide Character Case Conversion.
* towlower: (libc)Wide Character Case Conversion.
* towupper: (libc)Wide Character Case Conversion.
* trunc: (libc)Rounding Functions.
* truncate64: (libc)File Size.
* truncate: (libc)File Size.
* truncf: (libc)Rounding Functions.
* truncfN: (libc)Rounding Functions.
* truncfNx: (libc)Rounding Functions.
* truncl: (libc)Rounding Functions.
* tsearch: (libc)Tree Search Function.
* tss_create: (libc)ISO C Thread-local Storage.
* tss_delete: (libc)ISO C Thread-local Storage.
* tss_get: (libc)ISO C Thread-local Storage.
* tss_set: (libc)ISO C Thread-local Storage.
* ttyname: (libc)Is It a Terminal.
* ttyname_r: (libc)Is It a Terminal.
* twalk: (libc)Tree Search Function.
* twalk_r: (libc)Tree Search Function.
* tzset: (libc)Time Zone Functions.
* ufromfp: (libc)Rounding Functions.
* ufromfpf: (libc)Rounding Functions.
* ufromfpfN: (libc)Rounding Functions.
* ufromfpfNx: (libc)Rounding Functions.
* ufromfpl: (libc)Rounding Functions.
* ufromfpx: (libc)Rounding Functions.
* ufromfpxf: (libc)Rounding Functions.
* ufromfpxfN: (libc)Rounding Functions.
* ufromfpxfNx: (libc)Rounding Functions.
* ufromfpxl: (libc)Rounding Functions.
* ulimit: (libc)Limits on Resources.
* umask: (libc)Setting Permissions.
* umount2: (libc)Mount-Unmount-Remount.
* umount: (libc)Mount-Unmount-Remount.
* uname: (libc)Platform Type.
* ungetc: (libc)How Unread.
* ungetwc: (libc)How Unread.
* unlink: (libc)Deleting Files.
* unlockpt: (libc)Allocation.
* unsetenv: (libc)Environment Access.
* updwtmp: (libc)Manipulating the Database.
* utime: (libc)File Times.
* utimes: (libc)File Times.
* utmpname: (libc)Manipulating the Database.
* utmpxname: (libc)XPG Functions.
* va_arg: (libc)Argument Macros.
* va_copy: (libc)Argument Macros.
* va_end: (libc)Argument Macros.
* va_start: (libc)Argument Macros.
* valloc: (libc)Aligned Memory Blocks.
* vasprintf: (libc)Variable Arguments Output.
* verr: (libc)Error Messages.
* verrx: (libc)Error Messages.
* versionsort64: (libc)Scanning Directory Content.
* versionsort: (libc)Scanning Directory Content.
* vfork: (libc)Creating a Process.
* vfprintf: (libc)Variable Arguments Output.
* vfscanf: (libc)Variable Arguments Input.
* vfwprintf: (libc)Variable Arguments Output.
* vfwscanf: (libc)Variable Arguments Input.
* vlimit: (libc)Limits on Resources.
* vprintf: (libc)Variable Arguments Output.
* vscanf: (libc)Variable Arguments Input.
* vsnprintf: (libc)Variable Arguments Output.
* vsprintf: (libc)Variable Arguments Output.
* vsscanf: (libc)Variable Arguments Input.
* vswprintf: (libc)Variable Arguments Output.
* vswscanf: (libc)Variable Arguments Input.
* vsyslog: (libc)syslog; vsyslog.
* vwarn: (libc)Error Messages.
* vwarnx: (libc)Error Messages.
* vwprintf: (libc)Variable Arguments Output.
* vwscanf: (libc)Variable Arguments Input.
* wait3: (libc)BSD Wait Functions.
* wait4: (libc)Process Completion.
* wait: (libc)Process Completion.
* waitpid: (libc)Process Completion.
* warn: (libc)Error Messages.
* warnx: (libc)Error Messages.
* wcpcpy: (libc)Copying Strings and Arrays.
* wcpncpy: (libc)Truncating Strings.
* wcrtomb: (libc)Converting a Character.
* wcscasecmp: (libc)String/Array Comparison.
* wcscat: (libc)Concatenating Strings.
* wcschr: (libc)Search Functions.
* wcschrnul: (libc)Search Functions.
* wcscmp: (libc)String/Array Comparison.
* wcscoll: (libc)Collation Functions.
* wcscpy: (libc)Copying Strings and Arrays.
* wcscspn: (libc)Search Functions.
* wcsdup: (libc)Copying Strings and Arrays.
* wcsftime: (libc)Formatting Calendar Time.
* wcslen: (libc)String Length.
* wcsncasecmp: (libc)String/Array Comparison.
* wcsncat: (libc)Truncating Strings.
* wcsncmp: (libc)String/Array Comparison.
* wcsncpy: (libc)Truncating Strings.
* wcsnlen: (libc)String Length.
* wcsnrtombs: (libc)Converting Strings.
* wcspbrk: (libc)Search Functions.
* wcsrchr: (libc)Search Functions.
* wcsrtombs: (libc)Converting Strings.
* wcsspn: (libc)Search Functions.
* wcsstr: (libc)Search Functions.
* wcstod: (libc)Parsing of Floats.
* wcstof: (libc)Parsing of Floats.
* wcstofN: (libc)Parsing of Floats.
* wcstofNx: (libc)Parsing of Floats.
* wcstoimax: (libc)Parsing of Integers.
* wcstok: (libc)Finding Tokens in a String.
* wcstol: (libc)Parsing of Integers.
* wcstold: (libc)Parsing of Floats.
* wcstoll: (libc)Parsing of Integers.
* wcstombs: (libc)Non-reentrant String Conversion.
* wcstoq: (libc)Parsing of Integers.
* wcstoul: (libc)Parsing of Integers.
* wcstoull: (libc)Parsing of Integers.
* wcstoumax: (libc)Parsing of Integers.
* wcstouq: (libc)Parsing of Integers.
* wcswcs: (libc)Search Functions.
* wcsxfrm: (libc)Collation Functions.
* wctob: (libc)Converting a Character.
* wctomb: (libc)Non-reentrant Character Conversion.
* wctrans: (libc)Wide Character Case Conversion.
* wctype: (libc)Classification of Wide Characters.
* wmemchr: (libc)Search Functions.
* wmemcmp: (libc)String/Array Comparison.
* wmemcpy: (libc)Copying Strings and Arrays.
* wmemmove: (libc)Copying Strings and Arrays.
* wmempcpy: (libc)Copying Strings and Arrays.
* wmemset: (libc)Copying Strings and Arrays.
* wordexp: (libc)Calling Wordexp.
* wordfree: (libc)Calling Wordexp.
* wprintf: (libc)Formatted Output Functions.
* write: (libc)I/O Primitives.
* writev: (libc)Scatter-Gather.
* wscanf: (libc)Formatted Input Functions.
* y0: (libc)Special Functions.
* y0f: (libc)Special Functions.
* y0fN: (libc)Special Functions.
* y0fNx: (libc)Special Functions.
* y0l: (libc)Special Functions.
* y1: (libc)Special Functions.
* y1f: (libc)Special Functions.
* y1fN: (libc)Special Functions.
* y1fNx: (libc)Special Functions.
* y1l: (libc)Special Functions.
* yn: (libc)Special Functions.
* ynf: (libc)Special Functions.
* ynfN: (libc)Special Functions.
* ynfNx: (libc)Special Functions.
* ynl: (libc)Special Functions.
END-INFO-DIR-ENTRY

File: libc.info, Node: Installation, Next: Maintenance, Prev: Library Summary, Up: Top
Appendix C Installing the GNU C Library
***************************************
Before you do anything else, you should read the FAQ at
<https://sourceware.org/glibc/wiki/FAQ>. It answers common questions
and describes problems you may experience with compilation and
installation.
You will need recent versions of several GNU tools: definitely GCC
and GNU Make, and possibly others. *Note Tools for Compilation::,
below.
* Menu:
* Configuring and compiling:: How to compile and test GNU libc.
* Running make install:: How to install it once youve got it
compiled.
* Tools for Compilation:: Youll need these first.
* Linux:: Specific advice for GNU/Linux systems.
* Reporting Bugs:: So theyll get fixed.

File: libc.info, Node: Configuring and compiling, Next: Running make install, Up: Installation
C.1 Configuring and compiling the GNU C Library
===============================================
The GNU C Library cannot be compiled in the source directory. You must
build it in a separate build directory. For example, if you have
unpacked the GNU C Library sources in /src/gnu/glibc-VERSION, create a
directory /src/gnu/glibc-build to put the object files in. This
allows removing the whole build directory in case an error occurs, which
is the safest way to get a fresh start and should always be done.
From your object directory, run the shell script configure located
at the top level of the source tree. In the scenario above, youd type
$ ../glibc-VERSION/configure ARGS…
Please note that even though youre building in a separate build
directory, the compilation may need to create or modify files and
directories in the source directory.
configure takes many options, but the only one that is usually
mandatory is --prefix. This option tells configure where you want
the GNU C Library installed. This defaults to /usr/local, but the
normal setting to install as the standard system library is
--prefix=/usr for GNU/Linux systems and --prefix= (an empty prefix)
for GNU/Hurd systems.
It may also be useful to pass CC=COMPILER and CFLAGS=FLAGS
arguments to configure. CC selects the C compiler that will be
used, and CFLAGS sets optimization options for the compiler. Any
compiler options required for all compilations, such as options
selecting an ABI or a processor for which to generate code, should be
included in CC. Options that may be overridden by the GNU C Library
build system for particular files, such as for optimization and
debugging, should go in CFLAGS. The default value of CFLAGS is -g
-O2, and the GNU C Library cannot be compiled without optimization, so
if CFLAGS is specified it must enable optimization. For example:
$ ../glibc-VERSION/configure CC="gcc -m32" CFLAGS="-O3"
The following list describes all of the available options for
configure:
--prefix=DIRECTORY
Install machine-independent data files in subdirectories of
DIRECTORY. The default is to install in /usr/local.
--exec-prefix=DIRECTORY
Install the library and other machine-dependent files in
subdirectories of DIRECTORY. The default is to the --prefix
directory if that option is specified, or /usr/local otherwise.
--with-headers=DIRECTORY
Look for kernel header files in DIRECTORY, not /usr/include. The
GNU C Library needs information from the kernels header files
describing the interface to the kernel. The GNU C Library will
normally look in /usr/include for them, but if you specify this
option, it will look in DIRECTORY instead.
This option is primarily of use on a system where the headers in
/usr/include come from an older version of the GNU C Library.
Conflicts can occasionally happen in this case. You can also use
this option if you want to compile the GNU C Library with a newer
set of kernel headers than the ones found in /usr/include.
--enable-kernel=VERSION
This option is currently only useful on GNU/Linux systems. The
VERSION parameter should have the form X.Y.Z and describes the
smallest version of the Linux kernel the generated library is
expected to support. The higher the VERSION number is, the less
compatibility code is added, and the faster the code gets.
--with-binutils=DIRECTORY
Use the binutils (assembler and linker) in DIRECTORY, not the
ones the C compiler would default to. You can use this option if
the default binutils on your system cannot deal with all the
constructs in the GNU C Library. In that case, configure will
detect the problem and suppress these constructs, so that the
library will still be usable, but functionality may be lost—for
example, you cant build a shared libc with old binutils.
--with-default-link
With --with-default-link, the build system does not use a custom
linker script for linking shared objects. The default is
--without-default-link, because the custom linker script is
needed for full RELRO protection.
--with-nonshared-cflags=CFLAGS
Use additional compiler flags CFLAGS to build the parts of the
library which are always statically linked into applications and
libraries even with shared linking (that is, the object files
contained in lib*_nonshared.a libraries). The build process will
automatically use the appropriate flags, but this option can be
used to set additional flags required for building applications and
libraries, to match local policy. For example, if such a policy
requires that all code linked into applications must be built with
source fortification,
--with-nonshared-cflags=-Wp,-D_FORTIFY_SOURCE=2 will make sure
that the objects in libc_nonshared.a are compiled with this flag
(although this will not affect the generated code in this
particular case and potentially change debugging information and
metadata only).
--with-rtld-early-cflags=CFLAGS
Use additional compiler flags CFLAGS to build the early startup
code of the dynamic linker. These flags can be used to enable
early dynamic linker diagnostics to run on CPUs which are not
compatible with the rest of the GNU C Library, for example, due to
compiler flags which target a later instruction set architecture
(ISA).
--with-timeoutfactor=NUM
Specify an integer NUM to scale the timeout of test programs. This
factor can be changed at run time using TIMEOUTFACTOR environment
variable.
--disable-shared
Dont build shared libraries even if it is possible. Not all
systems support shared libraries; you need ELF support and
(currently) the GNU linker.
--disable-default-pie
Dont build glibc programs and the testsuite as position
independent executables (PIE). By default, glibc programs and tests
are created as position independent executables on targets that
support it. If the toolchain and architecture support it, static
executables are built as static PIE and the resulting glibc can be
used with the GCC option, -static-pie, which is available with GCC
8 or above, to create static PIE.
--enable-cet
--enable-cet=permissive
Enable Intel Control-flow Enforcement Technology (CET) support.
When the GNU C Library is built with --enable-cet or
--enable-cet=permissive, the resulting library is protected with
indirect branch tracking (IBT) and shadow stack (SHSTK). When CET
is enabled, the GNU C Library is compatible with all existing
executables and shared libraries. This feature is currently
supported on i386, x86_64 and x32 with GCC 8 and binutils 2.29 or
later. Note that when CET is enabled, the GNU C Library requires
CPUs capable of multi-byte NOPs, like x86-64 processors as well as
Intel Pentium Pro or newer. With --enable-cet, it is an error to
dlopen a non CET enabled shared library in CET enabled application.
With --enable-cet=permissive, CET is disabled when dlopening a
non CET enabled shared library in CET enabled application.
NOTE: --enable-cet has been tested for i686, x86_64 and x32 on
non-CET processors. --enable-cet has been tested for i686,
x86_64 and x32 on CET processors.
--enable-memory-tagging
Enable memory tagging support if the architecture supports it.
When the GNU C Library is built with this option then the resulting
library will be able to control the use of tagged memory when
hardware support is present by use of the tunable
glibc.mem.tagging. This includes the generation of tagged memory
when using the malloc APIs.
At present only AArch64 platforms with MTE provide this
functionality, although the library will still operate (without
memory tagging) on older versions of the architecture.
The default is to disable support for memory tagging.
--disable-profile
Dont build libraries with profiling information. You may want to
use this option if you dont plan to do profiling.
--enable-static-nss
Compile static versions of the NSS (Name Service Switch) libraries.
This is not recommended because it defeats the purpose of NSS; a
program linked statically with the NSS libraries cannot be
dynamically reconfigured to use a different name database.
--enable-hardcoded-path-in-tests
By default, dynamic tests are linked to run with the installed C
library. This option hardcodes the newly built C library path in
dynamic tests so that they can be invoked directly.
--disable-timezone-tools
By default, timezone related utilities (zic, zdump, and
tzselect) are installed with the GNU C Library. If you are
building these independently (e.g. by using the tzcode package),
then this option will allow disabling the install of these.
Note that you need to make sure the external tools are kept in sync
with the versions that the GNU C Library expects as the data
formats may change over time. Consult the timezone subdirectory
for more details.
--enable-stack-protector
--enable-stack-protector=strong
--enable-stack-protector=all
Compile the C library and all other parts of the glibc package
(including the threading and math libraries, NSS modules, and
transliteration modules) using the GCC -fstack-protector,
-fstack-protector-strong or -fstack-protector-all options to
detect stack overruns. Only the dynamic linker and a small number
of routines called directly from assembler are excluded from this
protection.
--enable-bind-now
Disable lazy binding for installed shared objects and programs.
This provides additional security hardening because it enables full
RELRO and a read-only global offset table (GOT), at the cost of
slightly increased program load times.
--enable-pt_chown
The file pt_chown is a helper binary for grantpt (*note
Pseudo-Terminals: Allocation.) that is installed setuid root to fix
up pseudo-terminal ownership on GNU/Hurd. It is not required on
GNU/Linux, and the GNU C Library will not use the installed
pt_chown program when configured with --enable-pt_chown.
--disable-werror
By default, the GNU C Library is built with -Werror. If you wish
to build without this option (for example, if building with a newer
version of GCC than this version of the GNU C Library was tested
with, so new warnings cause the build with -Werror to fail), you
can configure with --disable-werror.
--disable-mathvec
By default for x86_64, the GNU C Library is built with the vector
math library. Use this option to disable the vector math library.
--enable-tunables
Tunables support allows additional library parameters to be
customized at runtime. This feature is enabled by default. This
option can take the following values:
yes
This is the default if no option is passed to configure. This
enables tunables and selects the default frontend (currently
valstring).
no
This option disables tunables.
valstring
This enables tunables and selects the valstring frontend for
tunables. This frontend allows users to specify tunables as a
colon-separated list in a single environment variable
GLIBC_TUNABLES.
--disable-crypt
Do not install the passphrase-hashing library libcrypt or the
header file crypt.h. unistd.h will still declare the function
crypt. Using this option does not change the set of programs
that may need to be linked with -lcrypt; it only means that the
GNU C Library will not provide that library.
This option is for hackers and distributions experimenting with
independently-maintained implementations of libcrypt. It may
become the default in a future release.
--disable-experimental-malloc
By default, a per-thread cache is enabled in malloc. While this
cache can be disabled on a per-application basis using tunables
(set glibc.malloc.tcache_count to zero), this option can be used to
remove it from the build completely.
--disable-scv
Disable using scv instruction for syscalls. All syscalls will
use sc instead, even if the kernel supports scv. PowerPC only.
--build=BUILD-SYSTEM
--host=HOST-SYSTEM
These options are for cross-compiling. If you specify both options
and BUILD-SYSTEM is different from HOST-SYSTEM, configure will
prepare to cross-compile the GNU C Library from BUILD-SYSTEM to be
used on HOST-SYSTEM. Youll probably need the --with-headers
option too, and you may have to override CONFIGUREs selection of
the compiler and/or binutils.
If you only specify --host, configure will prepare for a native
compile but use what you specify instead of guessing what your
system is. This is most useful to change the CPU submodel. For
example, if configure guesses your machine as i686-pc-linux-gnu
but you want to compile a library for 586es, give
--host=i586-pc-linux-gnu or just --host=i586-linux and add the
appropriate compiler flags (-mcpu=i586 will do the trick) to
CC.
If you specify just --build, configure will get confused.
--with-pkgversion=VERSION
Specify a description, possibly including a build number or build
date, of the binaries being built, to be included in --version
output from programs installed with the GNU C Library. For
example, --with-pkgversion='FooBar GNU/Linux glibc build 123'.
The default value is GNU libc.
--with-bugurl=URL
Specify the URL that users should visit if they wish to report a
bug, to be included in --help output from programs installed with
the GNU C Library. The default value refers to the main
bug-reporting information for the GNU C Library.
To build the library and related programs, type make. This will
produce a lot of output, some of which may look like errors from make
but arent. Look for error messages from make containing ***.
Those indicate that something is seriously wrong.
The compilation process can take a long time, depending on the
configuration and the speed of your machine. Some complex modules may
take a very long time to compile, as much as several minutes on slower
machines. Do not panic if the compiler appears to hang.
If you want to run a parallel make, simply pass the -j option with
an appropriate numeric parameter to make. You need a recent GNU
make version, though.
To build and run test programs which exercise some of the library
facilities, type make check. If it does not complete successfully, do
not use the built library, and report a bug after verifying that the
problem is not already known. *Note Reporting Bugs::, for instructions
on reporting bugs. Note that some of the tests assume they are not
being run by root. We recommend you compile and test the GNU C
Library as an unprivileged user.
Before reporting bugs make sure there is no problem with your system.
The tests (and later installation) use some pre-existing files of the
system such as /etc/passwd, /etc/nsswitch.conf and others. These
files must all contain correct and sensible content.
Normally, make check will run all the tests before reporting all
problems found and exiting with error status if any problems occurred.
You can specify stop-on-test-failure=y when running make check to
make the test run stop and exit with an error status immediately when a
failure occurs.
To format the GNU C Library Reference Manual for printing, type
make dvi. You need a working TeX installation to do this. The
distribution builds the on-line formatted version of the manual, as Info
files, as part of the build process. You can build them manually with
make info.
The library has a number of special-purpose configuration parameters
which you can find in Makeconfig. These can be overwritten with the
file configparms. To change them, create a configparms in your
build directory and add values as appropriate for your system. The file
is included and parsed by make and has to follow the conventions for
makefiles.
It is easy to configure the GNU C Library for cross-compilation by
setting a few variables in configparms. Set CC to the
cross-compiler for the target you configured the library for; it is
important to use this same CC value when running configure, like
this: configure TARGET CC=TARGET-gcc. Set BUILD_CC to the compiler
to use for programs run on the build system as part of compiling the
library. You may need to set AR to cross-compiling versions of ar
if the native tools are not configured to work with object files for the
target you configured for. When cross-compiling the GNU C Library, it
may be tested using make check
test-wrapper="SRCDIR/scripts/cross-test-ssh.sh HOSTNAME", where SRCDIR
is the absolute directory name for the main source directory and
HOSTNAME is the host name of a system that can run the newly built
binaries of the GNU C Library. The source and build directories must be
visible at the same locations on both the build system and HOSTNAME.
The cross-test-ssh.sh script requires flock from util-linux to
work when GLIBC_TEST_ALLOW_TIME_SETTING environment variable is set.
It is also possible to execute tests, which require setting the date
on the target machine. Following use cases are supported:
GLIBC_TEST_ALLOW_TIME_SETTING is set in the environment in which
eligible tests are executed and have the privilege to run
clock_settime. In this case, nothing prevents those tests from
running in parallel, so the caller shall assure that those tests
are serialized or provide a proper wrapper script for them.
• The cross-test-ssh.sh script is used and one passes the
--allow-time-setting flag. In this case, both sets
GLIBC_TEST_ALLOW_TIME_SETTING and serialization of test execution
are assured automatically.
In general, when testing the GNU C Library, test-wrapper may be set
to the name and arguments of any program to run newly built binaries.
This program must preserve the arguments to the binary being run, its
working directory and the standard input, output and error file
descriptors. If TEST-WRAPPER env will not work to run a program with
environment variables set, then test-wrapper-env must be set to a
program that runs a newly built program with environment variable
assignments in effect, those assignments being specified as VAR=VALUE
before the name of the program to be run. If multiple assignments to
the same variable are specified, the last assignment specified must take
precedence. Similarly, if TEST-WRAPPER env -i will not work to run a
program with an environment completely empty of variables except those
directly assigned, then test-wrapper-env-only must be set; its use has
the same syntax as test-wrapper-env, the only difference in its
semantics being starting with an empty set of environment variables
rather than the ambient set.
For AArch64 with SVE, when testing the GNU C Library, test-wrapper
may be set to "SRCDIR/sysdeps/unix/sysv/linux/aarch64/vltest.py
VECTOR-LENGTH" to change Vector Length.

File: libc.info, Node: Running make install, Next: Tools for Compilation, Prev: Configuring and compiling, Up: Installation
C.2 Installing the C Library
============================
To install the library and its header files, and the Info files of the
manual, type make install. This will build things, if necessary,
before installing them; however, you should still compile everything
first. If you are installing the GNU C Library as your primary C
library, we recommend that you shut the system down to single-user mode
first, and reboot afterward. This minimizes the risk of breaking things
when the library changes out from underneath.
make install will do the entire job of upgrading from a previous
installation of the GNU C Library version 2.x. There may sometimes be
headers left behind from the previous installation, but those are
generally harmless. If you want to avoid leaving headers behind you can
do things in the following order.
You must first build the library (make), optionally check it (make
check), switch the include directories and then install (make
install). The steps must be done in this order. Not moving the
directory before install will result in an unusable mixture of header
files from both libraries, but configuring, building, and checking the
library requires the ability to compile and run programs against the old
library. The new /usr/include, after switching the include
directories and before installing the library should contain the Linux
headers, but nothing else. If you do this, you will need to restore any
headers from libraries other than the GNU C Library yourself after
installing the library.
You can install the GNU C Library somewhere other than where you
configured it to go by setting the DESTDIR GNU standard make variable
on the command line for make install. The value of this variable is
prepended to all the paths for installation. This is useful when
setting up a chroot environment or preparing a binary distribution. The
directory should be specified with an absolute file name. Installing
with the prefix and exec_prefix GNU standard make variables set is
not supported.
The GNU C Library includes a daemon called nscd, which you may or
may not want to run. nscd caches name service lookups; it can
dramatically improve performance with NIS+, and may help with DNS as
well.
One auxiliary program, /usr/libexec/pt_chown, is installed setuid
root if the --enable-pt_chown configuration option is used. This
program is invoked by the grantpt function; it sets the permissions on
a pseudoterminal so it can be used by the calling process. If you are
using a Linux kernel with the devpts filesystem enabled and mounted at
/dev/pts, you dont need this program.
After installation you should configure the timezone and install
locales for your system. The time zone configuration ensures that your
system time matches the time for your current timezone. The locales
ensure that the display of information on your system matches the
expectations of your language and geographic region.
The GNU C Library is able to use two kinds of localization
information sources, the first is a locale database named
locale-archive which is generally installed as
/usr/lib/locale/locale-archive. The locale archive has the benefit of
taking up less space and being very fast to load, but only if you plan
to install sixty or more locales. If you plan to install one or two
locales you can instead install individual locales into their self-named
directories e.g. /usr/lib/locale/en_US.utf8. For example to install
the German locale using the character set for UTF-8 with name de_DE
into the locale archive issue the command localedef -i de_DE -f UTF-8
de_DE, and to install just the one locale issue the command localedef
--no-archive -i de_DE -f UTF-8 de_DE. To configure all locales that
are supported by the GNU C Library, you can issue from your build
directory the command make localedata/install-locales to install all
locales into the locale archive or make
localedata/install-locale-files to install all locales as files in the
default configured locale installation directory (derived from
--prefix or --localedir). To install into an alternative system
root use DESTDIR e.g. make localedata/install-locale-files
DESTDIR=/opt/glibc, but note that this does not change the configured
prefix.
To configure the locally used timezone, set the TZ environment
variable. The script tzselect helps you to select the right value.
As an example, for Germany, tzselect would tell you to use
TZ='Europe/Berlin'. For a system wide installation (the given paths
are for an installation with --prefix=/usr), link the timezone file
which is in /usr/share/zoneinfo to the file /etc/localtime. For
Germany, you might execute ln -s /usr/share/zoneinfo/Europe/Berlin
/etc/localtime.

File: libc.info, Node: Tools for Compilation, Next: Linux, Prev: Running make install, Up: Installation
C.3 Recommended Tools for Compilation
=====================================
We recommend installing the following GNU tools before attempting to
build the GNU C Library:
• GNU make 4.0 or newer
As of relase time, GNU make 4.3 is the newest verified to work to
build the GNU C Library.
• GCC 6.2 or newer
GCC 6.2 or higher is required. In general it is recommended to use
the newest version of the compiler that is known to work for
building the GNU C Library, as newer compilers usually produce
better code. As of release time, GCC 12.1 is the newest compiler
verified to work to build the GNU C Library.
For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
support for -mno-gnu-attribute, -mabi=ieeelongdouble, and
-mabi=ibmlondouble is required. Likewise, the compiler must also
support passing -mlong-double-128 with the preceding options. As
of release, this implies GCC 7.4 and newer (excepting GCC 7.5.0,
see GCC PR94200). These additional features are required for
building the GNU C Library with support for IEEE long double.
For ARC architecture builds, GCC 8.3 or higher is needed.
For s390x architecture builds, GCC 7.1 or higher is needed (See gcc
Bug 98269).
For multi-arch support it is recommended to use a GCC which has
been built with support for GNU indirect functions. This ensures
that correct debugging information is generated for functions
selected by IFUNC resolvers. This support can either be enabled by
configuring GCC with --enable-gnu-indirect-function, or by
enabling it by default by setting default_gnu_indirect_function
variable for a particular architecture in the GCC source file
gcc/config.gcc.
You can use whatever compiler you like to compile programs that use
the GNU C Library.
Check the FAQ for any special compiler issues on particular
platforms.
• GNU binutils 2.25 or later
You must use GNU binutils (as and ld) to build the GNU C Library.
No other assembler or linker has the necessary functionality at the
moment. As of release time, GNU binutils 2.38 is the newest
verified to work to build the GNU C Library.
For PowerPC 64-bits little-endian (powerpc64le), objcopy is
required to support --update-section. This option requires
binutils 2.26 or newer.
ARC architecture needs binutils 2.32 or higher for TLS related
fixes.
• GNU texinfo 4.7 or later
To correctly translate and install the Texinfo documentation you
need this version of the texinfo package. Earlier versions do
not understand all the tags used in the document, and the
installation mechanism for the info files is not present or works
differently. As of release time, texinfo 6.8 is the newest
verified to work to build the GNU C Library.
• GNU awk 3.1.2, or higher
awk is used in several places to generate files. Some gawk
extensions are used, including the asorti function, which was
introduced in version 3.1.2 of gawk. As of release time, gawk
version 5.1.1 is the newest verified to work to build the GNU C
Library.
• GNU bison 2.7 or later
bison is used to generate the yacc parser code in the intl
subdirectory. As of release time, bison version 3.8.2 is the
newest verified to work to build the GNU C Library.
• Perl 5
Perl is not required, but if present it is used in some tests and
the mtrace program, to build the GNU C Library manual. As of
release time perl version 5.34.1 is the newest verified to work
to build the GNU C Library.
• GNU sed 3.02 or newer
Sed is used in several places to generate files. Most scripts
work with any version of sed. As of release time, sed version
4.8 is the newest verified to work to build the GNU C Library.
• Python 3.4 or later
Python is required to build the GNU C Library. As of release time,
Python 3.10.5 is the newest verified to work for building and
testing the GNU C Library.
• PExpect 4.0
The pretty printer tests drive GDB through test programs and
compare its output to the printers. PExpect is used to capture
the output of GDB, and should be compatible with the Python version
in your system. As of release time PExpect 4.8.0 is the newest
verified to work to test the pretty printers.
• GDB 7.8 or later with support for Python 2.7/3.4 or later
GDB itself needs to be configured with Python support in order to
use the pretty printers. Notice that your system having Python
available doesnt imply that GDB supports it, nor that your
systems Python and GDBs have the same version. As of release
time GNU debugger 12.1 is the newest verified to work to test the
pretty printers.
Unless Python, PExpect and GDB with Python support are present, the
printer tests will report themselves as UNSUPPORTED. Notice that
some of the printer tests require the GNU C Library to be compiled
with debugging symbols.
If you change any of the configure.ac files you will also need
• GNU autoconf 2.69 (exactly)
and if you change any of the message translation files you will need
• GNU gettext 0.10.36 or later
As of release time, GNU gettext version 0.21 is the newest
version verified to work to build the GNU C Library.
You may also need these packages if you upgrade your source tree using
patches, although we try to avoid this.

File: libc.info, Node: Linux, Next: Reporting Bugs, Prev: Tools for Compilation, Up: Installation
C.4 Specific advice for GNU/Linux systems
=========================================
If you are installing the GNU C Library on GNU/Linux systems, you need
to have the header files from a 3.2 or newer kernel around for
reference. (For the ia64 architecture, you need version 3.2.18 or newer
because this is the first version with support for the accept4 system
call.) These headers must be installed using make headers_install;
the headers present in the kernel source directory are not suitable for
direct use by the GNU C Library. You do not need to use that kernel,
just have its headers installed where the GNU C Library can access them,
referred to here as INSTALL-DIRECTORY. The easiest way to do this is to
unpack it in a directory such as /usr/src/linux-VERSION. In that
directory, run make headers_install
INSTALL_HDR_PATH=INSTALL-DIRECTORY. Finally, configure the GNU C
Library with the option --with-headers=INSTALL-DIRECTORY/include. Use
the most recent kernel you can get your hands on. (If you are
cross-compiling the GNU C Library, you need to specify
ARCH=ARCHITECTURE in the make headers_install command, where
ARCHITECTURE is the architecture name used by the Linux kernel, such as
x86 or powerpc.)
After installing the GNU C Library, you may need to remove or rename
directories such as /usr/include/linux and /usr/include/asm, and
replace them with copies of directories such as linux and asm from
INSTALL-DIRECTORY/include. All directories present in
INSTALL-DIRECTORY/include should be copied, except that the GNU C
Library provides its own version of /usr/include/scsi; the files
provided by the kernel should be copied without replacing those provided
by the GNU C Library. The linux, asm and asm-generic directories
are required to compile programs using the GNU C Library; the other
directories describe interfaces to the kernel but are not required if
not compiling programs using those interfaces. You do not need to copy
kernel headers if you did not specify an alternate kernel header source
using --with-headers.
The Filesystem Hierarchy Standard for GNU/Linux systems expects some
components of the GNU C Library installation to be in /lib and some in
/usr/lib. This is handled automatically if you configure the GNU C
Library with --prefix=/usr. If you set some other prefix or allow it
to default to /usr/local, then all the components are installed there.
As of release time, Linux version 5.18 is the newest stable version
verified to work to build the GNU C Library.

File: libc.info, Node: Reporting Bugs, Prev: Linux, Up: Installation
C.5 Reporting Bugs
==================
There are probably bugs in the GNU C Library. There are certainly
errors and omissions in this manual. If you report them, they will get
fixed. If you dont, no one will ever know about them and they will
remain unfixed for all eternity, if not longer.
It is a good idea to verify that the problem has not already been
reported. Bugs are documented in two places: The file BUGS describes
a number of well known bugs and the central GNU C Library bug tracking
system has a WWW interface at <https://sourceware.org/bugzilla/>. The
WWW interface gives you access to open and closed reports. A closed
report normally includes a patch or a hint on solving the problem.
To report a bug, first you must find it. With any luck, this will be
the hard part. Once youve found a bug, make sure its really a bug. A
good way to do this is to see if the GNU C Library behaves the same way
some other C library does. If so, probably you are wrong and the
libraries are right (but not necessarily). If not, one of the libraries
is probably wrong. It might not be the GNU C Library. Many historical
Unix C libraries permit things that we dont, such as closing a file
twice.
If you think you have found some way in which the GNU C Library does
not conform to the ISO and POSIX standards (*note Standards and
Portability::), that is definitely a bug. Report it!
Once youre sure youve found a bug, try to narrow it down to the
smallest test case that reproduces the problem. In the case of a C
library, you really only need to narrow it down to one library function
call, if possible. This should not be too difficult.
The final step when you have a simple test case is to report the bug.
Do this at <https://bugs.linaro.org/>.
If you are not sure how a function should behave, and this manual
doesnt tell you, thats a bug in the manual. Report that too! If the
functions behavior disagrees with the manual, then either the library
or the manual has a bug, so report the disagreement. If you find any
errors or omissions in this manual, please report them to the bug
database. If you refer to specific sections of the manual, please
include the section names for easier identification.

File: libc.info, Node: Maintenance, Next: Platform, Prev: Installation, Up: Top
Appendix D Library Maintenance
******************************
* Menu:
* Source Layout:: How to add new functions or header files
to the GNU C Library.
* Symbol handling:: How to handle symbols in the GNU C Library.
* Porting:: How to port the GNU C Library to
a new machine or operating system.

File: libc.info, Node: Source Layout, Next: Symbol handling, Up: Maintenance
D.1 Adding New Functions
========================
The process of building the library is driven by the makefiles, which
make heavy use of special features of GNU make. The makefiles are
very complex, and you probably dont want to try to understand them.
But what they do is fairly straightforward, and only requires that you
define a few variables in the right places.
The library sources are divided into subdirectories, grouped by
topic.
The string subdirectory has all the string-manipulation functions,
math has all the mathematical functions, etc.
Each subdirectory contains a simple makefile, called Makefile,
which defines a few make variables and then includes the global
makefile Rules with a line like:
include ../Rules
The basic variables that a subdirectory makefile defines are:
subdir
The name of the subdirectory, for example stdio. This variable
*must* be defined.
headers
The names of the header files in this section of the library, such
as stdio.h.
routines
aux
The names of the modules (source files) in this section of the
library. These should be simple names, such as strlen (rather
than complete file names, such as strlen.c). Use routines for
modules that define functions in the library, and aux for
auxiliary modules containing things like data definitions. But the
values of routines and aux are just concatenated, so there
really is no practical difference.
tests
The names of test programs for this section of the library. These
should be simple names, such as tester (rather than complete file
names, such as tester.c). make tests will build and run all
the test programs. If a test program needs input, put the test
data in a file called TEST-PROGRAM.input; it will be given to the
test program on its standard input. If a test program wants to be
run with arguments, put the arguments (all on a single line) in a
file called TEST-PROGRAM.args. Test programs should exit with
zero status when the test passes, and nonzero status when the test
indicates a bug in the library or error in building.
others
The names of “other” programs associated with this section of the
library. These are programs which are not tests per se, but are
other small programs included with the library. They are built by
make others.
install-lib
install-data
install
Files to be installed by make install. Files listed in
install-lib are installed in the directory specified by libdir
in configparms or Makeconfig (*note Installation::). Files
listed in install-data are installed in the directory specified
by datadir in configparms or Makeconfig. Files listed in
install are installed in the directory specified by bindir in
configparms or Makeconfig.
distribute
Other files from this subdirectory which should be put into a
distribution tar file. You need not list here the makefile itself
or the source and header files listed in the other standard
variables. Only define distribute if there are files used in an
unusual way that should go into the distribution.
generated
Files which are generated by Makefile in this subdirectory.
These files will be removed by make clean, and they will never go
into a distribution.
extra-objs
Extra object files which are built by Makefile in this
subdirectory. This should be a list of file names like foo.o;
the files will actually be found in whatever directory object files
are being built in. These files will be removed by make clean.
This variable is used for secondary object files needed to build
others or tests.
* Menu:
* Platform: Adding Platform-specific. Adding platform-specific
features.

File: libc.info, Node: Adding Platform-specific, Up: Source Layout
D.1.1 Platform-specific types, macros and functions
---------------------------------------------------
Its sometimes necessary to provide nonstandard, platform-specific
features to developers. The C library is traditionally the lowest
library layer, so it makes sense for it to provide these low-level
features. However, including these features in the C library may be a
disadvantage if another package provides them as well as there will be
two conflicting versions of them. Also, the features wont be available
to projects that do not use the GNU C Library but use other GNU tools,
like GCC.
The current guidelines are:
• If the header file provides features that only make sense on a
particular machine architecture and have nothing to do with an
operating system, then the features should ultimately be provided
as GCC built-in functions. Until then, the GNU C Library may
provide them in the header file. When the GCC built-in functions
become available, those provided in the header file should be made
conditionally available prior to the GCC version in which the
built-in function was made available.
• If the header file provides features that are specific to an
operating system, both GCC and the GNU C Library could provide it,
but the GNU C Library is preferred as it already has a lot of
information about the operating system.
• If the header file provides features that are specific to an
operating system but used by the GNU C Library, then the GNU C
Library should provide them.
The general solution for providing low-level features is to export
them as follows:
• A nonstandard, low-level header file that defines macros and inline
functions should be called sys/platform/NAME.h.
• Each header files name should include the platform name, to avoid
users thinking there is anything in common between the different
header files for different platforms. For example, a
sys/platform/ARCH.h name such as sys/platform/ppc.h is better
than sys/platform.h.
• A platform-specific header file provided by the GNU C Library
should coordinate with GCC such that compiler built-in versions of
the functions and macros are preferred if available. This means
that user programs will only ever need to include
sys/platform/ARCH.h, keeping the same names of types, macros, and
functions for convenience and portability.
• Each included symbol must have the prefix __ARCH_, such as
__ppc_get_timebase.
The easiest way to provide a header file is to add it to the
sysdep_headers variable. For example, the combination of
Linux-specific header files on PowerPC could be provided like this:
sysdep_headers += sys/platform/ppc.h
Then ensure that you have added a sys/platform/ppc.h header file in
the machine-specific directory, e.g.,
sysdeps/powerpc/sys/platform/ppc.h.

File: libc.info, Node: Symbol handling, Next: Porting, Prev: Source Layout, Up: Maintenance
D.2 Symbol handling in the GNU C Library
========================================
* Menu:
* 64-bit time symbol handling :: How to handle 64-bit time related
symbols in the GNU C Library.

File: libc.info, Node: 64-bit time symbol handling, Up: Symbol handling
D.2.1 64-bit time symbol handling in the GNU C Library
------------------------------------------------------
With respect to time handling, GNU C Library configurations fall in two
classes depending on the value of __TIMESIZE:
__TIMESIZE == 32
These "dual-time" configurations have both 32-bit and 64-bit time
support. 32-bit time support provides type time_t and cannot
handle dates beyond "Y2038". 64-bit time support provides type
__time64_t and can handle dates beyond "Y2038".
In these configurations, time-related types have two declarations,
a 64-bit one, and a 32-bit one; and time-related functions
generally have two definitions: a 64-bit one, and a 32-bit one
which is a wrapper around the former. Therefore, for every
time_t-related symbol, there is a corresponding
__time64_t-related symbol, the name of which is usually the
32-bit symbols name with __ (a double underscore) prepended and
64 appended. For instance, the 64-bit-time counterpart of
clock_gettime is __clock_gettime64.
__TIMESIZE == 64
These "single-time" configurations only have a 64-bit time_t and
related functions, which can handle dates beyond 2038-01-19
03:14:07 (aka "Y2038").
In these configurations, time-related types only have a 64-bit
declaration; and time-related functions only have one 64-bit
definition. However, for every time_t-related symbol, there is a
corresponding __time64_t-related macro, the name of which is
derived as in the dual-time configuration case, and which expands
to the symbols name. For instance, the macro __clock_gettime64
expands to clock_gettime.
These macros are purely internal to the GNU C Library and exist
only so that a single definition of the 64-bit time functions can
be used on both single-time and dual-time configurations, and so
that glibc code can freely call the 64-bit functions internally in
all configurations.
Note: at this point, 64-bit time support in dual-time configurations
is work-in-progress, so for these configurations, the public API only
makes the 32-bit time support available. In a later change, the public
API will allow user code to choose the time size for a given compilation
unit.
64-bit variants of time-related types or functions are defined for
all configurations and use 64-bit-time symbol names (for dual-time
configurations) or macros (for single-time configurations).
32-bit variants of time-related types or functions are defined only
for dual-time configurations.
Here is an example with localtime:
Function localtime is declared in time/time.h as
extern struct tm *localtime (const time_t *__timer) __THROW;
libc_hidden_proto (localtime)
For single-time configurations, __localtime64 is a macro which
evaluates to localtime; for dual-time configurations, __localtime64
is a function similar to localtime except it uses Y2038-proof types:
#if __TIMESIZE == 64
# define __localtime64 localtime
#else
extern struct tm *__localtime64 (const __time64_t *__timer) __THROW;
libc_hidden_proto (__localtime64)
#endif
(note: type time_t is replaced with __time64_t because time_t
is not Y2038-proof, but struct tm is not replaced because it is
already Y2038-proof.)
The 64-bit-time implementation of localtime is written as follows
and is compiled for both dual-time and single-time configuration
classes.
struct tm *
__localtime64 (const __time64_t *t)
{
return __tz_convert (*t, 1, &_tmbuf);
}
libc_hidden_def (__localtime64)
The 32-bit-time implementation is a wrapper and is only compiled for
dual-time configurations:
#if __TIMESIZE != 64
struct tm *
localtime (const time_t *t)
{
__time64_t t64 = *t;
return __localtime64 (&t64);
}
libc_hidden_def (localtime)
#endif

File: libc.info, Node: Porting, Prev: Symbol handling, Up: Maintenance
D.3 Porting the GNU C Library
=============================
The GNU C Library is written to be easily portable to a variety of
machines and operating systems. Machine- and operating system-dependent
functions are well separated to make it easy to add implementations for
new machines or operating systems. This section describes the layout of
the library source tree and explains the mechanisms used to select
machine-dependent code to use.
All the machine-dependent and operating system-dependent files in the
library are in the subdirectory sysdeps under the top-level library
source directory. This directory contains a hierarchy of subdirectories
(*note Hierarchy Conventions::).
Each subdirectory of sysdeps contains source files for a particular
machine or operating system, or for a class of machine or operating
system (for example, systems by a particular vendor, or all machines
that use IEEE 754 floating-point format). A configuration specifies an
ordered list of these subdirectories. Each subdirectory implicitly
appends its parent directory to the list. For example, specifying the
list unix/bsd/vax is equivalent to specifying the list unix/bsd/vax
unix/bsd unix. A subdirectory can also specify that it implies other
subdirectories which are not directly above it in the directory
hierarchy. If the file Implies exists in a subdirectory, it lists
other subdirectories of sysdeps which are appended to the list,
appearing after the subdirectory containing the Implies file. Lines
in an Implies file that begin with a # character are ignored as
comments. For example, unix/bsd/Implies contains:
# BSD has Internet-related things.
unix/inet
and unix/Implies contains:
posix
So the final list is unix/bsd/vax unix/bsd unix/inet unix posix.
sysdeps has a “special” subdirectory called generic. It is
always implicitly appended to the list of subdirectories, so you neednt
put it in an Implies file, and you should not create any
subdirectories under it intended to be new specific categories.
generic serves two purposes. First, the makefiles do not bother to
look for a system-dependent version of a file thats not in generic.
This means that any system-dependent source file must have an analogue
in generic, even if the routines defined by that file are not
implemented on other platforms. Second, the generic version of a
system-dependent file is used if the makefiles do not find a version
specific to the system youre compiling for.
If it is possible to implement the routines in a generic file in
machine-independent C, using only other machine-independent functions in
the C library, then you should do so. Otherwise, make them stubs. A
"stub" function is a function which cannot be implemented on a
particular machine or operating system. Stub functions always return an
error, and set errno to ENOSYS (Function not implemented). *Note
Error Reporting::. If you define a stub function, you must place the
statement stub_warning(FUNCTION), where FUNCTION is the name of your
function, after its definition. This causes the function to be listed
in the installed <gnu/stubs.h>, and makes GNU ld warn when the
function is used.
Some rare functions are only useful on specific systems and arent
defined at all on others; these do not appear anywhere in the
system-independent source code or makefiles (including the generic
directory), only in the system-dependent Makefile in the specific
systems subdirectory.
If you come across a file that is in one of the main source
directories (string, stdio, etc.), and you want to write a machine-
or operating system-dependent version of it, move the file into
sysdeps/generic and write your new implementation in the appropriate
system-specific subdirectory. Note that if a file is to be
system-dependent, it *must not* appear in one of the main source
directories.
There are a few special files that may exist in each subdirectory of
sysdeps:
Makefile
A makefile for this machine or operating system, or class of
machine or operating system. This file is included by the library
makefile Makerules, which is used by the top-level makefile and
the subdirectory makefiles. It can change the variables set in the
including makefile or add new rules. It can use GNU make
conditional directives based on the variable subdir (see above)
to select different sets of variables and rules for different
sections of the library. It can also set the make variable
sysdep-routines, to specify extra modules to be included in the
library. You should use sysdep-routines rather than adding
modules to routines because the latter is used in determining
what to distribute for each subdirectory of the main source tree.
Each makefile in a subdirectory in the ordered list of
subdirectories to be searched is included in order. Since several
system-dependent makefiles may be included, each should append to
sysdep-routines rather than simply setting it:
sysdep-routines := $(sysdep-routines) foo bar
Subdirs
This file contains the names of new whole subdirectories under the
top-level library source tree that should be included for this
system. These subdirectories are treated just like the
system-independent subdirectories in the library source tree, such
as stdio and math.
Use this when there are completely new sets of functions and header
files that should go into the library for the system this
subdirectory of sysdeps implements. For example,
sysdeps/unix/inet/Subdirs contains inet; the inet directory
contains various network-oriented operations which only make sense
to put in the library on systems that support the Internet.
configure
This file is a shell script fragment to be run at configuration
time. The top-level configure script uses the shell . command
to read the configure file in each system-dependent directory
chosen, in order. The configure files are often generated from
configure.ac files using Autoconf.
A system-dependent configure script will usually add things to
the shell variables DEFS and config_vars; see the top-level
configure script for details. The script can check for --with-PACKAGE
options that were passed to the top-level configure. For an
option --with-PACKAGE=VALUE configure sets the shell variable with_PACKAGE
(with any dashes in PACKAGE converted to underscores) to VALUE; if
the option is just --with-PACKAGE (no argument), then it sets with_PACKAGE
to yes.
configure.ac
This file is an Autoconf input fragment to be processed into the
file configure in this subdirectory. *Note
(autoconf.info)Introduction::, for a description of Autoconf. You
should write either configure or configure.ac, but not both.
The first line of configure.ac should invoke the m4 macro
GLIBC_PROVIDES. This macro does several AC_PROVIDE calls for
Autoconf macros which are used by the top-level configure script;
without this, those macros might be invoked again unnecessarily by
Autoconf.
That is the general system for how system-dependencies are isolated.
* Menu:
* Hierarchy Conventions:: The layout of the sysdeps hierarchy.
* Porting to Unix:: Porting the library to an average
Unix-like system.

File: libc.info, Node: Hierarchy Conventions, Next: Porting to Unix, Up: Porting
D.3.1 Layout of the sysdeps Directory Hierarchy
-------------------------------------------------
A GNU configuration name has three parts: the CPU type, the
manufacturers name, and the operating system. configure uses these
to pick the list of system-dependent directories to look for. If the
--nfp option is _not_ passed to configure, the directory
MACHINE/fpu is also used. The operating system often has a "base
operating system"; for example, if the operating system is Linux, the
base operating system is unix/sysv. The algorithm used to pick the
list of directories is simple: configure makes a list of the base
operating system, manufacturer, CPU type, and operating system, in that
order. It then concatenates all these together with slashes in between,
to produce a directory name; for example, the configuration i686-linux-gnu
results in unix/sysv/linux/i386/i686. configure then tries removing
each element of the list in turn, so unix/sysv/linux and unix/sysv
are also tried, among others. Since the precise version number of the
operating system is often not important, and it would be very
inconvenient, for example, to have identical irix6.2 and irix6.3
directories, configure tries successively less specific operating
system names by removing trailing suffixes starting with a period.
As an example, here is the complete list of directories that would be
tried for the configuration i686-linux-gnu:
sysdeps/i386/elf
sysdeps/unix/sysv/linux/i386
sysdeps/unix/sysv/linux
sysdeps/gnu
sysdeps/unix/common
sysdeps/unix/mman
sysdeps/unix/inet
sysdeps/unix/sysv/i386/i686
sysdeps/unix/sysv/i386
sysdeps/unix/sysv
sysdeps/unix/i386
sysdeps/unix
sysdeps/posix
sysdeps/i386/i686
sysdeps/i386/i486
sysdeps/libm-i387/i686
sysdeps/i386/fpu
sysdeps/libm-i387
sysdeps/i386
sysdeps/wordsize-32
sysdeps/ieee754
sysdeps/libm-ieee754
sysdeps/generic
Different machine architectures are conventionally subdirectories at
the top level of the sysdeps directory tree. For example, sysdeps/sparc
and sysdeps/m68k. These contain files specific to those machine
architectures, but not specific to any particular operating system.
There might be subdirectories for specializations of those
architectures, such as sysdeps/m68k/68020. Code which is specific to
the floating-point coprocessor used with a particular machine should go
in sysdeps/MACHINE/fpu.
There are a few directories at the top level of the sysdeps
hierarchy that are not for particular machine architectures.
generic
As described above (*note Porting::), this is the subdirectory that
every configuration implicitly uses after all others.
ieee754
This directory is for code using the IEEE 754 floating-point
format, where the C type float is IEEE 754 single-precision
format, and double is IEEE 754 double-precision format. Usually
this directory is referred to in the Implies file in a machine
architecture-specific directory, such as m68k/Implies.
libm-ieee754
This directory contains an implementation of a mathematical library
usable on platforms which use IEEE 754 conformant floating-point
arithmetic.
libm-i387
This is a special case. Ideally the code should be in
sysdeps/i386/fpu but for various reasons it is kept aside.
posix
This directory contains implementations of things in the library in
terms of POSIX.1 functions. This includes some of the POSIX.1
functions themselves. Of course, POSIX.1 cannot be completely
implemented in terms of itself, so a configuration using just
posix cannot be complete.
unix
This is the directory for Unix-like things. *Note Porting to
Unix::. unix implies posix. There are some special-purpose
subdirectories of unix:
unix/common
This directory is for things common to both BSD and System V
release 4. Both unix/bsd and unix/sysv/sysv4 imply
unix/common.
unix/inet
This directory is for socket and related functions on Unix
systems. unix/inet/Subdirs enables the inet top-level
subdirectory. unix/common implies unix/inet.
mach
This is the directory for things based on the Mach microkernel from
CMU (including GNU/Hurd systems). Other basic operating systems
(VMS, for example) would have their own directories at the top
level of the sysdeps hierarchy, parallel to unix and mach.

File: libc.info, Node: Porting to Unix, Prev: Hierarchy Conventions, Up: Porting
D.3.2 Porting the GNU C Library to Unix Systems
-----------------------------------------------
Most Unix systems are fundamentally very similar. There are variations
between different machines, and variations in what facilities are
provided by the kernel. But the interface to the operating system
facilities is, for the most part, pretty uniform and simple.
The code for Unix systems is in the directory unix, at the top
level of the sysdeps hierarchy. This directory contains
subdirectories (and subdirectory trees) for various Unix variants.
The functions which are system calls in most Unix systems are
implemented in assembly code, which is generated automatically from
specifications in files named syscalls.list. There are several such
files, one in sysdeps/unix and others in its subdirectories. Some
special system calls are implemented in files that are named with a
suffix of .S; for example, _exit.S. Files ending in .S are run
through the C preprocessor before being fed to the assembler.
These files all use a set of macros that should be defined in
sysdep.h. The sysdep.h file in sysdeps/unix partially defines
them; a sysdep.h file in another directory must finish defining them
for the particular machine and operating system variant. See
sysdeps/unix/sysdep.h and the machine-specific sysdep.h
implementations to see what these macros are and what they should do.
The system-specific makefile for the unix directory
(sysdeps/unix/Makefile) gives rules to generate several files from the
Unix system you are building the library on (which is assumed to be the
target system you are building the library _for_). All the generated
files are put in the directory where the object files are kept; they
should not affect the source tree itself. The files generated are
ioctls.h, errnos.h, sys/param.h, and errlist.c (for the stdio
section of the library).

File: libc.info, Node: Platform, Next: Contributors, Prev: Maintenance, Up: Top
Appendix E Platform-specific facilities
***************************************
The GNU C Library can provide machine-specific functionality.
* Menu:
* PowerPC:: Facilities Specific to the PowerPC Architecture
* RISC-V:: Facilities Specific to the RISC-V Architecture
* X86:: Facilities Specific to the X86 Architecture

File: libc.info, Node: PowerPC, Next: RISC-V, Up: Platform
E.1 PowerPC-specific Facilities
===============================
Facilities specific to PowerPC that are not specific to a particular
operating system are declared in sys/platform/ppc.h.
-- Function: uint64_t __ppc_get_timebase (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Read the current value of the Time Base Register.
The "Time Base Register" is a 64-bit register that stores a
monotonically incremented value updated at a system-dependent
frequency that may be different from the processor frequency. More
information is available in Power ISA 2.06b - Book II - Section
5.2.
__ppc_get_timebase uses the processors time base facility
directly without requiring assistance from the operating system, so
it is very efficient.
-- Function: uint64_t __ppc_get_timebase_freq (void)
Preliminary: | MT-Unsafe init | AS-Unsafe corrupt:init | AC-Unsafe
corrupt:init | *Note POSIX Safety Concepts::.
Read the current frequency at which the Time Base Register is
updated.
This frequency is not related to the processor clock or the bus
clock. It is also possible that this frequency is not constant.
More information is available in Power ISA 2.06b - Book II -
Section 5.2.
The following functions provide hints about the usage of resources
that are shared with other processors. They can be used, for example,
if a program waiting on a lock intends to divert the shared resources to
be used by other processors. More information is available in Power
ISA 2.06b - Book II - Section 3.2.
-- Function: void __ppc_yield (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Provide a hint that performance will probably be improved if shared
resources dedicated to the executing processor are released for use
by other processors.
-- Function: void __ppc_mdoio (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Provide a hint that performance will probably be improved if shared
resources dedicated to the executing processor are released until
all outstanding storage accesses to caching-inhibited storage have
been completed.
-- Function: void __ppc_mdoom (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Provide a hint that performance will probably be improved if shared
resources dedicated to the executing processor are released until
all outstanding storage accesses to cacheable storage for which the
data is not in the cache have been completed.
-- Function: void __ppc_set_ppr_med (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Set the Program Priority Register to medium value (default).
The "Program Priority Register" (PPR) is a 64-bit register that
controls the programs priority. By adjusting the PPR value the
programmer may improve system throughput by causing the system
resources to be used more efficiently, especially in contention
situations. The three unprivileged states available are covered by
the functions __ppc_set_ppr_med (medium default),
__ppc_set_ppc_low (low) and __ppc_set_ppc_med_low (medium low).
More information available in Power ISA 2.06b - Book II - Section
3.1.
-- Function: void __ppc_set_ppr_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Set the Program Priority Register to low value.
-- Function: void __ppc_set_ppr_med_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Set the Program Priority Register to medium low value.
Power ISA 2.07 extends the priorities that can be set to the Program
Priority Register (PPR). The following functions implement the new
priority levels: very low and medium high.
-- Function: void __ppc_set_ppr_very_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Set the Program Priority Register to very low value.
-- Function: void __ppc_set_ppr_med_high (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Set the Program Priority Register to medium high value. The medium
high priority is privileged and may only be set during certain time
intervals by problem-state programs. If the program priority is
medium high when the time interval expires or if an attempt is made
to set the priority to medium high when it is not allowed, the
priority is set to medium.

File: libc.info, Node: RISC-V, Next: X86, Prev: PowerPC, Up: Platform
E.2 RISC-V-specific Facilities
==============================
Cache management facilities specific to RISC-V systems that implement
the Linux ABI are declared in sys/cachectl.h.
-- Function: void __riscv_flush_icache (void *START, void *END,
unsigned long int FLAGS)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Enforce ordering between stores and instruction cache fetches. The
range of addresses over which ordering is enforced is specified by
START and END. The FLAGS argument controls the extent of this
ordering, with the default behavior (a FLAGS value of 0) being to
enforce the fence on all threads in the current process. Setting
the SYS_RISCV_FLUSH_ICACHE_LOCAL bit allows users to indicate
that enforcing ordering on only the current thread is necessary.
All other flag bits are reserved.

File: libc.info, Node: X86, Prev: RISC-V, Up: Platform
E.3 X86-specific Facilities
===========================
Facilities specific to X86 that are not specific to a particular
operating system are declared in sys/platform/x86.h.
-- Function: const struct cpuid_feature * __x86_get_cpuid_feature_leaf
(unsigned int LEAF)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
Concepts::.
Return a pointer to x86 CPU feature structure used by query macros
for x86 CPU feature LEAF.
-- Macro: int CPU_FEATURE_PRESENT (NAME)
This macro returns a nonzero value (true) if the processor has the
feature NAME.
-- Macro: int CPU_FEATURE_ACTIVE (NAME)
This macro returns a nonzero value (true) if the processor has the
feature NAME and the feature is active. There may be other
preconditions, like sufficient stack space or further setup for
AMX, which must be satisfied before the feature can be used.
The supported processor features are:
ACPI Thermal Monitor and Software Controlled Clock Facilities.
ADX ADX instruction extensions.
APIC APIC On-Chip.
AES The AES instruction extensions.
AESKLE AES Key Locker instructions are enabled by OS.
AMD_IBPB Indirect branch predictor barrier (IBPB) for AMD cpus.
AMD_IBRS Indirect branch restricted speculation (IBPB) for AMD
cpus.
AMD_SSBD Speculative Store Bypass Disable (SSBD) for AMD cpus.
AMD_STIBP Single thread indirect branch predictors (STIBP) for
AMD cpus.
AMD_VIRT_SSBD Speculative Store Bypass Disable (SSBD) for AMD
cpus (older systems).
AMX_BF16 Tile computational operations on bfloat16 numbers.
AMX_INT8 Tile computational operations on 8-bit numbers.
AMX_TILE Tile architecture.
ARCH_CAPABILITIES IA32_ARCH_CAPABILITIES MSR.
AVX The AVX instruction extensions.
AVX2 The AVX2 instruction extensions.
AVX_VNNI The AVX-VNNI instruction extensions.
AVX512_4FMAPS The AVX512_4FMAPS instruction extensions.
AVX512_4VNNIW The AVX512_4VNNIW instruction extensions.
AVX512_BF16 The AVX512_BF16 instruction extensions.
AVX512_BITALG The AVX512_BITALG instruction extensions.
AVX512_FP16 The AVX512_FP16 instruction extensions.
AVX512_IFMA The AVX512_IFMA instruction extensions.
AVX512_VBMI The AVX512_VBMI instruction extensions.
AVX512_VBMI2 The AVX512_VBMI2 instruction extensions.
AVX512_VNNI The AVX512_VNNI instruction extensions.
AVX512_VP2INTERSECT The AVX512_VP2INTERSECT instruction
extensions.
AVX512_VPOPCNTDQ The AVX512_VPOPCNTDQ instruction extensions.
AVX512BW The AVX512BW instruction extensions.
AVX512CD The AVX512CD instruction extensions.
AVX512ER The AVX512ER instruction extensions.
AVX512DQ The AVX512DQ instruction extensions.
AVX512F The AVX512F instruction extensions.
AVX512PF The AVX512PF instruction extensions.
AVX512VL The AVX512VL instruction extensions.
BMI1 BMI1 instructions.
BMI2 BMI2 instructions.
CLDEMOTE CLDEMOTE instruction.
CLFLUSHOPT CLFLUSHOPT instruction.
CLFSH CLFLUSH instruction.
CLWB CLWB instruction.
CMOV Conditional Move instructions.
CMPXCHG16B CMPXCHG16B instruction.
CNXT_ID L1 Context ID.
CORE_CAPABILITIES IA32_CORE_CAPABILITIES MSR.
CX8 CMPXCHG8B instruction.
DCA Data prefetch from a memory mapped device.
DE Debugging Extensions.
DEPR_FPU_CS_DS Deprecates FPU CS and FPU DS values.
DS Debug Store.
DS_CPL CPL Qualified Debug Store.
DTES64 64-bit DS Area.
EIST Enhanced Intel SpeedStep technology.
ENQCMD Enqueue Stores instructions.
ERMS Enhanced REP MOVSB/STOSB.
F16C 16-bit floating-point conversion instructions.
FMA FMA extensions using YMM state.
FMA4 FMA4 instruction extensions.
FPU X87 Floating Point Unit On-Chip.
FSGSBASE RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE instructions.
FSRCS Fast Short REP CMP and SCA.
FSRM Fast Short REP MOV.
FSRS Fast Short REP STO.
FXSR FXSAVE and FXRSTOR instructions.
FZLRM Fast Zero-Length REP MOV.
GFNI GFNI instruction extensions.
HLE HLE instruction extensions.
HTT Max APIC IDs reserved field is Valid.
HRESET History reset.
HYBRID Hybrid processor.
IBRS_IBPB Indirect branch restricted speculation (IBRS) and the
indirect branch predictor barrier (IBPB).
IBT Intel Indirect Branch Tracking instruction extensions.
INVARIANT_TSC Invariant TSC.
INVPCID INVPCID instruction.
KL AES Key Locker instructions.
LAM Linear Address Masking.
L1D_FLUSH IA32_FLUSH_CMD MSR.
LAHF64_SAHF64 LAHF/SAHF available in 64-bit mode.
LM Long mode.
LWP Lightweight profiling.
LZCNT LZCNT instruction.
MCA Machine Check Architecture.
MCE Machine Check Exception.
MD_CLEAR MD_CLEAR.
MMX Intel MMX Technology.
MONITOR MONITOR/MWAIT instructions.
MOVBE MOVBE instruction.
MOVDIRI MOVDIRI instruction.
MOVDIR64B MOVDIR64B instruction.
MPX Intel Memory Protection Extensions.
MSR Model Specific Registers RDMSR and WRMSR instructions.
MTRR Memory Type Range Registers.
NX No-execute page protection.
OSPKE OS has set CR4.PKE to enable protection keys.
OSXSAVE The OS has set CR4.OSXSAVE[bit 18] to enable
XSETBV/XGETBV instructions to access XCR0 and to support processor
extended state management using XSAVE/XRSTOR.
PAE Physical Address Extension.
PAGE1GB 1-GByte page.
PAT Page Attribute Table.
PBE Pending Break Enable.
PCID Process-context identifiers.
PCLMULQDQ PCLMULQDQ instruction.
PCONFIG PCONFIG instruction.
PDCM Perfmon and Debug Capability.
PGE Page Global Bit.
PKS Protection keys for supervisor-mode pages.
PKU Protection keys for user-mode pages.
POPCNT POPCNT instruction.
PREFETCHW PREFETCHW instruction.
PREFETCHWT1 PREFETCHWT1 instruction.
PSE Page Size Extension.
PSE_36 36-Bit Page Size Extension.
PSN Processor Serial Number.
PTWRITE PTWRITE instruction.
RDPID RDPID instruction.
RDRAND RDRAND instruction.
RDSEED RDSEED instruction.
RDT_A Intel Resource Director Technology (Intel RDT) Allocation
capability.
RDT_M Intel Resource Director Technology (Intel RDT) Monitoring
capability.
RDTSCP RDTSCP instruction.
RTM RTM instruction extensions.
RTM_ALWAYS_ABORT Transactions always abort, making RTM
unusable.
SDBG IA32_DEBUG_INTERFACE MSR for silicon debug.
SEP SYSENTER and SYSEXIT instructions.
SERIALIZE SERIALIZE instruction.
SGX Intel Software Guard Extensions.
SGX_LC SGX Launch Configuration.
SHA SHA instruction extensions.
SHSTK Intel Shadow Stack instruction extensions.
SMAP Supervisor-Mode Access Prevention.
SMEP Supervisor-Mode Execution Prevention.
SMX Safer Mode Extensions.
SS Self Snoop.
SSBD Speculative Store Bypass Disable (SSBD).
SSE Streaming SIMD Extensions.
SSE2 Streaming SIMD Extensions 2.
SSE3 Streaming SIMD Extensions 3.
SSE4_1 Streaming SIMD Extensions 4.1.
SSE4_2 Streaming SIMD Extensions 4.2.
SSE4A SSE4A instruction extensions.
SSSE3 Supplemental Streaming SIMD Extensions 3.
STIBP Single thread indirect branch predictors (STIBP).
SVM Secure Virtual Machine.
SYSCALL_SYSRET SYSCALL/SYSRET instructions.
TBM Trailing bit manipulation instructions.
TM Thermal Monitor.
TM2 Thermal Monitor 2.
TRACE Intel Processor Trace.
TSC Time Stamp Counter. RDTSC instruction.
TSC_ADJUST IA32_TSC_ADJUST MSR.
TSC_DEADLINE Local APIC timer supports one-shot operation using
a TSC deadline value.
TSXLDTRK TSXLDTRK instructions.
UINTR User interrupts.
UMIP User-mode instruction prevention.
VAES VAES instruction extensions.
VME Virtual 8086 Mode Enhancements.
VMX Virtual Machine Extensions.
VPCLMULQDQ VPCLMULQDQ instruction.
WAITPKG WAITPKG instruction extensions.
WBNOINVD WBINVD/WBNOINVD instructions.
WIDE_KL AES wide Key Locker instructions.
X2APIC x2APIC.
XFD Extended Feature Disable (XFD).
XGETBV_ECX_1 XGETBV with ECX = 1.
XOP XOP instruction extensions.
XSAVE The XSAVE/XRSTOR processor extended states feature, the
XSETBV/XGETBV instructions, and XCR0.
XSAVEC XSAVEC instruction.
XSAVEOPT XSAVEOPT instruction.
XSAVES XSAVES/XRSTORS instructions.
XTPRUPDCTRL xTPR Update Control.
You could query if a processor supports AVX with:
#include <sys/platform/x86.h>
int
avx_present (void)
{
return CPU_FEATURE_PRESENT (AVX);
}
and if AVX is active and may be used with:
#include <sys/platform/x86.h>
int
avx_active (void)
{
return CPU_FEATURE_ACTIVE (AVX);
}

File: libc.info, Node: Contributors, Next: Free Manuals, Prev: Platform, Up: Top
Appendix F Contributors to the GNU C Library
********************************************
The GNU C Library project would like to thank its many contributors.
Without them the project would not have been nearly as successful as it
has been. Any omissions in this list are accidental. Feel free to file
a bug in bugzilla if you have been left out or some of your
contributions are not listed. Please keep this list in alphabetical
order.
• Nick Alcock for contributing fixes to allow the GNU C Library to be
built with the stack smashing protector enabled.
• John David Anglin for various fixes to the hppa port.
• Albert ARIBAUD for Y2038 related fixes.
• Ryan S. Arnold for his improvements for Linux on PowerPC and his
direction as FSF Project Steward for the GNU C Library.
• Miles Bader for writing the argp argument-parsing package, and
the argz/envz interfaces.
• Ralf Bächle for contributing fpu_control.h, regdef.h,
sgidefs.h, sys/asm.h, and sys/regdef.h under the
sysdeps/mips directory.
• Jeff Bailey for his maintainership of the HPPA architecture.
• Petr Baudis for bug fixes and testing.
• Anton Blanchard for various fixes.
• Stephen R. van den Berg for contributing a highly-optimized
strstr function.
• Ondřej Bílka for contributing optimized string routines for x64 and
various fixes.
• Eric Blake for adding O(n) implementations of memmem, strstr
and strcasestr.
• Philip Blundell for the ports to Linux/ARM
(arm-ANYTHING-linuxaout) and ARM standalone
(arm-ANYTHING-none), as well as for parts of the IPv6 support
code.
• Per Bothner for the implementation of the libio library which is
used to implement stdio functions.
• Mark Brown for his direction as part of the GNU C Library steering
committee.
• Thomas Bushnell for his contributions to Hurd.
• Rogerio Alves Cardoso for various fixes to PowerPC.
• Paul Clarke for optimized functions on PowerPC.
• Mike Crowe for various fixes.
• Palmer Dabbelt for contributing the port to Linux/RISC-V.
• DJ Delorie for maintenance of Linux/RISC-V, and various fixes.
• Wilco Dijkstra for various fixes.
• Liubov Dmitrieva for optimized string and math functions on x86-64
and x86.
• Ulrich Drepper for his many contributions in almost all parts of
the GNU C Library, including:
• writing most of the POSIX Threads Library originally.
• internationalization support, including the locale and
localedef utilities.
• Linux i386/ELF support
• the hsearch and drand48 families of functions, reentrant
_r versions of the random family; System V shared
memory and IPC support code
• several highly-optimized string functions for iX86 processors
• many math functions
• the character conversion functions (iconv)
• the ftw and nftw functions
• the floating-point printing function used by printf and
friends and the floating-point reading function used by
scanf, strtod and friends
• the catgets support and the entire suite of multi-byte and
wide-character support functions (wctype.h, wchar.h,
etc.).
• versioning of objects on the symbol level
• Richard Earnshaw for continued support and fixes to the various ARM
machine files.
• Paul Eggert for the mktime function and for his direction as part
of the GNU C Library steering committee.
• Steve Ellcey for various fixes.
• Mike FABIAN for automating Unicode updates, for updating the locale
data for ISO 14651, for updating the library Unicode support, and
for various locale updates and fixes.
• Tulio Magno Quites Machado Filho for adding a new class of
installed headers for low-level platform-specific functionality and
one such for PowerPC and various fixes.
• Olaf Flebbe and Ralf Bächle for contributing
sysdeps/mips/fpu_control.h.
• Alistair Francis for Y2038 related fixes.
• Mike Frysinger for his maintaining of the IA64 architecture and for
testing and bug fixing.
• Martin Galvan for contributing gdb pretty printer support to glibc
and adding an initial set of pretty printers for structures in the
POSIX Threads library.
• Michael Glad for the passphrase-hashing function crypt and
related functions.
• Wolfram Gloger for contributing the memory allocation functions
functions malloc, realloc and free and related code.
• Gabriel F. T. Gomes for his improvements for Linux on PowerPC and
for implementing the IEEE 128-bit floating point type for PowerPC.
• Torbjörn Granlund for fast implementations of many of the string
functions (memcpy, strlen, etc.).
• Michael J. Haertel for writing the merge sort function qsort and
malloc checking functions like mcheck.
• Bruno Haible for his improvements to the iconv and locale
implementations.
• Mao Han for the C-SKY port.
• Richard Henderson for the port to Linux on Alpha
(alpha-ANYTHING-linux) and software floating-point support.
• David Holsgrove for the port to Linux on MicroBlaze.
• Leonhard Holz for various fixes.
• Daniel Jacobowitz for various fixes and enhancements.
• Andreas Jaeger for the port to Linux on x86-64
(x86_64-ANYTHING-linux and his work on Linux for MIPS
(mips-ANYTHING-linux), implementing the ldconfig program,
providing a test suite for the math library and for his direction
as part of the GNU C Library steering committee.
• Aurelien Jarno for various fixes.
• Rical Jasan for contributing various fixes in the GNU C Library
manual.
• Jakub Jelinek for implementing a number of checking functions,
software floating-point support and for his direction as part of
the GNU C Library steering committee.
• Simon Josefsson for the libidn add-on.
• Geoffrey Keating for the port to Linux on PowerPC
(powerpc-ANYTHING-linux).
• Brendan Kehoe for contributing the port to the MIPS DECStation
running Ultrix 4 (mips-dec-ultrix4) and the port to the DEC Alpha
running OSF/1 (alpha-dec-osf1).
• Mark Kettenis for implementing the utmpx interface and a utmp
daemon, and for a Hesiod NSS module.
• Andi Kleen for implementing pthreads lock elision with TSX.
• Kazumoto Kojima for the port of the Mach and Hurd code to the MIPS
architecture (mips-ANYTHING-gnu) and for his work on the SH
architecture.
• Maxim Kuvyrkov for various fixes.
• Andreas Krebbel for his work on Linux for s390 and s390x.
• Thorsten Kukuk for providing an implementation for NIS (YP) and
NIS+, securelevel 0, 1 and 2 and for the implementation for a
caching daemon for NSS (nscd).
• Akhilesh Kumar for various fixes to locales.
• Jeff Law for various fixes.
• Doug Lea for contributing the memory allocation functions malloc,
realloc and free and related code.
• Chris Leonard for various fixes and enhancements to localedata.
• Ilya Leoshkevich for various fixes.
• Dmitry V. Levin for various fixes.
• Stefan Liebler for various fixes.
• Hongjiu Lu for providing the support for a Linux 32-bit runtime
environment under x86-64 (x32), for porting to Linux on IA64, for
improved string functions, a framework for testing IFUNC
implementations, for implementing Intel Control-Flow Enforcement
Technology, and many bug fixes.
• Rafał Lużyński for contributing support for two grammatical forms
of month names, and for various fixes to locales.
• Luis Machado for optimized functions on PowerPC.
• David J. MacKenzie for his contribution to the getopt function
and writing the tar.h header.
• Lukasz Majewski for Y2038 related fixes.
• Greg McGary for adding runtime support for bounds checking.
• Roland McGrath for writing most of the GNU C Library originally,
for his work on the Hurd port, his direction as part of the GNU C
Library steering committee and as FSF Project Steward for the GNU C
Library, and for many bug fixes and reviewing of contributions.
• Allan McRae for various fixes.
• Jason Merrill for the port to the Sequent Symmetry running Dynix
version 3 (i386-sequent-bsd).
• Chris Metcalf for the port to Linux/Tile (tilegx-ANYTHING-linux
and tilepro-ANYTHING-linux) and support for the generic Linux
kernel syscall interface used by several newer ports.
• Jim Meyering for various fixes.
• David Miller for contributing the port to Linux/Sparc
(sparc*-ANYTHING-linux).
• Alan Modra for his improvements for Linux on PowerPC.
• David Mosberger-Tang for contributing the port to Linux/Alpha
(alpha-ANYTHING-linux).
• Wainer dos Santos Moschetta for various fixes to powerpc.
• Stephen Moshier for implementing some 128-bit long double format
math functions.
• Stephen Munroe for his port to Linux on PowerPC64
(powerpc64-ANYTHING-linux) and for adding optimized
implementations for PowerPC.
• Paul E. Murphy for various fixes on PowerPC and for implementing
the IEEE 128-bit floating point type for PowerPC.
• Joseph S. Myers for numerous bug fixes for the libm functions, for
his maintainership of the ARM and MIPS architectures and the math
component, improving cross-compilation and cross-testing of the GNU
C Library, expanded coverage of conformtest, merging the ports/
subdirectory into the GNU C Library main repository and his
direction as FSF Project Steward for the GNU C Library.
• Marko Myllynen for various fixes.
• Szabolcs Nagy for various fixes.
• Will Newton for contributing some optimized string functions and
pointer encryption support for ARM and various fixes.
• Carlos ODonell for his maintainership of the HPPA architecture,
for maintaining the GNU C Library web pages and wiki, for his
direction as FSF Project Steward for the GNU C Library and various
bug fixes.
• Alexandre Oliva for adding TLS descriptors for LD and GD on x86 and
x86-64, for the am33 port, for completing the MIPS n64/n32/o32
multilib port, for thread-safety, async-signal safety and
async-cancellation safety documentation in the manual, for his
direction as FSF Project Maintainer and for various fixes.
• Paul Pluzhnikov for various fixes.
• Marek Polacek for various fixes.
• Siddhesh Poyarekar for various fixes, an implementation of a
framework for performance benchmarking of functions and
implementing the tunables infrastructure.
• Tom Quinn for contributing the startup code to support SunOS shared
libraries and the port to SGI machines running Irix 4
(mips-sgi-irix4).
• Torvald Riegel for the implementation of new algorithms for
semaphores, pthread_rwlock and condition variables.
• Maciej W. Rozycki for MIPS fixes, support for ABSOLUTE symbols, and
various fixes.
• Leonardo Sandoval for various fixes.
• Pravin Satpute for writing sorting rules for some Indian languages.
• Douglas C. Schmidt for writing the quick sort function used as a
fallback by qsort.
• Will Schmidt for optimized string functions on PowerPC.
• Andreas Schwab for the port to Linux/m68k (m68k-ANYTHING-linux),
for his direction as part of the GNU C Library steering committee,
and for various bug fixes.
• Martin Schwidefsky for porting to Linux on s390
(s390-ANYTHING-linux) and s390x (s390x-ANYTHING-linux).
• Thomas Schwinge for his contribution to Hurd and the SH
architecture.
• Martin Sebor for various fixes.
• Andrew Senkevich for contributing vector math function
implementations for x86.
• Carlos Eduardo Seo for optimized functions on PowerPC.
• Arjun Shankar for testing and bug fixing.
• Marcus Shawcroft for contributing the AArch64 port.
• TAMUKI Shoichi for various fixes.
• Franz Sirl for various fixes.
• Jes Sorensen for porting to Linux on IA64 (ia64-ANYTHING-linux).
• Rajalakshmi Srinivasaraghavan for various fixes and optimizations
on PowerPC and for implementing the IEEE 128-bit floating point
type for PowerPC.
• Richard Stallman for his contribution to the getopt function.
• Alfred M. Szmidt for various fixes.
• Chung-Lin Tang for contributing the Nios II port.
• Ian Lance Taylor for contributing the port to the MIPS DECStation
running Ultrix 4 (mips-dec-ultrix4).
• Samuel Thibault for improving the Hurd port.
• Pino Toscano for various fixes.
• Matt Turner for various fixes to the Alpha port.
• Tim Waugh for the implementation of the POSIX.2 wordexp function
family.
• Ulrich Weigand for various fixes to the PowerPC64 and Arm ports.
• Florian Weimer for his maintainership of the network component, for
handling of security issues, and for various fixes.
• Zack Weinberg for the explicit_bzero implementation and for
various fixes.
• Mark Wielaard for various fixes.
• Eric Youngdale for implementing versioning of objects on the symbol
level.
• Adhemerval Zanella for optimized functions on PowerPC, ISO C
threads support and various fixes.
• Xuelei Zhang for optimized functions on AArch64.
Some code in the GNU C Library comes from other projects and might be
under a different license:
• The timezone support code is derived from the public-domain
timezone package by Arthur David Olson and his many contributors.
• Some of the support code for Mach is taken from Mach 3.0 by CMU;
the file if_ppp.h is also copyright by CMU, but under a different
license; see the file LICENSES for the text of the licenses.
• The random number generation functions random, srandom,
setstate and initstate, which are also the basis for the rand
and srand functions, were written by Earl T. Cohen for the
University of California at Berkeley and are copyrighted by the
Regents of the University of California. They have undergone minor
changes to fit into the GNU C Library and to fit the ISO C
standard, but the functional code is Berkeleys.
• The Internet-related code (most of the inet subdirectory) and
several other miscellaneous functions and header files have been
included from 4.4 BSD with little or no modification. The copying
permission notice for this code can be found in the file LICENSES
in the source distribution.
• The getaddrinfo and getnameinfo functions and supporting code
were written by Craig Metz; see the file LICENSES for details on
their licensing.
• The DNS resolver code is taken directly from BIND 8.2.3-T5B, which
includes copyrighted code from UC Berkeley and from Digital
Equipment Corporation. See the file LICENSES for the text of the
DEC license.
• The code to support Sun RPC is taken verbatim from Suns RPCSRC-4.0
distribution; see the file LICENSES for the text of the license.
• The math functions are taken from fdlibm-5.1 by Sun Microsystems,
as modified by J.T. Conklin, Ian Lance Taylor, Ulrich Drepper,
Andreas Schwab, and Roland McGrath.
• Many of the IEEE 64-bit double precision math functions (in the
sysdeps/ieee754/dbl-64 subdirectory) come from the IBM Accurate
Mathematical Library, contributed by IBM.
• Many of the IA64 math functions are taken from a collection of
“Highly Optimized Mathematical Functions for Itanium” that Intel
makes available under a free license; see the file LICENSES for
details.

File: libc.info, Node: Free Manuals, Next: Copying, Prev: Contributors, Up: Top
Appendix G Free Software Needs Free Documentation
*************************************************
The biggest deficiency in the free software community today is not in
the software—it is the lack of good free documentation that we can
include with the free software. Many of our most important programs do
not come with free reference manuals and free introductory texts.
Documentation is an essential part of any software package; when an
important free software package does not come with a free manual and a
free tutorial, that is a major gap. We have many such gaps today.
Consider Perl, for instance. The tutorial manuals that people
normally use are non-free. How did this come about? Because the
authors of those manuals published them with restrictive terms—no
copying, no modification, source files not available—which exclude them
from the free software world.
That wasnt the first time this sort of thing happened, and it was
far from the last. Many times we have heard a GNU user eagerly describe
a manual that he is writing, his intended contribution to the community,
only to learn that he had ruined everything by signing a publication
contract to make it non-free.
Free documentation, like free software, is a matter of freedom, not
price. The problem with the non-free manual is not that publishers
charge a price for printed copies—that in itself is fine. (The Free
Software Foundation sells printed copies of manuals, too.) The problem
is the restrictions on the use of the manual. Free manuals are
available in source code form, and give you permission to copy and
modify. Non-free manuals do not allow this.
The criteria of freedom for a free manual are roughly the same as for
free software. Redistribution (including the normal kinds of commercial
redistribution) must be permitted, so that the manual can accompany
every copy of the program, both on-line and on paper.
Permission for modification of the technical content is crucial too.
When people modify the software, adding or changing features, if they
are conscientious they will change the manual too—so they can provide
accurate and clear documentation for the modified program. A manual
that leaves you no choice but to write a new manual to document a
changed version of the program is not really available to our community.
Some kinds of limits on the way modification is handled are
acceptable. For example, requirements to preserve the original authors
copyright notice, the distribution terms, or the list of authors, are
ok. It is also no problem to require modified versions to include
notice that they were modified. Even entire sections that may not be
deleted or changed are acceptable, as long as they deal with
nontechnical topics (like this one). These kinds of restrictions are
acceptable because they dont obstruct the communitys normal use of the
manual.
However, it must be possible to modify all the _technical_ content of
the manual, and then distribute the result in all the usual media,
through all the usual channels. Otherwise, the restrictions obstruct
the use of the manual, it is not free, and we need another manual to
replace it.
Please spread the word about this issue. Our community continues to
lose manuals to proprietary publishing. If we spread the word that free
software needs free reference manuals and free tutorials, perhaps the
next person who wants to contribute by writing documentation will
realize, before it is too late, that only free manuals contribute to the
free software community.
If you are writing documentation, please insist on publishing it
under the GNU Free Documentation License or another free documentation
license. Remember that this decision requires your approval—you dont
have to let the publisher decide. Some commercial publishers will use a
free license if you insist, but they will not propose the option; it is
up to you to raise the issue and say firmly that this is what you want.
If the publisher you are dealing with refuses, please try other
publishers. If youre not sure whether a proposed license is free,
write to <licensing@gnu.org>.
You can encourage commercial publishers to sell more free, copylefted
manuals and tutorials by buying them, and particularly by buying copies
from the publishers that paid for their writing or for major
improvements. Meanwhile, try to avoid buying non-free documentation at
all. Check the distribution terms of a manual before you buy it, and
insist that whoever seeks your business must respect your freedom.
Check the history of the book, and try reward the publishers that have
paid or pay the authors to work on it.
The Free Software Foundation maintains a list of free documentation
published by other publishers, at
<https://www.fsf.org/doc/other-free-books.html>.