.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "DLLTOOL 1"
.TH DLLTOOL 1 "2014-10-15" "binutils-2.22.0" "GNU Development Tools"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
dlltool \- Create files needed to build and use DLLs.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
dlltool [\fB\-d\fR|\fB\-\-input\-def\fR \fIdef-file-name\fR]
        [\fB\-b\fR|\fB\-\-base\-file\fR \fIbase-file-name\fR]
        [\fB\-e\fR|\fB\-\-output\-exp\fR \fIexports-file-name\fR]
        [\fB\-z\fR|\fB\-\-output\-def\fR \fIdef-file-name\fR]
        [\fB\-l\fR|\fB\-\-output\-lib\fR \fIlibrary-file-name\fR]
        [\fB\-y\fR|\fB\-\-output\-delaylib\fR \fIlibrary-file-name\fR]
        [\fB\-\-export\-all\-symbols\fR] [\fB\-\-no\-export\-all\-symbols\fR]
        [\fB\-\-exclude\-symbols\fR \fIlist\fR]
        [\fB\-\-no\-default\-excludes\fR]
        [\fB\-S\fR|\fB\-\-as\fR \fIpath-to-assembler\fR] [\fB\-f\fR|\fB\-\-as\-flags\fR \fIoptions\fR]
        [\fB\-D\fR|\fB\-\-dllname\fR \fIname\fR] [\fB\-m\fR|\fB\-\-machine\fR \fImachine\fR]
        [\fB\-a\fR|\fB\-\-add\-indirect\fR]
        [\fB\-U\fR|\fB\-\-add\-underscore\fR] [\fB\-\-add\-stdcall\-underscore\fR]
        [\fB\-k\fR|\fB\-\-kill\-at\fR] [\fB\-A\fR|\fB\-\-add\-stdcall\-alias\fR]
        [\fB\-p\fR|\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR]
        [\fB\-x\fR|\fB\-\-no\-idata4\fR] [\fB\-c\fR|\fB\-\-no\-idata5\fR]
        [\fB\-\-use\-nul\-prefixed\-import\-tables\fR]
        [\fB\-I\fR|\fB\-\-identify\fR \fIlibrary-file-name\fR] [\fB\-\-identify\-strict\fR]
        [\fB\-i\fR|\fB\-\-interwork\fR]
        [\fB\-n\fR|\fB\-\-nodelete\fR] [\fB\-t\fR|\fB\-\-temp\-prefix\fR \fIprefix\fR]
        [\fB\-v\fR|\fB\-\-verbose\fR]
        [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
        [\fB\-\-no\-leading\-underscore\fR] [\fB\-\-leading\-underscore\fR]
        [object\-file ...]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBdlltool\fR reads its inputs, which can come from the \fB\-d\fR and
\&\fB\-b\fR options as well as object files specified on the command
line.  It then processes these inputs and if the \fB\-e\fR option has
been specified it creates a exports file.  If the \fB\-l\fR option
has been specified it creates a library file and if the \fB\-z\fR option
has been specified it creates a def file.  Any or all of the \fB\-e\fR,
\&\fB\-l\fR and \fB\-z\fR options can be present in one invocation of
dlltool.
.PP
When creating a \s-1DLL\s0, along with the source for the \s-1DLL\s0, it is necessary
to have three other files.  \fBdlltool\fR can help with the creation of
these files.
.PP
The first file is a \fI.def\fR file which specifies which functions are
exported from the \s-1DLL\s0, which functions the \s-1DLL\s0 imports, and so on.  This
is a text file and can be created by hand, or \fBdlltool\fR can be used
to create it using the \fB\-z\fR option.  In this case \fBdlltool\fR
will scan the object files specified on its command line looking for
those functions which have been specially marked as being exported and
put entries for them in the \fI.def\fR file it creates.
.PP
In order to mark a function as being exported from a \s-1DLL\s0, it needs to
have an \fB\-export:<name_of_function>\fR entry in the \fB.drectve\fR
section of the object file.  This can be done in C by using the
\&\fIasm()\fR operator:
.PP
.Vb 2
\&          asm (".section .drectve");
\&          asm (".ascii \e"\-export:my_func\e"");
\&        
\&          int my_func (void) { ... }
.Ve
.PP
The second file needed for \s-1DLL\s0 creation is an exports file.  This file
is linked with the object files that make up the body of the \s-1DLL\s0 and it
handles the interface between the \s-1DLL\s0 and the outside world.  This is a
binary file and it can be created by giving the \fB\-e\fR option to
\&\fBdlltool\fR when it is creating or reading in a \fI.def\fR file.
.PP
The third file needed for \s-1DLL\s0 creation is the library file that programs
will link with in order to access the functions in the \s-1DLL\s0 (an `import
library').  This file can be created by giving the \fB\-l\fR option to
dlltool when it is creating or reading in a \fI.def\fR file.
.PP
If the \fB\-y\fR option is specified, dlltool generates a delay-import
library that can be used instead of the normal import library to allow
a program to link to the dll only as soon as an imported function is
called for the first time. The resulting executable will need to be
linked to the static delayimp library containing _\|\fI_delayLoadHelper2()\fR,
which in turn will import LoadLibraryA and GetProcAddress from kernel32.
.PP
\&\fBdlltool\fR builds the library file by hand, but it builds the
exports file by creating temporary files containing assembler statements
and then assembling these.  The \fB\-S\fR command line option can be
used to specify the path to the assembler that dlltool will use,
and the \fB\-f\fR option can be used to pass specific flags to that
assembler.  The \fB\-n\fR can be used to prevent dlltool from deleting
these temporary assembler files when it is done, and if \fB\-n\fR is
specified twice then this will prevent dlltool from deleting the
temporary object files it used to build the library.
.PP
Here is an example of creating a \s-1DLL\s0 from a source file \fBdll.c\fR and
also creating a program (from an object file called \fBprogram.o\fR)
that uses that \s-1DLL:\s0
.PP
.Vb 4
\&          gcc \-c dll.c
\&          dlltool \-e exports.o \-l dll.lib dll.o
\&          gcc dll.o exports.o \-o dll.dll
\&          gcc program.o dll.lib \-o program
.Ve
.PP
\&\fBdlltool\fR may also be used to query an existing import library
to determine the name of the \s-1DLL\s0 to which it is associated.  See the 
description of the \fB\-I\fR or \fB\-\-identify\fR option.
.SH "OPTIONS"
.IX Header "OPTIONS"
The command line options have the following meanings:
.IP "\fB\-d\fR \fIfilename\fR" 4
.IX Item "-d filename"
.PD 0
.IP "\fB\-\-input\-def\fR \fIfilename\fR" 4
.IX Item "--input-def filename"
.PD
Specifies the name of a \fI.def\fR file to be read in and processed.
.IP "\fB\-b\fR \fIfilename\fR" 4
.IX Item "-b filename"
.PD 0
.IP "\fB\-\-base\-file\fR \fIfilename\fR" 4
.IX Item "--base-file filename"
.PD
Specifies the name of a base file to be read in and processed.  The
contents of this file will be added to the relocation section in the
exports file generated by dlltool.
.IP "\fB\-e\fR \fIfilename\fR" 4
.IX Item "-e filename"
.PD 0
.IP "\fB\-\-output\-exp\fR \fIfilename\fR" 4
.IX Item "--output-exp filename"
.PD
Specifies the name of the export file to be created by dlltool.
.IP "\fB\-z\fR \fIfilename\fR" 4
.IX Item "-z filename"
.PD 0
.IP "\fB\-\-output\-def\fR \fIfilename\fR" 4
.IX Item "--output-def filename"
.PD
Specifies the name of the \fI.def\fR file to be created by dlltool.
.IP "\fB\-l\fR \fIfilename\fR" 4
.IX Item "-l filename"
.PD 0
.IP "\fB\-\-output\-lib\fR \fIfilename\fR" 4
.IX Item "--output-lib filename"
.PD
Specifies the name of the library file to be created by dlltool.
.IP "\fB\-y\fR \fIfilename\fR" 4
.IX Item "-y filename"
.PD 0
.IP "\fB\-\-output\-delaylib\fR \fIfilename\fR" 4
.IX Item "--output-delaylib filename"
.PD
Specifies the name of the delay-import library file to be created by dlltool.
.IP "\fB\-\-export\-all\-symbols\fR" 4
.IX Item "--export-all-symbols"
Treat all global and weak defined symbols found in the input object
files as symbols to be exported.  There is a small list of symbols which
are not exported by default; see the \fB\-\-no\-default\-excludes\fR
option.  You may add to the list of symbols to not export by using the
\&\fB\-\-exclude\-symbols\fR option.
.IP "\fB\-\-no\-export\-all\-symbols\fR" 4
.IX Item "--no-export-all-symbols"
Only export symbols explicitly listed in an input \fI.def\fR file or in
\&\fB.drectve\fR sections in the input object files.  This is the default
behaviour.  The \fB.drectve\fR sections are created by \fBdllexport\fR
attributes in the source code.
.IP "\fB\-\-exclude\-symbols\fR \fIlist\fR" 4
.IX Item "--exclude-symbols list"
Do not export the symbols in \fIlist\fR.  This is a list of symbol names
separated by comma or colon characters.  The symbol names should not
contain a leading underscore.  This is only meaningful when
\&\fB\-\-export\-all\-symbols\fR is used.
.IP "\fB\-\-no\-default\-excludes\fR" 4
.IX Item "--no-default-excludes"
When \fB\-\-export\-all\-symbols\fR is used, it will by default avoid
exporting certain special symbols.  The current list of symbols to avoid
exporting is \fBDllMain@12\fR, \fBDllEntryPoint@0\fR,
\&\fBimpure_ptr\fR.  You may use the \fB\-\-no\-default\-excludes\fR option
to go ahead and export these special symbols.  This is only meaningful
when \fB\-\-export\-all\-symbols\fR is used.
.IP "\fB\-S\fR \fIpath\fR" 4
.IX Item "-S path"
.PD 0
.IP "\fB\-\-as\fR \fIpath\fR" 4
.IX Item "--as path"
.PD
Specifies the path, including the filename, of the assembler to be used
to create the exports file.
.IP "\fB\-f\fR \fIoptions\fR" 4
.IX Item "-f options"
.PD 0
.IP "\fB\-\-as\-flags\fR \fIoptions\fR" 4
.IX Item "--as-flags options"
.PD
Specifies any specific command line options to be passed to the
assembler when building the exports file.  This option will work even if
the \fB\-S\fR option is not used.  This option only takes one argument,
and if it occurs more than once on the command line, then later
occurrences will override earlier occurrences.  So if it is necessary to
pass multiple options to the assembler they should be enclosed in
double quotes.
.IP "\fB\-D\fR \fIname\fR" 4
.IX Item "-D name"
.PD 0
.IP "\fB\-\-dll\-name\fR \fIname\fR" 4
.IX Item "--dll-name name"
.PD
Specifies the name to be stored in the \fI.def\fR file as the name of
the \s-1DLL\s0 when the \fB\-e\fR option is used.  If this option is not
present, then the filename given to the \fB\-e\fR option will be
used as the name of the \s-1DLL\s0.
.IP "\fB\-m\fR \fImachine\fR" 4
.IX Item "-m machine"
.PD 0
.IP "\fB\-machine\fR \fImachine\fR" 4
.IX Item "-machine machine"
.PD
Specifies the type of machine for which the library file should be
built.  \fBdlltool\fR has a built in default type, depending upon how
it was created, but this option can be used to override that.  This is
normally only useful when creating DLLs for an \s-1ARM\s0 processor, when the
contents of the \s-1DLL\s0 are actually encode using Thumb instructions.
.IP "\fB\-a\fR" 4
.IX Item "-a"
.PD 0
.IP "\fB\-\-add\-indirect\fR" 4
.IX Item "--add-indirect"
.PD
Specifies that when \fBdlltool\fR is creating the exports file it
should add a section which allows the exported functions to be
referenced without using the import library.  Whatever the hell that
means!
.IP "\fB\-U\fR" 4
.IX Item "-U"
.PD 0
.IP "\fB\-\-add\-underscore\fR" 4
.IX Item "--add-underscore"
.PD
Specifies that when \fBdlltool\fR is creating the exports file it
should prepend an underscore to the names of \fIall\fR exported symbols.
.IP "\fB\-\-no\-leading\-underscore\fR" 4
.IX Item "--no-leading-underscore"
.PD 0
.IP "\fB\-\-leading\-underscore\fR" 4
.IX Item "--leading-underscore"
.PD
Specifies whether standard symbol should be forced to be prefixed, or
not.
.IP "\fB\-\-add\-stdcall\-underscore\fR" 4
.IX Item "--add-stdcall-underscore"
Specifies that when \fBdlltool\fR is creating the exports file it
should prepend an underscore to the names of exported \fIstdcall\fR
functions. Variable names and non-stdcall function names are not modified.
This option is useful when creating GNU-compatible import libs for third
party DLLs that were built with MS-Windows tools.
.IP "\fB\-k\fR" 4
.IX Item "-k"
.PD 0
.IP "\fB\-\-kill\-at\fR" 4
.IX Item "--kill-at"
.PD
Specifies that when \fBdlltool\fR is creating the exports file it
should not append the string \fB@ <number>\fR.  These numbers are
called ordinal numbers and they represent another way of accessing the
function in a \s-1DLL\s0, other than by name.
.IP "\fB\-A\fR" 4
.IX Item "-A"
.PD 0
.IP "\fB\-\-add\-stdcall\-alias\fR" 4
.IX Item "--add-stdcall-alias"
.PD
Specifies that when \fBdlltool\fR is creating the exports file it
should add aliases for stdcall symbols without \fB@ <number>\fR
in addition to the symbols with \fB@ <number>\fR.
.IP "\fB\-p\fR" 4
.IX Item "-p"
.PD 0
.IP "\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR" 4
.IX Item "--ext-prefix-alias prefix"
.PD
Causes \fBdlltool\fR to create external aliases for all \s-1DLL\s0
imports with the specified prefix.  The aliases are created for both
external and import symbols with no leading underscore.
.IP "\fB\-x\fR" 4
.IX Item "-x"
.PD 0
.IP "\fB\-\-no\-idata4\fR" 4
.IX Item "--no-idata4"
.PD
Specifies that when \fBdlltool\fR is creating the exports and library
files it should omit the \f(CW\*(C`.idata4\*(C'\fR section.  This is for compatibility
with certain operating systems.
.IP "\fB\-\-use\-nul\-prefixed\-import\-tables\fR" 4
.IX Item "--use-nul-prefixed-import-tables"
Specifies that when \fBdlltool\fR is creating the exports and library
files it should prefix the \f(CW\*(C`.idata4\*(C'\fR and \f(CW\*(C`.idata5\*(C'\fR by zero an
element. This emulates old gnu import library generation of
\&\f(CW\*(C`dlltool\*(C'\fR. By default this option is turned off.
.IP "\fB\-c\fR" 4
.IX Item "-c"
.PD 0
.IP "\fB\-\-no\-idata5\fR" 4
.IX Item "--no-idata5"
.PD
Specifies that when \fBdlltool\fR is creating the exports and library
files it should omit the \f(CW\*(C`.idata5\*(C'\fR section.  This is for compatibility
with certain operating systems.
.IP "\fB\-I\fR \fIfilename\fR" 4
.IX Item "-I filename"
.PD 0
.IP "\fB\-\-identify\fR \fIfilename\fR" 4
.IX Item "--identify filename"
.PD
Specifies that \fBdlltool\fR should inspect the import library
indicated by \fIfilename\fR and report, on \f(CW\*(C`stdout\*(C'\fR, the name(s)
of the associated \s-1DLL\s0(s).  This can be performed in addition to any
other operations indicated by the other options and arguments.
\&\fBdlltool\fR fails if the import library does not exist or is not
actually an import library. See also \fB\-\-identify\-strict\fR.
.IP "\fB\-\-identify\-strict\fR" 4
.IX Item "--identify-strict"
Modifies the behavior of the \fB\-\-identify\fR option, such
that an error is reported if \fIfilename\fR is associated with
more than one \s-1DLL\s0.
.IP "\fB\-i\fR" 4
.IX Item "-i"
.PD 0
.IP "\fB\-\-interwork\fR" 4
.IX Item "--interwork"
.PD
Specifies that \fBdlltool\fR should mark the objects in the library
file and exports file that it produces as supporting interworking
between \s-1ARM\s0 and Thumb code.
.IP "\fB\-n\fR" 4
.IX Item "-n"
.PD 0
.IP "\fB\-\-nodelete\fR" 4
.IX Item "--nodelete"
.PD
Makes \fBdlltool\fR preserve the temporary assembler files it used to
create the exports file.  If this option is repeated then dlltool will
also preserve the temporary object files it uses to create the library
file.
.IP "\fB\-t\fR \fIprefix\fR" 4
.IX Item "-t prefix"
.PD 0
.IP "\fB\-\-temp\-prefix\fR \fIprefix\fR" 4
.IX Item "--temp-prefix prefix"
.PD
Makes \fBdlltool\fR use \fIprefix\fR when constructing the names of
temporary assembler and object files.  By default, the temp file prefix
is generated from the pid.
.IP "\fB\-v\fR" 4
.IX Item "-v"
.PD 0
.IP "\fB\-\-verbose\fR" 4
.IX Item "--verbose"
.PD
Make dlltool describe what it is doing.
.IP "\fB\-h\fR" 4
.IX Item "-h"
.PD 0
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
.PD
Displays a list of command line options and then exits.
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Displays dlltool's version number and then exits.
.IP "\fB@\fR\fIfile\fR" 4
.IX Item "@file"
Read command-line options from \fIfile\fR.  The options read are
inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
does not exist, or cannot be read, then the option will be treated
literally, and not removed.
.Sp
Options in \fIfile\fR are separated by whitespace.  A whitespace
character may be included in an option by surrounding the entire
option in either single or double quotes.  Any character (including a
backslash) may be included by prefixing the character to be included
with a backslash.  The \fIfile\fR may itself contain additional
@\fIfile\fR options; any such options will be processed recursively.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The Info pages for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
.PP
Permission is granted to copy, distribute and/or modify this document
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
