402 lines
16 KiB
Groff
402 lines
16 KiB
Groff
.\" Automatically generated by Pod::Man version 1.02
|
|
.\" Wed May 30 12:24:27 2001
|
|
.\"
|
|
.\" Standard preamble:
|
|
.\" ======================================================================
|
|
.de Sh \" Subsection heading
|
|
.br
|
|
.if t .Sp
|
|
.ne 5
|
|
.PP
|
|
\fB\\$1\fR
|
|
.PP
|
|
..
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
.if t .sp .5v
|
|
.if n .sp
|
|
..
|
|
.de Ip \" List item
|
|
.br
|
|
.ie \\n(.$>=3 .ne \\$3
|
|
.el .ne 3
|
|
.IP "\\$1" \\$2
|
|
..
|
|
.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. | will give a
|
|
.\" real vertical bar. \*(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-|\(bv\*(Tr
|
|
.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\}
|
|
.\"
|
|
.\" If the F register is turned on, we'll generate index entries on stderr
|
|
.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
|
|
.\" index entries marked with X<> in POD. Of course, you'll have to process
|
|
.\" the output yourself in some meaningful fashion.
|
|
.if \nF \{\
|
|
. de IX
|
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
. .
|
|
. nr % 0
|
|
. rr F
|
|
.\}
|
|
.\"
|
|
.\" For nroff, turn off justification. Always turn off hyphenation; it
|
|
.\" makes way too many mistakes in technical documents.
|
|
.hy 0
|
|
.\"
|
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
|
.bd B 3
|
|
. \" 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 1"
|
|
.TH DLLTOOL.1 1 "binutils-2.11.90" "2001-05-30" "GNU"
|
|
.UC
|
|
.SH "NAME"
|
|
dlltool \- Create files needed to build and use DLLs.
|
|
.SH "SYNOPSIS"
|
|
.IX Header "SYNOPSIS"
|
|
dlltool [\-d|\-\-input-def \fIdef-file-name\fR]
|
|
[\-b|\-\-base-file \fIbase-file-name\fR]
|
|
[\-e|\-\-output-exp \fIexports-file-name\fR]
|
|
[\-z|\-\-output-def \fIdef-file-name\fR]
|
|
[\-l|\-\-output-lib \fIlibrary-file-name\fR]
|
|
[\-\-export-all-symbols] [\-\-no-export-all-symbols]
|
|
[\-\-exclude-symbols \fIlist\fR]
|
|
[\-\-no-default-excludes]
|
|
[\-S|\-\-as \fIpath-to-assembler\fR] [\-f|\-\-as-flags \fIoptions\fR]
|
|
[\-D|\-\-dllname \fIname\fR] [\-m|\-\-machine \fImachine\fR]
|
|
[\-a|\-\-add-indirect] [\-U|\-\-add-underscore] [\-k|\-\-kill-at]
|
|
[\-A|\-\-add-stdcall-alias]
|
|
[\-x|\-\-no-idata4] [\-c|\-\-no-idata5] [\-i|\-\-interwork]
|
|
[\-n|\-\-nodelete] [\-v|\-\-verbose] [\-h|\-\-help] [\-V|\-\-version]
|
|
[object-file ...]
|
|
.SH "DESCRIPTION"
|
|
.IX Header "DESCRIPTION"
|
|
\&\f(CW\*(C`dlltool\*(C'\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 \-e, \-l
|
|
and \-z 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. \f(CW\*(C`dlltool\*(C'\fR can help with the creation of
|
|
these files.
|
|
.PP
|
|
The first file is a \fB.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 \f(CW\*(C`dlltool\*(C'\fR can be used
|
|
to create it using the \fB\-z\fR option. In this case \f(CW\*(C`dlltool\*(C'\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 .def 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"");
|
|
.Ve
|
|
.Vb 1
|
|
\& int my_func (void) { ... }
|
|
.Ve
|
|
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
|
|
\&\f(CW\*(C`dlltool\*(C'\fR when it is creating or reading in a .def 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. This file
|
|
can be created by giving the \fB\-l\fR option to dlltool when it
|
|
is creating or reading in a .def file.
|
|
.PP
|
|
\&\f(CW\*(C`dlltool\*(C'\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
|
|
.SH "OPTIONS"
|
|
.IX Header "OPTIONS"
|
|
The command line options have the following meanings:
|
|
.Ip "\f(CW\*(C`\-d \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "-d filename"
|
|
.Ip "\f(CW\*(C`\-\-input\-def \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "--input-def filename"
|
|
Specifies the name of a .def file to be read in and processed.
|
|
.Ip "\f(CW\*(C`\-b \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "-b filename"
|
|
.Ip "\f(CW\*(C`\-\-base\-file \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "--base-file filename"
|
|
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 "\f(CW\*(C`\-e \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "-e filename"
|
|
.Ip "\f(CW\*(C`\-\-output\-exp \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "--output-exp filename"
|
|
Specifies the name of the export file to be created by dlltool.
|
|
.Ip "\f(CW\*(C`\-z \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "-z filename"
|
|
.Ip "\f(CW\*(C`\-\-output\-def \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "--output-def filename"
|
|
Specifies the name of the .def file to be created by dlltool.
|
|
.Ip "\f(CW\*(C`\-l \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "-l filename"
|
|
.Ip "\f(CW\*(C`\-\-output\-lib \f(CIfilename\f(CW\*(C'\fR" 4
|
|
.IX Item "--output-lib filename"
|
|
Specifies the name of the library file to be created by dlltool.
|
|
.Ip "\f(CW\*(C`\-\-export\-all\-symbols\*(C'\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 \f(CW\*(C`\-\-no\-default\-excludes\*(C'\fR
|
|
option. You may add to the list of symbols to not export by using the
|
|
\&\f(CW\*(C`\-\-exclude\-symbols\*(C'\fR option.
|
|
.Ip "\f(CW\*(C`\-\-no\-export\-all\-symbols\*(C'\fR" 4
|
|
.IX Item "--no-export-all-symbols"
|
|
Only export symbols explicitly listed in an input .def 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 "\f(CW\*(C`\-\-exclude\-symbols \f(CIlist\f(CW\*(C'\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
|
|
\&\f(CW\*(C`\-\-export\-all\-symbols\*(C'\fR is used.
|
|
.Ip "\f(CW\*(C`\-\-no\-default\-excludes\*(C'\fR" 4
|
|
.IX Item "--no-default-excludes"
|
|
When \f(CW\*(C`\-\-export\-all\-symbols\*(C'\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 \f(CW\*(C`\-\-no\-default\-excludes\*(C'\fR option
|
|
to go ahead and export these special symbols. This is only meaningful
|
|
when \f(CW\*(C`\-\-export\-all\-symbols\*(C'\fR is used.
|
|
.Ip "\f(CW\*(C`\-S \f(CIpath\f(CW\*(C'\fR" 4
|
|
.IX Item "-S path"
|
|
.Ip "\f(CW\*(C`\-\-as \f(CIpath\f(CW\*(C'\fR" 4
|
|
.IX Item "--as path"
|
|
Specifies the path, including the filename, of the assembler to be used
|
|
to create the exports file.
|
|
.Ip "\f(CW\*(C`\-f \f(CIswitches\f(CW\*(C'\fR" 4
|
|
.IX Item "-f switches"
|
|
.Ip "\f(CW\*(C`\-\-as\-flags \f(CIswitches\f(CW\*(C'\fR" 4
|
|
.IX Item "--as-flags switches"
|
|
Specifies any specific command line switches 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 switches to the assembler they should be enclosed in
|
|
double quotes.
|
|
.Ip "\f(CW\*(C`\-D \f(CIname\f(CW\*(C'\fR" 4
|
|
.IX Item "-D name"
|
|
.Ip "\f(CW\*(C`\-\-dll\-name \f(CIname\f(CW\*(C'\fR" 4
|
|
.IX Item "--dll-name name"
|
|
Specifies the name to be stored in the .def 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 "\f(CW\*(C`\-m \f(CImachine\f(CW\*(C'\fR" 4
|
|
.IX Item "-m machine"
|
|
.Ip "\f(CW\*(C`\-machine \f(CImachine\f(CW\*(C'\fR" 4
|
|
.IX Item "-machine machine"
|
|
Specifies the type of machine for which the library file should be
|
|
built. \f(CW\*(C`dlltool\*(C'\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 \s-1THUMB\s0 instructions.
|
|
.Ip "\f(CW\*(C`\-a\*(C'\fR" 4
|
|
.IX Item "-a"
|
|
.Ip "\f(CW\*(C`\-\-add\-indirect\*(C'\fR" 4
|
|
.IX Item "--add-indirect"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\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 "\f(CW\*(C`\-U\*(C'\fR" 4
|
|
.IX Item "-U"
|
|
.Ip "\f(CW\*(C`\-\-add\-underscore\*(C'\fR" 4
|
|
.IX Item "--add-underscore"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\fR is creating the exports file it
|
|
should prepend an underscore to the names of the exported functions.
|
|
.Ip "\f(CW\*(C`\-k\*(C'\fR" 4
|
|
.IX Item "-k"
|
|
.Ip "\f(CW\*(C`\-\-kill\-at\*(C'\fR" 4
|
|
.IX Item "--kill-at"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\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 "\f(CW\*(C`\-A\*(C'\fR" 4
|
|
.IX Item "-A"
|
|
.Ip "\f(CW\*(C`\-\-add\-stdcall\-alias\*(C'\fR" 4
|
|
.IX Item "--add-stdcall-alias"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\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 "\f(CW\*(C`\-x\*(C'\fR" 4
|
|
.IX Item "-x"
|
|
.Ip "\f(CW\*(C`\-\-no\-idata4\*(C'\fR" 4
|
|
.IX Item "--no-idata4"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\fR is creating the exports and library
|
|
files it should omit the .idata4 section. This is for compatibility
|
|
with certain operating systems.
|
|
.Ip "\f(CW\*(C`\-c\*(C'\fR" 4
|
|
.IX Item "-c"
|
|
.Ip "\f(CW\*(C`\-\-no\-idata5\*(C'\fR" 4
|
|
.IX Item "--no-idata5"
|
|
Specifies that when \f(CW\*(C`dlltool\*(C'\fR is creating the exports and library
|
|
files it should omit the .idata5 section. This is for compatibility
|
|
with certain operating systems.
|
|
.Ip "\f(CW\*(C`\-i\*(C'\fR" 4
|
|
.IX Item "-i"
|
|
.Ip "\f(CW\*(C`\-\-interwork\*(C'\fR" 4
|
|
.IX Item "--interwork"
|
|
Specifies that \f(CW\*(C`dlltool\*(C'\fR should mark the objects in the library
|
|
file and exports file that it produces as supporting interworking
|
|
between \s-1ARM\s0 and \s-1THUMB\s0 code.
|
|
.Ip "\f(CW\*(C`\-n\*(C'\fR" 4
|
|
.IX Item "-n"
|
|
.Ip "\f(CW\*(C`\-\-nodelete\*(C'\fR" 4
|
|
.IX Item "--nodelete"
|
|
Makes \f(CW\*(C`dlltool\*(C'\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 "\f(CW\*(C`\-v\*(C'\fR" 4
|
|
.IX Item "-v"
|
|
.Ip "\f(CW\*(C`\-\-verbose\*(C'\fR" 4
|
|
.IX Item "--verbose"
|
|
Make dlltool describe what it is doing.
|
|
.Ip "\f(CW\*(C`\-h\*(C'\fR" 4
|
|
.IX Item "-h"
|
|
.Ip "\f(CW\*(C`\-\-help\*(C'\fR" 4
|
|
.IX Item "--help"
|
|
Displays a list of command line options and then exits.
|
|
.Ip "\f(CW\*(C`\-V\*(C'\fR" 4
|
|
.IX Item "-V"
|
|
.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
|
|
.IX Item "--version"
|
|
Displays dlltool's version number and then exits.
|
|
.SH "SEE ALSO"
|
|
.IX Header "SEE ALSO"
|
|
the Info entries for \fIbinutils\fR.
|
|
.SH "COPYRIGHT"
|
|
.IX Header "COPYRIGHT"
|
|
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 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.1
|
|
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".
|