87 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<html lang="en">
 | 
						|
<head>
 | 
						|
<title>Output Section Address - Untitled</title>
 | 
						|
<meta http-equiv="Content-Type" content="text/html">
 | 
						|
<meta name="description" content="Untitled">
 | 
						|
<meta name="generator" content="makeinfo 4.7">
 | 
						|
<link title="Top" rel="start" href="index.html#Top">
 | 
						|
<link rel="up" href="SECTIONS.html#SECTIONS" title="SECTIONS">
 | 
						|
<link rel="prev" href="Output-Section-Name.html#Output-Section-Name" title="Output Section Name">
 | 
						|
<link rel="next" href="Input-Section.html#Input-Section" title="Input Section">
 | 
						|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
 | 
						|
<!--
 | 
						|
This file documents the GNU linker LD
 | 
						|
(GNU Binutils)
 | 
						|
version 2.19.
 | 
						|
 | 
						|
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
 | 
						|
2001, 2002, 2003, 2004, 2005, 2006, 2007 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.1
 | 
						|
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; } 
 | 
						|
--></style>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div class="node">
 | 
						|
<p>
 | 
						|
<a name="Output-Section-Address"></a>Next: <a rel="next" accesskey="n" href="Input-Section.html#Input-Section">Input Section</a>,
 | 
						|
Previous: <a rel="previous" accesskey="p" href="Output-Section-Name.html#Output-Section-Name">Output Section Name</a>,
 | 
						|
Up: <a rel="up" accesskey="u" href="SECTIONS.html#SECTIONS">SECTIONS</a>
 | 
						|
<hr><br>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4 class="subsection">3.6.3 Output Section Address</h4>
 | 
						|
 | 
						|
<p><a name="index-address_002c-section-364"></a><a name="index-section-address-365"></a>The <var>address</var> is an expression for the VMA (the virtual memory
 | 
						|
address) of the output section.  If you do not provide <var>address</var>,
 | 
						|
the linker will set it based on <var>region</var> if present, or otherwise
 | 
						|
based on the current value of the location counter.
 | 
						|
 | 
						|
   <p>If you provide <var>address</var>, the address of the output section will be
 | 
						|
set to precisely that.  If you provide neither <var>address</var> nor
 | 
						|
<var>region</var>, then the address of the output section will be set to the
 | 
						|
current value of the location counter aligned to the alignment
 | 
						|
requirements of the output section.  The alignment requirement of the
 | 
						|
output section is the strictest alignment of any input section contained
 | 
						|
within the output section.
 | 
						|
 | 
						|
   <p>For example,
 | 
						|
<pre class="smallexample">     .text . : { *(.text) }
 | 
						|
</pre>
 | 
						|
   <p class="noindent">and
 | 
						|
<pre class="smallexample">     .text : { *(.text) }
 | 
						|
</pre>
 | 
						|
   <p class="noindent">are subtly different.  The first will set the address of the
 | 
						|
<span class="samp">.text</span> output section to the current value of the location
 | 
						|
counter.  The second will set it to the current value of the location
 | 
						|
counter aligned to the strictest alignment of a <span class="samp">.text</span> input
 | 
						|
section.
 | 
						|
 | 
						|
   <p>The <var>address</var> may be an arbitrary expression; <a href="Expressions.html#Expressions">Expressions</a>. 
 | 
						|
For example, if you want to align the section on a 0x10 byte boundary,
 | 
						|
so that the lowest four bits of the section address are zero, you could
 | 
						|
do something like this:
 | 
						|
<pre class="smallexample">     .text ALIGN(0x10) : { *(.text) }
 | 
						|
</pre>
 | 
						|
   <p class="noindent">This works because <code>ALIGN</code> returns the current location counter
 | 
						|
aligned upward to the specified value.
 | 
						|
 | 
						|
   <p>Specifying <var>address</var> for a section will change the value of the
 | 
						|
location counter.
 | 
						|
 | 
						|
   </body></html>
 | 
						|
 |