14.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.