summaryrefslogtreecommitdiff
path: root/static/openbsd/man3/intro.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 14:02:27 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 14:02:27 -0400
commit6d8bdc65446a704d0750217efd05532fc641ea7d (patch)
tree8ae6d698b3c9801750a8b117b3842fb369872a3a /static/openbsd/man3/intro.3
parent2f467bd7ff8f8db0dafa40426166491d7f57f368 (diff)
docs: OpenBSD Man Pages Added
Diffstat (limited to 'static/openbsd/man3/intro.3')
-rw-r--r--static/openbsd/man3/intro.3527
1 files changed, 527 insertions, 0 deletions
diff --git a/static/openbsd/man3/intro.3 b/static/openbsd/man3/intro.3
new file mode 100644
index 00000000..ee0c5eaf
--- /dev/null
+++ b/static/openbsd/man3/intro.3
@@ -0,0 +1,527 @@
+.\" $OpenBSD: intro.3,v 1.100 2024/05/09 17:57:36 jmc Exp $
+.\" $NetBSD: intro.3,v 1.5 1995/05/10 22:46:24 jtc Exp $
+.\"
+.\" Copyright (c) 1980, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.3 8.1 (Berkeley) 6/5/93
+.\"
+.Dd $Mdocdate: May 9 2024 $
+.Dt INTRO 3
+.Os
+.Sh NAME
+.Nm intro
+.Nd introduction to the C libraries
+.Sh SYNOPSIS
+.Nm cc
+.Op Ar flags
+.Ar
+.Op Fl llibrary
+.Sh DESCRIPTION
+The manual pages in section 3 provide an overview of the C library
+functions, their error returns, and other common definitions and concepts.
+Most of these functions are available from the C library,
+.Em libc .
+Other libraries, such as the math library,
+.Em libm ,
+must be indicated at compile time with the
+.Fl l
+option of the compiler.
+.Pp
+The various libraries (followed by the loader flag):
+.Pp
+.Bl -tag -width "libkvm" -compact
+.It libLLVM Pq Fl lLLVM
+LLVM components in a single library.
+.Pp
+.It libagentx Pq Fl lagentx
+AgentX client library.
+Used for applications to export metrics to AgentX capable snmp daemons.
+See
+.Xr agentx 3 .
+.Pp
+.It libc Pq Fl lc
+Standard C library functions.
+When using the C compiler
+.Xr cc 1 ,
+it is not necessary to supply the loader flag
+.Fl lc
+for these functions.
+There are several
+.Dq libraries
+or groups of functions included inside of libc: the standard I/O routines,
+database routines,
+bit operators,
+string operators,
+character tests and character operators,
+cryptographic routines,
+storage allocation,
+time functions,
+signal handling,
+and more.
+.Pp
+.It libc++ Pq Fl lc++
+LLVM standard C++ library.
+Note: users do not normally have to explicitly link with this library.
+.Pp
+.It libc++abi Pq Fl lc++abi
+LLVM C++ runtime library.
+Note: users do not normally have to explicitly link with this library.
+.Pp
+.It libcbor Pq Fl lcbor
+An implementation of the Concise Binary Object Representation
+.Pq CBOR
+encoding format defined in RFC 7049.
+.Pp
+.It libcrypto Pq Fl lcrypto
+Provides functionality such as symmetric encryption, public key cryptography,
+digests, message authentication codes,
+and certificate handling.
+See
+.Xr crypto 3 .
+.Pp
+.It libcurses Pq Fl lcurses
+.It libncurses Pq Fl lncurses
+.It libncursesw Pq Fl lncursesw
+.It libtermcap Pq Fl ltermcap
+.It libtermlib Pq Fl ltermlib
+Terminal-independent screen management routines for two-dimensional
+non-bitmap display terminals.
+This implementation is
+.Dq new curses
+and is a replacement for
+.Bx 4.2
+classic curses.
+The libraries
+.Em libncurses ,
+.Em libncursesw ,
+.Em libtermcap ,
+and
+.Em libtermlib
+are all hard links to
+.Em libcurses .
+This is for compatibility purposes only;
+new programs should link with
+.Fl lcurses .
+See
+.Xr curses 3
+and
+.Xr termcap 3 .
+.Pp
+.It libedit Pq Fl ledit
+Generic line editing and history functions, similar to those found in
+.Xr sh 1 .
+Functions using the
+.Em libedit
+library must be linked with the
+.Em libcurses
+library, i.e.\&
+.Fl ledit lcurses .
+See
+.Xr editline 3 .
+.Pp
+.It libelf Pq Fl lelf
+Library routines for manipulating ELF objects.
+See
+.Xr elf 3 .
+.Pp
+.It libevent Pq Fl levent
+Provides a mechanism to execute a function when a specific event on a
+file descriptor occurs or after a given time has passed.
+See
+.Xr event 3 .
+.Pp
+.It libexecinfo Pq Fl lexecinfo
+Library providing backtrace functions.
+See
+.Xr backtrace 3 .
+.Pp
+.It libexpat Pq Fl lexpat
+Library routines for parsing XML documents.
+.Pp
+.It libfido2 Pq Fl lfido2
+Library for communication with U2F/FIDO2 devices over USB.
+.Pp
+.It libform Pq Fl lform
+.It libformw Pq Fl lformw
+Terminal-independent facilities for composing form screens on
+character-cell terminals.
+Functions using the
+.Em libform
+library must be linked with the
+.Em libcurses
+library, i.e.\&
+.Fl lform lcurses .
+.Em libformw
+is a hard link to
+.Em libform
+intended for use with
+.Em libncursesw
+wide-character functions.
+See
+.Xr form 3 .
+.Pp
+.It libfuse Pq Fl lfuse
+File system in userland library.
+See
+.Xr fuse_main 3 .
+.Pp
+.It libgcc Pq Fl lgcc
+GCC runtime support,
+including long arithmetic, propolice,
+and language independent exception support.
+Note: users do not normally have to explicitly link with this library.
+.Pp
+.It libiberty Pq Fl liberty
+Collection of subroutines missing in other operating systems,
+as well as the C++ demangler and other functions used by
+the GNU toolchain.
+.Pp
+.It libkeynote Pq Fl lkeynote
+System library for the keynote trust-management system.
+Trust-management systems provide standard, general-purpose mechanisms
+for specifying application security policies and credentials.
+Functions using the libkeynote library must be linked with the
+.Em libm
+and
+.Em libcrypto
+libraries, i.e.\&
+.Fl lkeynote lm lcrypto .
+See
+.Xr keynote 3
+and
+.Xr keynote 4 .
+.Pp
+.It libkvm Pq Fl lkvm
+Kernel memory interface library.
+Provides a uniform interface for accessing kernel virtual memory images,
+including live systems and crash dumps.
+See
+.Xr kvm 3 .
+.Pp
+.It libl Pq Fl l\&l
+.It libfl Pq Fl lfl
+The library for
+.Xr lex 1 ,
+a lexical analyzer generator.
+The
+.Em libfl
+library
+is a hard link to
+.Em libl .
+.Pp
+.It libm Pq Fl lm
+Mathematical functions which comprise the C math library,
+.Em libm .
+.Pp
+.It libmenu Pq Fl lmenu
+.It libmenuw Pq Fl lmenuw
+Terminal-independent facilities for composing menu systems on
+character-cell terminals.
+Functions using the
+.Em libmenu
+library must be linked with the
+.Em libcurses
+library, i.e.\&
+.Fl lmenu lcurses .
+.Em libmenuw
+is a hard link to
+.Em libmenu
+intended for use with
+.Em libncursesw
+wide-character functions.
+See
+.Xr menu 3 .
+.Pp
+.It libossaudio Pq Fl lossaudio
+Provides an emulation of the OSS
+.Pq Linux
+audio interface.
+This is used only for porting programs.
+See
+.Xr ossaudio 3 .
+.Pp
+.It libpanel Pq Fl lpanel
+.It libpanelw Pq Fl lpanelw
+Terminal-independent facilities for stacked windows on
+character-cell terminals.
+Functions using the
+.Em libpanel
+library must be linked with the
+.Em libcurses
+library, i.e.\&
+.Fl lpanel lcurses .
+.Em libpanelw
+is a hard link to
+.Em libpanel
+intended for use with
+.Em libncursesw
+wide-character functions.
+See
+.Xr panel 3 .
+.Pp
+.It libpcap Pq Fl lpcap
+Packet capture library.
+All packets on the network, even those destined for other hosts,
+are accessible through this library.
+See
+.Xr pcap_open_live 3 .
+.Pp
+.It libperl Pq Fl lperl
+Support routines for
+.Xr perl 1 .
+.Pp
+.It libpthread Pq Fl lpthread
+.St -p1003.1-2001
+threads API.
+See
+.Xr pthreads 3 .
+.Pp
+.It libradius Pq Fl lradius
+Support routines for the RADIUS library.
+See
+.Xr radius_new_request_packet 3 .
+.Pp
+.It libreadline Pq Fl lreadline
+Command line editing interface.
+See
+.Xr readline 3 .
+.Pp
+.It librpcsvc Pq Fl lrpcsvc
+Generated by
+.Xr rpcgen 1 ,
+containing stub functions for many common
+.Xr rpc 3
+protocols.
+.Pp
+.It libskey Pq Fl lskey
+Support library for the S/Key one time password
+.Pq OTP
+authentication toolkit.
+See
+.Xr skey 3 .
+.Pp
+.It libsndio Pq Fl lsndio
+Library for
+.Xr audio 4
+hardware and the
+.Xr sndiod 8
+audio server.
+See
+.Xr sio_open 3 .
+.Pp
+.It libssl Pq Fl lssl
+Implements the Transport Layer Security
+.Pq TLS
+protocol, the successor to the Secure Sockets Layer (SSL) protocol.
+See
+.Xr ssl 3 .
+.Pp
+.It libstdc++ Pq Fl lstdc++
+GNU standard C++ library.
+Note: users do not normally have to explicitly link with this library.
+.Pp
+.It libsupc++ Pq Fl lsupc++
+GNU C++ runtime library.
+Note: users do not normally have to explicitly link with this library.
+.Pp
+.It libtls Pq Fl ltls
+A Transport Layer Security library with a clean and easy to use interface.
+See
+.Xr tls_init 3 .
+.Pp
+.It libusbhid Pq Fl lusbhid
+Routines to extract data from USB Human Interface Devices
+.Pq HIDs .
+See
+.Xr usbhid 3 .
+.Pp
+.It libutil Pq Fl lutil
+System utility functions.
+.Pp
+.It liby Pq Fl ly
+The library for
+.Xr yacc 1 ,
+an LALR parser generator.
+.Pp
+.It libz Pq Fl lz
+General purpose data compression library.
+The functions in this library are documented in
+.Xr compress 3 .
+The data format is described in RFCs 1950 \- 1952.
+.El
+.Pp
+Platform-specific libraries:
+.Bl -tag -width "libkvm"
+.It libalpha Pq Fl lalpha
+Alpha I/O and memory access functions.
+See
+.Xr inb 2 .
+.It libamd64 Pq Fl lamd64
+AMD64 I/O and memory access functions.
+See
+.Xr amd64_iopl 2 .
+.It libi386 Pq Fl li386
+i386 I/O and memory access functions.
+See
+.Xr i386_iopl 2 .
+.El
+.Sh LIBRARY TYPES
+The system libraries are located in
+.Pa /usr/lib .
+Typically, a library will have a number of variants:
+.Bd -unfilled -offset indent
+libc.a
+libc_p.a
+libc.so.30.1
+.Ed
+.Pp
+Libraries with an
+.Sq .a
+suffix are static.
+When a program is linked against a library, all the library code
+will be linked into the binary.
+This means the binary can be run even when the libraries are unavailable.
+However, it can be inefficient with memory usage.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to link statically by specifying the
+.Fl static
+flag.
+.Pp
+Libraries with a
+.Sq _p.a
+suffix are profiling libraries.
+They contain extra information suitable for analysing programs,
+such as execution speed and call counts.
+This in turn can be interpreted by utilities such as
+.Xr gprof 1 .
+The C compiler,
+.Xr cc 1 ,
+can be instructed to generate profiling code,
+or to link with profiling libraries, by specifying the
+.Fl pg
+flag.
+.Pp
+Libraries with a
+.Sq .so.X.Y
+suffix are dynamic libraries.
+When code is compiled dynamically, the library code that the application needs
+is not linked into the binary.
+Instead, data structures are added containing information about which dynamic
+libraries to link with.
+When the binary is executed, the run-time linker
+.Xr ld.so 1
+reads these data structures, and loads them at a virtual address using the
+.Xr mmap 2
+system call.
+.Pp
+.Sq X
+represents the major number of the library, and
+.Sq Y
+represents the minor number.
+In general, a binary will be able to use a dynamic library with a differing
+minor number, but the major numbers must match.
+In the example above, a binary linked with minor number
+.Sq 3
+would be linkable against libc.so.30.1,
+while a binary linked with major number
+.Sq 31
+would not.
+.Pp
+The advantages of dynamic libraries are that multiple instances of the same
+program can share address space, and the physical size of the binary is
+smaller.
+The disadvantage is the added complexity that comes with loading the
+libraries dynamically, and the extra time taken to load the libraries.
+Of course, if the libraries are not available, the binary will be unable
+to execute.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to link dynamically by specifying the
+.Fl shared
+flag, although on systems that support it, this will be the default and
+need not be specified.
+.Pp
+Shared libraries, as well as static libraries on architectures which produce
+position-independent executables
+.Pq PIEs
+by default, contain position-independent code
+.Pq PIC .
+Normally, compilers produce relocatable code.
+Relocatable code needs to be modified at run-time, depending on where in
+memory it is to be run.
+PIC code does not need to be modified at run-time, but is less efficient than
+relocatable code.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to generate PIC code by specifying the
+.Fl fpic
+or
+.Fl fPIC
+flags.
+.Pp
+With the exception of dynamic libraries, libraries are generated using the
+.Xr ar 1
+utility.
+The libraries contain an index to the contents of the library,
+stored within the library itself.
+The index lists each symbol defined by a member of a library that is a
+relocatable object file.
+This speeds up linking to the library, and allows routines in the library
+to call each other regardless of their placement within the library.
+The index is created by
+.Xr ranlib 1
+and can be viewed using
+.Xr nm 1 .
+.Pp
+The building of dynamic libraries can be prevented by setting the variable
+.Dv NOPIC
+in
+.Pa /etc/mk.conf .
+The building of profiling versions of libraries can
+be prevented by setting the variable
+.Dv NOPROFILE
+in
+.Pa /etc/mk.conf .
+See
+.Xr mk.conf 5
+for more details.
+.Sh SEE ALSO
+.Xr ar 1 ,
+.Xr cc 1 ,
+.Xr gprof 1 ,
+.Xr ld 1 ,
+.Xr ld.so 1 ,
+.Xr nm 1 ,
+.Xr ranlib 1 ,
+.Xr mk.conf 5
+.Sh HISTORY
+An
+.Nm
+manual for section 3 first appeared in
+.At v7 .