1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- This file documents the GNU Assembler "as".
4
5Copyright (C) 1991-2021 Free Software Foundation, Inc.
6
7Permission is granted to copy, distribute and/or modify this document
8under the terms of the GNU Free Documentation License, Version 1.3
9or any later version published by the Free Software Foundation;
10with no Invariant Sections, with no Front-Cover Texts, and with no
11Back-Cover Texts.  A copy of the license is included in the
12section entitled "GNU Free Documentation License".
13 -->
14<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
15<head>
16<title>Using as: File</title>
17
18<meta name="description" content="Using as: File">
19<meta name="keywords" content="Using as: File">
20<meta name="resource-type" content="document">
21<meta name="distribution" content="global">
22<meta name="Generator" content="makeinfo">
23<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
24<link href="index.html#Top" rel="start" title="Top">
25<link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
26<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
27<link href="Pseudo-Ops.html#Pseudo-Ops" rel="up" title="Pseudo Ops">
28<link href="Fill.html#Fill" rel="next" title="Fill">
29<link href="Fail.html#Fail" rel="previous" title="Fail">
30<style type="text/css">
31<!--
32a.summary-letter {text-decoration: none}
33blockquote.smallquotation {font-size: smaller}
34div.display {margin-left: 3.2em}
35div.example {margin-left: 3.2em}
36div.indentedblock {margin-left: 3.2em}
37div.lisp {margin-left: 3.2em}
38div.smalldisplay {margin-left: 3.2em}
39div.smallexample {margin-left: 3.2em}
40div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
41div.smalllisp {margin-left: 3.2em}
42kbd {font-style:oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47pre.smalldisplay {font-family: inherit; font-size: smaller}
48pre.smallexample {font-size: smaller}
49pre.smallformat {font-family: inherit; font-size: smaller}
50pre.smalllisp {font-size: smaller}
51span.nocodebreak {white-space:nowrap}
52span.nolinebreak {white-space:nowrap}
53span.roman {font-family:serif; font-weight:normal}
54span.sansserif {font-family:sans-serif; font-weight:normal}
55ul.no-bullet {list-style: none}
56-->
57</style>
58
59
60</head>
61
62<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
63<a name="File"></a>
64<div class="header">
65<p>
66Next: <a href="Fill.html#Fill" accesskey="n" rel="next">Fill</a>, Previous: <a href="Fail.html#Fail" accesskey="p" rel="previous">Fail</a>, Up: <a href="Pseudo-Ops.html#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
67</div>
68<hr>
69<a name="g_t_002efile"></a>
70<h3 class="section">7.36 <code>.file</code></h3>
71<a name="index-file-directive"></a>
72
73<p>There are two different versions of the <code>.file</code> directive.  Targets
74that support DWARF2 line number information use the DWARF2 version of
75<code>.file</code>.  Other targets use the default version.
76</p>
77<a name="Default-Version"></a>
78<h4 class="subheading">Default Version</h4>
79
80<a name="index-logical-file-name"></a>
81<a name="index-file-name_002c-logical"></a>
82<p>This version of the <code>.file</code> directive tells <code>as</code> that we
83are about to start a new logical file.  The syntax is:
84</p>
85<div class="smallexample">
86<pre class="smallexample">.file <var>string</var>
87</pre></div>
88
89<p><var>string</var> is the new file name.  In general, the filename is
90recognized whether or not it is surrounded by quotes &lsquo;<samp>&quot;</samp>&rsquo;; but if you wish
91to specify an empty file name, you must give the quotes&ndash;<code>&quot;&quot;</code>.  This
92statement may go away in future: it is only recognized to be compatible with
93old <code>as</code> programs.
94</p>
95<a name="DWARF2-Version"></a>
96<h4 class="subheading">DWARF2 Version</h4>
97
98<p>When emitting DWARF2 line number information, <code>.file</code> assigns filenames
99to the <code>.debug_line</code> file name table.  The syntax is:
100</p>
101<div class="smallexample">
102<pre class="smallexample">.file <var>fileno</var> <var>filename</var>
103</pre></div>
104
105<p>The <var>fileno</var> operand should be a unique positive integer to use as the
106index of the entry in the table.  The <var>filename</var> operand is a C string
107literal enclosed in double quotes.  The <var>filename</var> can include directory
108elements.  If it does, then the directory will be added to the directory table
109and the basename will be added to the file table.
110</p>
111<p>The detail of filename indices is exposed to the user because the filename
112table is shared with the <code>.debug_info</code> section of the DWARF2 debugging
113information, and thus the user must know the exact indices that table
114entries will have.
115</p>
116<p>If DWARF-5 support has been enabled via the <samp>-gdwarf-5</samp> option then
117an extended version of the <code>file</code> is also allowed:
118</p>
119<div class="smallexample">
120<pre class="smallexample">.file <var>fileno</var> [<var>dirname</var>] <var>filename</var> [md5 <var>value</var>]
121</pre></div>
122
123<p>With this version a separate directory name is allowed, although if this is
124used then <var>filename</var> should not contain any directory components.  In
125addtion an md5 hash value of the contents of <var>filename</var> can be provided.
126This will be stored in the the file table as well, and can be used by tools
127reading the debug information to verify that the contents of the source file
128match the contents of the compiled file.
129</p>
130<hr>
131<div class="header">
132<p>
133Next: <a href="Fill.html#Fill" accesskey="n" rel="next">Fill</a>, Previous: <a href="Fail.html#Fail" accesskey="p" rel="previous">Fail</a>, Up: <a href="Pseudo-Ops.html#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
134</div>
135
136
137
138</body>
139</html>
140