blob: 562fe237b92901488221a04d00a54f664aed6c84 [file] [log] [blame]
<html lang="en">
<head>
<title>ARM-Relocations - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="ARM-Syntax.html#ARM-Syntax" title="ARM Syntax">
<link rel="prev" href="ARM_002dRegs.html#ARM_002dRegs" title="ARM-Regs">
<link rel="next" href="ARM_002dNeon_002dAlignment.html#ARM_002dNeon_002dAlignment" title="ARM-Neon-Alignment">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 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>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="ARM-Relocations"></a>
<a name="ARM_002dRelocations"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="ARM_002dNeon_002dAlignment.html#ARM_002dNeon_002dAlignment">ARM-Neon-Alignment</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="ARM_002dRegs.html#ARM_002dRegs">ARM-Regs</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="ARM-Syntax.html#ARM-Syntax">ARM Syntax</a>
<hr>
</div>
<h5 class="subsubsection">9.3.3.1 ARM relocation generation</h5>
<p><a name="index-data-relocations_002c-ARM-604"></a><a name="index-ARM-data-relocations-605"></a>Specific data relocations can be generated by putting the relocation name
in parentheses after the symbol name. For example:
<pre class="smallexample"> .word foo(TARGET1)
</pre>
<p>This will generate an &lsquo;<samp><span class="samp">R_ARM_TARGET1</span></samp>&rsquo; relocation against the symbol
<var>foo</var>.
The following relocations are supported:
<code>GOT</code>,
<code>GOTOFF</code>,
<code>TARGET1</code>,
<code>TARGET2</code>,
<code>SBREL</code>,
<code>TLSGD</code>,
<code>TLSLDM</code>,
<code>TLSLDO</code>,
<code>TLSDESC</code>,
<code>TLSCALL</code>,
<code>GOTTPOFF</code>,
<code>GOT_PREL</code>
and
<code>TPOFF</code>.
<p>For compatibility with older toolchains the assembler also accepts
<code>(PLT)</code> after branch targets. This will generate the deprecated
&lsquo;<samp><span class="samp">R_ARM_PLT32</span></samp>&rsquo; relocation.
<p><a name="index-MOVW-and-MOVT-relocations_002c-ARM-606"></a>Relocations for &lsquo;<samp><span class="samp">MOVW</span></samp>&rsquo; and &lsquo;<samp><span class="samp">MOVT</span></samp>&rsquo; instructions can be generated
by prefixing the value with &lsquo;<samp><span class="samp">#:lower16:</span></samp>&rsquo; and &lsquo;<samp><span class="samp">#:upper16</span></samp>&rsquo;
respectively. For example to load the 32-bit address of foo into r0:
<pre class="smallexample"> MOVW r0, #:lower16:foo
MOVT r0, #:upper16:foo
</pre>
</body></html>