aboutsummaryrefslogtreecommitdiff
path: root/binutils/dlltool.1
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/dlltool.1')
-rw-r--r--binutils/dlltool.1509
1 files changed, 509 insertions, 0 deletions
diff --git a/binutils/dlltool.1 b/binutils/dlltool.1
new file mode 100644
index 0000000..ddb5ca8
--- /dev/null
+++ b/binutils/dlltool.1
@@ -0,0 +1,509 @@
+.rn '' }`
+''' $RCSfile$$Revision$$Date$
+'''
+''' $Log$
+''' Revision 1.1 2001/03/25 20:32:25 nickc
+''' Automate generate on man pages
+'''
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+''' Set up \*(-- to give an unbreakable dash;
+''' string Tr holds user defined translation string.
+''' Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.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" ""
+''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+''' \*(L" and \*(R", except that they are used on ".xx" lines,
+''' such as .IP and .SH, which do another additional levels of
+''' double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\" If the F register is turned on, we'll generate
+.\" index entries out stderr for the following things:
+.\" TH Title
+.\" SH Header
+.\" Sh Subsection
+.\" Ip Item
+.\" X<> Xref (embedded
+.\" Of course, you have to process the output yourself
+.\" in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH DLLTOOL.1 1 "binutils-2.11.90" "23/Mar/101" "GNU"
+.UC
+.if n .hy 0
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+. \" AM - accent mark definitions
+.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 ? ?
+. ds ! !
+. ds /
+. ds q
+.\}
+.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 ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+. \" 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 v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.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
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'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 v \h'-1'\o'\(aa\(ga'
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. 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
+. ds oe oe
+. ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+dlltool \- Create files needed to build and use DLLs.
+.SH "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"
+\f(CWdlltool\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 DLL, along with the source for the DLL, it is necessary
+to have three other files. \f(CWdlltool\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 DLL, which functions the DLL imports, and so on. This
+is a text file and can be created by hand, or \f(CWdlltool\fR can be used
+to create it using the \fB\-z\fR option. In this case \f(CWdlltool\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 DLL, 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 5
+\&
+\& asm (".section .drectve");
+\& asm (".ascii \e"-export:my_func\e"");
+\&
+\& int my_func (void) { ... }
+.Ve
+The second file needed for DLL creation is an exports file. This file
+is linked with the object files that make up the body of the DLL and it
+handles the interface between the DLL and the outside world. This is a
+binary file and it can be created by giving the \fB\-e\fR option to
+\f(CWdlltool\fR when it is creating or reading in a .def file.
+.PP
+The third file needed for DLL creation is the library file that programs
+will link with in order to access the functions in the DLL. 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(CWdlltool\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 DLL from a source file \fBdll.c\fR and
+also creating a program (from an object file called \fBprogram.o\fR)
+that uses that DLL:
+.PP
+.Vb 5
+\&
+\& 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"
+The command line options have the following meanings:
+.Ip "\f(CW-d \fIfilename\fR\fR" 4
+.Ip "\f(CW--input-def \fIfilename\fR\fR" 4
+Specifies the name of a .def file to be read in and processed.
+.Ip "\f(CW-b \fIfilename\fR\fR" 4
+.Ip "\f(CW--base-file \fIfilename\fR\fR" 4
+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-e \fIfilename\fR\fR" 4
+.Ip "\f(CW--output-exp \fIfilename\fR\fR" 4
+Specifies the name of the export file to be created by dlltool.
+.Ip "\f(CW-z \fIfilename\fR\fR" 4
+.Ip "\f(CW--output-def \fIfilename\fR\fR" 4
+Specifies the name of the .def file to be created by dlltool.
+.Ip "\f(CW-l \fIfilename\fR\fR" 4
+.Ip "\f(CW--output-lib \fIfilename\fR\fR" 4
+Specifies the name of the library file to be created by dlltool.
+.Ip "\f(CW--export-all-symbols\fR" 4
+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--no-default-excludes\fR
+option. You may add to the list of symbols to not export by using the
+\f(CW--exclude-symbols\fR option.
+.Ip "\f(CW--no-export-all-symbols\fR" 4
+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--exclude-symbols \fIlist\fR\fR" 4
+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--export-all-symbols\fR is used.
+.Ip "\f(CW--no-default-excludes\fR" 4
+When \f(CW--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 \f(CW--no-default-excludes\fR option
+to go ahead and export these special symbols. This is only meaningful
+when \f(CW--export-all-symbols\fR is used.
+.Ip "\f(CW-S \fIpath\fR\fR" 4
+.Ip "\f(CW--as \fIpath\fR\fR" 4
+Specifies the path, including the filename, of the assembler to be used
+to create the exports file.
+.Ip "\f(CW-f \fIswitches\fR\fR" 4
+.Ip "\f(CW--as-flags \fIswitches\fR\fR" 4
+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-D \fIname\fR\fR" 4
+.Ip "\f(CW--dll-name \fIname\fR\fR" 4
+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-m \fImachine\fR\fR" 4
+.Ip "\f(CW-machine \fImachine\fR\fR" 4
+Specifies the type of machine for which the library file should be
+built. \f(CWdlltool\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-a\fR" 4
+.Ip "\f(CW--add-indirect\fR" 4
+Specifies that when \f(CWdlltool\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-U\fR" 4
+.Ip "\f(CW--add-underscore\fR" 4
+Specifies that when \f(CWdlltool\fR is creating the exports file it
+should prepend an underscore to the names of the exported functions.
+.Ip "\f(CW-k\fR" 4
+.Ip "\f(CW--kill-at\fR" 4
+Specifies that when \f(CWdlltool\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-A\fR" 4
+.Ip "\f(CW--add-stdcall-alias\fR" 4
+Specifies that when \f(CWdlltool\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-x\fR" 4
+.Ip "\f(CW--no-idata4\fR" 4
+Specifies that when \f(CWdlltool\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\fR" 4
+.Ip "\f(CW--no-idata5\fR" 4
+Specifies that when \f(CWdlltool\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-i\fR" 4
+.Ip "\f(CW--interwork\fR" 4
+Specifies that \f(CWdlltool\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-n\fR" 4
+.Ip "\f(CW--nodelete\fR" 4
+Makes \f(CWdlltool\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-v\fR" 4
+.Ip "\f(CW--verbose\fR" 4
+Make dlltool describe what it is doing.
+.Ip "\f(CW-h\fR" 4
+.Ip "\f(CW--help\fR" 4
+Displays a list of command line options and then exits.
+.Ip "\f(CW-V\fR" 4
+.Ip "\f(CW--version\fR" 4
+Displays dlltool's version number and then exits.
+.SH "SEE ALSO"
+the Info entries for \fIbinutils\fR.
+.SH "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 GNU 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"GNU Free Documentation License\*(R".
+
+.rn }` ''
+.IX Title "DLLTOOL.1 1"
+.IX Name "dlltool - Create files needed to build and use DLLs."
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "OPTIONS"
+
+.IX Item "\f(CW-d \fIfilename\fR\fR"
+
+.IX Item "\f(CW--input-def \fIfilename\fR\fR"
+
+.IX Item "\f(CW-b \fIfilename\fR\fR"
+
+.IX Item "\f(CW--base-file \fIfilename\fR\fR"
+
+.IX Item "\f(CW-e \fIfilename\fR\fR"
+
+.IX Item "\f(CW--output-exp \fIfilename\fR\fR"
+
+.IX Item "\f(CW-z \fIfilename\fR\fR"
+
+.IX Item "\f(CW--output-def \fIfilename\fR\fR"
+
+.IX Item "\f(CW-l \fIfilename\fR\fR"
+
+.IX Item "\f(CW--output-lib \fIfilename\fR\fR"
+
+.IX Item "\f(CW--export-all-symbols\fR"
+
+.IX Item "\f(CW--no-export-all-symbols\fR"
+
+.IX Item "\f(CW--exclude-symbols \fIlist\fR\fR"
+
+.IX Item "\f(CW--no-default-excludes\fR"
+
+.IX Item "\f(CW-S \fIpath\fR\fR"
+
+.IX Item "\f(CW--as \fIpath\fR\fR"
+
+.IX Item "\f(CW-f \fIswitches\fR\fR"
+
+.IX Item "\f(CW--as-flags \fIswitches\fR\fR"
+
+.IX Item "\f(CW-D \fIname\fR\fR"
+
+.IX Item "\f(CW--dll-name \fIname\fR\fR"
+
+.IX Item "\f(CW-m \fImachine\fR\fR"
+
+.IX Item "\f(CW-machine \fImachine\fR\fR"
+
+.IX Item "\f(CW-a\fR"
+
+.IX Item "\f(CW--add-indirect\fR"
+
+.IX Item "\f(CW-U\fR"
+
+.IX Item "\f(CW--add-underscore\fR"
+
+.IX Item "\f(CW-k\fR"
+
+.IX Item "\f(CW--kill-at\fR"
+
+.IX Item "\f(CW-A\fR"
+
+.IX Item "\f(CW--add-stdcall-alias\fR"
+
+.IX Item "\f(CW-x\fR"
+
+.IX Item "\f(CW--no-idata4\fR"
+
+.IX Item "\f(CW-c\fR"
+
+.IX Item "\f(CW--no-idata5\fR"
+
+.IX Item "\f(CW-i\fR"
+
+.IX Item "\f(CW--interwork\fR"
+
+.IX Item "\f(CW-n\fR"
+
+.IX Item "\f(CW--nodelete\fR"
+
+.IX Item "\f(CW-v\fR"
+
+.IX Item "\f(CW--verbose\fR"
+
+.IX Item "\f(CW-h\fR"
+
+.IX Item "\f(CW--help\fR"
+
+.IX Item "\f(CW-V\fR"
+
+.IX Item "\f(CW--version\fR"
+
+.IX Header "SEE ALSO"
+
+.IX Header "COPYRIGHT"
+