This is libc.info, produced by makeinfo version 5.2 from libc.texinfo.
|
|
This file documents the GNU C Library.
|
|
This is ‘The GNU C Library Reference Manual’, for version 2.25.
|
|
Copyright © 1993–2017 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 FSF’s 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.
|
* CHILD_MAX: (libc)General Limits.
|
* CIGNORE: (libc)Control Modes.
|
* CLK_TCK: (libc)Processor Time.
|
* CLOCAL: (libc)Control Modes.
|
* CLOCKS_PER_SEC: (libc)CPU Time.
|
* COLL_WEIGHTS_MAX: (libc)Utility Limits.
|
* CPU_CLR: (libc)CPU Affinity.
|
* 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.
|
* DES_FAILED: (libc)DES Encryption.
|
* 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.
|
* 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_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_NOLINK: (libc)Open-time Flags.
|
* O_NONBLOCK: (libc)Open-time Flags.
|
* O_NONBLOCK: (libc)Operating Modes.
|
* O_NOTRANS: (libc)Open-time Flags.
|
* 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_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.
|
* P_tmpdir: (libc)Temporary Files.
|
* RAND_MAX: (libc)ISO Random.
|
* RE_DUP_MAX: (libc)General Limits.
|
* RLIM_INFINITY: (libc)Limits on Resources.
|
* 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.
|
* 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.
|
* _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.
|
* __va_copy: (libc)Argument Macros.
|
* _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.
|
* acosh: (libc)Hyperbolic Functions.
|
* acoshf: (libc)Hyperbolic Functions.
|
* acoshl: (libc)Hyperbolic Functions.
|
* acosl: (libc)Inverse Trig Functions.
|
* addmntent: (libc)mtab.
|
* addseverity: (libc)Adding Severity Classes.
|
* adjtime: (libc)High-Resolution Calendar.
|
* adjtimex: (libc)High-Resolution Calendar.
|
* 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.
|
* 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.
|
* asinh: (libc)Hyperbolic Functions.
|
* asinhf: (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.
|
* atan2l: (libc)Inverse Trig Functions.
|
* atan: (libc)Inverse Trig Functions.
|
* atanf: (libc)Inverse Trig Functions.
|
* atanh: (libc)Hyperbolic Functions.
|
* atanhf: (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.
|
* cabsl: (libc)Absolute Value.
|
* cacos: (libc)Inverse Trig Functions.
|
* cacosf: (libc)Inverse Trig Functions.
|
* cacosh: (libc)Hyperbolic Functions.
|
* cacoshf: (libc)Hyperbolic Functions.
|
* cacoshl: (libc)Hyperbolic Functions.
|
* cacosl: (libc)Inverse Trig Functions.
|
* calloc: (libc)Allocating Cleared Space.
|
* canonicalize: (libc)FP Bit Twiddling.
|
* canonicalize_file_name: (libc)Symbolic Links.
|
* canonicalizef: (libc)FP Bit Twiddling.
|
* canonicalizel: (libc)FP Bit Twiddling.
|
* carg: (libc)Operations on Complex.
|
* cargf: (libc)Operations on Complex.
|
* cargl: (libc)Operations on Complex.
|
* casin: (libc)Inverse Trig Functions.
|
* casinf: (libc)Inverse Trig Functions.
|
* casinh: (libc)Hyperbolic Functions.
|
* casinhf: (libc)Hyperbolic Functions.
|
* casinhl: (libc)Hyperbolic Functions.
|
* casinl: (libc)Inverse Trig Functions.
|
* catan: (libc)Inverse Trig Functions.
|
* catanf: (libc)Inverse Trig Functions.
|
* catanh: (libc)Hyperbolic Functions.
|
* catanhf: (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.
|
* cbc_crypt: (libc)DES Encryption.
|
* cbrt: (libc)Exponents and Logarithms.
|
* cbrtf: (libc)Exponents and Logarithms.
|
* cbrtl: (libc)Exponents and Logarithms.
|
* ccos: (libc)Trig Functions.
|
* ccosf: (libc)Trig Functions.
|
* ccosh: (libc)Hyperbolic Functions.
|
* ccoshf: (libc)Hyperbolic Functions.
|
* ccoshl: (libc)Hyperbolic Functions.
|
* ccosl: (libc)Trig Functions.
|
* ceil: (libc)Rounding Functions.
|
* ceilf: (libc)Rounding Functions.
|
* ceill: (libc)Rounding Functions.
|
* cexp: (libc)Exponents and Logarithms.
|
* cexpf: (libc)Exponents and Logarithms.
|
* cexpl: (libc)Exponents and Logarithms.
|
* cfgetispeed: (libc)Line Speed.
|
* cfgetospeed: (libc)Line Speed.
|
* cfmakeraw: (libc)Noncanonical Input.
|
* cfree: (libc)Freeing after Malloc.
|
* 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.
|
* cimagl: (libc)Operations on Complex.
|
* clearenv: (libc)Environment Access.
|
* clearerr: (libc)Error Recovery.
|
* clearerr_unlocked: (libc)Error Recovery.
|
* clock: (libc)CPU Time.
|
* clog10: (libc)Exponents and Logarithms.
|
* clog10f: (libc)Exponents and Logarithms.
|
* clog10l: (libc)Exponents and Logarithms.
|
* clog: (libc)Exponents and Logarithms.
|
* clogf: (libc)Exponents and Logarithms.
|
* clogl: (libc)Exponents and Logarithms.
|
* close: (libc)Opening and Closing Files.
|
* closedir: (libc)Reading/Closing Directory.
|
* closelog: (libc)closelog.
|
* confstr: (libc)String Parameters.
|
* conj: (libc)Operations on Complex.
|
* conjf: (libc)Operations on Complex.
|
* conjl: (libc)Operations on Complex.
|
* connect: (libc)Connecting.
|
* copysign: (libc)FP Bit Twiddling.
|
* copysignf: (libc)FP Bit Twiddling.
|
* copysignl: (libc)FP Bit Twiddling.
|
* cos: (libc)Trig Functions.
|
* cosf: (libc)Trig Functions.
|
* cosh: (libc)Hyperbolic Functions.
|
* coshf: (libc)Hyperbolic Functions.
|
* coshl: (libc)Hyperbolic Functions.
|
* cosl: (libc)Trig Functions.
|
* cpow: (libc)Exponents and Logarithms.
|
* cpowf: (libc)Exponents and Logarithms.
|
* cpowl: (libc)Exponents and Logarithms.
|
* cproj: (libc)Operations on Complex.
|
* cprojf: (libc)Operations on Complex.
|
* cprojl: (libc)Operations on Complex.
|
* creal: (libc)Operations on Complex.
|
* crealf: (libc)Operations on Complex.
|
* creall: (libc)Operations on Complex.
|
* creat64: (libc)Opening and Closing Files.
|
* creat: (libc)Opening and Closing Files.
|
* crypt: (libc)crypt.
|
* crypt_r: (libc)crypt.
|
* csin: (libc)Trig Functions.
|
* csinf: (libc)Trig Functions.
|
* csinh: (libc)Hyperbolic Functions.
|
* csinhf: (libc)Hyperbolic Functions.
|
* csinhl: (libc)Hyperbolic Functions.
|
* csinl: (libc)Trig Functions.
|
* csqrt: (libc)Exponents and Logarithms.
|
* csqrtf: (libc)Exponents and Logarithms.
|
* csqrtl: (libc)Exponents and Logarithms.
|
* ctan: (libc)Trig Functions.
|
* ctanf: (libc)Trig Functions.
|
* ctanh: (libc)Hyperbolic Functions.
|
* ctanhf: (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.
|
* dcgettext: (libc)Translation with gettext.
|
* dcngettext: (libc)Advanced gettext functions.
|
* des_setparity: (libc)DES Encryption.
|
* dgettext: (libc)Translation with gettext.
|
* difftime: (libc)Elapsed Time.
|
* dirfd: (libc)Opening a Directory.
|
* dirname: (libc)Finding Tokens in a String.
|
* div: (libc)Integer Division.
|
* 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.
|
* dup2: (libc)Duplicating Descriptors.
|
* dup: (libc)Duplicating Descriptors.
|
* ecb_crypt: (libc)DES Encryption.
|
* ecvt: (libc)System V Number Conversion.
|
* ecvt_r: (libc)System V Number Conversion.
|
* encrypt: (libc)DES Encryption.
|
* encrypt_r: (libc)DES Encryption.
|
* 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.
|
* erfcl: (libc)Special Functions.
|
* erff: (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.
|
* exp10l: (libc)Exponents and Logarithms.
|
* exp2: (libc)Exponents and Logarithms.
|
* exp2f: (libc)Exponents and Logarithms.
|
* exp2l: (libc)Exponents and Logarithms.
|
* exp: (libc)Exponents and Logarithms.
|
* expf: (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.
|
* expm1l: (libc)Exponents and Logarithms.
|
* fabs: (libc)Absolute Value.
|
* fabsf: (libc)Absolute Value.
|
* fabsl: (libc)Absolute Value.
|
* 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.
|
* fdiml: (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.
|
* fflush: (libc)Flushing Buffers.
|
* fflush_unlocked: (libc)Flushing Buffers.
|
* 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.
|
* floorl: (libc)Rounding Functions.
|
* fma: (libc)Misc FP Arithmetic.
|
* fmaf: (libc)Misc FP Arithmetic.
|
* fmal: (libc)Misc FP Arithmetic.
|
* fmax: (libc)Misc FP Arithmetic.
|
* fmaxf: (libc)Misc FP Arithmetic.
|
* fmaxl: (libc)Misc FP Arithmetic.
|
* fmaxmag: (libc)Misc FP Arithmetic.
|
* fmaxmagf: (libc)Misc FP Arithmetic.
|
* fmaxmagl: (libc)Misc FP Arithmetic.
|
* fmemopen: (libc)String Streams.
|
* fmin: (libc)Misc FP Arithmetic.
|
* fminf: (libc)Misc FP Arithmetic.
|
* fminl: (libc)Misc FP Arithmetic.
|
* fminmag: (libc)Misc FP Arithmetic.
|
* fminmagf: (libc)Misc FP Arithmetic.
|
* fminmagl: (libc)Misc FP Arithmetic.
|
* fmod: (libc)Remainder Functions.
|
* fmodf: (libc)Remainder Functions.
|
* fmodl: (libc)Remainder Functions.
|
* fmtmsg: (libc)Printing Formatted Messages.
|
* 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.
|
* frexpl: (libc)Normalization Functions.
|
* fromfp: (libc)Rounding Functions.
|
* fromfpf: (libc)Rounding Functions.
|
* fromfpl: (libc)Rounding Functions.
|
* fromfpx: (libc)Rounding Functions.
|
* fromfpxf: (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.
|
* fstat64: (libc)Reading Attributes.
|
* fstat: (libc)Reading Attributes.
|
* 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.
|
* getcwd: (libc)Working Directory.
|
* getdate: (libc)General Time String Parsing.
|
* getdate_r: (libc)General Time String Parsing.
|
* getdelim: (libc)Line Input.
|
* 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.
|
* 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.
|
* gettimeofday: (libc)High-Resolution Calendar.
|
* 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.
|
* 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.
|
* 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.
|
* j0l: (libc)Special Functions.
|
* j1: (libc)Special Functions.
|
* j1f: (libc)Special Functions.
|
* j1l: (libc)Special Functions.
|
* jn: (libc)Special Functions.
|
* jnf: (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.
|
* 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.
|
* lgammaf_r: (libc)Special Functions.
|
* lgammal: (libc)Special Functions.
|
* lgammal_r: (libc)Special Functions.
|
* link: (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.
|
* llogbl: (libc)Exponents and Logarithms.
|
* llrint: (libc)Rounding Functions.
|
* llrintf: (libc)Rounding Functions.
|
* llrintl: (libc)Rounding Functions.
|
* llround: (libc)Rounding Functions.
|
* llroundf: (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.
|
* log10l: (libc)Exponents and Logarithms.
|
* log1p: (libc)Exponents and Logarithms.
|
* log1pf: (libc)Exponents and Logarithms.
|
* log1pl: (libc)Exponents and Logarithms.
|
* log2: (libc)Exponents and Logarithms.
|
* log2f: (libc)Exponents and Logarithms.
|
* log2l: (libc)Exponents and Logarithms.
|
* log: (libc)Exponents and Logarithms.
|
* logb: (libc)Exponents and Logarithms.
|
* logbf: (libc)Exponents and Logarithms.
|
* logbl: (libc)Exponents and Logarithms.
|
* logf: (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.
|
* lrintl: (libc)Rounding Functions.
|
* lround: (libc)Rounding Functions.
|
* lroundf: (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.
|
* mallinfo: (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.
|
* memfrob: (libc)Trivial Encryption.
|
* 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.
|
* 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.
|
* modfl: (libc)Rounding Functions.
|
* mount: (libc)Mount-Unmount-Remount.
|
* mprobe: (libc)Heap Consistency Checking.
|
* 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.
|
* 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.
|
* nanl: (libc)FP Bit Twiddling.
|
* nanosleep: (libc)Sleeping.
|
* nearbyint: (libc)Rounding Functions.
|
* nearbyintf: (libc)Rounding Functions.
|
* nearbyintl: (libc)Rounding Functions.
|
* nextafter: (libc)FP Bit Twiddling.
|
* nextafterf: (libc)FP Bit Twiddling.
|
* nextafterl: (libc)FP Bit Twiddling.
|
* nextdown: (libc)FP Bit Twiddling.
|
* nextdownf: (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.
|
* 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)High Accuracy Clock.
|
* ntp_gettime: (libc)High Accuracy Clock.
|
* 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.
|
* popen: (libc)Pipe to a Subprocess.
|
* posix_fallocate64: (libc)Storage Allocation.
|
* posix_fallocate: (libc)Storage Allocation.
|
* posix_memalign: (libc)Aligned Memory Blocks.
|
* pow10: (libc)Exponents and Logarithms.
|
* pow10f: (libc)Exponents and Logarithms.
|
* pow10l: (libc)Exponents and Logarithms.
|
* pow: (libc)Exponents and Logarithms.
|
* powf: (libc)Exponents and Logarithms.
|
* powl: (libc)Exponents and Logarithms.
|
* pread64: (libc)I/O Primitives.
|
* pread: (libc)I/O Primitives.
|
* printf: (libc)Formatted Output Functions.
|
* printf_size: (libc)Predefined Printf Handlers.
|
* printf_size_info: (libc)Predefined Printf Handlers.
|
* psignal: (libc)Signal Messages.
|
* 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_setattr_default_np: (libc)Default Thread Attributes.
|
* pthread_setspecific: (libc)Thread-specific Data.
|
* 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.
|
* 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.
|
* 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.
|
* 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.
|
* rintl: (libc)Rounding Functions.
|
* rmdir: (libc)Deleting Files.
|
* round: (libc)Rounding Functions.
|
* roundeven: (libc)Rounding Functions.
|
* roundevenf: (libc)Rounding Functions.
|
* roundevenl: (libc)Rounding Functions.
|
* roundf: (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.
|
* scalblnl: (libc)Normalization Functions.
|
* scalbn: (libc)Normalization Functions.
|
* scalbnf: (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_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.
|
* setkey: (libc)DES Encryption.
|
* setkey_r: (libc)DES Encryption.
|
* 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.
|
* setpayloadl: (libc)FP Bit Twiddling.
|
* setpayloadsig: (libc)FP Bit Twiddling.
|
* setpayloadsigf: (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)High-Resolution Calendar.
|
* 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.
|
* sigaction: (libc)Advanced Signal Handling.
|
* sigaddset: (libc)Signal Sets.
|
* sigaltstack: (libc)Signal Stack.
|
* sigblock: (libc)BSD Signal Handling.
|
* sigdelset: (libc)Signal Sets.
|
* 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.
|
* sincosl: (libc)Trig Functions.
|
* sinf: (libc)Trig Functions.
|
* sinh: (libc)Hyperbolic Functions.
|
* sinhf: (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.
|
* 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)Simple Calendar 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.
|
* strfmon: (libc)Formatting Numbers.
|
* strfromd: (libc)Printing of Floats.
|
* strfromf: (libc)Printing of Floats.
|
* strfroml: (libc)Printing of Floats.
|
* strfry: (libc)strfry.
|
* 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.
|
* 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.
|
* sysctl: (libc)System Parameters.
|
* syslog: (libc)syslog; vsyslog.
|
* system: (libc)Running a Command.
|
* sysv_signal: (libc)Basic Signal Handling.
|
* tan: (libc)Trig Functions.
|
* tanf: (libc)Trig Functions.
|
* tanh: (libc)Hyperbolic Functions.
|
* tanhf: (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.
|
* tgammal: (libc)Special Functions.
|
* time: (libc)Simple Calendar 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.
|
* totalorderl: (libc)FP Comparison Functions.
|
* totalordermag: (libc)FP Comparison Functions.
|
* totalordermagf: (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.
|
* truncl: (libc)Rounding Functions.
|
* tsearch: (libc)Tree Search Function.
|
* ttyname: (libc)Is It a Terminal.
|
* ttyname_r: (libc)Is It a Terminal.
|
* twalk: (libc)Tree Search Function.
|
* tzset: (libc)Time Zone Functions.
|
* ufromfp: (libc)Rounding Functions.
|
* ufromfpf: (libc)Rounding Functions.
|
* ufromfpl: (libc)Rounding Functions.
|
* ufromfpx: (libc)Rounding Functions.
|
* ufromfpxf: (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.
|
* vtimes: (libc)Resource Usage.
|
* 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.
|
* 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.
|
* y0l: (libc)Special Functions.
|
* y1: (libc)Special Functions.
|
* y1f: (libc)Special Functions.
|
* y1l: (libc)Special Functions.
|
* yn: (libc)Special Functions.
|
* ynf: (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
|
<http://sourceware.org/glibc/wiki/FAQ>. It answers common questions and
|
describes problems you may experience with compilation and installation.
|
|
Features can be added to the GNU C Library via "add-on" bundles.
|
These are separate tar files, which you unpack into the top level of the
|
source tree. Then you give ‘configure’ the ‘--enable-add-ons’ option to
|
activate them, and they will be compiled into the library.
|
|
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 you’ve got it
|
compiled.
|
* Tools for Compilation:: You’ll need these first.
|
* Linux:: Specific advice for GNU/Linux systems.
|
* Reporting Bugs:: So they’ll 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, you’d type
|
|
$ ../glibc-VERSION/configure ARGS…
|
|
Please note that even though you’re 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 set the CC and CFLAGS variables in the
|
environment when running ‘configure’. CC selects the C compiler that
|
will be used, and CFLAGS sets optimization options for the compiler.
|
|
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 kernel’s 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-add-ons[=LIST]’
|
Specify add-on packages to include in the build. If this option is
|
specified with no list, it enables all the add-on packages it finds
|
in the main source directory; this is the default behavior. You
|
may specify an explicit list of add-ons to use in LIST, separated
|
by spaces or commas (if you use spaces, remember to quote them from
|
the shell). Each add-on in LIST can be an absolute directory name
|
or can be a directory name relative to the main source directory,
|
or relative to the build directory (that is, the current working
|
directory). For example,
|
‘--enable-add-ons=nptl,../glibc-libidn-VERSION’.
|
|
‘--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 can’t build a shared libc with old binutils.
|
|
‘--without-fp’
|
Use this option if your computer lacks hardware floating-point
|
support and your operating system does not emulate an FPU.
|
|
‘--disable-shared’
|
Don’t build shared libraries even if it is possible. Not all
|
systems support shared libraries; you need ELF support and
|
(currently) the GNU linker.
|
|
‘--disable-profile’
|
Don’t build libraries with profiling information. You may want to
|
use this option if you don’t 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-lock-elision=yes’
|
Enable lock elision for pthread mutexes by default.
|
|
‘--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. 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. It is not built by default because
|
systems using the Linux kernel are commonly built with the ‘devpts’
|
filesystem enabled and mounted at ‘/dev/pts’, which manages
|
pseudo-terminal ownership automatically. By using
|
‘--enable-pt_chown’, you may build ‘pt_chown’ and install it setuid
|
and owned by ‘root’. The use of ‘pt_chown’ introduces additional
|
security risks to the system and you should enable it only if you
|
understand and accept those risks.
|
|
‘--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 is an experimental feature and affects
|
startup time and is thus disabled by default. This option can take
|
the following values:
|
|
‘no’
|
This is the default if the option is not passed to configure.
|
This disables tunables.
|
|
‘yes’
|
This is the default if the option is passed to configure.
|
This enables tunables and selects the default frontend
|
(currently ‘valstring’).
|
|
‘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’.
|
|
‘--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. You’ll probably need the ‘--with-headers’
|
option too, and you may have to override CONFIGURE’s 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
|
CFLAGS.
|
|
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 aren’t. 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.
|
|
The GNU C Library pretty printers come with their own set of scripts
|
for testing, which run together with the rest of the testsuite through
|
‘make check’. These scripts require the following tools to run
|
successfully:
|
|
• Python 2.7.6/3.4.3 or later
|
|
Python is required for running the printers’ test scripts.
|
|
• PExpect 4.0
|
|
The 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.
|
|
• GDB 7.8 or later with support for Python 2.7.6/3.4.3 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 doesn’t imply that GDB supports it, nor that your
|
system’s Python and GDB’s have the same version.
|
|
If these tools are absent, 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.
|
|
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: ‘CC=TARGET-gcc configure TARGET’. 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.
|
|
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.
|
|
|
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 don’t need this program.
|
|
After installation you might want to configure the timezone and
|
locale installation of your system. The GNU C Library comes with a
|
locale database which gets configured with ‘localedef’. For example, to
|
set up a German locale with name ‘de_DE’, simply issue the command
|
‘localedef -i de_DE -f ISO-8859-1 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 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’ 3.79 or newer
|
|
You need the latest version of GNU ‘make’. Modifying the GNU C
|
Library to work with other ‘make’ programs would be so difficult
|
that we recommend you port GNU ‘make’ instead. *Really.* We
|
recommend GNU ‘make’ version 3.79. All earlier versions have
|
severe bugs or lack features.
|
|
• GCC 4.7 or newer
|
|
GCC 4.7 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 6.3 is the newest compiler
|
verified to work to build the GNU C Library.
|
|
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.22 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.25 is the newest
|
verified to work to build the GNU C Library.
|
|
• 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.0 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 4.1.3 is the newest verified to work to build the GNU C
|
Library.
|
|
• Perl 5
|
|
Perl is not required, but it is used if present to test the
|
installation. We may decide to use it elsewhere in the future.
|
|
• 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.2.2 is the newest verified to work to build the GNU C Library.
|
|
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
|
|
If you wish to regenerate the ‘yacc’ parser code in the ‘intl’
|
subdirectory you will need
|
|
• GNU ‘bison’ 2.7 or later
|
|
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. 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.
|
|
|
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 don’t, 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 <http://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 you’ve found a bug, make sure it’s 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 don’t, 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 you’re sure you’ve 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 <http://www.gnu.org/software/libc/bugs.html>.
|
|
If you are not sure how a function should behave, and this manual
|
doesn’t tell you, that’s a bug in the manual. Report that too! If the
|
function’s 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.
|
* Porting:: How to port the GNU C Library to
|
a new machine or operating system.
|
|
|
File: libc.info, Node: Source Layout, Next: Porting, 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 don’t 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
|
---------------------------------------------------
|
|
It’s 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 won’t 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 file’s 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: Porting, Prev: Source Layout, Up: Maintenance
|
|
D.2 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 needn’t
|
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 that’s 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 you’re 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 aren’t
|
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
|
system’s 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.2.1 Layout of the ‘sysdeps’ Directory Hierarchy
|
-------------------------------------------------
|
|
A GNU configuration name has three parts: the CPU type, the
|
manufacturer’s 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’ (with the ‘crypt’ and
|
‘linuxthreads’ add-on):
|
|
sysdeps/i386/elf
|
crypt/sysdeps/unix
|
linuxthreads/sysdeps/unix/sysv/linux
|
linuxthreads/sysdeps/pthread
|
linuxthreads/sysdeps/unix/sysv
|
linuxthreads/sysdeps/unix
|
linuxthreads/sysdeps/i386/i686
|
linuxthreads/sysdeps/i386
|
linuxthreads/sysdeps/pthread/no-cmpxchg
|
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.2.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
|
|
|
File: libc.info, Node: PowerPC, 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 processor’s 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 program’s 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: 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.
|
|
• 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.
|
|
• Jeff Bailey for his maintainership of the HPPA architecture.
|
|
• Petr Baudis for bug fixes and testing.
|
|
• Stephen R. van den Berg for contributing a highly-optimized
|
‘strstr’ function.
|
|
• Ondrej Bilka 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.
|
|
• 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:
|
• 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
|
|
• Wilco Dijkstra for various fixes.
|
|
• 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.
|
|
• 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.
|
|
• 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 DES encryption function ‘crypt’ and related
|
functions.
|
|
• Wolfram Gloger for contributing the memory allocation functions
|
functions ‘malloc’, ‘realloc’ and ‘free’ and related code.
|
|
• 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.
|
|
• Richard Henderson for the port to Linux on Alpha
|
(‘alpha-ANYTHING-linux’).
|
|
• David Holsgrove for the port to Linux on MicroBlaze.
|
|
• 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 and
|
for his direction as part of the GNU C Library steering committee.
|
|
• 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’).
|
|
• 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.
|
|
• 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, and many bug fixes.
|
|
• Luis Machado for optimized functions on PowerPC.
|
|
• David J. MacKenzie for his contribution to the ‘getopt’ function
|
and writing the ‘tar.h’ header.
|
|
• 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’).
|
|
• 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’).
|
|
• 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.
|
|
• Joseph S. Myers for numerous bug fixes for the libm functions, for
|
his maintainership of the ARM and MIPS architectures, 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.
|
|
• Szabolcs Nagy for various fixes.
|
|
• Will Newton for contributing some optimized string functions and
|
pointer encryption support for ARM and various fixes.
|
|
• Carlos O’Donell 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
|
implementating 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 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’)
|
and for his direction as part of the GNU C Library steering
|
committee.
|
|
• 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.
|
|
• Andrew Senkevich for contributing vector math function
|
implementations for x86.
|
|
• Carlos Eduardo Seo for optimized functions on PowerPC.
|
|
• Marcus Shawcroft for contributing the AArch64 port.
|
|
• 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.
|
|
• Richard Stallman for his contribution to the ‘getopt’ function.
|
|
• Alfred M. Szmidt for various fixes.
|
|
• Ian Lance Taylor for contributing the port to the MIPS DECStation
|
running Ultrix 4 (‘mips-dec-ultrix4’).
|
|
• Samuel Thibault for improving the Hurd port.
|
|
• Tim Waugh for the implementation of the POSIX.2 ‘wordexp’ function
|
family.
|
|
• Zack Weinberg for the ‘explicit_bzero’ implementation and for
|
various fixes.
|
|
• Eric Youngdale for implementing versioning of objects on the symbol
|
level.
|
|
• Adhemerval Zanella for optimized functions on PowerPC and various
|
fixes.
|
|
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 Berkeley’s.
|
|
• 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 4.9.5, 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 Sun’s 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 wasn’t 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 author’s
|
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 don’t obstruct the community’s 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 don’t
|
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 you’re 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
|
<http://www.fsf.org/doc/other-free-books.html>.
|
|
|
File: libc.info, Node: Copying, Next: Documentation License, Prev: Free Manuals, Up: Top
|
|
Appendix H GNU Lesser General Public License
|
********************************************
|
|
Version 2.1, February 1999
|
|
Copyright © 1991, 1999 Free Software Foundation, Inc.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
Everyone is permitted to copy and distribute verbatim copies
|
of this license document, but changing it is not allowed.
|
|
[This is the first released version of the Lesser GPL. It also counts
|
as the successor of the GNU Library Public License, version 2, hence the
|
version number 2.1.]
|
|
Preamble
|
--------
|
|
The licenses for most software are designed to take away your freedom to
|
share and change it. By contrast, the GNU General Public Licenses are
|
intended to guarantee your freedom to share and change free software—to
|
make sure the software is free for all its users.
|
|
This license, the Lesser General Public License, applies to some
|
specially designated software—typically libraries—of the Free Software
|
Foundation and other authors who decide to use it. You can use it too,
|
but we suggest you first think carefully about whether this license or
|
the ordinary General Public License is the better strategy to use in any
|
particular case, based on the explanations below.
|
|
When we speak of free software, we are referring to freedom of use,
|
not price. Our General Public Licenses are designed to make sure that
|
you have the freedom to distribute copies of free software (and charge
|
for this service if you wish); that you receive source code or can get
|
it if you want it; that you can change the software and use pieces of it
|
in new free programs; and that you are informed that you can do these
|
things.
|
|
To protect your rights, we need to make restrictions that forbid
|
distributors to deny you these rights or to ask you to surrender these
|
rights. These restrictions translate to certain responsibilities for
|
you if you distribute copies of the library or if you modify it.
|
|
For example, if you distribute copies of the library, whether gratis
|
or for a fee, you must give the recipients all the rights that we gave
|
you. You must make sure that they, too, receive or can get the source
|
code. If you link other code with the library, you must provide
|
complete object files to the recipients, so that they can relink them
|
with the library after making changes to the library and recompiling it.
|
And you must show them these terms so they know their rights.
|
|
We protect your rights with a two-step method: (1) we copyright the
|
library, and (2) we offer you this license, which gives you legal
|
permission to copy, distribute and/or modify the library.
|
|
To protect each distributor, we want to make it very clear that there
|
is no warranty for the free library. Also, if the library is modified
|
by someone else and passed on, the recipients should know that what they
|
have is not the original version, so that the original author’s
|
reputation will not be affected by problems that might be introduced by
|
others.
|
|
Finally, software patents pose a constant threat to the existence of
|
any free program. We wish to make sure that a company cannot
|
effectively restrict the users of a free program by obtaining a
|
restrictive license from a patent holder. Therefore, we insist that any
|
patent license obtained for a version of the library must be consistent
|
with the full freedom of use specified in this license.
|
|
Most GNU software, including some libraries, is covered by the
|
ordinary GNU General Public License. This license, the GNU Lesser
|
General Public License, applies to certain designated libraries, and is
|
quite different from the ordinary General Public License. We use this
|
license for certain libraries in order to permit linking those libraries
|
into non-free programs.
|
|
When a program is linked with a library, whether statically or using
|
a shared library, the combination of the two is legally speaking a
|
combined work, a derivative of the original library. The ordinary
|
General Public License therefore permits such linking only if the entire
|
combination fits its criteria of freedom. The Lesser General Public
|
License permits more lax criteria for linking other code with the
|
library.
|
|
We call this license the "Lesser" General Public License because it
|
does _Less_ to protect the user’s freedom than the ordinary General
|
Public License. It also provides other free software developers Less of
|
an advantage over competing non-free programs. These disadvantages are
|
the reason we use the ordinary General Public License for many
|
libraries. However, the Lesser license provides advantages in certain
|
special circumstances.
|
|
For example, on rare occasions, there may be a special need to
|
encourage the widest possible use of a certain library, so that it
|
becomes a de-facto standard. To achieve this, non-free programs must be
|
allowed to use the library. A more frequent case is that a free library
|
does the same job as widely used non-free libraries. In this case,
|
there is little to gain by limiting the free library to free software
|
only, so we use the Lesser General Public License.
|
|
In other cases, permission to use a particular library in non-free
|
programs enables a greater number of people to use a large body of free
|
software. For example, permission to use the GNU C Library in non-free
|
programs enables many more people to use the whole GNU operating system,
|
as well as its variant, the GNU/Linux operating system.
|
|
Although the Lesser General Public License is Less protective of the
|
users’ freedom, it does ensure that the user of a program that is linked
|
with the Library has the freedom and the wherewithal to run that program
|
using a modified version of the Library.
|
|
The precise terms and conditions for copying, distribution and
|
modification follow. Pay close attention to the difference between a
|
“work based on the library” and a “work that uses the library”. The
|
former contains code derived from the library, whereas the latter must
|
be combined with the library in order to run.
|
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
---------------------------------------------------------------
|
|
0. This License Agreement applies to any software library or other
|
program which contains a notice placed by the copyright holder or
|
other authorized party saying it may be distributed under the terms
|
of this Lesser General Public License (also called “this License”).
|
Each licensee is addressed as “you”.
|
|
A “library” means a collection of software functions and/or data
|
prepared so as to be conveniently linked with application programs
|
(which use some of those functions and data) to form executables.
|
|
The “Library”, below, refers to any such software library or work
|
which has been distributed under these terms. A “work based on the
|
Library” means either the Library or any derivative work under
|
copyright law: that is to say, a work containing the Library or a
|
portion of it, either verbatim or with modifications and/or
|
translated straightforwardly into another language. (Hereinafter,
|
translation is included without limitation in the term
|
“modification”.)
|
|
“Source code” for a work means the preferred form of the work for
|
making modifications to it. For a library, complete source code
|
means all the source code for all modules it contains, plus any
|
associated interface definition files, plus the scripts used to
|
control compilation and installation of the library.
|
|
Activities other than copying, distribution and modification are
|
not covered by this License; they are outside its scope. The act
|
of running a program using the Library is not restricted, and
|
output from such a program is covered only if its contents
|
constitute a work based on the Library (independent of the use of
|
the Library in a tool for writing it). Whether that is true
|
depends on what the Library does and what the program that uses the
|
Library does.
|
|
1. You may copy and distribute verbatim copies of the Library’s
|
complete source code as you receive it, in any medium, provided
|
that you conspicuously and appropriately publish on each copy an
|
appropriate copyright notice and disclaimer of warranty; keep
|
intact all the notices that refer to this License and to the
|
absence of any warranty; and distribute a copy of this License
|
along with the Library.
|
|
You may charge a fee for the physical act of transferring a copy,
|
and you may at your option offer warranty protection in exchange
|
for a fee.
|
|
2. You may modify your copy or copies of the Library or any portion of
|
it, thus forming a work based on the Library, and copy and
|
distribute such modifications or work under the terms of Section 1
|
above, provided that you also meet all of these conditions:
|
|
a. The modified work must itself be a software library.
|
|
b. You must cause the files modified to carry prominent notices
|
stating that you changed the files and the date of any change.
|
|
c. You must cause the whole of the work to be licensed at no
|
charge to all third parties under the terms of this License.
|
|
d. If a facility in the modified Library refers to a function or
|
a table of data to be supplied by an application program that
|
uses the facility, other than as an argument passed when the
|
facility is invoked, then you must make a good faith effort to
|
ensure that, in the event an application does not supply such
|
function or table, the facility still operates, and performs
|
whatever part of its purpose remains meaningful.
|
|
(For example, a function in a library to compute square roots
|
has a purpose that is entirely well-defined independent of the
|
application. Therefore, Subsection 2d requires that any
|
application-supplied function or table used by this function
|
must be optional: if the application does not supply it, the
|
square root function must still compute square roots.)
|
|
These requirements apply to the modified work as a whole. If
|
identifiable sections of that work are not derived from the
|
Library, and can be reasonably considered independent and separate
|
works in themselves, then this License, and its terms, do not apply
|
to those sections when you distribute them as separate works. But
|
when you distribute the same sections as part of a whole which is a
|
work based on the Library, the distribution of the whole must be on
|
the terms of this License, whose permissions for other licensees
|
extend to the entire whole, and thus to each and every part
|
regardless of who wrote it.
|
|
Thus, it is not the intent of this section to claim rights or
|
contest your rights to work written entirely by you; rather, the
|
intent is to exercise the right to control the distribution of
|
derivative or collective works based on the Library.
|
|
In addition, mere aggregation of another work not based on the
|
Library with the Library (or with a work based on the Library) on a
|
volume of a storage or distribution medium does not bring the other
|
work under the scope of this License.
|
|
3. You may opt to apply the terms of the ordinary GNU General Public
|
License instead of this License to a given copy of the Library. To
|
do this, you must alter all the notices that refer to this License,
|
so that they refer to the ordinary GNU General Public License,
|
version 2, instead of to this License. (If a newer version than
|
version 2 of the ordinary GNU General Public License has appeared,
|
then you can specify that version instead if you wish.) Do not
|
make any other change in these notices.
|
|
Once this change is made in a given copy, it is irreversible for
|
that copy, so the ordinary GNU General Public License applies to
|
all subsequent copies and derivative works made from that copy.
|
|
This option is useful when you wish to copy part of the code of the
|
Library into a program that is not a library.
|
|
4. You may copy and distribute the Library (or a portion or derivative
|
of it, under Section 2) in object code or executable form under the
|
terms of Sections 1 and 2 above provided that you accompany it with
|
the complete corresponding machine-readable source code, which must
|
be distributed under the terms of Sections 1 and 2 above on a
|
medium customarily used for software interchange.
|
|
If distribution of object code is made by offering access to copy
|
from a designated place, then offering equivalent access to copy
|
the source code from the same place satisfies the requirement to
|
distribute the source code, even though third parties are not
|
compelled to copy the source along with the object code.
|
|
5. A program that contains no derivative of any portion of the
|
Library, but is designed to work with the Library by being compiled
|
or linked with it, is called a “work that uses the Library”. Such
|
a work, in isolation, is not a derivative work of the Library, and
|
therefore falls outside the scope of this License.
|
|
However, linking a “work that uses the Library” with the Library
|
creates an executable that is a derivative of the Library (because
|
it contains portions of the Library), rather than a “work that uses
|
the library”. The executable is therefore covered by this License.
|
Section 6 states terms for distribution of such executables.
|
|
When a “work that uses the Library” uses material from a header
|
file that is part of the Library, the object code for the work may
|
be a derivative work of the Library even though the source code is
|
not. Whether this is true is especially significant if the work
|
can be linked without the Library, or if the work is itself a
|
library. The threshold for this to be true is not precisely
|
defined by law.
|
|
If such an object file uses only numerical parameters, data
|
structure layouts and accessors, and small macros and small inline
|
functions (ten lines or less in length), then the use of the object
|
file is unrestricted, regardless of whether it is legally a
|
derivative work. (Executables containing this object code plus
|
portions of the Library will still fall under Section 6.)
|
|
Otherwise, if the work is a derivative of the Library, you may
|
distribute the object code for the work under the terms of Section
|
6. Any executables containing that work also fall under Section 6,
|
whether or not they are linked directly with the Library itself.
|
|
6. As an exception to the Sections above, you may also combine or link
|
a “work that uses the Library” with the Library to produce a work
|
containing portions of the Library, and distribute that work under
|
terms of your choice, provided that the terms permit modification
|
of the work for the customer’s own use and reverse engineering for
|
debugging such modifications.
|
|
You must give prominent notice with each copy of the work that the
|
Library is used in it and that the Library and its use are covered
|
by this License. You must supply a copy of this License. If the
|
work during execution displays copyright notices, you must include
|
the copyright notice for the Library among them, as well as a
|
reference directing the user to the copy of this License. Also,
|
you must do one of these things:
|
|
a. Accompany the work with the complete corresponding
|
machine-readable source code for the Library including
|
whatever changes were used in the work (which must be
|
distributed under Sections 1 and 2 above); and, if the work is
|
an executable linked with the Library, with the complete
|
machine-readable “work that uses the Library”, as object code
|
and/or source code, so that the user can modify the Library
|
and then relink to produce a modified executable containing
|
the modified Library. (It is understood that the user who
|
changes the contents of definitions files in the Library will
|
not necessarily be able to recompile the application to use
|
the modified definitions.)
|
|
b. Use a suitable shared library mechanism for linking with the
|
Library. A suitable mechanism is one that (1) uses at run
|
time a copy of the library already present on the user’s
|
computer system, rather than copying library functions into
|
the executable, and (2) will operate properly with a modified
|
version of the library, if the user installs one, as long as
|
the modified version is interface-compatible with the version
|
that the work was made with.
|
|
c. Accompany the work with a written offer, valid for at least
|
three years, to give the same user the materials specified in
|
Subsection 6a, above, for a charge no more than the cost of
|
performing this distribution.
|
|
d. If distribution of the work is made by offering access to copy
|
from a designated place, offer equivalent access to copy the
|
above specified materials from the same place.
|
|
e. Verify that the user has already received a copy of these
|
materials or that you have already sent this user a copy.
|
|
For an executable, the required form of the “work that uses the
|
Library” must include any data and utility programs needed for
|
reproducing the executable from it. However, as a special
|
exception, the materials to be distributed need not include
|
anything that is normally distributed (in either source or binary
|
form) with the major components (compiler, kernel, and so on) of
|
the operating system on which the executable runs, unless that
|
component itself accompanies the executable.
|
|
It may happen that this requirement contradicts the license
|
restrictions of other proprietary libraries that do not normally
|
accompany the operating system. Such a contradiction means you
|
cannot use both them and the Library together in an executable that
|
you distribute.
|
|
7. You may place library facilities that are a work based on the
|
Library side-by-side in a single library together with other
|
library facilities not covered by this License, and distribute such
|
a combined library, provided that the separate distribution of the
|
work based on the Library and of the other library facilities is
|
otherwise permitted, and provided that you do these two things:
|
|
a. Accompany the combined library with a copy of the same work
|
based on the Library, uncombined with any other library
|
facilities. This must be distributed under the terms of the
|
Sections above.
|
|
b. Give prominent notice with the combined library of the fact
|
that part of it is a work based on the Library, and explaining
|
where to find the accompanying uncombined form of the same
|
work.
|
|
8. You may not copy, modify, sublicense, link with, or distribute the
|
Library except as expressly provided under this License. Any
|
attempt otherwise to copy, modify, sublicense, link with, or
|
distribute the Library is void, and will automatically terminate
|
your rights under this License. However, parties who have received
|
copies, or rights, from you under this License will not have their
|
licenses terminated so long as such parties remain in full
|
compliance.
|
|
9. You are not required to accept this License, since you have not
|
signed it. However, nothing else grants you permission to modify
|
or distribute the Library or its derivative works. These actions
|
are prohibited by law if you do not accept this License.
|
Therefore, by modifying or distributing the Library (or any work
|
based on the Library), you indicate your acceptance of this License
|
to do so, and all its terms and conditions for copying,
|
distributing or modifying the Library or works based on it.
|
|
10. Each time you redistribute the Library (or any work based on the
|
Library), the recipient automatically receives a license from the
|
original licensor to copy, distribute, link with or modify the
|
Library subject to these terms and conditions. You may not impose
|
any further restrictions on the recipients’ exercise of the rights
|
granted herein. You are not responsible for enforcing compliance
|
by third parties with this License.
|
|
11. If, as a consequence of a court judgment or allegation of patent
|
infringement or for any other reason (not limited to patent
|
issues), conditions are imposed on you (whether by court order,
|
agreement or otherwise) that contradict the conditions of this
|
License, they do not excuse you from the conditions of this
|
License. If you cannot distribute so as to satisfy simultaneously
|
your obligations under this License and any other pertinent
|
obligations, then as a consequence you may not distribute the
|
Library at all. For example, if a patent license would not permit
|
royalty-free redistribution of the Library by all those who receive
|
copies directly or indirectly through you, then the only way you
|
could satisfy both it and this License would be to refrain entirely
|
from distribution of the Library.
|
|
If any portion of this section is held invalid or unenforceable
|
under any particular circumstance, the balance of the section is
|
intended to apply, and the section as a whole is intended to apply
|
in other circumstances.
|
|
It is not the purpose of this section to induce you to infringe any
|
patents or other property right claims or to contest validity of
|
any such claims; this section has the sole purpose of protecting
|
the integrity of the free software distribution system which is
|
implemented by public license practices. Many people have made
|
generous contributions to the wide range of software distributed
|
through that system in reliance on consistent application of that
|
system; it is up to the author/donor to decide if he or she is
|
willing to distribute software through any other system and a
|
licensee cannot impose that choice.
|
|
This section is intended to make thoroughly clear what is believed
|
to be a consequence of the rest of this License.
|
|
12. If the distribution and/or use of the Library is restricted in
|
certain countries either by patents or by copyrighted interfaces,
|
the original copyright holder who places the Library under this
|
License may add an explicit geographical distribution limitation
|
excluding those countries, so that distribution is permitted only
|
in or among countries not thus excluded. In such case, this
|
License incorporates the limitation as if written in the body of
|
this License.
|
|
13. The Free Software Foundation may publish revised and/or new
|
versions of the Lesser General Public License from time to time.
|
Such new versions will be similar in spirit to the present version,
|
but may differ in detail to address new problems or concerns.
|
|
Each version is given a distinguishing version number. If the
|
Library specifies a version number of this License which applies to
|
it and “any later version”, you have the option of following the
|
terms and conditions either of that version or of any later version
|
published by the Free Software Foundation. If the Library does not
|
specify a license version number, you may choose any version ever
|
published by the Free Software Foundation.
|
|
14. If you wish to incorporate parts of the Library into other free
|
programs whose distribution conditions are incompatible with these,
|
write to the author to ask for permission. For software which is
|
copyrighted by the Free Software Foundation, write to the Free
|
Software Foundation; we sometimes make exceptions for this. Our
|
decision will be guided by the two goals of preserving the free
|
status of all derivatives of our free software and of promoting the
|
sharing and reuse of software generally.
|
|
NO WARRANTY
|
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
|
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
|
AND/OR OTHER PARTIES PROVIDE THE LIBRARY “AS IS” WITHOUT WARRANTY
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE
|
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
|
OR CORRECTION.
|
|
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
|
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
|
OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY
|
OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
END OF TERMS AND CONDITIONS
|
---------------------------
|
|
How to Apply These Terms to Your New Libraries
|
----------------------------------------------
|
|
If you develop a new library, and you want it to be of the greatest
|
possible use to the public, we recommend making it free software that
|
everyone can redistribute and change. You can do so by permitting
|
redistribution under these terms (or, alternatively, under the terms of
|
the ordinary General Public License).
|
|
To apply these terms, attach the following notices to the library.
|
It is safest to attach them to the start of each source file to most
|
effectively convey the exclusion of warranty; and each file should have
|
at least the “copyright” line and a pointer to where the full notice is
|
found.
|
|
ONE LINE TO GIVE THE LIBRARY'S NAME AND AN IDEA OF WHAT IT DOES.
|
Copyright (C) YEAR NAME OF AUTHOR
|
|
This library is free software; you can redistribute it and/or modify it
|
under the terms of the GNU Lesser General Public License as published by
|
the Free Software Foundation; either version 2.1 of the License, or (at
|
your option) any later version.
|
|
This library is distributed in the hope that it will be useful, but
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
Lesser General Public License for more details.
|
|
You should have received a copy of the GNU Lesser General Public
|
License along with this library; if not, write to the Free Software
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
USA.
|
|
Also add information on how to contact you by electronic and paper
|
mail.
|
|
You should also get your employer (if you work as a programmer) or
|
your school, if any, to sign a “copyright disclaimer” for the library,
|
if necessary. Here is a sample; alter the names:
|
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the library
|
`Frob' (a library for tweaking knobs) written by James Random Hacker.
|
|
SIGNATURE OF TY COON, 1 April 1990
|
Ty Coon, President of Vice
|
|
That’s all there is to it!
|