13.1 The format of the dlltool .def file

A .def file contains any number of the following commands:

NAME name [ , base ]

The result is going to be named name.exe.

LIBRARY name [ , base ]

The result is going to be named name.dll. Note: If you want to use LIBRARY as name then you need to quote. Otherwise this will fail due a necessary hack for libtool (see PR binutils/13710 for more details).

EXPORTS ( ( ( name1 [ = name2 ] ) | ( name1 = module-name . external-name ) ) [ == its_name ]
[ integer ] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *

Declares name1 as an exported symbol from the DLL, with optional ordinal number integer, or declares name1 as an alias (forward) of the function external-name in the DLL. If its_name is specified, this name is used as string in export table. module-name. Note: The EXPORTS has to be the last command in .def file, as keywords are treated - beside LIBRARY - as simple name-identifiers. If you want to use LIBRARY as name then you need to quote it.

IMPORTS ( ( internal-name = module-name . integer ) | [ internal-name = ] module-name . external-name ) [ == ) its_name ] *

Declares that external-name or the exported function whose ordinal number is integer is to be imported from the file module-name. If internal-name is specified then this is the name that the imported function will be referred to in the body of the DLL. If its_name is specified, this name is used as string in import table. Note: The IMPORTS has to be the last command in .def file, as keywords are treated - beside LIBRARY - as simple name-identifiers. If you want to use LIBRARY as name then you need to quote it.

DESCRIPTION string

Puts string into the output .exp file in the .rdata section.

STACKSIZE number-reserve [, number-commit ]
HEAPSIZE number-reserve [, number-commit ]

Generates --stack or --heap number-reserve,number-commit in the output .drectve section. The linker will see this and act upon it.

CODE attr +
DATA attr +
SECTIONS ( section-name attr + ) *

Generates --attr section-name attr in the output .drectve section, where attr is one of READ, WRITE, EXECUTE or SHARED. The linker will see this and act upon it.