summaryrefslogtreecommitdiffstats
path: root/man8
diff options
context:
space:
mode:
authorAlejandro Colomar <alx.manpages@gmail.com>2022-09-09 14:15:08 +0200
committerAlejandro Colomar <alx.manpages@gmail.com>2022-09-09 14:15:08 +0200
commit96e72ec1fbadd13cbcbc2b263540e4f5e9e09d7c (patch)
tree70686b943e33a6e939ad265acb7ddfef70b91f32 /man8
parent8f4ed6463206e8ede815c72085c7305dafc2e4fc (diff)
Revert "src.mk, All pages: Move man* to man/"
This reverts commit 70ac1c4785fc1e158ab2349a962dba2526bf4fbc. Link: <https://lore.kernel.org/linux-man/YxcV4h+Xn7cd6+q2@pevik/T/> Reported-by: Petr Vorel <pvorel@suse.cz> Reported-by: Jakub Wilk <jwilk@jwilk.net> Cc: Stefan Puiu <stefan.puiu@gmail.com> Signed-off-by: Alex Colomar <alx.manpages@gmail.com>
Diffstat (limited to 'man8')
-rw-r--r--man8/iconvconfig.886
-rw-r--r--man8/intro.829
-rw-r--r--man8/ld-linux.81
-rw-r--r--man8/ld-linux.so.81
-rw-r--r--man8/ld.so.8843
-rw-r--r--man8/ldconfig.8203
-rw-r--r--man8/nscd.884
-rw-r--r--man8/sln.844
-rw-r--r--man8/tzselect.853
-rw-r--r--man8/zdump.8232
-rw-r--r--man8/zic.8787
11 files changed, 2363 insertions, 0 deletions
diff --git a/man8/iconvconfig.8 b/man8/iconvconfig.8
new file mode 100644
index 000000000..1ed559135
--- /dev/null
+++ b/man8/iconvconfig.8
@@ -0,0 +1,86 @@
+.\" Copyright (C) 2014 Marko Myllynen <myllynen@redhat.com>
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.TH ICONVCONFIG 8 2021-08-27 "Linux man-pages (unreleased)"
+.SH NAME
+iconvconfig \- create iconv module configuration cache
+.SH SYNOPSIS
+.B iconvconfig
+.RI [ options ]
+.RI [ directory ]...
+.SH DESCRIPTION
+The
+.BR iconv (3)
+function internally uses
+.I gconv
+modules to convert to and from a character set.
+A configuration file is used to determine the needed modules
+for a conversion.
+Loading and parsing such a configuration file would slow down
+programs that use
+.BR iconv (3),
+so a caching mechanism is employed.
+.PP
+The
+.B iconvconfig
+program reads iconv module configuration files and writes
+a fast-loading gconv module configuration cache file.
+.PP
+In addition to the system provided gconv modules, the user can specify
+custom gconv module directories with the environment variable
+.BR GCONV_PATH .
+However, iconv module configuration caching is used only when
+the environment variable
+.B GCONV_PATH
+is not set.
+.SH OPTIONS
+.TP
+.B "\-\-nostdlib"
+Do not search the system default gconv directory,
+only the directories provided on the command line.
+.TP
+.BI \-o " outputfile" ", \-\-output=" outputfile
+Use
+.I outputfile
+for output instead of the system default cache location.
+.TP
+.BI \-\-prefix= pathname
+Set the prefix to be prepended to the system pathnames.
+See FILES, below.
+By default, the prefix is empty.
+Setting the prefix to
+.IR foo ,
+the gconv module configuration would be read from
+.I foo/usr/lib/gconv/gconv\-modules
+and the cache would be written to
+.IR foo/usr/lib/gconv/gconv\-modules.cache .
+.TP
+.BR \-? ", " \-\-help
+Print a usage summary and exit.
+.TP
+.B "\-\-usage"
+Print a short usage summary and exit.
+.TP
+.BR \-V ", " \-\-version
+Print the version number, license, and disclaimer of warranty for
+.BR iconv .
+.SH EXIT STATUS
+Zero on success, nonzero on errors.
+.SH FILES
+.TP
+.I /usr/lib/gconv
+Usual default gconv module path.
+.TP
+.I /usr/lib/gconv/gconv\-modules
+Usual system default gconv module configuration file.
+.TP
+.I /usr/lib/gconv/gconv\-modules.cache
+Usual system gconv module configuration cache.
+.PP
+Depending on the architecture,
+the above files may instead be located at directories with the path prefix
+.IR /usr/lib64 .
+.SH SEE ALSO
+.BR iconv (1),
+.BR iconv (3)
diff --git a/man8/intro.8 b/man8/intro.8
new file mode 100644
index 000000000..d73c76e58
--- /dev/null
+++ b/man8/intro.8
@@ -0,0 +1,29 @@
+.\" Copyright (c) 1993 Michael Haardt (michael@moria.de),
+.\" Fri Apr 2 11:32:09 MET DST 1993
+.\" and Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.\" Modified Sat Jul 24 17:35:48 1993 by Rik Faith (faith@cs.unc.edu)
+.\" 2007-10-23 mtk: minor rewrites, and added paragraph on exit status
+.\"
+.TH INTRO 8 2007-10-23 "Linux man-pages (unreleased)"
+.SH NAME
+intro \- introduction to administration and privileged commands
+.SH DESCRIPTION
+Section 8 of the manual describes commands
+which either can be or are used only by the superuser,
+like system-administration commands, daemons,
+and hardware-related commands.
+.PP
+As with the commands described in Section 1, the commands described
+in this section terminate with an exit status that indicates
+whether the command succeeded or failed.
+See
+.BR intro (1)
+for more information.
+.SH NOTES
+.SS Authors and copyright conditions
+Look at the header of the manual page source for the author(s) and copyright
+conditions.
+Note that these can be different from page to page!
diff --git a/man8/ld-linux.8 b/man8/ld-linux.8
new file mode 100644
index 000000000..c57562024
--- /dev/null
+++ b/man8/ld-linux.8
@@ -0,0 +1 @@
+.so man8/ld.so.8
diff --git a/man8/ld-linux.so.8 b/man8/ld-linux.so.8
new file mode 100644
index 000000000..c57562024
--- /dev/null
+++ b/man8/ld-linux.so.8
@@ -0,0 +1 @@
+.so man8/ld.so.8
diff --git a/man8/ld.so.8 b/man8/ld.so.8
new file mode 100644
index 000000000..644df56fb
--- /dev/null
+++ b/man8/ld.so.8
@@ -0,0 +1,843 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This is in the public domain
+.\" %%%LICENSE_END
+.\" Various parts:
+.\" Copyright (C) 2007-9, 2013, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.TH LD.SO 8 2021-08-27 "Linux man-pages (unreleased)"
+.SH NAME
+ld.so, ld\-linux.so \- dynamic linker/loader
+.SH SYNOPSIS
+The dynamic linker can be run either indirectly by running some
+dynamically linked program or shared object
+(in which case no command-line options
+to the dynamic linker can be passed and, in the ELF case, the dynamic linker
+which is stored in the
+.B .interp
+section of the program is executed) or directly by running:
+.PP
+.I /lib/ld\-linux.so.*
+[OPTIONS] [PROGRAM [ARGUMENTS]]
+.SH DESCRIPTION
+The programs
+.B ld.so
+and
+.B ld\-linux.so*
+find and load the shared objects (shared libraries) needed by a program,
+prepare the program to run, and then run it.
+.PP
+Linux binaries require dynamic linking (linking at run time)
+unless the
+.B \-static
+option was given to
+.BR ld (1)
+during compilation.
+.PP
+The program
+.B ld.so
+handles a.out binaries, a binary format used long ago.
+The program
+.B ld\-linux.so*
+(\fI/lib/ld\-linux.so.1\fP for libc5, \fI/lib/ld\-linux.so.2\fP for glibc2)
+handles binaries that are in the more modern ELF format.
+Both programs have the same behavior, and use the same
+support files and programs
+.RB ( ldd (1),
+.BR ldconfig (8),
+and
+.IR /etc/ld.so.conf ).
+.PP
+When resolving shared object dependencies,
+the dynamic linker first inspects each dependency
+string to see if it contains a slash (this can occur if
+a shared object pathname containing slashes was specified at link time).
+If a slash is found, then the dependency string is interpreted as
+a (relative or absolute) pathname,
+and the shared object is loaded using that pathname.
+.PP
+If a shared object dependency does not contain a slash,
+then it is searched for in the following order:
+.IP o 3
+Using the directories specified in the
+DT_RPATH dynamic section attribute
+of the binary if present and DT_RUNPATH attribute does not exist.
+Use of DT_RPATH is deprecated.
+.IP o
+Using the environment variable
+.BR LD_LIBRARY_PATH ,
+unless the executable is being run in secure-execution mode (see below),
+in which case this variable is ignored.
+.IP o
+Using the directories specified in the
+DT_RUNPATH dynamic section attribute
+of the binary if present.
+Such directories are searched only to
+find those objects required by DT_NEEDED (direct dependencies) entries
+and do not apply to those objects' children,
+which must themselves have their own DT_RUNPATH entries.
+This is unlike DT_RPATH, which is applied
+to searches for all children in the dependency tree.
+.IP o
+From the cache file
+.IR /etc/ld.so.cache ,
+which contains a compiled list of candidate shared objects previously found
+in the augmented library path.
+If, however, the binary was linked with the
+.B \-z nodeflib
+linker option, shared objects in the default paths are skipped.
+Shared objects installed in hardware capability directories (see below)
+are preferred to other shared objects.
+.IP o
+In the default path
+.IR /lib ,
+and then
+.IR /usr/lib .
+(On some 64-bit architectures, the default paths for 64-bit shared objects are
+.IR /lib64 ,
+and then
+.IR /usr/lib64 .)
+If the binary was linked with the
+.B \-z nodeflib
+linker option, this step is skipped.
+.\"
+.SS Dynamic string tokens
+In several places, the dynamic linker expands dynamic string tokens:
+.IP o 3
+In the environment variables
+.BR LD_LIBRARY_PATH ,
+.BR LD_PRELOAD ,
+and
+.BR LD_AUDIT ,
+.IP o 3
+inside the values of the dynamic section tags
+.BR DT_NEEDED ,
+.BR DT_RPATH ,
+.BR DT_RUNPATH ,
+.BR DT_AUDIT ,
+and
+.B DT_DEPAUDIT
+of ELF binaries,
+.IP o 3
+in the arguments to the
+.B ld.so
+command line options
+.BR \-\-audit ,
+.BR \-\-library\-path ,
+and
+.B \-\-preload
+(see below), and
+.IP o 3
+in the filename arguments to the
+.BR dlopen (3)
+and
+.BR dlmopen (3)
+functions.
+.PP
+The substituted tokens are as follows:
+.TP
+.IR $ORIGIN " (or equivalently " ${ORIGIN} )
+This expands to
+the directory containing the program or shared object.
+Thus, an application located in
+.I somedir/app
+could be compiled with
+.IP
+.in +4n
+.EX
+gcc \-Wl,\-rpath,\(aq$ORIGIN/../lib\(aq
+.EE
+.in
+.IP
+so that it finds an associated shared object in
+.I somedir/lib
+no matter where
+.I somedir
+is located in the directory hierarchy.
+This facilitates the creation of "turn-key" applications that
+do not need to be installed into special directories,
+but can instead be unpacked into any directory
+and still find their own shared objects.
+.TP
+.IR $LIB " (or equivalently " ${LIB} )
+This expands to
+.I lib
+or
+.I lib64
+depending on the architecture
+(e.g., on x86-64, it expands to
+.I lib64
+and
+on x86-32, it expands to
+.IR lib ).
+.TP
+.IR $PLATFORM " (or equivalently " ${PLATFORM} )
+This expands to a string corresponding to the processor type
+of the host system (e.g., "x86_64").
+On some architectures, the Linux kernel doesn't provide a platform
+string to the dynamic linker.
+The value of this string is taken from the
+.B AT_PLATFORM
+value in the auxiliary vector (see
+.BR getauxval (3)).
+.\" To get an idea of the places that $PLATFORM would match,
+.\" look at the output of the following:
+.\"
+.\" mkdir /tmp/d
+.\" LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
+.\"
+.\" ld.so lets names be abbreviated, so $O will work for $ORIGIN;
+.\" Don't do this!!
+.PP
+Note that the dynamic string tokens have to be quoted properly when
+set from a shell,
+to prevent their expansion as shell or environment variables.
+.SH OPTIONS
+.TP
+.BR \-\-argv0 " \fIstring\fP (since glibc 2.33)"
+Set
+.I argv[0]
+to the value
+.I string
+before running the program.
+.TP
+.BI \-\-audit " list"
+Use objects named in
+.I list
+as auditors.
+The objects in
+.I list
+are delimited by colons.
+.TP
+.B \-\-inhibit\-cache
+Do not use
+.IR /etc/ld.so.cache .
+.TP
+.BI \-\-library\-path " path"
+Use
+.I path
+instead of
+.B LD_LIBRARY_PATH
+environment variable setting (see below).
+The names
+.IR ORIGIN ,
+.IR LIB ,
+and
+.I PLATFORM
+are interpreted as for the
+.B LD_LIBRARY_PATH
+environment variable.
+.TP
+.BI \-\-inhibit\-rpath " list"
+Ignore RPATH and RUNPATH information in object names in
+.IR list .
+This option is ignored when running in secure-execution mode (see below).
+The objects in
+.I list
+are delimited by colons or spaces.
+.TP
+.B \-\-list
+List all dependencies and how they are resolved.
+.TP
+.BR \-\-list\-tunables " (since 2.33)"
+Print the names and values of all tunables,
+along with the minimum and maximum allowed values.
+.TP
+.BR \-\-preload " \fIlist\fP (since glibc 2.30)"
+Preload the objects specified in
+.IR list .
+The objects in
+.I list
+are delimited by colons or spaces.
+The objects are preloaded as explained in the description of the
+.B LD_PRELOAD
+environment variable below.
+.IP
+By contrast with
+.BR LD_PRELOAD ,
+the
+.B \-\-preload
+option provides a way to perform preloading for a single executable
+without affecting preloading performed in any child process that executes
+a new program.
+.TP
+.B \-\-verify
+Verify that program is dynamically linked and this dynamic linker can handle
+it.
+.SH ENVIRONMENT
+Various environment variables influence the operation of the dynamic linker.
+.\"
+.SS Secure-execution mode
+For security reasons,
+if the dynamic linker determines that a binary should be
+run in secure-execution mode,
+the effects of some environment variables are voided or modified,
+and furthermore those environment variables are stripped from the environment,
+so that the program does not even see the definitions.
+Some of these environment variables affect the operation of
+the dynamic linker itself, and are described below.
+Other environment variables treated in this way include:
+.BR GCONV_PATH ,
+.BR GETCONF_DIR ,
+.BR HOSTALIASES ,
+.BR LOCALDOMAIN ,
+.BR LOCPATH ,
+.BR MALLOC_TRACE ,
+.BR NIS_PATH ,
+.BR NLSPATH ,
+.BR RESOLV_HOST_CONF ,
+.BR RES_OPTIONS ,
+.BR TMPDIR ,
+and
+.BR TZDIR .
+.PP
+A binary is executed in secure-execution mode if the
+.B AT_SECURE
+entry in the auxiliary vector (see
+.BR getauxval (3))
+has a nonzero value.
+This entry may have a nonzero value for various reasons, including:
+.IP * 3
+The process's real and effective user IDs differ,
+or the real and effective group IDs differ.
+This typically occurs as a result of executing
+a set-user-ID or set-group-ID program.
+.IP *
+A process with a non-root user ID executed a binary that
+conferred capabilities to the process.
+.IP *
+A nonzero value may have been set by a Linux Security Module.
+.\"
+.SS Environment variables
+Among the more important environment variables are the following:
+.TP
+.BR LD_ASSUME_KERNEL " (since glibc 2.2.3)"
+Each shared object can inform the dynamic linker of the minimum kernel ABI
+version that it requires.
+(This requirement is encoded in an ELF note section that is viewable via
+.I readelf\~\-n
+as a section labeled
+.BR NT_GNU_ABI_TAG .)
+At run time,
+the dynamic linker determines the ABI version of the running kernel and
+will reject loading shared objects that specify minimum ABI versions
+that exceed that ABI version.
+.IP
+.B LD_ASSUME_KERNEL
+can be used to
+cause the dynamic linker to assume that it is running on a system with
+a different kernel ABI version.
+For example, the following command line causes the
+dynamic linker to assume it is running on Linux 2.2.5 when loading
+the shared objects required by
+.IR myprog :
+.IP
+.in +4n
+.EX
+$ \fBLD_ASSUME_KERNEL=2.2.5 ./myprog\fP
+.EE
+.in
+.IP
+On systems that provide multiple versions of a shared object
+(in different directories in the search path) that have
+different minimum kernel ABI version requirements,
+.B LD_ASSUME_KERNEL
+can be used to select the version of the object that is used
+(dependent on the directory search order).
+.IP
+Historically, the most common use of the
+.B LD_ASSUME_KERNEL
+feature was to manually select the older
+LinuxThreads POSIX threads implementation on systems that provided both
+LinuxThreads and NPTL
+(which latter was typically the default on such systems);
+see
+.BR pthreads (7).
+.TP
+.BR LD_BIND_NOW " (since glibc 2.1.1)"
+If set to a nonempty string,
+causes the dynamic linker to resolve all symbols
+at program startup instead of deferring function call resolution to the point
+when they are first referenced.
+This is useful when using a debugger.
+.TP
+.B LD_LIBRARY_PATH
+A list of directories in which to search for
+ELF libraries at execution time.
+The items in the list are separated by either colons or semicolons,
+and there is no support for escaping either separator.
+A zero-length directory name indicates the current working directory.
+.IP
+This variable is ignored in secure-execution mode.
+.IP
+Within the pathnames specified in
+.BR LD_LIBRARY_PATH ,
+the dynamic linker expands the tokens
+.IR $ORIGIN ,
+.IR $LIB ,
+and
+.I $PLATFORM
+(or the versions using curly braces around the names)
+as described above in
+.IR "Dynamic string tokens" .
+Thus, for example,
+the following would cause a library to be searched for in either the
+.I lib
+or
+.I lib64
+subdirectory below the directory containing the program to be executed:
+.IP
+.in +4n
+.EX
+$ \fBLD_LIBRARY_PATH=\(aq$ORIGIN/$LIB\(aq prog\fP
+.EE
+.in
+.IP
+(Note the use of single quotes, which prevent expansion of
+.I $ORIGIN
+and
+.I $LIB
+as shell variables!)
+.TP
+.B LD_PRELOAD
+A list of additional, user-specified, ELF shared
+objects to be loaded before all others.
+This feature can be used to selectively override functions
+in other shared objects.
+.IP
+The items of the list can be separated by spaces or colons,
+and there is no support for escaping either separator.
+The objects are searched for using the rules given under DESCRIPTION.
+Objects are searched for and added to the link map in the left-to-right
+order specified in the list.
+.IP
+In secure-execution mode,
+preload pathnames containing slashes are ignored.
+Furthermore, shared objects are preloaded only
+from the standard search directories and only
+if they have set-user-ID mode bit enabled (which is not typical).
+.IP
+Within the names specified in the
+.B LD_PRELOAD
+list, the dynamic linker understands the tokens
+.IR $ORIGIN ,
+.IR $LIB ,
+and
+.I $PLATFORM
+(or the versions using curly braces around the names)
+as described above in
+.IR "Dynamic string tokens" .
+(See also the discussion of quoting under the description of
+.BR LD_LIBRARY_PATH .)
+.\" Tested with the following:
+.\"
+.\" LD_PRELOAD='$LIB/libmod.so' LD_LIBRARY_PATH=. ./prog
+.\"
+.\" which will preload the libmod.so in 'lib' or 'lib64', using it
+.\" in preference to the version in '.'.
+.IP
+There are various methods of specifying libraries to be preloaded,
+and these are handled in the following order:
+.RS
+.IP (1) 4
+The
+.B LD_PRELOAD
+environment variable.
+.IP (2)
+The
+.B \-\-preload
+command-line option when invoking the dynamic linker directly.
+.IP (3)
+The
+.I /etc/ld.so.preload
+file (described below).
+.RE
+.TP
+.B LD_TRACE_LOADED_OBJECTS
+If set (to any value), causes the program to list its dynamic
+dependencies, as if run by
+.BR ldd (1),
+instead of running normally.
+.PP
+Then there are lots of more or less obscure variables,
+many obsolete or only for internal use.
+.TP
+.BR LD_AUDIT " (since glibc 2.4)"
+A list of user-specified, ELF shared objects
+to be loaded before all others in a separate linker namespace
+(i.e., one that does not intrude upon the normal symbol bindings that
+would occur in the process)
+These objects can be used to audit the operation of the dynamic linker.
+The items in the list are colon-separated,
+and there is no support for escaping the separator.
+.IP
+.B LD_AUDIT
+is ignored in secure-execution mode.
+.IP
+The dynamic linker will notify the audit
+shared objects at so-called auditing checkpoints\(emfor example,
+loading a new shared object, resolving a symbol,
+or calling a symbol from another shared object\(emby
+calling an appropriate function within the audit shared object.
+For details, see
+.BR rtld\-audit (7).
+The auditing interface is largely compatible with that provided on Solaris,
+as described in its
+.IR "Linker and Libraries Guide" ,
+in the chapter
+.IR "Runtime Linker Auditing Interface" .
+.IP
+Within the names specified in the
+.B LD_AUDIT
+list, the dynamic linker understands the tokens
+.IR $ORIGIN ,
+.IR $LIB ,
+and
+.I $PLATFORM
+(or the versions using curly braces around the names)
+as described above in
+.IR "Dynamic string tokens" .
+(See also the discussion of quoting under the description of
+.BR LD_LIBRARY_PATH .)
+.IP
+Since glibc 2.13,
+.\" commit 8e9f92e9d5d7737afdacf79b76d98c4c42980508
+in secure-execution mode,
+names in the audit list that contain slashes are ignored,
+and only shared objects in the standard search directories that
+have the set-user-ID mode bit enabled are loaded.
+.TP
+.BR LD_BIND_NOT " (since glibc 2.1.95)"
+If this environment variable is set to a nonempty string,
+do not update the GOT (global offset table) and PLT (procedure linkage table)
+after resolving a function symbol.
+By combining the use of this variable with
+.B LD_DEBUG
+(with the categories
+.I bindings
+and
+.IR symbols ),
+one can observe all run-time function bindings.
+.TP
+.BR LD_DEBUG " (since glibc 2.1)"
+Output verbose debugging information about operation of the dynamic linker.
+The content of this variable is one of more of the following categories,
+separated by colons, commas, or (if the value is quoted) spaces:
+.RS
+.TP 12
+.I help
+Specifying
+.I help
+in the value of this variable does not run the specified program,
+and displays a help message about which categories can be specified in this
+environment variable.
+.TP
+.I all
+Print all debugging information (except
+.I statistics
+and
+.IR unused ;
+see below).
+.TP
+.I bindings
+Display information about which definition each symbol is bound to.
+.TP
+.I files
+Display progress for input file.
+.TP
+.I libs
+Display library search paths.
+.TP
+.I reloc
+Display relocation processing.
+.TP
+.I scopes
+Display scope information.
+.TP
+.I statistics
+Display relocation statistics.
+.TP
+.I symbols
+Display search paths for each symbol look-up.
+.TP
+.I unused
+Determine unused DSOs.
+.TP
+.I versions
+Display version dependencies.
+.RE
+.IP
+Since glibc 2.3.4,
+.B LD_DEBUG
+is ignored in secure-execution mode, unless the file
+.I /etc/suid\-debug
+exists (the content of the file is irrelevant).
+.TP
+.BR LD_DEBUG_OUTPUT " (since glibc 2.1)"
+By default,
+.B LD_DEBUG
+output is written to standard error.
+If
+.B LD_DEBUG_OUTPUT
+is defined, then output is written to the pathname specified by its value,
+with the suffix "." (dot) followed by the process ID appended to the pathname.
+.IP
+.B LD_DEBUG_OUTPUT
+is ignored in secure-execution mode.
+.TP
+.BR LD_DYNAMIC_WEAK " (since glibc 2.1.91)"
+By default, when searching shared libraries to resolve a symbol reference,
+the dynamic linker will resolve to the first definition it finds.
+.IP
+Old glibc versions (before 2.2), provided a different behavior:
+if the linker found a symbol that was weak,
+it would remember that symbol and
+keep searching in the remaining shared libraries.
+If it subsequently found a strong definition of the same symbol,
+then it would instead use that definition.
+(If no further symbol was found,
+then the dynamic linker would use the weak symbol that it initially found.)
+.IP
+The old glibc behavior was nonstandard.
+(Standard practice is that the distinction between
+weak and strong symbols should have effect only at static link time.)
+In glibc 2.2,
+.\" More precisely 2.1.92
+.\" See weak handling
+.\" https://www.sourceware.org/ml/libc-hacker/2000-06/msg00029.html
+.\" To: GNU libc hacker <libc-hacker at sourceware dot cygnus dot com>
+.\" Subject: weak handling
+.\" From: Ulrich Drepper <drepper at redhat dot com>
+.\" Date: 07 Jun 2000 20:08:12 -0700
+.\" Reply-To: drepper at cygnus dot com (Ulrich Drepper)
+the dynamic linker was modified to provide the current behavior
+(which was the behavior that was provided by most other implementations
+at that time).
+.IP
+Defining the
+.B LD_DYNAMIC_WEAK
+environment variable (with any value) provides
+the old (nonstandard) glibc behavior,
+whereby a weak symbol in one shared library may be overridden by
+a strong symbol subsequently discovered in another shared library.
+(Note that even when this variable is set,
+a strong symbol in a shared library will not override
+a weak definition of the same symbol in the main program.)
+.IP
+Since glibc 2.3.4,
+.B LD_DYNAMIC_WEAK
+is ignored in secure-execution mode.
+.TP
+.BR LD_HWCAP_MASK " (since glibc 2.1)"
+Mask for hardware capabilities.
+.TP
+.BR LD_ORIGIN_PATH " (since glibc 2.1)"
+Path where the binary is found.
+.\" Used only if $ORIGIN can't be determined by normal means
+.\" (from the origin path saved at load time, or from /proc/self/exe)?
+.IP
+Since glibc 2.4,
+.B LD_ORIGIN_PATH
+is ignored in secure-execution mode.
+.TP
+.BR LD_POINTER_GUARD " (glibc from 2.4 to 2.22)"
+Set to 0 to disable pointer guarding.
+Any other value enables pointer guarding, which is also the default.
+Pointer guarding is a security mechanism whereby some pointers to code
+stored in writable program memory (return addresses saved by
+.BR setjmp (3)
+or function pointers used by various glibc internals) are mangled
+semi-randomly to make it more difficult for an attacker to hijack
+the pointers for use in the event of a buffer overrun or
+stack-smashing attack.
+Since glibc 2.23,
+.\" commit a014cecd82b71b70a6a843e250e06b541ad524f7
+.B LD_POINTER_GUARD
+can no longer be used to disable pointer guarding,
+which is now always enabled.
+.TP
+.BR LD_PROFILE " (since glibc 2.1)"
+The name of a (single) shared object to be profiled,
+specified either as a pathname or a soname.
+Profiling output is appended to the file whose name is:
+"\fI$LD_PROFILE_OUTPUT\fP/\fI$LD_PROFILE\fP.profile".
+.IP
+Since glibc 2.2.5,
+.B LD_PROFILE
+is ignored in secure-execution mode.
+.TP
+.BR LD_PROFILE_OUTPUT " (since glibc 2.1)"
+Directory where
+.B LD_PROFILE
+output should be written.
+If this variable is not defined, or is defined as an empty string,
+then the default is
+.IR /var/tmp .
+.IP
+.B LD_PROFILE_OUTPUT
+is ignored in secure-execution mode; instead
+.I /var/profile
+is always used.
+(This detail is relevant only before glibc 2.2.5,
+since in later glibc versions,
+.B LD_PROFILE
+is also ignored in secure-execution mode.)
+.TP
+.BR LD_SHOW_AUXV " (since glibc 2.1)"
+If this environment variable is defined (with any value),
+show the auxiliary array passed up from the kernel (see also
+.BR getauxval (3)).
+.IP
+Since glibc 2.3.4,
+.B LD_SHOW_AUXV
+is ignored in secure-execution mode.
+.TP
+.BR LD_TRACE_PRELINKING " (since glibc 2.4)"
+If this environment variable is defined,
+trace prelinking of the object whose name is assigned to
+this environment variable.
+(Use
+.BR ldd (1)
+to get a list of the objects that might be traced.)
+If the object name is not recognized,
+.\" (This is what seems to happen, from experimenting)
+then all prelinking activity is traced.
+.TP
+.BR LD_USE_LOAD_BIAS " (since glibc 2.3.3)"
+.\" http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
+.\" Subject: [PATCH] Support LD_USE_LOAD_BIAS
+.\" Jakub Jelinek
+By default (i.e., if this variable is not defined),
+executables and prelinked
+shared objects will honor base addresses of their dependent shared objects
+and (nonprelinked) position-independent executables (PIEs)
+and other shared objects will not honor them.
+If
+.B LD_USE_LOAD_BIAS
+is defined with the value 1, both executables and PIEs
+will honor the base addresses.
+If
+.B LD_USE_LOAD_BIAS
+is defined with the value 0,
+neither executables nor PIEs will honor the base addresses.
+.IP
+Since glibc 2.3.3, this variable is ignored in secure-execution mode.
+.TP
+.BR LD_VERBOSE " (since glibc 2.1)"
+If set to a nonempty string,
+output symbol versioning information about the
+program if the
+.B LD_TRACE_LOADED_OBJECTS
+environment variable has been set.
+.TP
+.BR LD_WARN " (since glibc 2.1.3)"
+If set to a nonempty string, warn about unresolved symbols.
+.TP
+.BR LD_PREFER_MAP_32BIT_EXEC " (x86-64 only; since glibc 2.23)"
+According to the Intel Silvermont software optimization guide, for 64-bit
+applications, branch prediction performance can be negatively impacted
+when the target of a branch is more than 4\ GB away from the branch.
+If this environment variable is set (to any value),
+the dynamic linker
+will first try to map executable pages using the
+.BR mmap (2)
+.B MAP_32BIT
+flag, and fall back to mapping without that flag if that attempt fails.
+NB: MAP_32BIT will map to the low 2\ GB (not 4\ GB) of the address space.
+.IP
+Because
+.B MAP_32BIT
+reduces the address range available for address space layout
+randomization (ASLR),
+.B LD_PREFER_MAP_32BIT_EXEC
+is always disabled in secure-execution mode.
+.SH FILES
+.TP
+.I /lib/ld.so
+a.out dynamic linker/loader
+.TP
+.IR /lib/ld\-linux.so. { 1 , 2 }
+ELF dynamic linker/loader
+.TP
+.I /etc/ld.so.cache
+File containing a compiled list of directories in which to search for
+shared objects and an ordered list of candidate shared objects.
+See
+.BR ldconfig (8).
+.TP
+.I /etc/ld.so.preload
+File containing a whitespace-separated list of ELF shared objects to
+be loaded before the program.
+See the discussion of
+.B LD_PRELOAD
+above.
+If both
+.B LD_PRELOAD
+and
+.I /etc/ld.so.preload
+are employed, the libraries specified by
+.B LD_PRELOAD
+are preloaded first.
+.I /etc/ld.so.preload
+has a system-wide effect,
+causing the specified libraries to be preloaded for
+all programs that are executed on the system.
+(This is usually undesirable,
+and is typically employed only as an emergency remedy, for example,
+as a temporary workaround to a library misconfiguration issue.)
+.TP
+.I lib*.so*
+shared objects
+.SH NOTES
+.SS Hardware capabilities
+Some shared objects are compiled using hardware-specific instructions which do
+not exist on every CPU.
+Such objects should be installed in directories whose names define the
+required hardware capabilities, such as
+.IR /usr/lib/sse2/ .
+The dynamic linker checks these directories against the hardware of the
+machine and selects the most suitable version of a given shared object.
+Hardware capability directories can be cascaded to combine CPU features.
+The list of supported hardware capability names depends on the CPU.
+The following names are currently recognized:
+.\" Presumably, this info comes from sysdeps/i386/dl-procinfo.c and
+.\" similar files
+.TP
+.B Alpha
+ev4, ev5, ev56, ev6, ev67
+.TP
+.B MIPS
+loongson2e, loongson2f, octeon, octeon2
+.TP
+.B PowerPC
+4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle,
+fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601,
+ppc64, smt, spe, ucache, vsx
+.TP
+.B SPARC
+flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2
+.TP
+.B s390
+dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle,
+z900, z990, z9-109, z10, zarch
+.TP
+.B x86 (32-bit only)
+acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx,
+mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
+.SH SEE ALSO
+.BR ld (1),
+.BR ldd (1),
+.BR pldd (1),
+.BR sprof (1),
+.BR dlopen (3),
+.BR getauxval (3),
+.BR elf (5),
+.BR capabilities (7),
+.BR rtld\-audit (7),
+.BR ldconfig (8),
+.BR sln (8)
+.\" .SH AUTHORS
+.\" ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
+.\" Torvalds, Lars Wirzenius and Mitch D'Souza
+.\" ld\-linux.so: Roland McGrath, Ulrich Drepper and others.
+.\"
+.\" In the above, (libc5) stands for David Engel's ld.so/ld\-linux.so.
diff --git a/man8/ldconfig.8 b/man8/ldconfig.8
new file mode 100644
index 000000000..c4da57436
--- /dev/null
+++ b/man8/ldconfig.8
@@ -0,0 +1,203 @@
+.\" Copyright 1999 SuSE GmbH Nuernberg, Germany
+.\" Author: Thorsten Kukuk <kukuk@suse.de>
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.\" Modified, 6 May 2002, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\" Change listed order of /usr/lib and /lib
+.TH LDCONFIG 8 2021-03-22 "Linux man-pages (unreleased)"
+.SH NAME
+ldconfig \- configure dynamic linker run-time bindings
+.SH SYNOPSIS
+.BR /sbin/ldconfig " [" \-nNvXV "] [" \-f " \fIconf\fP] [" \-C " \fIcache\fP] [" \-r " \fIroot\fP]"
+.IR directory \...
+.PD 0
+.PP
+.PD
+.B /sbin/ldconfig
+.B \-l
+.RB [ \-v ]
+.IR library \...
+.PD 0
+.PP
+.PD
+.B /sbin/ldconfig
+.B \-p
+.SH DESCRIPTION
+.B ldconfig
+creates the necessary links and cache to the most recent shared
+libraries found in the directories specified on the command line,
+in the file
+.IR /etc/ld.so.conf ,
+and in the trusted directories,
+.I /lib
+and
+.I /usr/lib
+(on some 64-bit architectures such as x86-64,
+.I /lib
+and
+.I /usr/lib
+are the trusted directories for 32-bit libraries, while
+.I /lib64
+and
+.I /usr/lib64
+are used for 64-bit libraries).
+.PP
+The cache is used by the run-time linker,
+.I ld.so
+or
+.IR ld\-linux.so .
+.B ldconfig
+checks the header and filenames of the libraries it encounters when
+determining which versions should have their links updated.
+.PP
+.B ldconfig
+will attempt to deduce the type of ELF libraries (i.e., libc5 or libc6/glibc)
+based on what C libraries, if any, the library was linked against.
+.\" The following sentence looks suspect
+.\" (perhaps historical cruft) -- MTK, Jul 2005
+.\" Therefore, when making dynamic libraries,
+.\" it is wise to explicitly link against libc (use \-lc).
+.PP
+Some existing libraries do not contain enough information
+to allow the deduction of their type.
+Therefore, the
+.I /etc/ld.so.conf
+file format allows the specification of an expected type.
+This is used
+.I only
+for those ELF libraries which we can not work out.
+The format
+is "dirname=TYPE", where TYPE can be libc4, libc5, or libc6.
+(This syntax also works on the command line.)
+Spaces are
+.I not
+allowed.
+Also see the
+.B \-p
+option.
+.B ldconfig
+should normally be run by the superuser as it may require write
+permission on some root owned directories and files.
+.PP
+Note that
+.B ldconfig
+will only look at files that are named
+.I lib*.so*
+(for regular shared objects) or
+.I ld\-*.so*
+(for the dynamic loader itself).
+Other files will be ignored.
+Also,
+.B ldconfig
+expects a certain pattern to how the symlinks are set up, like this
+example, where the middle file
+.RB ( libfoo.so.1
+here) is the SONAME for the library:
+.PP
+.in +4n
+.EX
+libfoo.so \-> libfoo.so.1 \-> libfoo.so.1.12
+.EE
+.in
+.PP
+Failure to follow this pattern may result in compatibility issues
+after an upgrade.
+.SH OPTIONS
+.TP
+.BR \-c " \fIfmt\fP, " \-\-format=\fIfmt\fP
+(Since glibc 2.2)
+Cache format to use:
+.IR old ,
+.IR new ,
+or
+.IR compat .
+Since glibc 2.32, the default is
+.IR new .
+.\" commit cad64f778aced84efdaa04ae64f8737b86f063ab
+Before that, it was
+.IR compat .
+.TP
+.BI "\-C " cache
+Use
+.I cache
+instead of
+.IR /etc/ld.so.cache .
+.TP
+.BI "\-f " conf
+Use
+.I conf
+instead of
+.IR /etc/ld.so.conf .
+.\" FIXME glibc 2.7 added -i
+.TP
+.BR \-i ", " \-\-ignore\-aux\-cache
+(Since glibc 2.7)
+.\" commit 27d9ffda17df4d2388687afd12897774fde39bcc
+Ignore auxiliary cache file.
+.TP
+.B \-l
+(Since glibc 2.2)
+Library mode.
+Manually link individual libraries.
+Intended for use by experts only.
+.TP
+.B \-n
+Process only the directories specified on the command line.
+Don't process the trusted directories,
+nor those specified in
+.IR /etc/ld.so.conf .
+Implies
+.BR \-N .
+.TP
+.B \-N
+Don't rebuild the cache.
+Unless
+.B \-X
+is also specified, links are still updated.
+.TP
+.BR \-p ", " \-\-print\-cache
+Print the lists of directories and candidate libraries stored in
+the current cache.
+.TP
+.BI "\-r " root
+Change to and use
+.I root
+as the root directory.
+.TP
+.BR \-v ", " \-\-verbose
+Verbose mode.
+Print current version number, the name of each directory as it
+is scanned, and any links that are created.
+Overrides quiet mode.
+.TP
+.BR \-V ", " \-\-version
+Print program version.
+.TP
+.B \-X
+Don't update links.
+Unless
+.B \-N
+is also specified, the cache is still rebuilt.
+.SH FILES
+.\" FIXME Since glibc-2.3.4, "include" directives are supported in ld.so.conf
+.\"
+.\" FIXME Since glibc-2.4, "hwcap" directives are supported in ld.so.conf
+.PD 0
+.TP
+.I /lib/ld.so
+Run-time linker/loader.
+.TP
+.I /etc/ld.so.conf
+File containing a list of directories, one per line,
+in which to search for libraries.
+.TP
+.I /etc/ld.so.cache
+File containing an ordered list of libraries found in the directories
+specified in
+.IR /etc/ld.so.conf ,
+as well as those found in the trusted directories.
+.PD
+.SH SEE ALSO
+.BR ldd (1),
+.BR ld.so (8)
diff --git a/man8/nscd.8 b/man8/nscd.8
new file mode 100644
index 000000000..26aaf3eed
--- /dev/null
+++ b/man8/nscd.8
@@ -0,0 +1,84 @@
+.\" Copyright 1999 SuSE GmbH Nuernberg, Germany
+.\" Author: Thorsten Kukuk <kukuk@suse.de>
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.\" 2008-12-05 Petr Baudis <pasky@suse.cz>
+.\" Rewrite the NOTES section to reflect modern reality
+.\"
+.TH NSCD 8 2015-05-07 "Linux man-pages (unreleased)"
+.SH NAME
+nscd \- name service cache daemon
+.SH DESCRIPTION
+.B nscd
+is a daemon that provides a cache for the most common name service
+requests.
+The default configuration file,
+.IR /etc/nscd.conf ,
+determines the behavior of the cache daemon.
+See
+.BR nscd.conf (5).
+.PP
+.B nscd
+provides caching for accesses of the
+.BR passwd (5),
+.BR group (5),
+.BR hosts (5)
+.BR services (5)
+and
+.I netgroup
+databases through standard libc interfaces, such as
+.BR getpwnam (3),
+.BR getpwuid (3),
+.BR getgrnam (3),
+.BR getgrgid (3),
+.BR gethostbyname (3),
+and others.
+.PP
+There are two caches for each database:
+a positive one for items found, and a negative one
+for items not found.
+Each cache has a separate TTL (time-to-live)
+period for its data.
+Note that the shadow file is specifically not cached.
+.BR getspnam (3)
+calls remain uncached as a result.
+.SH OPTIONS
+.TP
+.B "\-\-help"
+will give you a list with all options and what they do.
+.SH NOTES
+The daemon will try to watch for changes in configuration files
+appropriate for each database (e.g.,
+.I /etc/passwd
+for the
+.I passwd
+database or
+.I /etc/hosts
+and
+.I /etc/resolv.conf
+for the
+.I hosts
+database), and flush the cache when these are changed.
+However, this will happen only after a short delay (unless the
+.BR inotify (7)
+mechanism is available and glibc 2.9 or later is available),
+and this auto-detection does not cover configuration files
+required by nonstandard NSS modules, if any are specified in
+.IR /etc/nsswitch.conf .
+In that case, you need to run the following command
+after changing the configuration file of the database so that
+.B nscd
+invalidates its cache:
+.PP
+.in +4n
+.EX
+$ \fBnscd \-i\fP \fI<database>\fP
+.EE
+.in
+.SH SEE ALSO
+.BR nscd.conf (5),
+.BR nsswitch.conf (5)
+.\" .SH AUTHOR
+.\" .B nscd
+.\" was written by Thorsten Kukuk and Ulrich Drepper.
diff --git a/man8/sln.8 b/man8/sln.8
new file mode 100644
index 000000000..3992b01ab
--- /dev/null
+++ b/man8/sln.8
@@ -0,0 +1,44 @@
+.\" Copyright (c) 2013 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH SLN 8 2021-03-22 "Linux man-pages (unreleased)"
+.SH NAME
+sln \- create symbolic links
+.SH SYNOPSIS
+.nf
+.BI sln " source dest"
+.BI sln " filelist"
+.fi
+.SH DESCRIPTION
+The
+.B sln
+program creates symbolic links.
+Unlike the
+.BR ln (1)
+program, it is statically linked.
+This means that if for some reason the dynamic linker is not working,
+.B sln
+can be used to make symbolic links to dynamic libraries.
+.PP
+The command line has two forms.
+In the first form, it creates
+.I dest
+as a new symbolic link to
+.IR source .
+.PP
+In the second form,
+.I filelist
+is a list of space-separated pathname pairs,
+and the effect is as if
+.B sln
+was executed once for each line of the file,
+with the two pathnames as the arguments.
+.PP
+The
+.B sln
+program supports no command-line options.
+.SH SEE ALSO
+.BR ln (1),
+.BR ld.so (8),
+.BR ldconfig (8)
diff --git a/man8/tzselect.8 b/man8/tzselect.8
new file mode 100644
index 000000000..b625b8277
--- /dev/null
+++ b/man8/tzselect.8
@@ -0,0 +1,53 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This page is in the public domain
+.\" %%%LICENSE_END
+.\"
+.TH TZSELECT 8 2021-03-22 "Linux man-pages (unreleased)"
+.SH NAME
+tzselect \- select a timezone
+.SH SYNOPSIS
+.nf
+.B tzselect
+.fi
+.SH DESCRIPTION
+The
+.B tzselect
+program asks the user for information about the current location,
+and outputs the resulting timezone description to standard output.
+The output is suitable as a value for the
+.B TZ
+environment variable.
+.PP
+All interaction with the user is done via standard input and standard error.
+.SH EXIT STATUS
+The exit status is zero if a timezone was successfully obtained
+from the user, and is nonzero otherwise.
+.SH ENVIRONMENT
+.TP
+.B AWK
+Name of a POSIX-compliant
+.I awk
+program (default:
+.BR awk ).
+.TP
+.B TZDIR
+Name of the directory containing timezone data files (default:
+.IR /usr/share/zoneinfo ).
+.\" or perhaps /usr/local/etc/zoneinfo in some older systems.
+.SH FILES
+.TP
+\fBTZDIR\fP\fI/iso3166.tab\fP
+Table of ISO 3166 2-letter country codes and country names.
+.TP
+\fBTZDIR\fP\fI/zone.tab\fP
+Table of country codes, latitude and longitude, TZ values, and
+descriptive comments.
+.TP
+\fBTZDIR\fP\fI/\fP\fITZ\fP
+Timezone data file for timezone
+.IR TZ .
+.SH SEE ALSO
+.BR tzfile (5),
+.BR zdump (8),
+.BR zic (8)
+.\" @(#)tzselect.8 1.3
diff --git a/man8/zdump.8 b/man8/zdump.8
new file mode 100644
index 000000000..81c6c64c8
--- /dev/null
+++ b/man8/zdump.8
@@ -0,0 +1,232 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This page is in the public domain
+.\" %%%LICENSE_END
+.\"
+.TH ZDUMP 8 2020-04-27 "" "Linux System Administration"
+.SH NAME
+zdump \- timezone dumper
+.SH SYNOPSIS
+.B zdump
+[
+.I option
+\&... ] [
+.I timezone
+\&... ]
+.SH DESCRIPTION
+.ie '\(lq'' .ds lq \&"\"
+.el .ds lq \(lq\"
+.ie '\(rq'' .ds rq \&"\"
+.el .ds rq \(rq\"
+.de q
+\\$3\*(lq\\$1\*(rq\\$2
+..
+.ie \n(.g .ds - \f(CW-\fP
+.el ds - \-
+The
+.B zdump
+program prints the current time in each
+.I timezone
+named on the command line.
+.SH OPTIONS
+.TP
+.B \*-\*-version
+Output version information and exit.
+.TP
+.B \*-\*-help
+Output short usage message and exit.
+.TP
+.B \*-i
+Output a description of time intervals. For each
+.I timezone
+on the command line, output an interval-format description of the
+timezone. See
+.q "INTERVAL FORMAT"
+below.
+.TP
+.B \*-v
+Output a verbose description of time intervals.
+For each
+.I timezone
+on the command line,
+print the time at the lowest possible time value,
+the time one day after the lowest possible time value,
+the times both one second before and exactly at
+each detected time discontinuity,
+the time at one day less than the highest possible time value,
+and the time at the highest possible time value.
+Each line is followed by
+.BI isdst= D
+where
+.I D
+is positive, zero, or negative depending on whether
+the given time is daylight saving time, standard time,
+or an unknown time type, respectively.
+Each line is also followed by
+.BI gmtoff= N
+if the given local time is known to be
+.I N
+seconds east of Greenwich.
+.TP
+.B \*-V
+Like
+.BR \*-v ,
+except omit the times relative to the extreme time values.
+This generates output that is easier to compare to that of
+implementations with different time representations.
+.TP
+.BI "\*-c " \fR[\fIloyear , \fR]\fIhiyear
+Cut off interval output at the given year(s).
+Cutoff times are computed using the proleptic Gregorian calendar with year 0
+and with Universal Time (UT) ignoring leap seconds.
+Cutoffs are at the start of each year, where the lower-bound
+timestamp is exclusive and the upper is inclusive; for example,
+.B "\*-c 1970,2070"
+selects transitions after 1970-01-01 00:00:00 UTC
+and on or before 2070-01-01 00:00:00 UTC.
+The default cutoff is
+.BR \*-500,2500 .
+.TP
+.BI "\*-t " \fR[\fIlotime , \fR]\fIhitime
+Cut off interval output at the given time(s),
+given in decimal seconds since 1970-01-01 00:00:00
+Coordinated Universal Time (UTC).
+The
+.I timezone
+determines whether the count includes leap seconds.
+As with
+.BR \*-c ,
+the cutoff's lower bound is exclusive and its upper bound is inclusive.
+.SH "INTERVAL FORMAT"
+The interval format is a compact text representation that is intended
+to be both human- and machine-readable. It consists of an empty line,
+then a line
+.q "TZ=\fIstring\fP"
+where
+.I string
+is a double-quoted string giving the timezone, a second line
+.q "\*- \*- \fIinterval\fP"
+describing the time interval before the first transition if any, and
+zero or more following lines
+.q "\fIdate time interval\fP",
+one line for each transition time and following interval. Fields are
+separated by single tabs.
+.PP
+Dates are in
+.IR yyyy - mm - dd
+format and times are in 24-hour
+.IR hh : mm : ss
+format where
+.IR hh <24.
+Times are in local time immediately after the transition. A
+time interval description consists of a UT offset in signed
+.RI \(+- hhmmss
+format, a time zone abbreviation, and an isdst flag. An abbreviation
+that equals the UT offset is omitted; other abbreviations are
+double-quoted strings unless they consist of one or more alphabetic
+characters. An isdst flag is omitted for standard time, and otherwise
+is a decimal integer that is unsigned and positive (typically 1) for
+daylight saving time and negative for unknown.
+.PP
+In times and in UT offsets with absolute value less than 100 hours,
+the seconds are omitted if they are zero, and
+the minutes are also omitted if they are also zero. Positive UT
+offsets are east of Greenwich. The UT offset \*-00 denotes a UT
+placeholder in areas where the actual offset is unspecified; by
+convention, this occurs when the UT offset is zero and the time zone
+abbreviation begins with
+.q "\*-"
+or is
+.q "zzz".
+.PP
+In double-quoted strings, escape sequences represent unusual
+characters. The escape sequences are \es for space, and \e", \e\e,
+\ef, \en, \er, \et, and \ev with their usual meaning in the C
+programming language. E.g., the double-quoted string
+\*(lq"CET\es\e"\e\e"\*(rq represents the character sequence \*(lqCET
+"\e\*(rq.\""
+.PP
+.ne 9
+Here is an example of the output, with the leading empty line omitted.
+(This example is shown with tab stops set far enough apart so that the
+tabbed columns line up.)
+.nf
+.sp
+.if \n(.g .ft CW
+.if t .in +.5i
+.if n .in +2
+.nr w \w'1896-01-13 'u+\n(.i
+.ta \w'1896-01-13 'u +\w'12:01:26 'u +\w'-103126 'u +\w'HWT 'u
+TZ="Pacific/Honolulu"
+- - -103126 LMT
+1896-01-13 12:01:26 -1030 HST
+1933-04-30 03 -0930 HDT 1
+1933-05-21 11 -1030 HST
+1942-02-09 03 -0930 HWT 1
+1945-08-14 13:30 -0930 HPT 1
+1945-09-30 01 -1030 HST
+1947-06-08 02:30 -10 HST
+.in
+.if \n(.g .ft
+.sp
+.fi
+Here, local time begins 10 hours, 31 minutes and 26 seconds west of
+UT, and is a standard time abbreviated LMT. Immediately after the
+first transition, the date is 1896-01-13 and the time is 12:01:26, and
+the following time interval is 10.5 hours west of UT, a standard time
+abbreviated HST. Immediately after the second transition, the date is
+1933-04-30 and the time is 03:00:00 and the following time interval is
+9.5 hours west of UT, is abbreviated HDT, and is daylight saving time.
+Immediately after the last transition the date is 1947-06-08 and the
+time is 02:30:00, and the following time interval is 10 hours west of
+UT, a standard time abbreviated HST.
+.PP
+.ne 10
+Here are excerpts from another example:
+.nf
+.sp
+.if \n(.g .ft CW
+.if t .in +.5i
+.if n .in +2
+TZ="Europe/Astrakhan"
+- - +031212 LMT
+1924-04-30 23:47:48 +03
+1930-06-21 01 +04
+1981-04-01 01 +05 1
+1981-09-30 23 +04
+\&...
+2014-10-26 01 +03
+2016-03-27 03 +04
+.in
+.if \n(.g .ft
+.sp
+.fi
+This time zone is east of UT, so its UT offsets are positive. Also,
+many of its time zone abbreviations are omitted since they duplicate
+the text of the UT offset.
+.SH LIMITATIONS
+Time discontinuities are found by sampling the results returned by localtime
+at twelve-hour intervals.
+This works in all real-world cases;
+one can construct artificial time zones for which this fails.
+.PP
+In the
+.B \*-v
+and
+.B \*-V
+output,
+.q "UT"
+denotes the value returned by
+.BR gmtime (3),
+which uses UTC for modern timestamps and some other UT flavor for
+timestamps that predate the introduction of UTC.
+No attempt is currently made to have the output use
+.q "UTC"
+for newer and
+.q "UT"
+for older timestamps, partly because the exact date of the
+introduction of UTC is problematic.
+.SH SEE ALSO
+.BR tzfile (5),
+.BR zic (8)
+.\" This file is in the public domain, so clarified as of
+.\" 2009-05-17 by Arthur David Olson.
diff --git a/man8/zic.8 b/man8/zic.8
new file mode 100644
index 000000000..d4720736a
--- /dev/null
+++ b/man8/zic.8
@@ -0,0 +1,787 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This page is in the public domain
+.\" %%%LICENSE_END
+.\"
+.TH ZIC 8 2020-08-13 "" "Linux System Administration"
+.SH NAME
+zic \- timezone compiler
+.SH SYNOPSIS
+.B zic
+[
+.I option
+\&... ] [
+.I filename
+\&... ]
+.SH DESCRIPTION
+.ie '\(lq'' .ds lq \&"\"
+.el .ds lq \(lq\"
+.ie '\(rq'' .ds rq \&"\"
+.el .ds rq \(rq\"
+.de q
+\\$3\*(lq\\$1\*(rq\\$2
+..
+.ie '\(la'' .ds < <
+.el .ds < \(la
+.ie '\(ra'' .ds > >
+.el .ds > \(ra
+.ie \n(.g \{\
+. ds : \:
+. ds - \f(CW-\fP
+.\}
+.el \{\
+. ds :
+. ds - \-
+.\}
+The
+.B zic
+program reads text from the file(s) named on the command line
+and creates the time conversion information files specified in this input.
+If a
+.I filename
+is
+.q "\*-" ,
+standard input is read.
+.SH OPTIONS
+.TP
+.B "\*-\*-version"
+Output version information and exit.
+.TP
+.B \*-\*-help
+Output short usage message and exit.
+.TP
+.BI "\*-b " bloat
+Output backward-compatibility data as specified by
+.IR bloat .
+If
+.I bloat
+is
+.BR fat ,
+generate additional data entries that work around potential bugs or
+incompatibilities in older software, such as software that mishandles
+the 64-bit generated data.
+If
+.I bloat
+is
+.BR slim ,
+keep the output files small; this can help check for the bugs
+and incompatibilities.
+Although the default is currently
+.BR fat ,
+this is intended to change in future
+.B zic
+versions, as software that mishandles the 64-bit data typically
+mishandles timestamps after the year 2038 anyway.
+Also see the
+.B \*-r
+option for another way to shrink output size.
+.TP
+.BI "\*-d " directory
+Create time conversion information files in the named directory rather than
+in the standard directory named below.
+.TP
+.BI "\*-l " timezone
+Use
+.I timezone
+as local time.
+.B zic
+will act as if the input contained a link line of the form
+.sp
+.ti +.5i
+.ta \w'Link\0\0'u +\w'\fItimezone\fP\0\0'u
+Link \fItimezone\fP localtime
+.TP
+.BI "\*-L " leapsecondfilename
+Read leap second information from the file with the given name.
+If this option is not used,
+no leap second information appears in output files.
+.TP
+.BI "\*-p " timezone
+Use
+.IR timezone 's
+rules when handling nonstandard
+TZ strings like "EET\*-2EEST" that lack transition rules.
+.B zic
+will act as if the input contained a link line of the form
+.sp
+.ti +.5i
+Link \fItimezone\fP posixrules
+.sp
+This feature is obsolete and poorly supported.
+Among other things it should not be used for timestamps after the year 2037,
+and it should not be combined with
+.B "\*-b slim"
+if
+.IR timezone 's
+transitions are at standard time or Universal Time (UT) instead of local time.
+.TP
+.BR "\*-r " "[\fB@\fP\fIlo\fP][\fB/@\fP\fIhi\fP]"
+Reduce the size of output files by limiting their applicability
+to timestamps in the range from
+.I lo
+(inclusive) to
+.I hi
+(exclusive), where
+.I lo
+and
+.I hi
+are possibly-signed decimal counts of seconds since the Epoch
+(1970-01-01 00:00:00 UTC).
+Omitted counts default to extreme values.
+For example,
+.q "zic \*-r @0"
+omits data intended for negative timestamps (i.e., before the Epoch), and
+.q "zic \*-r @0/@2147483648"
+outputs data intended only for nonnegative timestamps that fit into
+31-bit signed integers.
+On platforms with GNU
+.BR date ,
+.q "zic \-r @$(date +%s)"
+omits data intended for past timestamps.
+Also see the
+.B "\*-b slim"
+option for another way to shrink output size.
+.TP
+.BI "\*-t " file
+When creating local time information, put the configuration link in
+the named file rather than in the standard location.
+.TP
+.B \*-v
+Be more verbose, and complain about the following situations:
+.RS
+.PP
+The input specifies a link to a link.
+.PP
+A year that appears in a data file is outside the range
+of representable years.
+.PP
+A time of 24:00 or more appears in the input.
+Pre-1998 versions of
+.B zic
+prohibit 24:00, and pre-2007 versions prohibit times greater than 24:00.
+.PP
+A rule goes past the start or end of the month.
+Pre-2004 versions of
+.B zic
+prohibit this.
+.PP
+A time zone abbreviation uses a
+.B %z
+format.
+Pre-2015 versions of
+.B zic
+do not support this.
+.PP
+A timestamp contains fractional seconds.
+Pre-2018 versions of
+.B zic
+do not support this.
+.PP
+The input contains abbreviations that are mishandled by pre-2018 versions of
+.B zic
+due to a longstanding coding bug.
+These abbreviations include
+.q L
+for
+.q Link ,
+.q mi
+for
+.q min ,
+.q Sa
+for
+.q Sat ,
+and
+.q Su
+for
+.q Sun .
+.PP
+The output file does not contain all the information about the
+long-term future of a timezone, because the future cannot be summarized as
+an extended POSIX TZ string. For example, as of 2019 this problem
+occurs for Iran's daylight-saving rules for the predicted future, as
+these rules are based on the Iranian calendar, which cannot be
+represented.
+.PP
+The output contains data that may not be handled properly by client
+code designed for older
+.B zic
+output formats. These compatibility issues affect only timestamps
+before 1970 or after the start of 2038.
+.PP
+The output file contains more than 1200 transitions,
+which may be mishandled by some clients.
+The current reference client supports at most 2000 transitions;
+pre-2014 versions of the reference client support at most 1200
+transitions.
+.PP
+A time zone abbreviation has fewer than 3 or more than 6 characters.
+POSIX requires at least 3, and requires implementations to support
+at least 6.
+.PP
+An output file name contains a byte that is not an ASCII letter,
+.q "\*-" ,
+.q "/" ,
+or
+.q "_" ;
+or it contains a file name component that contains more than 14 bytes
+or that starts with
+.q "\*-" .
+.RE
+.SH FILES
+Input files use the format described in this section; output files use
+.BR tzfile (5)
+format.
+.PP
+Input files should be text files, that is, they should be a series of
+zero or more lines, each ending in a newline byte and containing at
+most 511 bytes, and without any NUL bytes. The input text's encoding
+is typically UTF-8 or ASCII; it should have a unibyte representation
+for the POSIX Portable Character Set (PPCS)
+\*<http://pubs\*:.opengroup\*:.org/\*:onlinepubs/\*:9699919799/\*:basedefs/\*:V1_chap06\*:.html\*>
+and the encoding's non-unibyte characters should consist entirely of
+non-PPCS bytes. Non-PPCS characters typically occur only in comments:
+although output file names and time zone abbreviations can contain
+nearly any character, other software will work better if these are
+limited to the restricted syntax described under the
+.B \*-v
+option.
+.PP
+Input lines are made up of fields.
+Fields are separated from one another by one or more white space characters.
+The white space characters are space, form feed, carriage return, newline,
+tab, and vertical tab.
+Leading and trailing white space on input lines is ignored.
+An unquoted sharp character (#) in the input introduces a comment which extends
+to the end of the line the sharp character appears on.
+White space characters and sharp characters may be enclosed in double quotes
+(") if they're to be used as part of a field.
+Any line that is blank (after comment stripping) is ignored.
+Nonblank lines are expected to be of one of three types:
+rule lines, zone lines, and link lines.
+.PP
+Names must be in English and are case insensitive.
+They appear in several contexts, and include month and weekday names
+and keywords such as
+.BR "maximum" ,
+.BR "only" ,
+.BR "Rolling" ,
+and
+.BR "Zone" .
+A name can be abbreviated by omitting all but an initial prefix; any
+abbreviation must be unambiguous in context.
+.PP
+A rule line has the form
+.nf
+.ti +.5i
+.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00w\0\0'u +\w'1:00d\0\0'u
+.sp
+Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+.sp
+For example:
+.ti +.5i
+.sp
+Rule US 1967 1973 \*- Apr lastSun 2:00w 1:00d D
+.sp
+.fi
+The fields that make up a rule line are:
+.TP "\w'LETTER/S'u"
+.B NAME
+Gives the name of the rule set that contains this line.
+The name must start with a character that is neither
+an ASCII digit nor
+.q \*-
+nor
+.q + .
+To allow for future extensions,
+an unquoted name should not contain characters from the set
+.q !$%&'()*,/:;<=>?@[\e]\(ha\`{|}\(ti .
+.TP
+.B FROM
+Gives the first year in which the rule applies.
+Any signed integer year can be supplied; the proleptic Gregorian calendar
+is assumed, with year 0 preceding year 1.
+The word
+.B minimum
+(or an abbreviation) means the indefinite past.
+The word
+.B maximum
+(or an abbreviation) means the indefinite future.
+Rules can describe times that are not representable as time values,
+with the unrepresentable times ignored; this allows rules to be portable
+among hosts with differing time value types.
+.TP
+.B TO
+Gives the final year in which the rule applies.
+In addition to
+.B minimum
+and
+.B maximum
+(as above),
+the word
+.B only
+(or an abbreviation)
+may be used to repeat the value of the
+.B FROM
+field.
+.TP
+.B TYPE
+should be
+.q \*-
+and is present for compatibility with older versions of
+.B zic
+in which it could contain year types.
+.TP
+.B IN
+Names the month in which the rule takes effect.
+Month names may be abbreviated.
+.TP
+.B ON
+Gives the day on which the rule takes effect.
+Recognized forms include:
+.nf
+.in +.5i
+.sp
+.ta \w'Sun<=25\0\0'u
+5 the fifth of the month
+lastSun the last Sunday in the month
+lastMon the last Monday in the month
+Sun>=8 first Sunday on or after the eighth
+Sun<=25 last Sunday on or before the 25th
+.fi
+.in -.5i
+.sp
+A weekday name (e.g.,
+.BR "Sunday" )
+or a weekday name preceded by
+.q "last"
+(e.g.,
+.BR "lastSunday" )
+may be abbreviated or spelled out in full.
+There must be no white space characters within the
+.B ON
+field.
+The
+.q <=
+and
+.q >=
+constructs can result in a day in the neighboring month;
+for example, the IN-ON combination
+.q "Oct Sun>=31"
+stands for the first Sunday on or after October 31,
+even if that Sunday occurs in November.
+.TP
+.B AT
+Gives the time of day at which the rule takes effect,
+relative to 00:00, the start of a calendar day.
+Recognized forms include:
+.nf
+.in +.5i
+.sp
+.ta \w'00:19:32.13\0\0'u
+2 time in hours
+2:00 time in hours and minutes
+01:28:14 time in hours, minutes, and seconds
+00:19:32.13 time with fractional seconds
+12:00 midday, 12 hours after 00:00
+15:00 3 PM, 15 hours after 00:00
+24:00 end of day, 24 hours after 00:00
+260:00 260 hours after 00:00
+\*-2:30 2.5 hours before 00:00
+\*- equivalent to 0
+.fi
+.in -.5i
+.sp
+Although
+.B zic
+rounds times to the nearest integer second
+(breaking ties to the even integer), the fractions may be useful
+to other applications requiring greater precision.
+The source format does not specify any maximum precision.
+Any of these forms may be followed by the letter
+.B w
+if the given time is local or
+.q "wall clock"
+time,
+.B s
+if the given time is standard time without any adjustment for daylight saving,
+or
+.B u
+(or
+.B g
+or
+.BR z )
+if the given time is universal time;
+in the absence of an indicator,
+local (wall clock) time is assumed.
+These forms ignore leap seconds; for example,
+if a leap second occurs at 00:59:60 local time,
+.q "1:00"
+stands for 3601 seconds after local midnight instead of the usual 3600 seconds.
+The intent is that a rule line describes the instants when a
+clock/calendar set to the type of time specified in the
+.B AT
+field would show the specified date and time of day.
+.TP
+.B SAVE
+Gives the amount of time to be added to local standard time when the rule is in
+effect, and whether the resulting time is standard or daylight saving.
+This field has the same format as the
+.B AT
+field
+except with a different set of suffix letters:
+.B s
+for standard time and
+.B d
+for daylight saving time.
+The suffix letter is typically omitted, and defaults to
+.B s
+if the offset is zero and to
+.B d
+otherwise.
+Negative offsets are allowed; in Ireland, for example, daylight saving
+time is observed in winter and has a negative offset relative to
+Irish Standard Time.
+The offset is merely added to standard time; for example,
+.B zic
+does not distinguish a 10:30 standard time plus an 0:30
+.B SAVE
+from a 10:00 standard time plus a 1:00
+.BR SAVE .
+.TP
+.B LETTER/S
+Gives the
+.q "variable part"
+(for example, the
+.q "S"
+or
+.q "D"
+in
+.q "EST"
+or
+.q "EDT" )
+of time zone abbreviations to be used when this rule is in effect.
+If this field is
+.q \*- ,
+the variable part is null.
+.PP
+A zone line has the form
+.sp
+.nf
+.ti +.5i
+.ta \w'Zone\0\0'u +\w'Asia/Amman\0\0'u +\w'STDOFF\0\0'u +\w'Jordan\0\0'u +\w'FORMAT\0\0'u
+Zone NAME STDOFF RULES FORMAT [UNTIL]
+.sp
+For example:
+.sp
+.ti +.5i
+Zone Asia/Amman 2:00 Jordan EE%sT 2017 Oct 27 01:00
+.sp
+.fi
+The fields that make up a zone line are:
+.TP "\w'STDOFF'u"
+.B NAME
+The name of the timezone.
+This is the name used in creating the time conversion information file for the
+timezone.
+It should not contain a file name component
+.q ".\&"
+or
+.q ".." ;
+a file name component is a maximal substring that does not contain
+.q "/" .
+.TP
+.B STDOFF
+The amount of time to add to UT to get standard time,
+without any adjustment for daylight saving.
+This field has the same format as the
+.B AT
+and
+.B SAVE
+fields of rule lines;
+begin the field with a minus sign if time must be subtracted from UT.
+.TP
+.B RULES
+The name of the rules that apply in the timezone or,
+alternatively, a field in the same format as a rule-line SAVE column,
+giving of the amount of time to be added to local standard time
+effect, and whether the resulting time is standard or daylight saving.
+If this field is
+.B \*-
+then standard time always applies.
+When an amount of time is given, only the sum of standard time and
+this amount matters.
+.TP
+.B FORMAT
+The format for time zone abbreviations.
+The pair of characters
+.B %s
+is used to show where the
+.q "variable part"
+of the time zone abbreviation goes.
+Alternatively, a format can use the pair of characters
+.B %z
+to stand for the UT offset in the form
+.RI \(+- hh ,
+.RI \(+- hhmm ,
+or
+.RI \(+- hhmmss ,
+using the shortest form that does not lose information, where
+.IR hh ,
+.IR mm ,
+and
+.I ss
+are the hours, minutes, and seconds east (+) or west (\(mi) of UT.
+Alternatively,
+a slash (/)
+separates standard and daylight abbreviations.
+To conform to POSIX, a time zone abbreviation should contain only
+alphanumeric ASCII characters,
+.q "+"
+and
+.q "\*-".
+.TP
+.B UNTIL
+The time at which the UT offset or the rule(s) change for a location.
+It takes the form of one to four fields YEAR [MONTH [DAY [TIME]]].
+If this is specified,
+the time zone information is generated from the given UT offset
+and rule change until the time specified, which is interpreted using
+the rules in effect just before the transition.
+The month, day, and time of day have the same format as the IN, ON, and AT
+fields of a rule; trailing fields can be omitted, and default to the
+earliest possible value for the missing fields.
+.IP
+The next line must be a
+.q "continuation"
+line; this has the same form as a zone line except that the
+string
+.q "Zone"
+and the name are omitted, as the continuation line will
+place information starting at the time specified as the
+.q "until"
+information in the previous line in the file used by the previous line.
+Continuation lines may contain
+.q "until"
+information, just as zone lines do, indicating that the next line is a further
+continuation.
+.PP
+If a zone changes at the same instant that a rule would otherwise take
+effect in the earlier zone or continuation line, the rule is ignored.
+A zone or continuation line
+.I L
+with a named rule set starts with standard time by default:
+that is, any of
+.IR L 's
+timestamps preceding
+.IR L 's
+earliest rule use the rule in effect after
+.IR L 's
+first transition into standard time.
+In a single zone it is an error if two rules take effect at the same
+instant, or if two zone changes take effect at the same instant.
+.PP
+A link line has the form
+.sp
+.nf
+.ti +.5i
+.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
+Link TARGET LINK-NAME
+.sp
+For example:
+.sp
+.ti +.5i
+Link Europe/Istanbul Asia/Istanbul
+.sp
+.fi
+The
+.B TARGET
+field should appear as the
+.B NAME
+field in some zone line.
+The
+.B LINK-NAME
+field is used as an alternative name for that zone;
+it has the same syntax as a zone line's
+.B NAME
+field.
+.PP
+Except for continuation lines,
+lines may appear in any order in the input.
+However, the behavior is unspecified if multiple zone or link lines
+define the same name, or if the source of one link line is the target
+of another.
+.PP
+The file that describes leap seconds can have leap lines and an
+expiration line.
+Leap lines have the following form:
+.nf
+.ti +.5i
+.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
+.sp
+Leap YEAR MONTH DAY HH:MM:SS CORR R/S
+.sp
+For example:
+.ti +.5i
+.sp
+Leap 2016 Dec 31 23:59:60 + S
+.sp
+.fi
+The
+.BR YEAR ,
+.BR MONTH ,
+.BR DAY ,
+and
+.B HH:MM:SS
+fields tell when the leap second happened.
+The
+.B CORR
+field
+should be
+.q "+"
+if a second was added
+or
+.q "\*-"
+if a second was skipped.
+The
+.B R/S
+field
+should be (an abbreviation of)
+.q "Stationary"
+if the leap second time given by the other fields should be interpreted as UTC
+or
+(an abbreviation of)
+.q "Rolling"
+if the leap second time given by the other fields should be interpreted as
+local (wall clock) time.
+.PP
+The expiration line, if present, has the form:
+.nf
+.ti +.5i
+.ta \w'Expires\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u
+.sp
+Expires YEAR MONTH DAY HH:MM:SS
+.sp
+For example:
+.ti +.5i
+.sp
+Expires 2020 Dec 28 00:00:00
+.sp
+.fi
+The
+.BR YEAR ,
+.BR MONTH ,
+.BR DAY ,
+and
+.B HH:MM:SS
+fields give the expiration timestamp in UTC for the leap second table;
+.B zic
+outputs this expiration timestamp by truncating the end of the output
+file to the timestamp.
+If there is no expiration line,
+.B zic
+also accepts a comment
+.q "#expires \fIE\fP ...\&"
+where
+.I E
+is the expiration timestamp as a decimal integer count of seconds
+since the Epoch, not counting leap seconds.
+However, the
+.q "#expires"
+comment is an obsolescent feature,
+and the leap second file should use an expiration line
+instead of relying on a comment.
+.SH "EXTENDED EXAMPLE"
+Here is an extended example of
+.B zic
+input, intended to illustrate many of its features.
+In this example, the EU rules are for the European Union
+and for its predecessor organization, the European Communities.
+.br
+.ne 22
+.nf
+.in +2m
+.ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
+.sp
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Swiss 1941 1942 \*- May Mon>=1 1:00 1:00 S
+Rule Swiss 1941 1942 \*- Oct Mon>=1 2:00 0 \*-
+.sp .5
+Rule EU 1977 1980 \*- Apr Sun>=1 1:00u 1:00 S
+Rule EU 1977 only \*- Sep lastSun 1:00u 0 \*-
+Rule EU 1978 only \*- Oct 1 1:00u 0 \*-
+Rule EU 1979 1995 \*- Sep lastSun 1:00u 0 \*-
+Rule EU 1981 max \*- Mar lastSun 1:00u 1:00 S
+Rule EU 1996 max \*- Oct lastSun 1:00u 0 \*-
+.sp
+.ta \w'# Zone\0\0'u +\w'Europe/Zurich\0\0'u +\w'0:29:45.50\0\0'u +\w'RULES\0\0'u +\w'FORMAT\0\0'u
+# Zone NAME STDOFF RULES FORMAT [UNTIL]
+Zone Europe/Zurich 0:34:08 \*- LMT 1853 Jul 16
+ 0:29:45.50 \*- BMT 1894 Jun
+ 1:00 Swiss CE%sT 1981
+ 1:00 EU CE%sT
+.sp
+Link Europe/Zurich Europe/Vaduz
+.sp
+.in
+.fi
+In this example, the timezone is named Europe/Zurich but it has an alias
+as Europe/Vaduz. This example says that Zurich was 34 minutes and 8
+seconds east of UT until 1853-07-16 at 00:00, when the legal offset
+was changed to
+.ds o 7 degrees 26 minutes 22.50 seconds
+.if \n(.g .if c \(de .if c \(fm .if c \(sd .ds o 7\(de\|26\(fm\|22.50\(sd
+\*o,
+which works out to 0:29:45.50;
+.B zic
+treats this by rounding it to 0:29:46.
+After 1894-06-01 at 00:00 the UT offset became one hour
+and Swiss daylight saving rules (defined with lines beginning with
+.q "Rule Swiss")
+apply. From 1981 to the present, EU daylight saving rules have
+applied, and the UTC offset has remained at one hour.
+.PP
+In 1941 and 1942, daylight saving time applied from the first Monday
+in May at 01:00 to the first Monday in October at 02:00.
+The pre-1981 EU daylight-saving rules have no effect
+here, but are included for completeness. Since 1981, daylight
+saving has begun on the last Sunday in March at 01:00 UTC.
+Until 1995 it ended the last Sunday in September at 01:00 UTC,
+but this changed to the last Sunday in October starting in 1996.
+.PP
+For purposes of display,
+.q "LMT"
+and
+.q "BMT"
+were initially used, respectively. Since
+Swiss rules and later EU rules were applied, the time zone abbreviation
+has been CET for standard time and CEST for daylight saving
+time.
+.SH FILES
+.TP
+.I /etc/localtime
+Default local timezone file.
+.TP
+.I /usr/share/zoneinfo
+Default timezone information directory.
+.SH NOTES
+For areas with more than two types of local time,
+you may need to use local standard time in the
+.B AT
+field of the earliest transition time's rule to ensure that
+the earliest transition time recorded in the compiled file is correct.
+.PP
+If,
+for a particular timezone,
+a clock advance caused by the start of daylight saving
+coincides with and is equal to
+a clock retreat caused by a change in UT offset,
+.B zic
+produces a single transition to daylight saving at the new UT offset
+without any change in local (wall clock) time.
+To get separate transitions
+use multiple zone continuation lines
+specifying transition instants using universal time.
+.SH SEE ALSO
+.BR tzfile (5),
+.BR zdump (8)
+.\" This file is in the public domain, so clarified as of
+.\" 2009-05-17 by Arthur David Olson.