PR binutils/249

* doc/binutils.texi (def file format): New node.
	(dlltool): Use the tool name as the @chapter name, like all the
	other binutils.  Use @file{.def} throughout for consistency.
This commit is contained in:
Ben Elliston 2004-12-06 21:20:50 +00:00
parent c7de92161e
commit 2aa9814eac
2 changed files with 84 additions and 17 deletions

View File

@ -1,3 +1,10 @@
2004-12-07 Ben Elliston <bje@au.ibm.com>
PR binutils/249
* doc/binutils.texi (def file format): New node.
(dlltool): Use the tool name as the @chapter name, like all the
other binutils. Use @file{.def} throughout for consistency.
2004-12-06 Ben Elliston <bje@au.ibm.com>
* dlltool.c: Comment fix.

View File

@ -2854,16 +2854,25 @@ the Info entries for @file{binutils}.
@end ignore
@node dlltool
@chapter Create files needed to build and use DLLs
@chapter dlltool
@cindex DLL
@kindex dlltool
@command{dlltool} may be used to create the files needed to build and use
dynamic link libraries (DLLs).
@command{dlltool} is used to create the files needed to create dynamic
link libraries (DLLs) on systems which understand PE format image
files such as Windows. A DLL contains an export table which contains
information that the runtime loader needs to resolve references from a
referencing program.
The export table is generated by this program by reading in a
@file{.def} file or scanning the @file{.a} and @file{.o} files which
will be in the DLL. A @file{.o} file can contain information in
special @samp{.drectve} sections with export information.
@quotation
@emph{Warning:} @command{dlltool} is not always built as part of the binary
utilities, since it is only useful for those targets which support DLLs.
@emph{Note:} @command{dlltool} is not always built as part of the
binary utilities, since it is only useful for those targets which
support DLLs.
@end quotation
@c man title dlltool Create files needed to build and use DLLs.
@ -2906,13 +2915,13 @@ When creating a DLL, along with the source for the DLL, it is necessary
to have three other files. @command{dlltool} can help with the creation of
these files.
The first file is a @samp{.def} file which specifies which functions are
The first file is a @file{.def} 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 @command{dlltool} can be used
to create it using the @option{-z} option. In this case @command{dlltool}
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.
put entries for them in the @file{.def} file it creates.
In order to mark a function as being exported from a DLL, it needs to
have an @option{-export:<name_of_function>} entry in the @samp{.drectve}
@ -2930,12 +2939,12 @@ 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 @option{-e} option to
@command{dlltool} when it is creating or reading in a .def file.
@command{dlltool} when it is creating or reading in a @file{.def} file.
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 @option{-l} option to dlltool when it
is creating or reading in a .def file.
is creating or reading in a @file{.def} file.
@command{dlltool} builds the library file by hand, but it builds the
exports file by creating temporary files containing assembler statements
@ -2969,7 +2978,7 @@ The command line options have the following meanings:
@item -d @var{filename}
@itemx --input-def @var{filename}
@cindex input .def file
Specifies the name of a .def file to be read in and processed.
Specifies the name of a @file{.def} file to be read in and processed.
@item -b @var{filename}
@itemx --base-file @var{filename}
@ -2984,7 +2993,7 @@ Specifies the name of the export file to be created by dlltool.
@item -z @var{filename}
@itemx --output-def @var{filename}
Specifies the name of the .def file to be created by dlltool.
Specifies the name of the @file{.def} file to be created by dlltool.
@item -l @var{filename}
@itemx --output-lib @var{filename}
@ -2998,7 +3007,7 @@ option. You may add to the list of symbols to not export by using the
@option{--exclude-symbols} option.
@item --no-export-all-symbols
Only export symbols explicitly listed in an input .def file or in
Only export symbols explicitly listed in an input @file{.def} file or in
@samp{.drectve} sections in the input object files. This is the default
behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
attributes in the source code.
@ -3034,10 +3043,10 @@ double quotes.
@item -D @var{name}
@itemx --dll-name @var{name}
Specifies the name to be stored in the .def file as the name of the DLL
when the @option{-e} option is used. If this option is not present, then
the filename given to the @option{-e} option will be used as the name of
the DLL.
Specifies the name to be stored in the @file{.def} file as the name of
the DLL when the @option{-e} option is used. If this option is not
present, then the filename given to the @option{-e} option will be
used as the name of the DLL.
@item -m @var{machine}
@itemx -machine @var{machine}
@ -3125,9 +3134,60 @@ Displays dlltool's version number and then exits.
@c man end
@menu
* def file format:: The format of the dlltool @file{.def} file
@end menu
@node def file format
@section The format of the @command{dlltool} @file{.def} file
A @file{.def} file contains any number of the following commands:
@table @asis
@item @code{NAME} @var{name} @code{[ ,} @var{base} @code{]}
The result is going to be named @var{name}@code{.exe}.
@item @code{LIBRARY} @var{name} @code{[ ,} @var{base} @code{]}
The result is going to be named @var{name}@code{.dll}.
@item @code{EXPORTS ( ( (} @var{name1} @code{[ = } @var{name2} @code{] ) | ( } @var{name1} @code{=} @var{module-name} @code{.} @var{external-name} @code{) )}
@item @code{[} @var{integer} @code{] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *}
Declares @var{name1} as an exported symbol from the DLL, with optional
ordinal number @var{integer}, or declares @var{name1} as an alias
(forward) of the function @var{external-name} in the DLL
@var{module-name}.
@item @code{IMPORTS ( (} @var{internal-name} @code{=} @var{module-name} @code{.} @var{integer} @code{) | [} @var{internal-name} @code{= ]} @var{module-name} @code{.} @var{external-name} @code{) ) *}
Declares that @var{external-name} or the exported function whose
ordinal number is @var{integer} is to be imported from the file
@var{module-name}. If @var{internal-name} is specified then this is
the name that the imported function will be referred to in the body of
the DLL.
@item @code{DESCRIPTION} @var{string}
Puts @var{string} into the output @file{.exp} file in the
@code{.rdata} section.
@item @code{STACKSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
@item @code{HEAPSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
Generates @code{--stack} or @code{--heap}
@var{number-reserve},@var{number-commit} in the output @code{.drectve}
section. The linker will see this and act upon it.
@item @code{CODE} @var{attr} @code{+}
@item @code{DATA} @var{attr} @code{+}
@item @code{SECTIONS (} @var{section-name} @var{attr}@code{ + ) *}
Generates @code{--attr} @var{section-name} @var{attr} in the output
@code{.drectve} section, where @var{attr} is one of @code{READ},
@code{WRITE}, @code{EXECUTE} or @code{SHARED}. The linker will see
this and act upon it.
@end table
@ignore
@c man begin SEEALSO dlltool
the Info entries for @file{binutils}.
The Info pages for @file{binutils}.
@c man end
@end ignore