blob: ec57e64d958412ffe0ab467ccbe9b76eb4b013fc [file]
<html lang="en">
<head>
<title>def file format - GNU Binary Utilities</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU Binary Utilities">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="dlltool.html#dlltool" title="dlltool">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
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 ``GNU Free Documentation License''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="def-file-format"></a>
<p>
Up:&nbsp;<a rel="up" accesskey="u" href="dlltool.html#dlltool">dlltool</a>
<hr>
</div>
<h3 class="section">14.1 The format of the <samp><span class="command">dlltool</span></samp> <samp><span class="file">.def</span></samp> file</h3>
<p>A <samp><span class="file">.def</span></samp> file contains any number of the following commands:
<dl>
<dt><code>NAME</code> <var>name</var> <code>[ ,</code> <var>base</var> <code>]</code><dd>The result is going to be named <var>name</var><code>.exe</code>.
<br><dt><code>LIBRARY</code> <var>name</var> <code>[ ,</code> <var>base</var> <code>]</code><dd>The result is going to be named <var>name</var><code>.dll</code>.
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).
<br><dt><code>EXPORTS ( ( (</code> <var>name1</var> <code>[ = </code> <var>name2</var> <code>] ) | ( </code> <var>name1</var> <code>=</code> <var>module-name</var> <code>.</code> <var>external-name</var> <code>) ) [ == </code> <var>its_name</var> <code>]</code><br><dt><code>[</code> <var>integer</var> <code>] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *</code><dd>Declares <var>name1</var> as an exported symbol from the DLL, with optional
ordinal number <var>integer</var>, or declares <var>name1</var> as an alias
(forward) of the function <var>external-name</var> in the DLL.
If <var>its_name</var> is specified, this name is used as string in export table.
<var>module-name</var>.
Note: The <code>EXPORTS</code> has to be the last command in .def file, as keywords
are treated - beside <code>LIBRARY</code> - as simple name-identifiers.
If you want to use LIBRARY as name then you need to quote it.
<br><dt><code>IMPORTS ( (</code> <var>internal-name</var> <code>=</code> <var>module-name</var> <code>.</code> <var>integer</var> <code>) | [</code> <var>internal-name</var> <code>= ]</code> <var>module-name</var> <code>.</code> <var>external-name</var> <code>) [ == ) </code><var>its_name</var><code> ] *</code><dd>Declares that <var>external-name</var> or the exported function whose
ordinal number is <var>integer</var> is to be imported from the file
<var>module-name</var>. If <var>internal-name</var> is specified then this is
the name that the imported function will be referred to in the body of
the DLL.
If <var>its_name</var> is specified, this name is used as string in import table.
Note: The <code>IMPORTS</code> has to be the last command in .def file, as keywords
are treated - beside <code>LIBRARY</code> - as simple name-identifiers.
If you want to use LIBRARY as name then you need to quote it.
<br><dt><code>DESCRIPTION</code> <var>string</var><dd>Puts <var>string</var> into the output <samp><span class="file">.exp</span></samp> file in the
<code>.rdata</code> section.
<br><dt><code>STACKSIZE</code> <var>number-reserve</var> <code>[, </code> <var>number-commit</var> <code>]</code><br><dt><code>HEAPSIZE</code> <var>number-reserve</var> <code>[, </code> <var>number-commit</var> <code>]</code><dd>Generates <code>--stack</code> or <code>--heap</code>
<var>number-reserve</var>,<var>number-commit</var> in the output <code>.drectve</code>
section. The linker will see this and act upon it.
<br><dt><code>CODE</code> <var>attr</var> <code>+</code><br><dt><code>DATA</code> <var>attr</var> <code>+</code><br><dt><code>SECTIONS (</code> <var>section-name</var> <var>attr</var><code> + ) *</code><dd>Generates <code>--attr</code> <var>section-name</var> <var>attr</var> in the output
<code>.drectve</code> section, where <var>attr</var> is one of <code>READ</code>,
<code>WRITE</code>, <code>EXECUTE</code> or <code>SHARED</code>. The linker will see
this and act upon it.
</dl>
</body></html>